Изображение: 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.