Работа с Neptun Smart

Здравствуйте! Пытаюсь подключиться и управлять Neptun Smart по RS-485. Вот их документация

Там дурацкое разделение регистров на биты, и почему-то у меня не получается ничего нормально прочитать. Решил начать с чтения адреса устройства, потому что мы на 100% знаем, что там лежит 240. Согласно документации, адрес хранится в 5 регистре, в байтах F-8, что бы это не значило.

Результат чтения регистра modbus_client:

root@wirenboard-ATCGNXJQ:~# modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -b9600 -a240 -t0x03 -r0005
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[F0][03][00][05][00][01][81][2A]
Waiting for a confirmation...
<F0><03><02><F0><03><C1><90>
SUCCESS: read 1 of elements:
        Data: 0xf003

0xf003 это 1111000000000011
240 адрес в 2сс это 11110000. Если я пишу в драйвере 5:8:15, прилетает значение “768”


image

Что я делаю не так? Главный инженер поддержки нептуна сказал, что он не знает, как работает modbus в их оборудовании, и у них в компании никто не может ответить ни на какие вопросы по поводу modbus. В конце диалога вообще заявил, что сомневается, что я не дебил, так что на них надежды ноль, но объект сдавать надо.

Добрый день.

В документации про это написано:
*// Можно читать отдельные биты регистра, для этого запишите адрес в формате: “address”:“reg:shift:width”, где reg — адрес регистра, shift — смещение от начала, а width — количество считываемых битов. *

  •                        // Например, "address":"109:1:2" — прочитать второй и третий биты регистра, расположенного по адресу 109.*
    
  •                        "address" : 0,*
    

вы читаете биты с 8 длиной 15? Это не совсем понятно… Регистр имеет длину в одно слово
Как мне кажется - тема уже обсуждалась. Например тут: Шаблон для Mautomatics JL204С5 (Breezart 550 Lux) - #4 от пользователя BrainRoot

Тьфу, действительно, почему-то было стойкое ощущение, что третья цифра- смещение конца. Спасибо, всё заработало!

1 Like

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.