Массив указателя на 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, потому что допустимый синтаксис довольно строг, что приводит к чрезмерно подробным объявлениям.