Код:
function_block DRIVER_drm //имя функционального блока.
var_input //объявление входных переменных
strt : bool;//старт
stop : bool;//стоп
pause : bool;//пауза
end_var
var_output //объявление выходных переменных
rt_fw : bool;//вращение вперёд
rt_bw : bool;//вращение назад
end_var
var //объявление локальных переменных
State : udint; // Текущее состояние
t : SYS.TON; // Метка времени события
end_var
//CODE
if strt then
case State of
0: t(I:=true, T := t#1s);
if t.Q then State := 1; t(I := false); end_if
1: t(I:=true, T := t#3s);
if t.Q then State := 2; t(I := false); end_if
2: t(I:=true, T := t#1s);
if t.Q then State := 3; t(I := false); end_if
3: t(I:=true, T := t#3s);
if t.Q then State := 0; t(I := false); end_if
end_case
rt_fw := State = 1;
rt_bw := State = 3;
else
State := 0;
t(I := false);
rt_fw := false;
rt_bw := false;
end_if
end_function_block