четверг, 24 января 2013 г.

Доступ к настройкам драйверов устройств в Vijeo Designer в Run-Time

Иногда возникает ситуация когда в панели оператора Magelis под управлением Vijeo Designer необходимо манипулировать настройками коммуникации с подключенными устройствами. Типичный пример - когда в проекте была сконфигурирована связь с контроллером, который пока физически не установлен (оставлен задел для масштабирования). Необходимо из операторского интерфейса включать/отключать обмен данными с этим контроллером.

Интересно? Добро пожаловать под кат!
Для начала нам необходимо объявить в IO Manager все необходимые устройства. К примеру PLC1 и PLC2.
Далее все манипуляции сводятся к тому, что-бы создать специальные переменные, связаные с PLC1/PLC2.
Вернемся к нашему примеру с отключением связи с определенным контроллером. В качестве жертвы будет PLC2.
Переходим в редактор переменных и создаем переменную со следующими настройками:
Весь фокус заключается в поле Device Address. Как видите формат отличается от стандартных %MWxx. @sys означает что используется блок параметров управления драйвером, 1 - номер параметра. В нашем случае для того что-бы отключить связь с PLC2 в переменную Integer01 необходимо записать 0, для включения - 1. Теперь созданную переменную не сложно привязать к управляющему элементу на экране
Далее привожу список со всеми переменными из блока @sys :
  • @sys:1 - State - Переменная показывает состояние связи с устройством (1 - связь присутсвует, 0 - связь отключена, 2 - связь прервана, драйвер определил ошибку превышения таймаута). Переменная допускает запись значений 0 (отключение связи) и 1 (включение связи);
  • @sys:2 - Alarm - Переменная показывает состояние последнего принятого/посланного пакета (фрейма). 0 свидетельствует о безошибочном пакете, 1 - пакет был ошибочным;
  • @sys:3 - Roll over - Копирует значения переменных статистики драйвера (см. ниже) в блок предыдущих значений и сбрасывает значения переменныхстатистики в 0;
  • @sys:4 - Testing - Vijeo Designer периодически автоматически тестирует валидность переменных, связаных с ПЛК. Переменная показывает статус тестирования, 1 - тест активен, 0 - тест переменных не активен;
  • @sys:5 - Serial Protocol - Переменная показывает тип используемой последовательной связи:
    • 0 = HWP_RS232
    • 1 = HWP_RS422_2WIRE
    • 2 = HWP_RS422_4WIRE
    • 3 = HWP_RS485_2WIRE
    • 4 = HWP_RS485_4WIRE
    • 5 = HWP_RS422_4WIRE_RTS_STATIC
    • 6 = HWP_RS422_4WIRE_RTS_TOGGLE
  • @sys:6 - Demand Scan - Запись любого не нулевого значения в эту переменную приводит к принудительному обновлению всех переменных связанных с ПЛК.
Блоки переменных @stat и @prevstat хранят счетчики статистики по определенному драйверу. @prevstat хранит статистику до последнего выполнения Roll Over. Используемые индексы для @stat и @prevstat идентичны:
  • @stat:0 - Total Good - Количество принятых пакетов без ошибок;
  • @stat:1 - Total Bad - Общее количество ошибочных пакетов;
  • @stat:2 - Total Count - Общее количество пакетов;
  • @stat:3 - No Reply - Количество запросов без ответа;
  • @stat:4 - Checksum Failed - Количество пакетов с ошибками контрольной суммы;
  • @stat:5 - Wrong Address - Количество пакетов с неправильным адресом;
  • @stat:6 - Error Response - Количество пакетов с ошибочным ответом;
  • @stat:7 - Invalid Response - Количество пакетов с ошибкой протокола;
  • @stat:8 - Initialization Failed - Количество ошибок при установлении связи с оборудованием;
  • @stat:9 - Write Failed - Количество неудачных попыток записи переменных в оборудование;
  • @stat:10 - Internal Error - Количество ошибок связанных с неправильной конфигурацией драйвера;
  • @stat:11 - Transmit Failed - Количество ошибок при попытке отправить пакет;
  • @stat:12 - Unsupported Request - Количество полученных запросов с неподдерживаемыми функциями;
  • @stat:13 - Invalid Request - Количество полученных запросов с ошибкой протокола.
Надеюсь эта информация кому-то будет полезна!