на производстве 12 машин работают на ПЛК110М2, на всех них одна и та же программа. Проблема такая, есть подпрограммы которые по коду операции пришедшему по Modbus запускают некий агрегат по таймеру, код выглядит примерно так:

Код:
PROGRAM dododo
VAR
	TON_KnL: TON;
	KnlElasp:BOOL;
END_VAR

  TON_KnL(IN := TRUE, PT := DINT_TO_TIME(TRUNC(UST_Time * 1000)), Q=>KnlElasp);
  IF(KnlElasp) THEN
	TON_KnL(IN := FALSE);
	UST_Time := 0;
  END_IF;
работает какое то время, но периодически появляется то на одной машине, то на другой машине пропуск операции. Входит в подпрограмму, запускает таймер и он сразу отрабатывает. Сделал принудительный сброс первой итерации с принудительным перезапуском таймера, так:

Код:
PROGRAM dododo
VAR
	TON_KnL: TON;
	KnlElasp:BOOL;
        inInd:BOOL := TRUE;
END_VAR


IF(inInd) THEN
	TON_KnL(IN := FALSE);
	inInd :=FALSE;
ELSE
  TON_KnL(IN := TRUE, PT := DINT_TO_TIME(TRUNC(UST_Time * 1000)), Q=>KnlElasp);
  IF(KnlElasp) THEN
	TON_KnL(IN := FALSE);
	inInd :=TRUE;
	UST_Time := 0;
  END_IF;
END_IF;
стало лучше, но пропуски хоть и реже, но продолжают появляться. Может кто то сталкивался с данной проблемой, либо знает как полечить.