Да, библиотеки конечно не хватает...
Городить все стандартные блоки лениво...
Да и отсутствие TIME не очень радует, хотя программа не даёт использовать имя TIME в качестве переменной, скорее всего работы ведутся и имя переменной уже зарезервировано.
Использую для тестов время цикла, не знаю на сколько такой вариант верный, но, как мне кажется, он более менее точный:
function_block times
var_input
T_cycle:udint;
end_var
var_output
T : udint;
end_var
var
M:udint;
end_var
M:=T;
T:=M+T_cycle;
end_function_block
А Таймер TOF получился такой (используя ФБ ST Tites)
function_block TOF
var_input
IN:bool;
PT:udint;
T_cycle:udint;
end_var
var_output
Q:bool;
ET:udint;
end_var
var
M:bool;
StartTime:udint;
T:times;
end_var
T();
T.T_cycle:=T_cycle;
if IN then
Q:=true;
ET:=0;
else
if M then
StartTime:=T.T;
end_if
if Q then
ET:=T.T-StartTime;
if ET>=PT then
Q:=false;
ET:=PT;
end_if
end_if
end_if
M:=IN;
end_function_block