
Сообщение от
shtirlicz
Последовательность выполнения кода например какой вход считан первым какой вторым какая операция следующая итп.те в тиа я могу вызывать фс или фб в нужный мне момент.аналог макросов
Последовательность у FBD в лоджике простая - если выход ФБ1 передаётся на вход ФБ2, то сначала будет обработан ФБ1, затем ФБ2 и т.д.
Хотите сами управлять вызовом ФБ - пишите на ST (вот только отладку туда не завезли)
Код:
function_block DRV_CTRL
var_input
DrvOn : bool;
CmdStart : bool;
CmdStop : bool;
end_var
var_output
Ctrl : bool;
Alm : bool;
end_var
var
fbTON : SYS.TON;
fbStart : SYS.RTRIG;
fbStop : SYS.RTRIG;
fbON : SYS.RS;
fbALM : SYS.RS;
end_var
fbStart(I := CmdStart);
fbStop(I := CmdStop);
fbALM(R := fbStop.Q AND fbALM.Q, S := fbON.Q AND fbTON.Q, Q => Alm);
fbON(S := NOT fbALM.Q AND fbStart.Q, R := fbALM.Q OR fbStop.Q, Q => Ctrl);
fbTON(I := (fbON.Q AND NOT DrvOn), T := t#5s);
end_function_block