Особливості поведінки FB_exit у TwinCAT
Розуміння того, коли та як автоматично викликається FB_exit у TwinCAT, включаючи основні обмеження компілятора.
Метод FB_exit має викликатися автоматично щоразу, коли об’єкт видаляється з пам’яті. У теорії все звучить чудово, але на практиці різні версії компілятора мали свої нюанси з цим.
-
Бували випадки, коли
FB_exitмав викликатися, але цього не відбувалося. Тому тим, хто досі працює зі старішими версіями, слід бути особливо обережними. У найновішому компіляторі, доступному на цей момент (TwinCAT 3.1.4026.19), мені відомо лише про одну проблему: якщо об’єкт було створено як локальну змінну всередині методу, сам метод викликався в блоці__TRY/__CATCH, і виникло виключення (exception), тодіFB_exitвикликаний не буде. -
FB_exitвикликається лише тоді, коли видалення виконується через вказівник (pointer) на тип функціонального блока. В іншому випадку пам’ять буде просто очищено, алеFB_exitне викличеться. Нижче наведено демонстрацію цієї поведінки, яка стосується всіх версій.

#TwinCAT #CoDeSys #OOP #StructuredText #IndustrialAutomation #FbExit