Предположим я поверил. Он работает с заранее заданными параметрами. А когда он отсчет начал в моменте когда ему что-то присвоили или же в этом моменте 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 и он досчитает до него. Либо таймер умирает как только мы выходим из условия и для этого он еще раз вызывается с параметрами заданными строкой выше. Верно ли я сужу?