Форматирование запросов Modbus в ruby

У меня есть устройство Modbus, с которым я пытаюсь установить связь, используя устройство Ethernet для устройства RS485. Я не уверен, использует ли устройство Modbus ASCII или RTU.

Я пытаюсь отформатировать запрос к устройству с адресом 1. Код команды 11h. Я не уверен, что правильно форматирую запрос

Вот строка, которую я использую для ASCII - ":010B000000000C\x0D\x0A"

Вот шестнадцатеричный код, который я использую для RTU: "\x01\x0B\x00\x00\x00\x00\x0B\xA4"

Когда я посылаю эту команду, она возвращается, но я не получаю ответы. Я ознакомился с документацией по Modbus и думаю, что у меня правильная структура байтов. Мне интересно, правильно ли я кодирую это для рубина?

2 ответа

Решение

Оказалось, что мое устройство Ethernet для RS485 не может правильно настроить синхронизацию по Modbus. После того, как я купил новый блок, строки ascii работали.

Вы уверены, что контрольная сумма должна быть записана в чистых байтах, а не в ASCII? Я имею в виду, попробуйте отправить :010B000000000C0D0A вместо :010B000000000C\x0D\x0A,

Кроме того, вы написали, что команда 11h - для моего понимания это 0x11 (hex), и вы отправляете 0x0B. Или команда 11 (декабрь)?

Другие вопросы по тегам