Чтение WB-MAI6 через Modbus

Добрый день!

В проекте планируется использовать модули WB-MAI6 как для считывания аналоговых величин, так и дискретных сигналов типа “сухой контакт”. Данные с модуля будут считываться через стандартный Modbus. Не совсем понятно, из какого регистра и в каком виде считывать дискретные состояния датчиков, если они, к примеру, подключены к каналам in1p, in2p и in3n. Не подскажите, какие адреса для каналов, а также область регистров и тип данных? Карта модбаса на сайте только запутала.

Добрый день!

Постараюсь кратко описать как пользоваться этой картой:

  1. Выбираете код датчика. Смотрите, что подключено к каналу, и берете код: либо готовый из Таблицы 4 (обычный случай), либо ручной режим из Таблицы 3, если датчик нестандартный.

  2. Записываете код в настроечный регистр «тип датчика» — это блок 0xX4xx, holding, пишется функцией 0x06. На вход приходятся два: 0xX400 — для P-дорожки, 0xX401 — для N, где Х - номер входа.

  3. Читаете результат из блока 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);

  • результат читаем из 0x3505

Алексей, благодарю вас за помощь! Теперь понятно стало))

Рад был помочь, всего хорошего!