Массив указателя на bool в CoDeSys

Я хотел бы объявить массив указателей с инициализацией

Apb : array [0..2] of pointer to bool := adr(r0), adr(r1), adr(r2);

Где r0, r1, r2 объявлены в Modbus как битовый регистр хранения. Я получил ошибку: неверное начальное значение.

В случае:

Apb : array [0..2] of pointer to bool;
Apb[0]^ := r0;

Все работает как я хочу.

1 ответ

Я думаю, что объявления переменных POU не хотят, чтобы в них были вызовы функций или даже переменные, назначенные другим переменным.

Единственный способ иметь переменные в вашем объявлении - это использовать VAR_CONSTANT. Вам все равно придется немного поработать, но это может облегчить управление крупномасштабными заменами.

Существует также способ использования динамических значений с использованием прагм (хотя я никогда не использую прагм, хотя я не уверен, насколько они мощные).


Происходящий из более стандартных языков программирования, этот имеет те же правила и конструкции, что и C, но не так уж и гибок, ужасен синтаксис и ничем даже не напоминает "пустые" типы. Я закончил тем, что использовал шаблоны Python, чтобы помочь сгенерировать заголовки объявления переменных POU, потому что допустимый синтаксис довольно строг, что приводит к чрезмерно подробным объявлениям.

Другие вопросы по тегам