Спасибо за варианты, у меня ближе к варианту Gans.
Я как раз и хотел сделать нужное кол-во ФБ, но хотелось бы не присваивать 20 раз входы и выходы, а только номер от 1 до 20, а с помощью функции автоматически по номеру присваивались нужные входы/выходы.
примерно вот так:
if "включить1(DI_ON)" or "выключить1(DI_OFF)" then SW(1)
elseif "включить2" or "выключить2" then SW(2)
.. так до 20
end.
Function block SW(var_input SW_NUM)
DIDO_Choice(sw_num);
TP1(IN:=DI_ON, PT:=T#1s);
RS1(SET:=TP1.Q, RESET:=(TP1.ET=t#1s OR DI_OFF);
DO:=RS1.Q;
end;
Fuction DIDO_Choice (Var_input: DO_Num:usint; var_output: DI_ON, DI_OFF, DO);
if DO_NUM=1 then DI_ON:=DI1; DI_OFF=DI2; DO:=DO1;
elseif DO_NUM=2 then DI_ON:=DI3; DI_OFF=DI4; DO:=DO2;
elsif.... до 20
end;
Естественно, так работать не будет, потому что изменение переменной DO не заставит включиться выходу DO1, в этом и весь вопрос.




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