В проекте планируется использовать модули WB-MAI6 как для считывания аналоговых величин, так и дискретных сигналов типа “сухой контакт”. Данные с модуля будут считываться через стандартный Modbus. Не совсем понятно, из какого регистра и в каком виде считывать дискретные состояния датчиков, если они, к примеру, подключены к каналам in1p, in2p и in3n. Не подскажите, какие адреса для каналов, а также область регистров и тип данных? Карта модбаса на сайте только запутала.
Постараюсь кратко описать как пользоваться этой картой:
Выбираете код датчика. Смотрите, что подключено к каналу, и берете код: либо готовый из Таблицы 4 (обычный случай), либо ручной режим из Таблицы 3, если датчик нестандартный.
Записываете код в настроечный регистр «тип датчика» — это блок 0xX4xx, holding, пишется функцией 0x06. На вход приходятся два: 0xX400 — для P-дорожки, 0xX401 — для N, где Х - номер входа.
Читаете результат из блока 0xX5xx — input, функция 0x04. Тут два варианта на дорожку:
сырое значение — 0xX500 (P) / 0xX502 (N);
пересчитанное в физическую величину — 0xX504 (P) / 0xX505 (N): °C·100, ток, или 0/1 для сухого контакта.
Пример для сухой контакт на in1p:
в Таблице 4 сухого контакт = код 0x1600;
вход 1, дорожка P → настроечный регистр 0x1400, пишем туда 0x1600 (func 0x06);
результат читаем из 0x1504 (func 0x04) → получаем 0 (разомкнут) или 1 (замкнут).
Также пример, для in2p:
вход 2, дорожка P → настроечный регистр 0x2400, пишем туда 0x1600 (func 0x06);
результат читаем из 0x2504
Для in3n:
вход 3, дорожка N → настроечный регистр 0x3401, пишем туда 0x1600 (func 0x06);