BACnet и KNX
BACnet и KNX — протоколы систем автоматизации здания: освещения, вентиляции, климата, жалюзи. Если в зале такое оборудование уже есть, программа U-Logic (редактор программы управления) может читать его состояние и отправлять ему команды, а панель — показывать значения и управлять ими так же, как для остальных устройств.
Как открыть окно узла и где найти справку — на странице «Узлы U-Logic». Подписи полей даны так, как они показаны в окне: они английские. Адреса и порты подключений задаются в программе; общий порядок согласования портов — на странице «Сетевые порты и протоколы».
Предупреждение
Узлы записи и команд меняют состояние оборудования здания, которое обслуживают другие службы. Согласуйте объекты и адреса с теми, кто его обслуживает, до первого запуска.
BACnet
Три узла категории BACnet. У каждого один вход и один выход. Чтение и запись обращаются к свойству объекта устройства BACnet. Результат чтения или запись приходят в msg.payload, при сбое ошибка попадает в msg.error.
Узел |
Что делает |
Ключевые поля |
|---|---|---|
|
читает свойство объекта |
Type, Instance, Property Id, Device, Client, Multiple Read |
|
записывает значение в свойство объекта |
Type, Instance, App-Tag, Value, Property, Priority, Device, Client |
|
отправляет устройству служебную команду |
Command, Device, Client; остальные поля зависят от команды |
Устройство, объект и подключение к сети BACnet задаются один раз и выбираются в окне узла; как это сделать — в разделе «Подключение к сети BACnet» ниже.
BACnet - Read: прочитать свойство
Зачем. Узнать состояние оборудования здания: температуру в помещении, положение клапана, включён ли свет. Узел читает одно свойство одного объекта устройства BACnet, когда на его вход приходит сообщение. Один вход, один выход. Пример — ниже.
Окно узла BACnet - Read: 1 — «Type», 2 — «Instance», 3 — «Property Id», 4 — «Device», 5 — «Client», 6 — «Multiple Read»
Поля окна:
«Type» — тип объекта (например, вход, выход, значение). Кнопка со значком поиска рядом с полем открывает список.
«Instance» — номер объекта; выбирается из списка или создаётся кнопкой «+».
«Property Id» — какое свойство читать; список открывает кнопка поиска.
«Device» — устройство BACnet, к которому обращается узел (адрес в нём — ниже).
«Client» — подключение контроллера к сети BACnet.
«Multiple Read» — несколько объектов или свойств за один запрос; список запросов приходит в сообщении (
msg.payload.requestArray). Если поля в окне заданы и в сообщении есть такие же свойства, берутся значения сообщения.
BACnet - Write: записать значение
Зачем. Отправить оборудованию значение: задать уставку температуры, включить выход. Узел записывает значение в свойство объекта устройства BACnet, когда на его вход приходит сообщение. Один вход, один выход.
Окно узла BACnet - Write: 1 — «Type» (ниже «Instance»), 2 — «App-Tag», 3 — «Value», 4 — «Property», 5 — «Priority», 6 — «Device» (ниже «Client»)
Поля окна:
«Type» и «Instance» — тип и номер объекта, как у
BACnet - Read.«App-Tag» — тип значения для записи; список открывает кнопка поиска.
«Value» — само значение.
«Property» — в какое свойство писать.
«Priority» — приоритет записи.
«Device», «Client» — устройство и подключение, как у
BACnet - Read.
Предупреждение
Запись меняет состояние реального оборудования. Не пробуйте её «наугад»: проверьте объект, свойство, тип значения и приоритет по описанию оборудования.
BACnet - Command: служебная команда
Зачем. Найти устройства BACnet в сети, передать им время, на время отключить обмен устройства. Узел отправляет служебную команду; остальные поля окна зависят от выбранной команды. Один вход, один выход.
Окно узла BACnet - Command с командой Who Is: 1 — «Command», 2 — «Device», 3 — «Client»
Поля окна:
«Command» — какая команда.
«Device» — устройство, которому адресована команда.
«Client» — подключение к сети BACnet.
Поля выбранной команды — по таблице ниже.
Команда |
Зачем |
Поля |
|---|---|---|
|
найти устройства BACnet в сети |
— |
|
то же в заданных пределах номеров устройств |
Low Limit, High Limit |
|
передать устройствам время |
флажок UTC Date |
|
включить или отключить обмен устройства |
Enable/Disable, Time Duration, Password |
|
перезапустить устройство |
State, Password |
Device Communication Control и Reinitialize Device отключают или перезапускают реальное устройство: используйте их осознанно.
Подключение к сети BACnet
Три общих настройки создаются кнопкой «+» рядом с полем в окне узла и используются всеми узлами BACnet. Значения возьмите из описания оборудования здания или у его обслуживающей организации.
Client: подключение контроллера к сети
Окно подключения Client: 1 — «Имя», 2 — «Interface», 3 — «Broadcast», 4 — «Port», 5 — «adpu Timeout»
Поля окна:
«Имя» — подпись в списке.
«Interface» — сетевой интерфейс контроллера, через который идёт обмен с BACnet.
«Broadcast» — широковещательный адрес вашей сети BACnet.
«Port» — порт; в окне по умолчанию 47808.
«adpu Timeout» — сколько ждать ответа.
Device: устройство
Окно устройства Device: 1 — «Имя», 2 — «Address»
Поля окна:
«Имя» — подпись в списке.
«Address» — адрес устройства BACnet в сети.
Instance: объект
Окно объекта Instance: 1 — «Имя», 2 — «Instance»
Поля окна:
«Имя» — подпись в списке.
«Instance» — номер объекта в устройстве.
Пример: прочитать значение с BACnet-устройства
Зачем. Проверить связь с оборудованием здания и увидеть, что оно отвечает. Цепочка: inject → BACnet - Read → debug. Записи в оборудование здесь нет.
Перетащите на рабочую область
inject,BACnet - Readиdebugи соедините по порядку.Откройте
BACnet - Read. Рядом с полем «Client» нажмите «+», заполните «Interface», «Broadcast» и «Port» по сети вашего оборудования и нажмите «Добавить».Рядом с «Device» нажмите «+»: «Address» — адрес устройства BACnet. Нажмите «Добавить».
Рядом с «Instance» нажмите «+»: «Instance» — номер объекта из описания оборудования. Нажмите «Добавить».
В «Type» и «Property Id» выберите тип объекта и свойство (например, текущее значение) кнопками поиска. Нажмите «Готово».
Откройте
debug, в поле «Выводить» выберите «весь msg объект сообщения», нажмите «Готово» и «Развернуть». Откройте вкладку отладки (значок «жук»).Нажмите кнопку слева от
inject.
Цепочка примера: inject «Прочитать» → BACnet - Read «Значение объекта» → debug «Результат чтения»
Что вы увидите. В отладке — сообщение, в payload которого лежит результат чтения. Если ответа нет, в сообщении будет error.
Частые ошибки.
Ответа нет — неверный адрес устройства в «Device» или широковещательный адрес в «Client» не соответствует сети оборудования. Проверьте у обслуживающей организации и убедитесь, что оборудование доступно с контроллера.
Приходит не то значение — выбран не тот объект или свойство: сверьте «Type», «Instance» и «Property Id» с описанием.
KNX
Два узла и одно подключение. Группа адресов KNX записывается как 1/2/3, физический адрес устройства — как 1.1.100.
Узел |
Вход / выход |
Что делает |
|---|---|---|
|
0 / 1 |
принимает телеграммы шины и передаёт каждую в программу |
|
1 / 0 |
отправляет телеграмму в шину |
У обоих узлов поля «Name», «Controller» (подключение к шлюзу, выбирается из списка или создаётся кнопкой «+») и флажок «Debug logs» (расширенный журнал для диагностики).
knx - in: принять телеграммы
Зачем. Узнать, что происходит на шине: нажали выключатель, изменилась температура. Узел принимает телеграммы шины и передаёт каждую в программу. Входа нет, один выход.
Окно узла knx - in: 1 — «Name», 2 — «Controller», 3 — «Debug logs»
Поля окна:
«Name» — подпись на вкладке.
«Controller» — подключение к шлюзу KNX (ниже).
«Debug logs» — расширенный журнал для диагностики.
На выходе msg.topic — knx:event или knx:status. В msg.payload — объект: dstgad (группа адресов), srcphy (физический адрес отправителя), value (принятые данные телеграммы, записанные текстом), type (event или status), а также data и dptData (данные телеграммы в исходном виде). Поле dpt всегда равно no_dpt: узел не переводит значение по типу данных группы адресов, поэтому число или состояние выделяйте сами. Что именно приходит от вашего оборудования, проверьте узлом debug («весь msg объект сообщения»), подключив его к выходу knx - in.
knx - out: отправить телеграмму
Зачем. Включить свет, опустить жалюзи, запросить значение у устройства. Узел отправляет телеграмму в шину. Один вход, выходов нет.
Окно узла knx - out: 1 — «Name», 2 — «Controller», 3 — «Debug logs»
Поля окна:
«Name» — подпись на вкладке.
«Controller» — подключение к шлюзу KNX (ниже).
«Debug logs» — расширенный журнал для диагностики.
msg.topic — write (запись значения; по умолчанию) или read (запрос значения). msg.payload — объект с полями dstgad, value и dpt. Если value не задано, узел отправляет запрос значения (read). Если не задан dpt, берётся тип 1 (включить/выключить). Например, включить свет по группе адресов 1/2/3:
{"dstgad":"1/2/3","value":1,"dpt":"1"}
Для других типов данных формат значения отличается: например, для затемнения (dpt 3) value — объект {"c": true, "amount": 4} (направление и шаг до 7), для времени и даты (dpt 10 и 11) — объект со временем или датой. Готовые примеры — во встроенной справке узла knx - out.
Подключение к шлюзу KNX
Создаётся кнопкой «+» рядом с полем «Controller».
Окно подключения к шлюзу KNX: 1 — «Name», 2 — «knx Host», 3 — «knx Port», 4 — «knx Mode»
«Name» — подпись подключения.
«knx Host» — адрес вашего шлюза KNX (KNX/IP-интерфейса или маршрутизатора); значение
127.0.0.1, которое стоит в окне по умолчанию, замените.«knx Port» — порт шлюза; в окне по умолчанию 3671.
«knx Mode» —
tunnel/unicast— соединение с конкретным шлюзом;routing/multicast— через маршрутизацию, если её поддерживает ваша сеть KNX/IP.
Пример: отправить телеграмму и увидеть шину
Зачем. Проверить связь со шлюзом KNX: отправить команду и посмотреть, что видит шина. Цепочки: inject → knx - out и knx - in → debug.
Перетащите на рабочую область
inject,knx - out,knx - inиdebug. Соединитеinjectсknx - out, аknx - in— сdebug.Откройте
inject. Уmsg.payloadвыберите тип «JSON» и впишите{"dstgad":"1/2/3","value":1,"dpt":"1"}; группу адресов1/2/3замените группой своего оборудования. Нажмите «Готово».Откройте
knx - out. Рядом с «Controller» нажмите «+»: «knx Host» — адрес шлюза, «knx Port» и «knx Mode» — по описанию вашей сети KNX. Нажмите «Добавить», затем «Готово».Откройте
knx - inи выберите в «Controller» то же подключение. Нажмите «Готово».Откройте
debug, в поле «Выводить» выберите «весь msg объект сообщения», нажмите «Готово» и «Развернуть». Откройте вкладку отладки (значок «жук»).Нажмите кнопку слева от
inject.
Цепочка примера: inject «Включить свет» → knx - out «Команда в шину»; ниже knx - in «Телеграммы шины» → debug «Что пришло»
Что вы увидите. Устройство, привязанное к группе адресов, включается. В отладке появляются телеграммы шины, которые принимает knx - in: смотрите в payload поля dstgad и value.
Частые ошибки.
Узлы KNX не получают телеграмм: в «knx Host» остался локальный адрес
127.0.0.1или шлюз недоступен из сети контроллера.knx - outничего не делает: вmsg.payloadне объект или нетdstgad; значение не доходит как нужно, еслиdptне соответствует группе адресов (безdptузел считает значение включением/выключением).
Все поля узлов — во встроенной справке: откройте вкладку «справка» боковой панели (значок книги) и выберите узел.