Спасибо за информацию. Хочу немного дополнить тем, что почерпнул с одного польского сайта
https://www.edom-plc.pl/index.php/en/mo ... /functions.
У WAGO есть библиотеки для решения бытовых вещей - лампочки, задержки, длинные нажатия и тп. С их использованием, программа управления светом и вытяжкой, будет очень короткой и понятной человеку, не сильно знакомому с программированием.
Пример использования бибилиотеки Building_common.lib для управления 2 группами света и одной вытяжкой, мастер включателем по двойному нажатию на вторую кнопку, мастер выключателем по долгому нажатию первую кнопку и автоматическим выключением вытяжки через 30 секунд:
объявляем переменные и входа\выхода, если они не объявлены в конфигурации ПЛК
Код: Выделить всё
PROGRAM PLC_PRG
VAR
LIGHT1, LIGHT2, FAN1 : Fb_LatchingRelay;
FAN_DELAY: Fb_Delay;
SWITCH_BT1 : Fb_ShortLong;
SWITCH_BT2 : Fb_Click;
MASTEROFF:BOOL;
MASTERON: BOOL;
END_VAR
Код: Выделить всё
MASTEROFF:=SWITCH_BT1.xLong; (*присваиваем новое значение переменной по длинному нажатию*)
MASTERON:=SWITCH_BT2.xDouble; (*присваиваем новое значение переменной по двойному нажатию*)
LIGHT1(xSwitch:=BT1, xCentOFF:=MASTEROFF, xCentOn:=MASTERON); OU1:=LIGHT1.xActuator; (*xSwitch - кнопка, xCentOFF - триггер выключения, xCentOn - включения, xSwitch - коммутируемый вход*)
LIGHT2(xSwitch:=BT2, xCentOFF:=MASTEROFF, xCentOn:=MASTERON); OU2:=LIGHT2.xActuator;
FAN1(xSwitch:=BT3, xCentOFF:=MASTEROFF, xCentOn:=MASTERON); OU3:=FAN1.xActuator;
SWITCH_BT1(xSwitch:=BT1, uiTS_10tel_s:=1, uiTS_10tel_s:=1, uiT_10tel_s :=15); SWITCH_BT1.xLong; (*ловим длинное нажатие на кнопке*)
SWITCH_BT2(xSwitch:=BT2, uiT_10tel_s:=10); SWITCH_BT2.xDouble; (* ловим двойное нажатие*)
FAN1_DELAY(xInput:=OU3, dwTon_10tel_s:=300, dwToff_10tel_s:=1); (*задаем задержку выключения вентилятора на 30 секунд*)
FAN1(xSwitch:=BT3, xCentOFF:=FAN1_DELAY.xOutput); (*присваиваем триггер выключения*)
Есть еще более новая библиотека, с похожими функциями WagoBuilding_01.lib