Подключение Овен МУ110-24.32Р

Добрый день, имеется WirenBoard 7 и модуль дискретного вывода МУ110-24.32Р Овен (Руководство по эксплуатации > Модули дискретного вывода (с интерфейсом RS-485) МУ110). Подключение производил, путем настройки пользовательского шаблона:

{
    "device_type": "MU110-2432P",
    "group": "g-io",
    "device": {
        "name": "MU110-2432P",
        "id": "mu110-2432p",
        "frame_timeout_ms": 0,
        "channels": [	 	    
	    {
                "name": "DO_16",
                "reg_type": "holding_multi",
                "address": "98:15:1",
                "type": "switch",
		"format": "u16"
            }
        ]
    }
}

Видео

Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [serial port driver] setting device register: <modbus:16:holding_multi: 98:15:1> <- 0
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 80 00 25 87
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [serial client] </dev/ttyRS485-1 9600 8 N 1>8381393: Wait until 8381393
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [modbus] write 1 holding_multi(s) @ 98 of device modbus:16
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 10 00 62 00 01 02 80 00 0f 82
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [serial client] </dev/ttyRS485-2 9600 8 N 2>8381396: Wait until 8381493
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: Sleep 11459 us
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 10 00 62 00 01 a3 56
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [register] new val for <modbus:16:holding_multi: 98:15:1>: 0
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [serial port driver] channel 'DO_16' of device 'mu110-2432p_16' <-- 0
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 03 00 62 00 01 26 95
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: Sleep 8334 us
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 80 00 25 87
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [register] new val for <modbus:16:holding_multi: 98:15:1>: 1
Oct 23 13:51:12 wirenboard-A6OHMYHZ wb-mqtt-serial[8986]: DEBUG: [serial port driver] channel 'DO_16' of device 'mu110-2432p_16' <-- 1

Добрый день.
В приложенном лог е я вижу запись “0” в 15 бит

Ну и чтение этого регистра без поднятого 15 бита.:

Что делаете, какого результат ожидаете?

Я через вебинтерфейс котроллера нажимаю переключатель, при этом стоит ему один раз включиться и потом я не могу его выключить, он почему-то каждый раз принудительно включается

Какое значение читается с устройства?
Считаете что прочитанное знанчение не соответствет состоянию?

Та команда, которая пишет 1 в 15 бит, я её не инициировал, она каким-то образом сама отправляется

Никакие действия ни с интерфейсом ни с кнопкой - не делались?
Попробую синтетически воспроизвести.

устройство создано с нуля, переключатель автоматически отображается. Есть такой момент - если я меняю количество считываемых/записываемых бит в адресе, то поведение меняется

{
    "device_type": "MU110-2432P",
    "group": "g-io",
    "device": {
        "name": "MU110-2432P",
        "id": "mu110-2432p",
        "frame_timeout_ms": 0,
        "channels": [	 	    
	    {
                "name": "RAW",
                "reg_type": "holding_multi",
                "address": "98",
                "type": "value",
                "format": "u16"
            },	    
	    {
                "name": "DO_01",
                "reg_type": "holding_multi",
                "address": "98:0:1",
                "type": "switch",
		"format": "u16"
            },
	    {
                "name": "DO_02",
                "reg_type": "holding_multi",
                "address": "98:1:1",
                "type": "switch",
		"format": "u16"
            }
        ]
    }
}

Это лог при переключении тумблера

Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] setting device register: <modbus:16:holding_multi: 98:1:1> <- 0
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 00 02 c5 86
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-1 9600 8 N 1>1214453: Wait until 1214453
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [modbus] write 1 holding_multi(s) @ 98 of device modbus:16
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 10 00 62 00 01 02 00 02 ef 83
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 11459 us
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 10 00 62 00 01 a3 56
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [register] new val for <modbus:16:holding_multi: 98:1:1>: 0
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] channel 'DO_02' of device 'mu110-2432p_16' <-- 0
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 03 00 62 00 01 26 95
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 8334 us
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 00 02 c5 86
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [register] new val for <modbus:16:holding_multi: 98:1:1>: 1
Oct 24 10:48:20 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] channel 'DO_02' of device 'mu110-2432p_16' <-- 1

Это лог при вводе 0 в поле ROW

Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] setting device register: <modbus:16:holding_multi: 98> <- 0
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 00 02 c5 86
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-1 9600 8 N 1>1286272: Wait until 1286272
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [modbus] write 1 holding_multi(s) @ 98 of device modbus:16
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 10 00 62 00 01 02 00 00 6e 42
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 11459 us
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 10 00 62 00 01 a3 56
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [register] new val for <modbus:16:holding_multi: 98>: 0
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] channel 'RAW' of device 'mu110-2432p_16' <-- 0
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 03 00 62 00 01 26 95
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 8334 us
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-2 9600 8 N 2>1286325: Wait until 1286624
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 00 00 44 47
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [register] new val for <modbus:16:holding_multi: 98:1:1>: 0
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] channel 'DO_02' of device 'mu110-2432p_16' <-- 0
Oct 24 10:49:32 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-1 9600 8 N 1>1286341: Wait until 1286341

Это лог при вводе 2 в поле RAW

Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] setting device register: <modbus:16:holding_multi: 98> <- 2
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 00 00 44 47
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-1 9600 8 N 1>1288202: Wait until 1288202
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [modbus] write 1 holding_multi(s) @ 98 of device modbus:16
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 10 00 62 00 01 02 00 02 ef 83
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 11459 us
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-2 9600 8 N 2>1288225: Wait until 1288624
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 10 00 62 00 01 a3 56
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [register] new val for <modbus:16:holding_multi: 98>: 2
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] channel 'RAW' of device 'mu110-2432p_16' <-- 2
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 0 us
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Write: 10 03 00 62 00 01 26 95
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: Sleep 8334 us
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [port] /dev/ttyRS485-1: ReadFrame: 10 03 02 00 02 c5 86
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [register] new val for <modbus:16:holding_multi: 98:1:1>: 1
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial port driver] channel 'DO_02' of device 'mu110-2432p_16' <-- 1
Oct 24 10:49:34 wirenboard-A6OHMYHZ wb-mqtt-serial[13203]: DEBUG: [serial client] </dev/ttyRS485-1 9600 8 N 1>1288258: Wait until 1288258

версия wb-mqtt-serail

Package: wb-mqtt-serial
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 8599
Maintainer: Evgeny Boger <boger@contactless.ru>
Architecture: armhf
Version: 2.93.3-wb101
Replaces: wb-homa-modbus (<< 1.14.1)
Depends: libc6 (>= 2.30), libgcc-s1 (>= 3.5), libstdc++6 (>= 9), libwbmqtt1-4 (>= 4.1.0~~), ucf, bsdutils (>= 2.29)
Recommends: wb-mqtt-confed (>= 1.7.0)
Breaks: wb-homa-modbus (<< 1.14.1), wb-mqtt-confed (<< 1.7.0), wb-mqtt-homeui (<< 2.44.0)
Conffiles:
 /etc/wb-configs.d/11wb-mqtt-serial 25dea7134dcb1cd4ec4e4f33524635e0
 /etc/wb-mqtt-serial.conf.sample 8a7d546742e4e81f79d534988fe1d076
Description: Wiren Board Smart Home MQTT serial protocol driver
 wb-mqtt-serial is a service which communicates with devices on RS-485
 via Modbus or other supported protocols. Modbus TCP is also supported.
 You can add your devices by creating new templates and configure each
 register poll settings individually. Also it contains advanced templates
 to configure parameters of Wiren Board peripheral devices.
Homepage: https://github.com/wirenboard/wb-mqtt-serial

Да, бага.
Прявлется именно для “holding_multi”.
Отдаю разработчикам.

А ответ по результатам в этой теме будет? и сколько примерно по времени?

Да тут, пока не могу сказать про срок.

Добрый день, дополнительная информация: подключил модуль вывода к opc серверу и там задавал значения вывода (указал тип boolean). Устройство отработало корректно.
Команда на запись 1 в бит регистра Tx 10 10 00 62 00 01 02 00 01 AF 82
Команда на запись 0 в бит регистра Tx 10 10 00 62 00 01 02 00 00 6E 42
При этом, если включить еще один бит в этом регистре, то команды принимают следующий вид:
Команда на запись 1 в бит регистра Tx 10 10 00 62 00 01 02 00 05 AE 41
Команда на запись 0 в бит регистра Tx 10 10 00 62 00 01 02 00 04 6F 81

1 лайк

А какой в целом примерный срок? месяцы или годы?

Точно так же можно работать с битами программнор на контроллере. Описать просто целый регистр.

ДУмаю - меньше месяца, недели две.

а как это делается?

Создается виртуальное устройство, скриптом, в котором представляются контролы
Ну и правило, которое при изменении этих контролов - пишет в регистр его же значение с учетом изменения бита. Например так: Как в шаблоне прописать побитовое чтение Input регистра? - #8