“Сканирование” предназначено только для устройств имеющих стандартные для wirenboard регистры. То есть - для устройств wirenboard.
Для сторонних - надо перебирать имено присутствующие регистры.
Я не увидел в описании регистров упоминания поавающей точки.
Выбран неверный формат. Использовать надо uint32
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r0
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][00][00][01][31][CA]
Waiting for a confirmation...
<01><84><03><03><01>
ERROR Illegal data value
ERROR occured!
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r1
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][01][00][01][60][0A]
Waiting for a confirmation...
<01><84><02><C2><C1>
ERROR Illegal data address
ERROR occured!
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r2
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][02][00][01][90][0A]
Waiting for a confirmation...
<01><84><03><03><01>
ERROR Illegal data value
ERROR occured!
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r3
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][03][00][01][C1][CA]
Waiting for a confirmation...
<01><84><02><C2><C1>
ERROR Illegal data address
ERROR occured!
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r4
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][04][00][01][70][0B]
Waiting for a confirmation...
<01><04><02><00><00><B9><30>
SUCCESS: read 1 of elements:
Data: 0x0000
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r5
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][05][00][01][21][CB]
Waiting for a confirmation...
<01><04><02><00><00><B9><30>
SUCCESS: read 1 of elements:
Data: 0x0000
root@wirenboard-A6O2ZIO2:~# modbus_client --debug -mrtu -b4800 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x04 -r6
Opening /dev/ttyRS485-2 at 4800 bauds (N, 8, 1)
[01][04][00][06][00][01][D1][CB]
Waiting for a confirmation...
<01><84><02><C2><C1>
ERROR Illegal data address
ERROR occured!
root@wirenboard-A6O2ZIO2:~#
то ли я не понимаю, как его “вычитать”… то ли документация не соответствует.
Вроде делаю все правильно - (ведь по одному адресу он дает нормальный ответ)… на шине ничего кроме датчика этого не висит. Вычитываю как написано в документации функцией 0x04, номера регистров - ну тут сложно ошибиться (но все равно “перебираю” по очереди)…
Вот тут описано: Разбираем float на части / Хабр
Если считать 0x09ce41e5 - float то у него старший бит опущен. Положительное. Считаем:
0b0000 1001 1100 1110 0100 0001 1110 0101
Экспонента - 0b000 1001 11
Мантисса - 0b110 0100 0001 1110 0101
Экспонента 13-127=-114
мантисса 100100000111100101 = 147941 то есть 1,47941