Переделал проект на блоки, добавил общий сброс.
Для сохранения масок добавил Глобальные переменные, в том числе RETAIN и Блок сохранения масок Sohranenie. Код пока написан только для входов IN1-In12, и для маски m, для остальных масок надо дописать, скопировать.
Код:
IF In_y>0 AND In_y_zap<>In_y THEN (* Запись маски со входов In 1- In 12 *)
In_y_zap1:=In_y ;
In_y_zap:=In_y_zap1 ;
END_IF
IF In18 AND In_y_zap<>In_y THEN (* Включение/ выключение входов In 1- In 12 по кнопке In 18 *)
In_y_zap1:=In_y_zap;
ELSIF In18 AND In_y_zap=In_y THEN
In_y_zap1:=In_y_zap;
ELSE
In_y_zap1:=0;
END_IF
IF In_m>0 AND In_m_zap<>In_m THEN (* Запись маски с парамерром m *)
In_m_zap1:=In_m ;
In_m_zap:=In_m_zap1 ;
END_IF
IF In18 AND In_m_zap<>In_m THEN (* Включение/ выключение маски m по кнопке In 18 *)
In_m_zap1:=In_m_zap;
ELSE
In_m_zap1:=0;
END_IF
Осталось к каждому switch1 добавить OR и два входа, один маска кнопок, второй сохранённая маска, а на выходах добавить присвоение маски, см. скрин.
Вложение 64251
И по кнопке IN18, можно переключать сохранённую маску или выключить всё.
Допустим включены кнопки IN1-In4, работают выходы Out1-Out4, потом ресетом Res сбрасываем всё.
После этого нажатие IN18 включает записанные выходы, второе нажатие выключает выходы. Скрин
Вложение 64252