November 5, 2015

Диагностические возможности TwinCAT

TwinCAT любой версии уже в базовом комплекте позволяет диагностировать проблемы как программной, так и аппаратной части, а также анализировать проблемы, возникшие в канале связи.

Условно, все диагностические средства можно разделить на две части:
  • Диагностика операционных данных (process data) с помощью "операционных счетчиков" (working counter, WKC).
  • Диагностика шины: пакеты данных, контрольные суммы (CRC) и пр.


Что, где и когда контролировать?

  1. В каждом цикле, синхронно с циклом, контролировать операционные счетчики, т. к. они контролируют операции чтения/записи операционных данных. Сами счетчики только отображают ситуацию. Реагировать, делать выводы и совершать какие-либо телодвижения на изменение состояния счетчиков должна ПЛК-задача (программа).
  2. Асинхронно (не в каждом цикле), при наступлении определенного события можно контролировать состояние мастера и состояние подчиненных.
Синхронность и асинхронность здесь важна из-за того, что значение/состояние счетчиков обновляются каждый цикл, а состояние мастера или подчиненных фиксируются в течении длительного промежутка времени (несколько циклов).

Как для мастера, так и для подчиненного можно асинхронно следить за машиной состояния EtherCAT (OP, Pre-OP, состояние ошибки и т. п.).

Кроме этого на мастере можно следить за общим состоянием аппаратного устройства (контроллера, ПЛК) в целом (DevState). Это могут быть ошибки обмена данными, сработало дублирование линий (redundancy), сторожевой таймер (watchdog timer), одно из подчиненных устройств находится в одном из нерабочих состояний, DC не синхронизированы, и др.

Для подчиненного устройства можно также следить за состоянием связи с мастер-устройством.


Диагностика операционных данных


Общая диагностика операционных данных (process data) производится через переменную WcState (тип данных BOOL).

Переменная согласно своему типу данных может принимать два значения: 0 — данные согласно счетчику корректны (data valid) и 1 — данные некорректны (data invalid).

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

Для разбивки подчиненных по командам и/или фреймам существует механизм под названием Sync Unit.
SyncUnit = один фрейм (datagram) = один операционный счетчик (WKC) = одна пачка циклической диагностической информации.
Синк-юниты эффективно создаются системой на этапе конфигурирования мастера, но пользователь может и самостоятельно их назначить, тем самым сужая зону поиска среди группы подчиненных, объединенных одним операционным счетчиком.

Несколько синк-юнитов позволяют мастеру шины отправлять несколько пакетов так, что у каждого пакета будет свой операционный счетчик. Поэтому для мастера доступны несколько переменных вида: FrmXState, FrmXWcState, где X — номер фрейма.


Диагностика шины или сети


Фреймы, бегущие от мастера к подчиненным и обратно, могут по пути "испортиться". Обрыв кабеля, ненадежный контакт, назафиксированный разъем, все это может привести к искажению данных внутри дейтаграммы-фрейма. Поэтому к каждой телеграмме мастер прикрепляет 16-разрядную контрольную сумму, подсчитанную, исходя из содержимого фрейма.
В System Manager, на вкладке Online мастера шины EtherCAT, можно посмотреть статистику пакетов и контрольных сумм (CRC).
Каждое из устройств на шине EtherCAT может иметь до 4-х портов ввода/вывода: A, B, C, D. Каждый из портов в конкретной конфигурации может быть либо входящим, либо исходящим относительно устройства. Контрольная сумма подсчитывается мастером перед отправкой пакета, а затем автоматически проверяется в каждом из портов, каждого подчиненного устройства. Подключившись к мастеру, можно контролировать состояние всей шины целиком и точно определять место, где "испортились" пакеты EtherCAT.


Как получить диагностику?


  1. TwinCAT System Manager позволяет разработчику оперативно следить за состоянием шины, мастера шины и подчиненных устройств.
  2. Линковка переменных "---State" позволяет ПЛК-задаче диагностировать и реагировать на изменение состояния системы, в том числе сброс или устранение ошибки.
  3. Библиотека TcEthercat.lib предоставляет доступ ко всем диагностическим переменным через протокол ADS, предоставляя ПЛК-задаче возможности аналогичные предыдущему п. 2. Кроме этого библиотека позволяет диагностировать состояние других мастеров и других шин EtherCAT. В этом случае каждый мастер контролирует состояние своей шины EtherCAT, мастера объединены в сеть по шине Ethernet, один из мастеров выполняет функцию супермастера, контролируя и координируя работу остальных мастеров.
В TwinCAT 3 появился инструмент под названием Emergency Scan. Он позволяет в режиме конфигурации отправлять до 10000 сетевых пакетов за раз, тем самым облегчая поиск проблем связи на шине.

Полный вебинар на английском языке Possibilities for EtherCAT diagnostics in TwinCAT

No comments

Post a Comment

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