Добрый день,
Столкнулся с такой проблемой:
В глобальном списке определены булевы переменные. Переменные определены с привязкой к адресам при помощи декларации AT. Например, так:
Код:
{attribute 'qualified_only'}
VAR_GLOBAL
bVar0 AT %QX10.0 :BOOL;
bVar1 AT %QX10.1 :BOOL;
bVar2 AT %QX10.2 :BOOL;
bVar3 AT %QX10.3 :BOOL;
bVar4 AT %QX10.4 :BOOL;
bVar5 AT %QX10.5 :BOOL;
bVar6 AT %QX10.6 :BOOL;
bVar7 AT %QX10.7 :BOOL;
bVar8 AT %QX11.0 :BOOL;
bVar9 AT %QX11.1 :BOOL;
и т.д.
END_VAR
Привязка необходима для того, чтобы можно было в дальнейшем читать/писать переменные посредством Modbus.
Эти же переменные привязаны к элементам управления на визуализации (кнопкам, чекбоксам).
При компиляции проекта генерируются предупреждения:
Код:
C0355: A single bit cannot be referenced. A reference to the complete byte will be stored.
Если я правильно понял, BIT и BOOL это два разных типа. И если в BOOL можно писать, как в отдельный бит, то при записи в BIT ,будет перезаписан весь байт.
Т.е. при нажатии кнопки, привязанной, например, к bVar3, перезапишутся все переменные от bVar0 до bVar7 значением 2#00001000.
Проверить это на данный момент мне не на чем, нет контроллера под рукой. Если кто-нибудь сталкивался, это действительно так? Как можно обойти это ограничение? Или можно игнорировать предупреждения?