Вот этот кусок лучше переписать по другому:
IF Inic = FALSE THEN
v2 := v1;
v3 := v1;
Inic := TRUE;
END_IF
То есть сразу ставим флаг инициализации в коде инициализации, а не где-то там в конце программы.
Дальше я бы переписал чуток по другому:
а) Хранил бы предыдущие значения для v2 и v3, обновляя их в самом конце программы:
v2Prev := v2;
v3Prev := v3;
б) Тебе же значения надо обновлять при изменении v2 или v3.
Значит я бы так и писал отдельно для каждой ветки:
IF (v2Prev <> v2) AND (можно вписать какие-то условия на валидность v2, если надо - мало ли, она не может ещё и меньше "-1" быть) THEN
v1 := v2;
END_IF
и так далее. Я могу ошибаться и тупить. Если неверно понял - прошу прощения.




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