VAR_GENERIC CONSTANT у TwinCAT: нюанси, про які ніхто не пише
Результати експериментів з узагальненими масивами (generic arrays) в TwinCAT/CoDeSys та особливості їх підтримки компілятором.
Я провів серію експериментів і підготував відповіді на питання, які є далеко не очевидними. Мова йде про узагальнені масиви (generic arrays), як показано на скріншоті нижче.
1. Чи можна використовувати узагальнений масив у FB_Init?
✗ Ні — компілятор цього не підтримує.
2. Чи можна вказати узагальнений масив як параметр методу?
✓ Так — це працює.
3. Чи можна створити властивість (Property) типу узагальненого масиву?
✓ Так — це можливо.
4. Чи можна викликати UPPER_BOUND для узагальненого масиву?
✗ Ні — наразі з цим є баги.
5. Чи можна використовувати літерал (наприклад, [1, 2, 3, 4]) як значення узагальненого масиву, наприклад, у параметрі методу?
✗ Ні — це не підтримується.
6. Чи можна передати узагальнений масив як масив змінної довжини (ARRAY [*] OF)?
✓ Так — це працює.
7. Чи можна визначити узагальнену константу так, щоб масив не містив жодного елемента?
✓ Так — це можливо.

#TwinCAT #CoDeSys #StructuredText