Нет данных с первого устройства

Нашел Wiren Board 6 и хочу настроить через него.
Попытался найти файл /etc/wb-mqtt-serial.conf - его нет…

Забыл сказать что хочу подключиться к модулям по RS-485 через WB-MIO-E

Конечная цель это сделать независимую работу сборки WB-MIO-E + WBIO-DI-HVD-8 + WBIO-DI-DR-16

Ну, так, наверное, проще. Для начала сделайте apt-get update и apt-get upgrade. При выборе ставьте версии конфигурационных файлов от мейнтейнера.

А с конфигурационными регистрами не пробовали управлять?

Хочу попробовать через них

Мне не понятно как их расшифровывать…
Карта регистров конфигурации боковых модулей

xxx00 8 pin INPUT 0xFF IODIR: pin direction ???

xxx00 ???

ДА, надо расширить документацию в этой части.
Давайте здесь сейчас коротко расскажу, как это работает.

Берем шаблон, например config-wbio-do-hs-8.json. Смотрим заголовок:
%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5
Видим параметры “stride” и “shift” (в ваших устройствах входов типа DI параметр shift в шаблоне отсутствует, он принимается равным 0).

Дальше смотрим setup-секцию:
%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5

Видно, что в IODIR нам надо записать 0 перед началом работы, в IPOL — тоже ноль, и так далее.
А как вычислить адрес нужного holding-регистра, что скрывается за этими xxx?

Формула следующая:
Shift = (((SlaveId.Secondary - 1) % 4) + 1) * DeviceConfig()->Stride + DeviceConfig()->Shift;

Каждое подключенное устройство имеет порядковый номер (SlaveId.Secondary), начинающийся с 1 для первого устройства.

Подставляем значения в формулу:
Shift = ((( 1 - 1) % 4) + 1) * 500 + 1000 = (0+1)*500+1000=1500 и получаем сдвиг для адресов регистров первого модуля.

В setup-секции написано, что адрес регистра IODIR — 10000. Добавляем к нему 1500 и получаем, что для первого устройства ввода вывода надо в регистр 11500 записать 0x0000.

Проверим. В таблице регистров мы видим, что конфигурационные регистры для модуля 1, если это модуль вывода) занимают диапазон от 11500 до 11505:

Так, значит все верно посчитали.

Соответственно, адрес регистра IPOL будет 11501, GPINTEN – 11502 и т.п.

По всем регистрам из-setup-секции устройства нужно записать указанные значения.

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

1 лайк

Спасибо! Все получилось.

Отлично! Успехов вам!

Допишем документацию. Были ли еще какие-то моменты, связанные с WB_MIO, которые показались вам трудными для понимания или требующие дополнительного разъяснения?

Хотелось бы пошагового руководства по настройке и желательно дублировать на русском языке с описанием пунктов.
Некоторые инструкции очень краткие (“шпаргалки” для программиста ).
Не хватает тех. поддержки по телефону.
В целом очень доволен вашей продукцией.

1 лайк

конфигурирование wb-mio по modbusRTU.txt (10.6 КБ)
Добрый день. Пытаюсь настроить wb-mio и два WBIO-DI-DR-8 по modbus RTU. В регистры IPOL,GPINTEN,DEFVAL,INTCON,IOCON установил значения как тут https://github.com/contactless/wb-mqtt-serial/blob/master/wb-mqtt-serial-templates/config-wbio-di-dr-8.json.
Не удается записать значение 1 в регистры (10999 и 11999).
Не удается прочесть значения регистров 1000-1007 и 2000-2007.
Подскажите куда смотреть. Файл с опросом устройства приложил.

Elektrik, добрый день!
Скорее всего, проблемы именно в конфигурировании MIO. Можете показать, как вам не удается записать значение 1 в регистры (10999 и 11999)?

К WB-MIO подключен один модуль DI на 8 входов. Пытаюсь записать в регистр 10999 значение 1, запись не выполняется.
Регистры модуля DI не читаются (1000-1007).
Из регистра 997 читает 1, т.е. WB-MIO видит 1й модуль DI

Проблемма решена. Не той функцией читал адреса 1000-1007. Надо 1й

Здравствуйте, у меня аналогичная проблема. Не могу завершить настройку первого устройства. Не перезаписывается значение в 10999 регистр. К WB-MIO подключено два модуля WBIO-DI-WD-14 - первым и WBIO-DO-SSR-8 вторым. Подключение также произвожу по RS-485 через девайс modbus-to-ethernet.

Здравствуйте! Для диагностики проблемы нужно больше информации.
Напишите точную модель адаптера “modbus-to-ethernet”, который вы используете? Какой программой опрашиваете модуль? Проблема только с записью регистров или с чтением тоже? Какое значение сейчас в регистре? Какое значение пытаетесь записать? Какая индикация у зеленого светодиода на модуле без запросов к нему и во время запроса (горит, не горит, мигает)?

Вообще самостоятельное конфигурирование регистров для боковых модулей дело не совсем простое.
Регистр 10999 предназначен для регистров, связанных с боковыми релейными модулями.
Если конфигурировать первый боковой модуль WBIO-DI-WD-14, подключенный к WB-MIO-E, то драйвер автоматически записывает следующие регистры:

Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: IODIR: setup register <modbus_io:84:1:holding: 10000> <-- 0xffff (0xffff)
Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: IPOL: setup register <modbus_io:84:1:holding: 10001> <-- 0x0000 (0x0)
Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: GPINTEN: setup register <modbus_io:84:1:holding: 10002> <-- 0xffff (0xffff)
Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: DEFVAL: setup register <modbus_io:84:1:holding: 10003> <-- 0x0000 (0x0)
Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: INTCON: setup register <modbus_io:84:1:holding: 10004> <-- 0x0000 (0x0)
Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: IOCON: setup register <modbus_io:84:1:holding: 10005> <-- 0x4444 (0x4444)
Sep 10 09:07:42 wirenboard-ATHXPBSP wb-mqtt-serial[8574]: INFO: [modbus] Init: CONFIG-FLAG: setup register <modbus_io:84:1:holding: 9999> <-- 1 (0x1)

Попробуйте записать аналогичные значения в указанные регистры.

Все регистры конфигурации и чтения состояний можно посмотреть в шаблоне устройства:

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