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




Ответить с цитированием
