Показать страницуСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ==== 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@mail.ru|Antistatus]] 13.05.2026 11:27// docs/modbus_knx.txt Последнее изменение: 3 ч. назад — admin