Суть вопроса следующая: есть FB1 с DB1, в FB1 есть тэг recoveryFlag (bool), он привязан к кнопке в HMI, при нажатии кнопки срабатывает скрипт invertBit.
Нажимаем кнопку, надеваем "очки" - тег изменился.
Пишем в том же FB1 код на SCL
Code: Select all
IF #recoveryFlag = TRUE THEN
FOR #i := 0 TO 5 DO
#readyToSendMsg[#i] := #sndCode.recoveryArr[#i];
END_FOR;
#recoveryFlag := FALSE;
END_IF;
Добавляем для проверки булевый тег check с условием стать ТРУ, если тег recoveryFlag стал ТРУ.
Нажимаем кнопку - массив не записывается, тег recoveryFlag - ФОЛС, но check висит ТРУ.
При истеричном нажатии на кнопку в HMI, раза с 3-10-27.. проскакивает одно срабатывание и массив пишется.
Вот ломаю голову, в чем причина...
Есть прямая связь с присутствием тега в коде SCL, потому как стоит убрать его из кода - он начинает стабильно работать, а сам код, как видно, простой и как-то навредить работе тега не в состоянии.
ЗЫ: с такой-же проблемой еще 2 оставшиеся кнопки (тега) в HMI. Одна из них идентична по работе с описанной выше, вторая отличается, но простота логики та же.
Буду признателен за помощь!