Здравствуйте!
Результирующее значение хранится в виде 32-битного числа. Предполагаю, что вы читаете только старшие 16 бит. Попробуйте читать регистр 0x1500 (In1 канал P) как u32 (или прочитать по отдельности 0x1500 и 0x1501) .
Для измерения сопротивления резистора нужно в веб-интерфейсе выбрать режим two-wire resistance measurement:
Схему нужно использовать такую:
При этом конфигурация драйвера для канала In1 при использовании штатного шаблона и измерении резисторов на клеммах P и N (файл /etc/wb-mqtt-serial.conf) будет такой:
{
"channels" :
[
{
"channels" :
[
{
"data_rate" : 20,
"device_type" : "generic_resistance",
"name" : "IN_P"
},
{
"data_rate" : 20,
"device_type" : "generic_resistance",
"name" : "IN_N"
}
],
"device_type" : "p_generic_2w_resistance",
"name" : "Input 1"
},
{
"device_type" : "disabled",
"name" : "Input 2"
},
{
"device_type" : "disabled",
"name" : "Input 3"
}
],
"device_type" : "WB-MAI11",
"slave_id" : "98"
}
Если вы не используете контроллер Wirenboard, то для этого режима нужно сконфигурировать такие регистры:
Mar 01 18:10:04 wirenboard-ATHXPBSP wb-mqtt-serial[26743]: INFO: [modbus] Init: Input 1 IN_P Data rate: setup register <modbus:98:holding: 5122> <-- 20 (0x14)
Mar 01 18:10:04 wirenboard-ATHXPBSP wb-mqtt-serial[26743]: INFO: [modbus] Init: Input 1 IN_P Type: setup register <modbus:98:holding: 5120> <-- 2 (0x2)
Mar 01 18:10:04 wirenboard-ATHXPBSP wb-mqtt-serial[26743]: INFO: [modbus] Init: Input 1 IN_N Data rate: setup register <modbus:98:holding: 5123> <-- 20 (0x14)
Mar 01 18:10:04 wirenboard-ATHXPBSP wb-mqtt-serial[26743]: INFO: [modbus] Init: Input 1 IN_N Type: setup register <modbus:98:holding: 5121> <-- 2 (0x2)
В собственном шаблоне нужно прописать чтение так:
{
"name": "Resistance",
"address": "0x1500",
"reg_type": "input",
"format": "s32",
},