

8 релейных выходов и 8 оптронных входов 24 В. Modbus RTU, HVR-CAN и HAL10 в одном модуле.
Предзаказ на все три исполнения (-A, -B, -C), от 1 шт. Финальная ревизия платы проходит испытания; дату начала поставок объявим после их завершения. Квалификационные испытания не завершены: электрические и тепловые характеристики не установлены, маркировки соответствия (CE/EMC) нет. Характеристики могут измениться до выпуска.
Компактный модуль ввода-вывода для автоматизации зданий и щитов управления: 8 релейных выходов и 8 дискретных входов 24 В DC в корпусе на DIN-рейку. Управляется по RS-485 (Modbus RTU), по CAN или кнопками на передней панели (исполнения -B и -C).
В системе HAL10 модуль работает как обычное устройство этой шины, без верхнего контроллера: хранит собственные сценарии и расписания, а другие CAN-устройства управляют его выходами напрямую, через подписки.
Каждая плата получает серийный номер, проходит функциональный тест на стенде и заносится в базу перед отгрузкой.
Карта регистров, функции Modbus и примеры команд — во вкладке «Регистры».
| Ситуация | Что происходит |
|---|---|
| Включение питания | В стандартном исполнении платы контакт может кратковременно замкнуться до старта прошивки. Затем прошивка выключает все выходы |
| Сброс (NRST, программный, watchdog) | Контакты сохраняют состояние. Следующая загрузка активно выключает выходы |
| Восстановление после сброса | Выключено по умолчанию. Если включить, модуль восстанавливает последнее состояние реле при загрузке |
| Сбой прошивки | Модуль пытается разомкнуть контакты (настраивается). Это попытка, а не функция безопасности |
| Зависание основного цикла | Обработчик сбоя не запускается, watchdog перезагружает модуль (измерено 7 с на одном экземпляре) |
| Обновление прошивки | Выходы выключаются перед перезапуском, модуль несколько секунд не отвечает на шине |
| Шина замолчала | Выходы остаются в текущем состоянии. Тайм-аута связи нет |
| Wiren Board | Не проверено на стенде | ||
|---|---|---|---|
| Home Assistant | Не проверено на стенде | ||
| ESPHome | Не проверено на стенде |
| Конструкция | Две платы: CRS8PU (процессор) + CRS8IO (реле, входы, интерфейсы) |
|---|---|
| Микроконтроллер | Artery AT32F423 (Cortex-M4), 256 KB flash, 48 KB SRAM |
| Хранение настроек | EEPROM, энергонезависимая |
| Watchdog | Независимый аппаратный, всегда включён |
| Релейные выходы | 8 × 1 Form A |
|---|---|
| Обозначение каналов | K1–K8 |
| Реле | Hongfa HF32FV-G |
| Общие выводы | 4 (C1–C4), по два реле на каждый |
| Питание катушек | 24V DC |
| Нагрузочная способность контактов | Не установлена |
| Механический ресурс реле | ~100 000 переключений |
| Дискретные входы | 8 × 24V DC |
|---|---|
| Тип входов | Оптронные (IN1–IN8), 2 группы по 4 с общим COM |
| Формат на шине | Битовая маска, по биту на вход |
| Протоколы | Modbus RTU · HVR-CAN · HAL10 |
|---|---|
| RS-485 | Modbus RTU slave, 9600–115200 бод, 8N2 / 8E1 / 8O1 |
| CAN | HVR-CAN + HAL10 на одной шине, 50 kbit/s – 1 Mbit/s, SN65HVD230, защита от ESD |
| Терминаторы | 120 Ом, переключаемые: RS-485 (S2), CAN (S1) |
| Обновление прошивки | Подписанные образы, адресно по Modbus или HVR-CAN |
| Напряжение питания | 24V DC |
|---|---|
| Допуск, потребляемый ток, пусковой ток | Не установлены |
| Корпус | DIN 35 мм, 6 модулей |
|---|---|
| Габариты (Ш × В × Г) | 106.3 × 90.2 × 61.6 мм (по чертежу корпуса) |
| Материал корпуса | PC/ABS, UL94-V0 |
| Клеммы | Разъёмные, шаг 3.81 / 5.08 мм |
| Передняя панель | -A: кнопка Mode, без кнопок каналов; -B: 8 кнопок каналов и Mode; -C: кнопки и дисплей 284 × 76. Во всех исполнениях 3 индикатора состояния |
| Рабочая температура | Не установлена |
|---|
| ТР ТС 020/2011 | В процессе |
|---|---|
| CE / EMC | Не оценивалось |
Модуль устанавливается на DIN-рейку 35 мм, ширина — 6 модулей. Полевые провода подключаются к разъёмным клеммникам: их можно расшить заранее и вставить в модуль при установке.
Каждый общий провод C1–C4 обслуживает пару реле. Нагрузки разных фаз или напряжений разносите по разным общим.
Две группы по четыре входа, у каждой свой COM. Активный уровень — 24 В DC на клемме входа.
Клеммы GND, B, A. Полудуплекс, направление переключается аппаратно — настройка задержки переключения не требуется. Терминатор 120 Ом включается переключателем S2.
Клеммы +24V, GND, CL (CAN_L), CH (CAN_H). На +24V выведено питание через предохранитель. Терминатор 120 Ом включается переключателем S1. Аппаратного режима «только прослушивание» нет — модуль всегда участвует в шине.
Включайте терминатор только на двух физических концах сегмента — RS-485 и CAN одинаково. Модуль в середине линии с включённым терминатором — самая частая причина, по которой сегмент работает на 9600 бод и сбоит на 115200.
Не установлены. Рабочая температура, допуск напряжения питания, пусковой ток, нагрузочная способность контактов и тепловой режим сборки ещё не измерены. Не выводите их из даташитов компонентов.
0x5A5A в holding-регистр 11 (COMMIT). Ответ приходит ещё на
старых настройках; нормальный ответ означает, что настройки уже сохранены в
EEPROM.Перед работой с картой регистров прочитайте input register 21 — версию карты. Регистр COMMIT переезжал при добавлении настроек; для версии 4 он на адресе 11.
| Параметр | Значение |
|---|---|
| Адрес Modbus | 1 |
| Скорость и формат | 19200 бод, 8E1 |
| Узел HVR-CAN / скорость CAN | 1 / 50 кбит/с |
| Адрес HAL10 | Не назначен (0xFF) — модуль раз в 10 с объявляет себя и ждёт адреса |
| Обновление прошивки | Разрешено |
| Восстановление выходов после сброса | Выключено |
| Выходы при сбое прошивки | Попытка разомкнуть |
| Подписки HAL10, сценарии, расписания | Отсутствуют |
| Тема дисплея | Светлая |
Modbus RTU, 8 бит данных, чётность по настройке, 1 стоп-бит. CRC-16/MODBUS, младший байт первым. Значения регистров — big-endian.
Адреса в таблицах ниже — нулевые, как на проводе. Большинство утилит нумеруют с единицы: coil 0 в такой утилите — coil 1. Это самая частая причина ответа «исключение 02».
Версия карты регистров читается из input register 21 (текущая — 4). Модуль, который отвечает на него исключением 02, работает по карте версии 1.
| Код | Функция | Объём |
|---|---|---|
| 0x01 | Read Coils | 8 coils, K1–K8 |
| 0x02 | Read Discrete Inputs | 9 бит: IN1–IN8 и служебный бит |
| 0x03 | Read Holding Registers | 0–15 |
| 0x04 | Read Input Registers | 0–26 |
| 0x05 | Write Single Coil | |
| 0x06 | Write Single Register | |
| 0x08 | Diagnostics | 0x0000, 0x000A, 0x000B–0x0012 |
| 0x0F | Write Multiple Coils | |
| 0x10 | Write Multiple Registers | также транспорт обновления прошивки |
Остальные функции отвечают исключением 01.
| Адрес | Назначение |
|---|---|
| 0–7 | Реле K1–K8, 1 = включено (заданное состояние) |
| Адрес | Назначение |
|---|---|
| 0–7 | Входы IN1–IN8, 1 = 24 В на клемме |
| 8 | Служебный: состояние вывода разрешения питания катушек. Не показывает состояние контактов |
| Адрес | Назначение | Значения |
|---|---|---|
| 0 | Образ реле | бит 0 = K1 … бит 7 = K8, старший байт = 0 |
| 1 | Адрес Modbus | 1–247 |
| 2 | Скорость RS-485 | 0 = 9600, 1 = 19200, 2 = 38400, 3 = 57600, 4 = 115200 |
| 3 | Формат RS-485 | 0 = 8N2, 1 = 8E1, 2 = 8O1 |
| 4 | Узел HVR-CAN | 1–15 |
| 5 | Скорость CAN | 0 = 1M, 1 = 800k, 2 = 500k, 3 = 250k, 4 = 125k, 5 = 100k, 6 = 50k |
| 6 | Разрешение питания катушек при загрузке | 0 / 1; в стандартном исполнении платы ни на что не влияет |
| 7 | Восстанавливать образ реле при загрузке | 0 / 1 |
| 8 | Контакты при сбое прошивки | 0 = удерживать, 1 = разомкнуть |
| 9 | Обновление прошивки по шине | 0 = запрещено, 1 = разрешено |
| 10 | Тема дисплея | 0 = светлая, 1 = тёмная |
| 11 | COMMIT | 0x5A5A — сохранить и применить 1–10 |
| 12–14 | Обновление прошивки: команда и аргумент | |
| 15… | Обновление прошивки: данные | до 122 регистров за один запрос 0x10 |
Регистр 0 — те же восемь бит, что coils 0–7, одним регистром: весь образ выходов записывается одной транзакцией, без промежуточных комбинаций на реле.
Регистры 1–10 — область подготовки: запись не меняет работу модуля, а чтение
возвращает подготовленное значение. Всё применяется одной записью 0x5A5A в
регистр 11. Другое значение отклоняется исключением 03.
| Адрес | Назначение |
|---|---|
| 0 | Образ реле (заданный) |
| 1 | Битовая маска входов, 1 = 24 В на клемме |
| 2 | Вывод разрешения питания катушек |
| 3 | Версия прошивки: major << 8 | minor |
| 4 | Версия прошивки: patch |
| 5, 6 | Время работы, с: старшая, затем младшая половина |
| 7 | Тактовая частота ядра, МГц |
| 8–14 | Счётчики Modbus: CPT1, CPT2, CPT3, CPT4, CPT8, отправленные кадры, последнее исключение |
| 15–18 | Обновление прошивки: состояние, попытки, результат, ожидаемый номер блока |
| 19 | Отклонённые широковещательные записи COMMIT и обновления |
| 20 | Причина сброса и состояние watchdog |
| 21 | Версия карты регистров |
| 22 | Состояние энергонезависимой памяти |
| 23 | Кадры HAL10, отброшенные из-за переполнения очереди |
| 24 | Кадры HAL10, устаревшие в очереди |
| 25 | Счётчики ошибок CAN: REC (младший байт), TEC (старший) |
| 26 | Состояние цепи выходов CRS8IO |
Ни один регистр не сообщает фактическое положение контакта — на плате нет такой обратной связи.
| Код | Когда |
|---|---|
| 01 | Функция не поддерживается |
| 02 | Адрес или количество вне карты |
| 03 | Недопустимое значение, в том числе COMMIT без 0x5A5A |
| 04 | Операция не выполнена: не записалась EEPROM, цепь выходов не ответила |
| 06 | Модуль занят |
Запросы на адрес 0 выполняются без ответа, включая запись coils и настроек. Исключение — COMMIT: широковещательный COMMIT молча отклоняется и учитывается в input register 19. Поэтому одну настройку можно разослать всем модулям сегмента, но применить — только адресно, по одному.
Утилита mbpoll, модуль с заводскими
настройками. mbpoll нумерует с единицы: -r 1 — это адрес 0 на проводе.
# прочитать 8 реле (coils 0–7)
mbpoll -m rtu -b 19200 -P even -a 1 -t 0 -r 1 -c 8 /dev/ttyUSB0
# прочитать 8 входов (discrete inputs 0–7)
mbpoll -m rtu -b 19200 -P even -a 1 -t 1 -r 1 -c 8 /dev/ttyUSB0
# включить K3 (coil 2)
mbpoll -m rtu -b 19200 -P even -a 1 -t 0 -r 3 /dev/ttyUSB0 1
# записать весь образ выходов: 0b10100101 = K1, K3, K6, K8
mbpoll -m rtu -b 19200 -P even -a 1 -t 4 -r 1 /dev/ttyUSB0 165
# прочитать версию карты регистров (input register 21)
mbpoll -m rtu -b 19200 -P even -a 1 -t 3 -r 22 -c 1 /dev/ttyUSB0
# сменить адрес на 5 и скорость на 115200, затем COMMIT (23130 = 0x5A5A)
mbpoll -m rtu -b 19200 -P even -a 1 -t 4 -r 2 /dev/ttyUSB0 5 4
mbpoll -m rtu -b 19200 -P even -a 1 -t 4 -r 12 /dev/ttyUSB0 23130Каждая запись coils или регистра 0 переключает реальный контакт.