August 13, 2020

Вебинар. TwinCAT 3 Eventlogger

И опять с просмотра вебинара начнем знакомство с Eventlogger'ом. То есть с чтения конспекта, пропущенного через инженера. Вебинар `TwinCAT 3 Eventlogger: event-based communications from the TwinCAT runtime system` прошел 8 мая 2018 года, но нас это не остановит, так как с возрастом продукт становится только стабильнее и, главное, понятнее. За счет выпущенной документации и конечно же опыта разработчика.
Изображение: Beckhoff Automation

Центральный компонент — EventLogger. Он встроен непосредственно в ядро TwinCAT и для своей работы не требует покупки или активации каких-либо лицензий. Это неотъемлемая часть ядра TwinCAT. Доступ к этому ядру ПЛК-программы осуществляют через библиотеки (например, Tc3_Eventlogger), а библиотеки в свою очередь через интерфейс COM-объектов TcСOM и ADS.
Изображение: Beckhoff Automation

Ряд сообщений можно автоматичеки пробрасывать в журналы Windows. Откройте "Просмотр событий" Windows (или EventLogger) и вы увидите ряд сообщений, таких же что и в TwinCAT. 
Eventlogger поддерживает произвольный набор сообщений, то есть вы можете создавать свои собственные сообщения и события. Вы можете конструировать их, встраивать в свои конфигурации, компилировать и затем использовать в своих системах. Для создания сообщений служит ветка Solution Explorer → SYSTEM → Type System в конфигурации проекта. Закладка справа Event Classes позволяет объединять сообщения в классы по каким-либо удобным для вас критериям. 

События представлены специальным типом данных TwinCAT. События управляются с помощью TwinCAT Type System. Следовательно они едины и одинаковы для всех компонентов проекта, написанных на любом из доступых язков программирования: ST, LD, C++, ... Плюс к этому, конфигурация событий хранится в TMC-файлах, соответственно это XML-файл, который можно легко автогенерировать с помощью произвольных (в том числе и внешних) инструментов.

Для создания  событий используется редактор TMC-файлов. В нем можно задать идентификатор и наименование события, назначить человеко-читаемый текст сообщения и придать тот или иной вес или важность событию, такие как ошибка, сообщение, уведомление, информация и т. п.

Текст сообщений может параметризоваться. Можно добавить прямо в текст метки, которые в коде программы будут заменяться на актуальные значения: "Текущая температура {1} превышает {0}". Кроме этого, можно задать источник события и таким образом впоследствии увидеть, что сообщения одинакового типа отправляются из разных подпрограмм (источников).

В сообщения можно добавлять дополнительную информацию в виде JsonAttribute. TwinCAT имеет встроенную библиотеку для работы с сообщениями JSON (теперь есть библиотека-парсер). Это позволяет к текстовой информации добавить структурированную иерархическую информацию, расширяющую данные. Например, это можно использовать для автоматической обработки логов.


Библиотека Tc3_EventLogger


Позволяет создавать события из программы ПЛК.

Сообщения (messages) просто создаются, а затем отправляются в системный лог. Это не реалтайм система: одно событие в миллисекунду. На самом можно отправлять больше одного за цикл, но это будет зависеть от производительности.

Кроме сообщений можно создавать "Тревоги" (Alarms) которые могут находиться в одном из состояний: тревога установлена (Raise), тревога сброшена (Release) и тревога квитирована (Confirm). Также можно полностью удалить экземпляр объекта тревоги из памяти (Clear), но в логе сообщения сообщение все равно остается и не пропадает. Иллюстрация из справочной системы:
Изображение: Beckhoff Automation

Работа из C++ очень похожа на работу из ST программ. Из C# тоже, но это будет отдельно.


Получение событий


Вы создаете новый класс, расширяя FB_ListenerBase. После этого создаете конфигурацию (.Subscribe) и добавляете в нее класс сообщений (.AddEventClass). Теперь необходимо вызывать каждый цикл объект (экземпляр созданного вами нового класса). В случае прихода сообщения, будут вызваны соответствующие методы класса.

Для C++ аналогично.


Доступ извне


События TwinCAT EventLogger можно просматривать в Visual Studio: View → Other Windows → TwinCAT Logged Events.

Программы написанные на C# могут получить дступ через ADS Proxy. С помощью класса TcEventLogger из сборки ADS. Причем текст сообщения можно получать с учетом интернационализации локали, то есть на разных языках в зависимости от предпочтений разработчика либо настроек системы.


Интернационализация


Если она вам не нужна (а она вам нужна, так как вы читаете блог на русском языке), то можете игнорировать эту возможность и все будет на английском языке (или немецком).

No comments

Post a Comment

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