Код:
function_block TOnP // Таймер TON с паузой
var_input
In,P : bool;
PT : udint; // Задача времени таймера udint, мс
end_var
var_output
Q : bool; //
ET: udint; // Выход времени таймера udint, мс
end_var
var
clk : bool;
tmStart, tmNow :udint;
end_var
tmNow := time_to_udint(get_time());
if P then tmStart := tmNow - ET; end_if
if In and not clk then tmStart := tmNow; end_if
clk := In;
ET := (tmNow - tmStart) * bool_to_udint(In);
if ET >= PT then ET := PT; end_if
Q := In and (ET = PT);
end_function_block