- Может работать внутри системы реального времени.
- Может быть написан на C/C++/ST/...
- По сути COM-объект с заданным интерфейсом.
- Всегда идет вместе с описанием "TwinCAT Module Class" -- это .tmc файл c XML форматированием.
- Каждый экземпляр модуля описывается в "TwinCAT Module Instance" -- это .tmi файл, содержащий как минимум: Object Id, Object Name, Type Name, GUID, инициализации параметров, и т. п.
- Не зависит от других модулей.
- Может содержать как одну, так и несколько функций
Модуль обязан поддерживать:
- Описание модуля: ClassID, ObjectID.
- Машину состояний EtherCAT: INIT, PREOP, SAFEOP, OP.
- Интерфейс TwinCAT COM-объекта: ITComObject.
Машина состояний EthreCAT
- INIT → PREOP (IP) -- модуль загружается в память.
- PREOP → SAFEOP (PS) -- выделение или захват ресурсов (например, памяти).
- SAFEOP → OP (SO) -- связь с другими модулями.
- OP → SAFEOP (OS) -- отключение от других модулей.
- SAFEOP → PREOP(SP) -- освобождение ресурсов.
- PREOP → INIT (PI) -- модуль освобождает занятую им же память.
Способы коммуникации
- Маппинг переменных области данных:
- гарантирует целостность данных;
- разрабатываются на любых языках программирования;
- данные доступны только внутри цикла задачи. - Маппинг указателей на переменные области данных:
- только для C/C++;
- целостность данных не гарантируется;
- возможен прямой доступ к данным извне цикла задачи. - Вызов интерфейсов других COM-объектов:
- множество нюансов и трудностей на пути реализации. - Коммуникация через ADS-клиент/сервер:
- самый универсальный, но не самый быстрый.
Полный вебинар на английском языке "TwinCAT 3 modules: idea and realization".
No comments
Post a Comment
Note: Only a member of this blog may post a comment.