Пытаюсь разрбраться в конфинураций боковых модулей. Использую WB-MIO. Где можно подробнее почитать, что значат эти регистры? Из названия не понятно, что они делают. При использовании WB-MIO и боковых DI требуется проводить настройку через эти регистры?
Добрый день.
Это регистры микросхем-расширителей ввода-вывода Microchip MCP23008 (8 pin) / MCP23017 (16 pin), которые стоят внутри боковых модулей WBIO.
WB-MIO просто «пробрасывает» их наружу по Modbus один в один.
Поэтому из названий сходу не понятно ничего.
Коротко что делает каждый
| Регистр | Смысл | Для DI |
|---|---|---|
| IODIR | Направление вывода: 1 = вход, 0 = выход |
0xFFFF — все 16 линий на вход |
| IPOL | Инверсия логики чтения: 1 = читать инвертированно |
0x0000 — без инверсии |
| GPINTEN | Разрешение прерывания по изменению для каждой линии | 0xFFFF — MIO узнаёт об изменении входа сразу, а не по опросу |
| INTCON | С чем сравнивать: 0 = с предыдущим значением (любое изменение), 1 = с DEFVAL |
0x0000 — прерывание по любому фронту |
| DEFVAL | Эталон для сравнения, работает только там, где INTCON=1 | 0x0000 — не используется |
| IOCON | Общая конфигурация чипа | 0x4444 |
Разбор 0x44 (байт продублирован в обе половины, т.к. у MCP23017 IOCON зеркалится в IOCONA/IOCONB):
- бит 6
MIRROR = 1— INTA и INTB объединены в один сигнал прерывания; - бит 2
ODR = 1— выход прерывания с открытым стоком; - остальные нули: BANK=0 (линейная адресация), SEQOP=0 (автоинкремент), INTPOL не важен при ODR.
У 8-пиновых MCP23008 бита MIRROR нет, он просто игнорируется — отсюда и «странное» 0x4444 в строках для 8 pin.
Если WB-MIO опрашивается контроллером Wiren Board через wb-mqtt-serial, вы просто добавляете устройство с адресом вида 15:1 (<Modbus-адрес MIO>:<номер WBIO по порядку>) и выбираете шаблон WBIO-DI-WD-14 — драйвер сам прописывает эти регистры при инициализации.
В ручную надо настраивать если WB-MIO опрашивается сторонним мастером — ПЛК, SCADA, свой Modbus-клиент.
Шаблонов WB там нет, и инициализацию модуля делаете вы сами как описано в примере под таблицей:
ххх - значение stride для модулей. То есть для первого модуля надо использовать 1000, для второго - 2000 и так далее.
Пример конфигурации двух модулей WD-14, подключенных первым и вторым:
11000 - 0xffff
11001 - 0x0000
11002 - 0xffff
11003 - 0x0000
11004 - 0x0000
11005 - 0x4444
10999 - 0x0001
#For second module addresses increased on 1000:
12000 - 0xffff
12001 - 0x0000
12002 - 0xffff
12003 - 0x0000
12004 - 0x0000
12005 - 0x4444
11999 - 0x0001
Добрый день.
Подскажите остались к техподдержке вопросы по теме?
Нет, к сожалению так сделать не получится.

