KNX-Modbus
Этот материал описывает неочевидные моменты, которые возникают при интеграции устройств Modbus (счетчики, фанкойлы, инверторы) в шину KNX через специализированный шлюз.
Основная проблема: Modbus и KNX говорят на принципиально разных языках. Modbus оперирует регистрами (16/32 бита, float, raw data), а KNX — типизированными объектами (DPT). Задача шлюза — перевести одно в другое без потерь.
1. Аппаратные нюансы: физика и питание
- Терминаторы (RS-485): На линии Modbus (RTU) обязательно должны быть установлены резисторы 120 Ом на обоих концах сегмента. Без этого возможны обрывы связи или лавина ошибок CRC [citation:10].
- Общий GND: Используй экранированную витую пару. В отличие от M-Bus, для Modbus RTU важна общая нейтраль (GND) между шлюзом и ведомыми устройствами, чтобы «привязать» сигнал.
- Питание шлюза:
- Большинство чистых KNX-устройств питаются от шины (29–30 В). Однако шлюзы KNX-Modbus часто требуют дополнительного внешнего питания 24 В для работы интерфейса RS-485. Если шлюз не видит устройства — проверь, подано ли питание на клеммы RS-485 (обычно +/- или 24V/GND) [citation:10].
- KNX Bus Load: Учитывай ток потребления шлюза от шины KNX. Интенсивный опрос Modbus (например, каждую секунду) создает дополнительную нагрузку на шину KNX из-за большого количества отправляемых телеграмм.
2. Программная настройка (ETS и конфигурация)
2.1 Выбор режима работы шлюза
В зависимости от задачи шлюз может работать в двух направлениях [citation:4]:
| Режим | Направление | Типовое применение | |
|---|---|---|---|
| Master Modbus (Client) | Шлюз → Устройство | Шлюз сам опрашивает датчики (счетчики, метеостанции). Самый частый случай. | |
| Slave Modbus (Server) | Устройство → Шлюз | Внешняя BMS или ПЛК читает данные из KNX (например, статусы света). |
2.2 Тонкости подключения: RTU vs TCP
- Modbus RTU (RS-485):
- Убедись, что скорость (Baud Rate), бит данных, четность (Parity) и стоп-биты совпадают с настройками ведомого устройства.
Важно: Если устройство одно, некоторые специалисты советуют отключать терминаторы на коротких линиях (< 3 м). Если устройств несколько — терминаторы обязательны на крайних точках [citation:10].
* Modbus TCP (Ethernet):
- Используй порт 502 (стандарт).
Нюанс: Некоторые TCP-устройства «зависают» при частых переподключениях. В настройках шлюза ищи опцию «Persistent Connection» (Постоянное соединение) и включай ее, если интервал опроса меньше минуты [citation:1][citation:5].
3. Проклятие Modbus: Регистры и типы данных
Здесь кроется 90% ошибок. Modbus не строг, KNX — строг.
3.1 Адресация (Offset)
- Запомни: Часто в паспорте прибора указан «Регистр 40001», а в поле адреса шлюза нужно писать 0 (Смещение).
- *Физический адрес = Адрес_по_документации - 40001.*
3.2 Типы данных и Конечность (Endianness)
- 16 бит (Word): Проще всего. Если значение влезает в диапазон 0…65535.
- 32 бита (Double Word / Float): Вот здесь начинается боль.
- KNX требует DPT 14 (Float, 32 бита) для реальных чисел.
- Но Modbus может передавать байты в разном порядке.
Критично: Байтовый порядок (Byte Order):
1. Option 1 (Big-Endian / ABCD): Старший байт первый. (Обычный стандарт). 2. Option 2 (Little-Endian / CDAB): Младший байт первый. (Часто у китайских устройств). 3. Option 3 (Word Swap / BADC): Перепутаны слова. 4. Если на KNX приходит «мусор» типа 3.0e-39 или 1.2e+12 — значит, порядок байт неверный. Нужно менять настройку «Word Order» в шлюзе* [citation:9][citation:10].
3.3 Пример сложного преобразования (Из документации)
- Что пишут в документации Modbus: «Напряжение: Uint32, Адрес 2 (2 регистра), множитель 0.01».
- Что нужно выставить в ETS/шлюзе:
1. Функция: 03 (Read Holding Registers). 2. Стартовый адрес: 2 (или 1? Смотри спецификацию шлюза). 3. Тип: Unsigned 32-bit (Uint32). 4. Порядок: Big-Endian (обычно). 5. Множитель: 0.01 (или разделить на 100). 6. Тип KNX: **DPT 14.027** (Напряжение в Вольтах) [citation:10].
4. Диагностика: «Ничего не работает»
Прежде чем винить шлюз, проверь физику отдельно.
- Золотое правило: Отсоедини шлюз и подключи к линии USB-to-RS485 конвертер.
- Программой Modbus Poll (или QModMaster) опроси устройство [citation:10].
- Если Modbus Poll читает — проблема в настройках шлюза.
- Если Modbus Poll не читает — проблема в кабеле, терминаторах или адресе устройства.
Чек-лист отладки:
- ✔ Светодиоды на шлюзе: горят TX (опрос) и RX (ответ)?
- ✔ Нет ли конфликта адресов? У всех устройств (Slave ID) разные номера? (Обычно 1, 2, 3…).
- ✔ Совпадает ли скорость в настройках шлюза и в устройстве? (Ошибка новичка: 9600 vs 19200).
- ✔ Не перепутаны ли провода A/A’ и B/B’? (Попробуй физически поменять местами A и B).
Совет профи: Некоторые шлюзы (например, Intesis или Weinzierl) требуют, чтобы при первом программировании через ETS шлюз был физически изолирован от большой шины KNX (подключен только к ПК и питанию). «Тяжелый» KNX-трафик может мешать заливке прошивки [citation:3].
Antistatus 13.05.2026 11:27