Нотатки про TwinCAT
Думки, туторіали та глибоке занурення у промислову автоматизацію.
-
Робота з колекціями змінної довжини у Structured Text за допомогою IEnumerator
Як обійти обмеження фіксованих масивів у TwinCAT та CoDeSys. Реалізація інтерфейсу IEnumerator для гнучкої ітерації динамічних послідовностей.
-
Нюанси роботи з екземплярами функціональних блоків за значенням у TwinCAT 3 / CoDeSys
Детальний аналіз внутрішніх процесів копіювання пам'яті (MEMCPY) та життєвого циклу об'єктів (FB_Init/FB_Exit) під час роботи з екземплярами ФБ за значенням.
-
Розширення параметрів FB_Init у TwinCAT: конструктор для похідних класів
Як розширити список параметрів методу FB_Init у похідних класах для Predictable Initialization в TwinCAT та CoDeSys. Переваги та обмеження компілятора.
-
Обробка винятків у TwinCAT: конструкція __TRY, __CATCH, __FINALLY
Аналіз механізму обробки помилок за допомогою конструкцій TRY-CATCH-FINALLY в TwinCAT 3.1.4026. Особливості використання, обмеження рантайму та реалізація в TwinCAT.OpenFramework.
-
Перевірка типів під час виконання у TwinCAT: __QUERYINTERFACE та __QUERYPOINTER
Дослідження безпеки типів у рантаймі Structured Text, аналіз сумісності типів за допомогою інтерфейсів та операторів приведення типів.
-
Абстрактний клас чи інтерфейс у Structured Text
Порівняння абстрактних класів та інтерфейсів у CoDeSys/TwinCAT, детальний аналіз успадкування, перевірки типів та безпеки поліморфізму.
-
VAR_GENERIC CONSTANT у TwinCAT: нюанси, про які ніхто не пише
Результати експериментів з узагальненими масивами (generic arrays) в TwinCAT/CoDeSys та особливості їх підтримки компілятором.
-
Особливості роботи VAR_IN_OUT CONSTANT у TwinCAT
Аналіз того, як компілятор TwinCAT обробляє параметри VAR_IN_OUT CONSTANT, зокрема з рядковими літералами та тимчасовими змінними.
-
Неочевидна пастка з очищенням ресурсів у програмах TwinCAT
Чому FB_init та FB_exit всередині програм TwinCAT (статичних класів) не викликаються автоматично та як обійти це обмеження.
-
Особливості поведінки FB_exit у TwinCAT
Розуміння того, коли та як автоматично викликається FB_exit у TwinCAT, включаючи основні обмеження компілятора.
-
Шпаргалка зі StructuredText: Типи, FB, Класи та Об'єкти
Пояснення основних об'єктно-орієнтованих концепцій у реалізації Structured Text для TwinCAT/CoDeSys.
-
Динамічне створення об'єктів у TwinCAT з параметрами FB_Init
Як динамічно створити екземпляр класу в TwinCAT, коли клас має додаткові параметри в FB_Init.