попробуй при объявлении переменных в Retain дописать директиву компилятора {falg noinit}
VAR_GLOBAL RETAIN
MAIN :MAIN_MODBUS {flag noinit};
BOILER :ARRAY [1..2] OF BOILER_MODBUS {flag noinit};
END_VAR
Q: Чем отличаются переменные-марекры (%M) от переменных VAR_RETAIN? В документации сказано, что и те и другие сохраняются в NVRAM, но у меня значение маркера обнуляется при перезапуске.
A: Переменные в M-памяти имеют такие же свойства, как и RETAIN переменные. Однако, при запуске программы их значения инициализируются нулями, если не указано другого значения для инициализации. Избежать инициализации можно с помощью инструкции {flag noinit}. Примеры:
VAR
a AT %MW0: INT {flag noinit};
b : INT {flag noinit};
END_VAR
{flag noinit on}
VAR
a AT %MW0: INT;
b : INT;
END_VAR
{flag off}




Ответить с цитированием