December 1, 2015

EtherCAT-синхронизация в сервоусилителях AX5000

Сервоусилители AX5000 очень чувствительны к "качеству синхронизации" шины EtherCAT.  Причина в том, что AX5000 не имеет собственного управляющего контроллера и сильно зависит от мастера шины, который к тому же хранит и обновляет параметры сервоусилителя.

EtherCAT-телеграммы (ECT) рассылаются EtherCAT-мастером (EtherCAT Master) по всем подключенным EtherCAT-подчиненным устройствам (ESC). ESC – это электронный модуль (микросхема), осуществляющий постоянный синхронный процесс обработки и/или копирования данных (содержащихся в телеграммах) через заданные интервалы времени по прерываниям таймера. Конфигурация ESC описывает, какая информация, и как, будет обработана из телеграммы. В приводных технологиях используются очень малые интервалы времени, поэтому очень важно поддерживать непрерывность и постоянность синхронности данных и подчиненных устройств в целом. Синхронность подчиненных устройств обеспечивается так называемыми "распределенными часами" (Distributed Clocks, подробнее см. документацию по EtherCAT).



EtherCAT-мастер


При включении и последующем старте системы, EtherCAT-мастер читает конфигурационный файл AX5000 и записывает "ΔT0 = 250мкс" и "ΔT1 = длительность NC-цикла" в соответствующие регистры подчиненного. ESC постоянно считывает эти значения из регистров и подает сигналы Sync0 и Sync1. Потеря или изменение содержимого этих регистров во время работы, может привести к проблеме выдачи сигналов Sync0 и Sync1.


EtherCAT-подчиненный контроллер (ESC)


ESC-контроллер для синхронизации сервоусилителя AX5000 регулярно, через промежутки времени ΔT0 и ΔT1, отправляет в процессор сервоусилителя два сигнала прерывания – Sync0 и Sync1.

Sync0

Сигнал или прерывание Sync0 генерируется каждые 250мкс. В случае ошибки, соответствующая ось переходит в состояние ожидания (стоп) с рампой "EStop ramp".
  • F414 – если прерывание не проходит, то процессор генерирует код ошибки F414 (см. рисунок ниже, метка F0).
  • F409 – прерывание Sync0 может быть выбрано из трех значений: 62.5мкс, 125мкс, 250мкс. При других значениях интервала генерируются ошибки F409.
  • F410 – возникает, если прерывание Sync0 не активировано (не генерируется) в ESC.
  • F411 – длина импульса прерывания не соответствует стандарту.

Sync1

Прерывание Sync1 рассылается со временем цикла NC-задачи (SAF). Время цикла всегда пропорционально значению частоты прерывания Sync0 и, по умолчанию, равно 1мс.
  • F412 – интервал Sync1 равен времени интервала Sync0, умноженному на целое число, и должно быть идентично значению параметров S-0-0001 и S-0-0002, иначе произойдет ошибка.
  • F414 – если прерывание не проходит, то процессор генерирует код ошибки F414 (см. рисунок ниже, метка F1).
  • F413 – ошибка возникает, если прерывание Sync1 не активировано или не генерируется в ESC.
  • F411 – длина импульса прерывания не соответствует стандарту.




Телеграмма принята (ТЧК)


ESC прочитает телеграмму (ECT), как только она поступит. Допустимый момент поступления находится непосредственно перед Sync1. Момент ТЧК (EOT) немного запаздывает после прерывания Sync1 на время ΔT2. Данные, предназначенные для ESC, затем читаются из телеграммы и записываются в область данных SyncMan-2, после чего, состояние SyncMan-2 устанавливается в значение "SyncMan записан". Контроллер копирует данные из SyncMan-2 в его собственную область памяти только при условии, что в момент Sync1 установлено состояние "SyncMan записан". И, наоборот – данные не копируются, если статус "SyncMan записан" не установлен (см. рисунок выше, метка F2).

Если данные не будут дважды благополучно скопированы – контроллер выдаст ошибку F415, и соответствующая ось перейдет в состояние ожидания (стоп) с рампой "EStop ramp".
Допустимое отклонение наличия телеграммы в требуемый момент времени  равно нулю, т. е. не допустимо! EtherCAT-мастер должен обеспечить своевременное поступление данных в SyncMan-2.

Как пример, можно рассмотреть наличие "дрожания" (jitter), из-за которого отклонение времени прибытия не равно нулю и телеграмма прибыла с опозданием; что может вызвать срыв синхронизации.

Ошибка F415


Распределенные часы: нарушена синхронизация данных.
  1. Таймер контроллера регулярно генерирует прерывания (по умолчанию, базовое время (base time) = 1мсек).
  2. Отдельные задачи обрабатывается диспетчером задач в соответствии с внутренними правилами системы (их нельзя изменить, но можно повлиять на них, см. приоритеты задач).
  3. Если задача может отработать как больше, так и меньше времени, т. е. время ее выполнения сильно зависит от вычислительной нагрузки, то следует поместить процесс обновления данных "I/O Update" перед началом задачи (включить параметр задачи "I/O at task begin"). Это исключит одну из причин некорректной синхронизации.
  4. С помощью процесса "I/O Update" результирующие данные передаются в подсистему TwinCAT-IO и впоследствии будут отправлены в виде телеграммы для подсоединенных устройств. EtherCAT-телеграмма пробежит через все устройства и сбросит и/или подберет данные соответствующих устройств.
  5. Порядок обработки задач зависит от приоритета задачи. Задача с большим приоритетом обрабатывается в первую очередь и раньше других отправляет данные в TwinCAT-IO подсистему (которая занимается обработкой телеграмм). Проблемы обычно появляются, когда отдельные задачи имеют различную длину времени цикла выполнения и в какой то момент могут начать конкурировать за место в телеграмме.
  6. Асинхронные задачи могут вмешаться в произвольный момент времени и разрушить синхронизацию.

No comments

Post a Comment

Note: Only a member of this blog may post a comment.