Настройка WB-MAI11

Добрый день!

Разбираюсь с WB-MAI11.
Можете прислать пример конфигурции wb-mqtt-serial с измерения сопротивления обычного резистора?
Какие регистры нужно считывать и записывать?

Я у себя создал:


        {
          "device_type": "WB-MAI11",
          "enabled": true,
          "setup": [
            {
              "address": "0x1400",
              "title": "Input 1 type P",
              "value": 2
            },
            {
              "address": "0x1401",
              "title": "Input 1 type N",
              "value": 2
            }
          ],
          "slave_id": "31"
        }

Подключил по схеме:

Считываю регистры input 0x1500 и 0x1502. Всегда получаю 0. Что делаю не так?

Здравствуйте!
Результирующее значение хранится в виде 32-битного числа. Предполагаю, что вы читаете только старшие 16 бит. Попробуйте читать регистр 0x1500 (In1 канал P) как u32 (или прочитать по отдельности 0x1500 и 0x1501) .

Для измерения сопротивления резистора нужно в веб-интерфейсе выбрать режим two-wire resistance measurement:

Схему нужно использовать такую:
image

При этом конфигурация драйвера для канала 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",
            },
1 Like

В документации вижу, что 0x1500 s32. Можете уточнить?

Спасибо за разъяснения, разобрался!
Не учел, что нужно указать Data rate.

Да, тип регистра “s32”. Спасибо за поправку, исправил в предыдущем сообщении.

1 Like

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