Товарищи, давайте определимся что в этой теме идет речь о работе библиотеки modbus.lib а конкретно ФБ MB_UNI_IO, о моей программе можно поговорить позже. Для себя я на все вопросы уже ответил, хочу чтобы потомкам что нибудь осталось, а то ОВЕН у нас не умеют ни документацию писать ни примеры к сожалению.
Изначально всплыла проблема с ошибкой таймаута модбас в режиме RTU скорость 9600 RS485, код управляет частотником и опрашивает прибор который измеряет скорость воздуха, 4 поочередных запроса(пока один не выполнится следующий не запускается). Этот же самый код на 115200 работает отлично.
При изучении ФБ MB_UNI_IO выяснилось что функция отправки данных в порт SysComWrite(ComHandle, ADR(DataBuf),DataSize, 0) притягивает уровень на линии еще где-то 5мс после передачи всех данных(это типо интервал тишины, но если его правильно считать для 9600 он должен быть где-то 1,5мс). Что и видно на осциллограмме ниже.
5555.JPG
У частотника ПЧВ с завода стоит параметр "минимальное время на ответ 10мс" то есть ему норм. Но наш прибор отвечает чуть быстрее и из-за того что мастер то есть ПЛК еще держит линию ответ от прибора приходит искаженный, что тоже видно на осциллограмме ниже.
333.JPG
Самое интересное что у ФБ SysComWrite тоже есть параметр таймаут, который как написано по документации определяет сколько будет работать блок. По дефолту он 0, по факту меняй не меняй его ничего не изменится.
Вот собственно и все. Если что-то не так пишите, обсудим.




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