Добрый день!
Заранее извиняюсь, если тема избита, но я час листал/искал по форуму, гуглил и ничего не нашел, кроме общего описания протокола и мануала.
Пытаюсь подключить МВ210-204 по TCP, по протоколу Modbus, пишу на С++.
Соединение устанавливается, хочу прочитать, допустим, состояние входа i1.
Судя по мануалу это команда 04 – Read Input Registers, адрес регистра 51.
Отправляю (hex) 00 00(номер транзакции) 00 00(id протокола) 00 06(6 байт далее) 01(slave id) 04(команда) 00 33(регистр) 00 01(количество регистров)
Ответ(hex): 00 00 00 00 00 03 01 84 02 - 9 байт. А должно быть 11, т.к. последний 02 это длина данных, ещё 2 байта, которые не приходят.
Замыкаю, размыкаю контакты - в ответе ничего не меняется.
И почему-то Function Code возвращается 03 а не 04.
Пробовал команду 03, то же самое.
Что я делаю не так?

В OWEN Configurator всё прекрасно считывается, устройство рабочее.