Здравствуйте.
Есть сеть MODBUS-RTU Rs-485 80 устройств.
Устройства из себя предстовляют контроллеры OWEN ПЛК73.
Соответсвенно нужно ее опрашивать.
Прикрутил для начала libmodbus
http://libmodbus.org/На форуме нашел что кто то с ней работает.
Все заработало почти с полпинка, есть но.
В качестве транспорта использую RS485 который подключен к COM порту компа.
Причем это виртуальный порт переходник USB-RS232.
Если идет обращение к сушествующему адресу то связь есть
функция чтения возвращает количество прочитанных байт.
// Читаем регистры
res = modbus_read_registers( m_serialModbus, reg, numReciveByte, buf16 );
Если идет запрос к устройству которого нет на шине modbus_read_registers возвращает -1 что как бы логично.
А вот дальше если раскрыть эту ошибку
errorStr = modbus_strerror(errno);
То получаем "Unknown error"
Если просто отключить виртуальный COM порт
То снова получим эту же ошибку "Unknown error"
Вот интересно это libmodbus не умеет определять что случилось или я что то не так делаю.
Допустим есть сеть одно устройсво пропало, не ответило по тайм ауту значит его нет на связе.
Ком порт отвалился тоже можно определить.
Документация крайне скудна.
Поскажите может есть что по приличнее чем libmodbus.
Сам обмен как бы работает, но ведь нужно обработать и не штатные ситуации.
Свое писать что то не хочется.