Коллеги, выручайте.
Вот объявление переменных:
PROGRAM PLC_PRG
VAR
Inic: BOOL;
v2: INT;
v3: INT;
sw: BOOL;
END_VAR
VAR RETAIN
v1: INT := 20;
END_VAR
Вот сама программа (проект прилагаю):
IF NOT Inic THEN
v2 := v1;
v3 := v1;
END_IF
IF (v2 <> v1) AND sw THEN
v1 := v2;
v3 := v2;
ELSIF (v3 <> v1) AND NOT sw THEN
v1 := v3;
v2 := v3;
END_IF
sw := NOT sw;
Inic := TRUE;
Конец программы
Мне нужно, чтобы при запуске значение из памяти v1, присвоилось к v2 и v3.
Далее v1 по замыслу работает как буфер и хранение последнего значения.
Потом я меняю значение v2 или v3 и всё прекрасно синхронизируется (v1=v2=v3).
Потом я пробую менять вторую переменную v3 или v2. Тут и начинается проблема. v1 присваивает поочерёдно разные значения v2 и v3.
PS: sw добавил от отчаянья. Что с ним, что без - одно и тоже.