Форматирование запросов 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 (декабрь)?