Предположим я поверил. Он работает с заранее заданными параметрами. А когда он отсчет начал в моменте когда ему что-то присвоили или же в этом моменте tonTimer();. и вообще программа там будет стоять и чего-то ждать? и вообще в чем смысл этой записи?
Все тот-же пример из библиотеки modbus.lib
Код:
IF Mode = MB_RTU THEN		(* прием кадра RTU *)
	IF MB_RTU_RX(
		ComHandle,				(* дескриптор последовательного порта SysLibCom *)
		DataBuf,					(* буфер принимаемого кадра *)
		DataSize,					(* указатель буфера кадра *)
		StartFrame)				(* признак начала кадра *)
		= RX_CONT THEN		(* приемный буфер обновился *)
		tonTimer(IN := FALSE);	(* остановить таймер тайм-аута *)
		tonTimer(IN := TRUE,		(* запустить таймер на ожидание конца кадра *)
			PT := T_FRTU);
	END_IF
	tonTimer();					(* отработать цикл таймера тайм-аута *)
	IF tonTimer.Q = TRUE THEN	(* стработал таймер любого тайм-аута *)
По сути в IF THEN таймер уже запустился и начал считать до значения T_FRTU и он досчитает до него. Либо таймер умирает как только мы выходим из условия и для этого он еще раз вызывается с параметрами заданными строкой выше. Верно ли я сужу?