Вход

Просмотр полной версии : МВ110-16ДН расчет контрольной суммы запроса Modbus ASCII



user32767
10.10.2016, 13:39
Здравствуйте!
У меня проблема: опрашиваю модуль МВ110-16ДН по Modbus RTU - все работает, переключаюсь на Modbus ASCII - модуль молчит. Опрос произвожу записью в последовательный порт, к которому подключен конвертер RS232->RS485 Adam-4520.
Сообщение Modbus RTU: 10 03 00 33 00 01 77 44 - ответ получен.
То же сообщение в виде Modbus ASCII: 3A 31 30 30 33 30 30 33 33 30 30 30 31 33 39 0D 0A - модуль ничего не отвечает.

Нужно заметить, что модуль МУ110-16К через тот же конвертер тем же способом без проблем работает как по Modbus RTU, так и по Modbus ASCII.

capzap
10.10.2016, 14:05
Здравствуйте!
У меня проблема: опрашиваю модуль МВ110-16ДН по Modbus RTU - все работает, переключаюсь на Modbus ASCII - модуль молчит. Опрос произвожу записью в последовательный порт, к которому подключен конвертер RS232->RS485 Adam-4520.
Сообщение Modbus RTU: 10 03 00 33 00 01 77 44 - ответ получен.
То же сообщение в виде Modbus ASCII: 3A 31 30 30 33 30 30 33 33 30 30 30 31 33 39 0D 0A - модуль ничего не отвечает.

Нужно заметить, что модуль МУ110-16К через тот же конвертер тем же способом без проблем работает как по Modbus RTU, так и по Modbus ASCII.

если я правильно посчитал, то не совпадает контрольная сумма, правда я считал в уме, а не программно

Гарчев Евгений
10.10.2016, 14:09
Здравствуйте!
В Вашем случае, посылка запроса некорректная. Hex-код маркера начала посылки должен быть не "3А", а "23". И контрольная сумма должна быть не "39", а "B9" (Hex-коды, вместо "33 39", должно быть "42 39").

Гарчев Евгений
10.10.2016, 14:18
Прошу прощения, маркер начала посылки верный. Но контрольная сумма посчитана неверно.

user32767
10.10.2016, 14:23
Capzap, Гарчев Евгений

Спасибо Вам огромное! Я действительно неправильно выполнил операцию "дополнения до двух" при расчете контрольной суммы, вычитал 71 из 128, тогда как следовало вычесть 71 из 256. Это решило проблему, ответ получен.