Властивість типу REFERENCE TO у TwinCAT 3 / CoDeSys
Ключові нюанси роботи з PROPERTY типу REFERENCE TO: оператори `REF=` та `:=`, геттери, сеттери та онлайн-моніторинг складних типів.
Властивість (PROPERTY) типу REFERENCE TO — це корисна можливість, яка має кілька важливих особливостей:
1️⃣ Геттер і оператор REF=
Геттер має завжди використовувати оператор REF=. Треба бути уважним, щоб не переплутати його з :=, інакше ви отримаєте виключення і зупинку контролера.
2️⃣ Сеттер і передача посилання
Сеттер дозволяє призначити інше посилання у властивість. Передбачається, що сеттер так само має використовувати оператор REF=, хоча ви можете написати там й іншу логіку. Головне - це розуміти що у сеттер вам вам прихдить посилання і воно може бути порожнім (null).
3️⃣ Присвоєння значення через :=
Присвоєння значення у властивість за допомогою оператора := не залежить і ніяк не пов’язане з наявністю сеттера.
4️⃣ Неможливість захисту від запису (Read-Only)
На жаль, заблокувати присвоєння значення у таку властивість (тобто зробити її тільки для читання) наразі неможливо.
5️⃣ Моніторинг складних типів даних
Такі властивості дозволяють бачити дані складних типів у поєднанні з атрибутом {attribute 'monitoring' := 'call'}. Прикладами складних даних є масиви, структури та інші класи.

#TwinCAT3 #CoDeSys #PLC #StructuredText #IndustrialAutomation #Beckhoff #OOP