Модуль аналогового вывода МУ110-224.6У ОВЕН

Добрый день.

Есть задача подключить модуль аналогового вывода МУ110-224.6У ОВЕН к WinerBoard 5. У данного модуля есть RS-485 для протоколов Modbus и ОВЕН.

Сетевые настройки модуля:

  1. Скорость обмена данными 9600 бит/с
  2. Длина слова данных 8 бит
  3. Тип контроля четности слова данных отсутствует
  4. Количество стоп-битов в посылке 1
  5. Длина сетевого адреса 8 бит
  6. Базовый адрес прибора 16
  7. Протокол обмена Modbus
  8. Задержка ответа по сети RS-485 2 мсек

На рисунке попытка подключить через интерфейс.

На закладке девайсов модуль не появляется.

Как все же правильно подключать данный модуль?

Настройте список каналов для опроса в соответствии с документацией к этому модулю. WB просто не знает, что у него спрашивать, т.к. по этому протоколу передаются богатое многообразие данных.

Это железка управляет диммируемыми блоками питания 0-10v?

ОВЕН должен будет управлять приводами honeywell M7410E1002.

В том то и дело. Как выцепить нужные данные? Только скриптом?

Вам нужно написать шаблон для этой железки. Примеры есть в документации по WB.


Регистры в этой таблице “Таблица В.4 - Регистры протокола Mod Bus”

Здравствуйте.
Написал шаблон: config-mu110-6u.json. Выложил сюда: \usr\share\wb-mqtt-serial\templates
Внес корректировку в файл wb-mqtt-serial.conf. Заменил старый файл wb-mqtt-serial.conf на новый.
Модуль видится в Web-интерфейсе WB на вкладке http://…/#/settings, но его каналы в MQTT не подключаются.

Прошу указать, где ошибка?

Файлы:
config-mu110-6u.json

// Configuration options Owen MU110-6U
{
“device_type” : “MU110-6U”,
“device” : {
“name” : “MU110-6U”,
“id” : “mu110-6u”,
“enabled”: true,
“channels”: [
{
“name” : “AO1”,
“reg_type” : “holding”,
“address” : 0,
“type”: “range”,
“max”: 0x3e8
},
{
“name” : “AO2”,
“reg_type” : “holding”,
“address” : 1,
“type”: “range”,
“max”: 0x3e8
},
{
“name” : “AO3”,
“reg_type” : “holding”,
“address” : 2,
“type”: “range”,
“max”: 0x3e8
},
{
“name” : “AO4”,
“reg_type” : “holding”,
“address” : 3,
“type”: “range”,
“max”: 0x3e8
},
{
“name” : “AO5”,
“reg_type” : “holding”,
“address” : 4,
“type”: “range”,
“max”: 0x3e8
},
{
“name” : “AO6”,
“reg_type” : “holding”,
“address” : 5,
“type”: “range”,
“max”: 0x3e8
},
]
}
}

wb-mqtt-serial.conf

{
“debug”: true,
“ports”: [
{
“path”: “/dev/ttyAPP1”,
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 1,
“poll_interval”: 2,
“enabled”: true,
“devices”: [
{
“slave_id”: “0x01”,
“device_type”: “WB-MRM2”,
“enabled”: false
},
{
“slave_id”: “12”,
“device_type”: “WB-MR14”,
“enabled”: false
},
{
“slave_id”: “34”,
“device_type”: “WB-MSW2”
},
{
“slave_id”: “102”,
“device_type”: “WB-MRGB”,
“enabled”: false
},
{
“slave_id”: “16”,
“device_type”: “MU110-6U”,
}

        ]
    },
    {
        "path": "/dev/ttyAPP4",
        "baud_rate": 9600,
        "parity": "N",
        "data_bits": 8,
        "stop_bits": 2,
        "poll_interval": 10,
        "enabled": true,
        "devices": []
    },
    {
        "path": "/dev/ttyAPP2",
        "baud_rate": 9600,
        "parity": "N",
        "data_bits": 8,
        "stop_bits": 2,
        "poll_interval": 10,
        "enabled": false,
        "devices": []
    },
    {
        "path": "/dev/ttyAPP3",
        "baud_rate": 9600,
        "parity": "N",
        "data_bits": 8,
        "stop_bits": 2,
        "poll_interval": 10,
        "enabled": false,
        "devices": []
    }
]

}

Сам модуль по RS485 доступен. Проверял так:
root@wirenboard-AVL672KN:~#
root@wirenboard-AVL672KN:~# modbus_client --debug -mrtu -pnone /dev/ttyAPP1 -a16 -t0x3 -r1
Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 1)
[10][03][00][01][00][01][D6][8B]
Waiting for a confirmation…
<10><03><02><00><00><44><47>
SUCCESS: read 1 of elements:
Data: 0x0000
root@wirenboard-AVL672KN:~#
root@wirenboard-AVL672KN:~#

Подскажите, а можно связь наоборот попробовать. Взял ПР200 программируемое реле… ВЕЩЬ!!
там есть интерфейс RS485. Поставил его в режим мастер и связал переменные с WB-MR6C. Странно что по функции 0х03 чтение с модуля происходит, а по функции 0х06 не записывается и не изменяет состояние реле! уже и булевскую переменную попробовал и целочисленную, ну не изменяет и все…
может кто поможет?

вопрос снят. записывать нужно в 0 регистр, и устанавливать биты для каждого выхода.

это видимо какие-то особенности овеновских железок, потому что у нас, естественно, всё по-человечески: никаких битов в регистрах и недокументированных регистров нет.

Изменение состояния реле происходит через установку регистров флагов (coils).

так я тоже так считал - команда 0x06 регистр такой то… а оказалось немного не так. но если кому понадобится инфа то велком. Вообще ПР200 вещь конечно, но косяки тоже есть. Но поддержка ураган, много и по делу. И хочу отметить визуальный интерфейс программирования. Интересно повозиться. Хотя мне скрипты в debian конечно больше нравятся

0x06 - это для регистров хранения, для регистров флагов в Modbus другой код функции. У нас в документации про это есть подробная статья https://contactless.ru/wiki/index.php/Протокол_Modbus

о да… сорри 0х05