Добрый день уважаемые товарищи. Уже не первую неделю веду войну с чекнутой библиотекой modbus.lib. Искажение буффера я уже поправил. Но вой проблемы с таймингом. В частности ни как не пойму что же означает вызов таймера без параметров на языке ST.
пример из ФБ MB_UNI_IO
Код:
			
tonTimer();			(* отработать цикл таймера тайм-аута *)
IF tonTimer.Q = TRUE THEN	(* стработал таймер любого тайм-аута *)
	IF StartFrame = FALSE 	(* кадр не принимался или *)
		OR DataSize < 5		(* размер кадра меньше допустимого *)
		THEN
		Exception := EXC_TO;	(* установить  ошибку тайм-аута *)
	ELSE						(* кадр принят, контроль CRC *)
		DataSize := DataSize - 2;
		CrcReg := MB_CRC(ADR(DataBuf), DataSize);
		IF DataBuf[DataSize] <> WORD_TO_BYTE(CrcReg) OR
			DataBuf[DataSize + 1] <> WORD_TO_BYTE(SHR(CrcReg, 8)) THEN
			Exception := EXC_TO;	(* установить  ошибку тайм-аута *)
		ELSIF DataBuf[1].7 = TRUE
			THEN				(* исключение протокола MODBUS*)
			Exception := DataBuf[2];
		END_IF
	END_IF
	Complete := TRUE;		(* признак завершения операции *)
END_IF
Собственно что происходит в первой строке??? Мои варианты:
1. Таймер работает с заранее заданными параметрами.
2. Если работает с заранее заданными параметрами то он начинает отсчет с нуля или продолжает отсчет если уже был включен выше.
3. Это дело рук ИНОПЛАНЕТЯН!!!111
4. Программа будет стоять на этой строке пока он не досчитает.

Вот собственно для начала хватит.