Bacnet
Драйвер устройства BACnet позволяет AggreGate Serverу взаимодействовать с устройствами, поддерживающими BACnet/IP протокол. BACnet широко используется для автоматизации зданий и систем контроля отопления, вентиляции, кондиционирования, освещения, доступа и систем пожарообнаружения и сигнализации.
![]() | Драйвер BACnet обеспечивает подключаемость оборудования, используя BACnet протокол поверх IP сетей (часто соотносимый с BACnet/IP или Annex J). |
Виды поддерживаемых объектов
Приведенный ниже список содержит все виды BACnet объектов, которые могут быть прочитаны, записаны или обработаны агентом через BACnet драйвер.
|
|
|
Поддерживаемые службы
Приведенный ниже список включает все службы BACnet, доступные при использовании драйвера.
Служба BACnet | BACnet Interoperability Building Block (BIBB) |
Who-Is | DM-DDB-A |
ReadProperty | DS-RP-A |
ReadPropertyMultiple | DS-RPM-A |
WriteProperty | DS-WP-A |
SubscribeCOV | DS-COV-A |
SubscribeCOVProperty | DS-COVP-A |
![]() | BACnet Interoperability Building Block (BIBB) описывает службы, поддерживаемые BACnet устройством или приложением (Annex K спецификации BACnet). |
Поддержка сегмента
Драйвер устройства BACnet обеспечивает сегментированные запросы и ответы, которые, в свою очередь, поддерживают размер окон между 1 и 127 байтами.
Информация о драйвере
ID плагина драйвера : | com.tibbo.linkserver.plugin.device.bacnet |
Общие настройки
Для входа в сеть BACnet AggreGate Server эмулирует BACnet устройство, которое взаимодействует с другими устройствами в сети. Данное устройство называется Локальным Устройством, выполняющим функцию драйвера.
Общие настройки используются для установки данного Локального Устройства.
Свойство | Описание |
ID устройства | ID устройства используется для идентификации Локального устройства BACnet, оно может быть задано в диапазоне от 0 до 4194304. Только одно устройство может использовать данное ID в сети. |
Широковещательный адрес | Маска широковещательного адреса для запроса "Who-Is". |
Локальный адрес привязки | Указывает конкретный сетевой адрес (сетевой интерфейс), который будет использоваться для связи с устройствами. По умолчанию - 0.0.0.0, что позволяет осуществлять связь по нескольким IP-адресам. |
Время ожидания подключения | Время (в миллисекундах), в течение которого драйвер ждет ответа "I -Аm" после отправки запроса "Who-Is". |
Время ожидания | Данный параметр определяет время ожидания драйвером ответа от устройства до повторной отправки или продолжения запроса. Действующий диапазон - от 100 до 9999 миллисекунд. |
Порт | Определяет локальный UDP порт, к которому будет привязан драйвер для выполнения всех взаимодействий по каналу. Настройка по умолчанию - 47808 (0xBAC0). Обычно все BACnet/IP устройства сети Ethernet используют один и тот же порт. |
Время ожидания сегмента | Определяет то же время ожидания, что описано выше, но только для сегментированных запросов. |
Окно сегмента | Данный параметр определяет количество сегментов сообщения, которые могут бы посланы до возвращения сегмента сообщения о подтверждении принимающей стороной. Отправитель предлагает размер окна, а получатель уточняет действительный размер (который будет не больше предлагаемого размера). Таким образом, драйвер использует эту настройку в качестве предлагаемого размера окна для запросов и действительного размера окна для ответов от устройства. Большие размеры, скорее всего, увеличат быстродействие надежной сети, но, с другой стороны, меньшие размеры позволят выявить проблемы взаимодействия на раннем этапе и исправить их при возврате меньших сегментов. Действующий диапазон - от 1 до 127. |
Повторное выполнение | Определяет количество повторных попыток драйвера получить подтверждение запроса перед прекращением. |
Максимально допустимая APDU длина | Данный параметр определяет общую длину или количество байт в сегментах сообщений, принятых драйвером. Драйвер попытается прочитать максимальную APDU длину, назначенную конечным устройством при запуске, и будет использовать наименьшие из локальных или удаленных лимитов при отправке ответов. Настройки меньшей величины могут быть необходимы для приспособления ограничений оборудования между драйвером и конечным устройством. Варианты включают 50, 128, 206 (для формата LonTalk), 480 (для формата ARCNET), 1024 и 1476 (для формата ISO 8803-3). Наибольшее значение 1476 обычно является оптимальным. |
Настройки уровня пользователя
Не определены.
Свойства device
Настройки подключения
Настройки подключения определяют взаимодействие AggreGate Server с определенным устройством BACnet. Доступны следующие свойства подключения:
Свойство | Описание |
Сеть | Протокол связи, используемый для установления соединения между AggreGate и устройством BACnet.
|
Метод адресации | Существует 3 способа адресации к устройству BACnet:
|
IP адрес и имя хоста | Адрес устройства BACnet, к которому необходимо подключиться. |
Порт | IP порт устройства, к которому необходимо подключиться. |
Удаленный | Включить, чтобы указать, что устройство BACnet и сервер AggreGate расположены в разных подсетях, а промежуточные шлюзовые устройства предварительно настроены на маршрутизацию UDP. В этом случае драйвер пропускает этап соединения WhoIs и пытается сразу прочитать свойства устройства. |
Схема именования переменных | Определяет, как имена переменных строятся и представляются в AggreGate.
|
Тайм-аут чтения | Определяет максимальное время ожидания ответа от BACnet-устройства после отправки запроса. Значение Тайм-аута чтения должно быть меньше, чем период синхронизации, указанный для устройства. Значение по умолчанию — 0, что означает отсутствие ограничения по времени: драйвер будет ожидать ответ от BACnet-устройства неограниченно долго. |
Приоритет записи | Определяет приоритет записи, с которым изменения свойств BACnet-устройства (через редактор свойств или привязки) будут передаваться. Поддерживаются стандартные приоритеты BACnet:
|
Последовательная синхронизация объектов | Включает последовательную синхронизацию BACnet-объектов вместо параллельной обработки. Такой режим позволяет снизить нагрузку на сеть и предотвратить таймауты синхронизации при работе с устройствами, содержащими большое количество объектов или свойств. Рекомендации по использованию:
|
Максимальное количество последовательных ошибок чтения значений переменных | Максимальное количество последовательных ошибок чтения значений переменных, после достижения которого драйвер BACnet прекращает синхронизацию значений. При достижении порога в рамках одной синхронизации драйвер помечает соединение как разъединённое и приостанавливает опрос. Значение по умолчанию: 0 (проверка отключена). |
Активы устройства
Драйвер создает один корневой актив для каждого вида объекта BACnet, поддерживаемого устройством. Дочерние элементы каждого актива соотносятся с отдельными экземплярами данного объекта, обнаруженными в устройстве.
Настройки device
Драйвер устройства BACnet создает одну переменную настройки устройства на каждое обнаруженное свойство каждого объекта устройства BACnet. Переменные подразделяются не несколько групп. Свойства Объекта Устройства относятся к группе "Основных свойства". Все остальные настройки разделены на группы по типу объекта: Analog Input, Analog Output и т.д.
В каждой группе "Тип Объекта" создается новая подгруппа для каждого Экземпляра объекта, если он обладает свойствами соответствующего типа.
Операции device
Контекст драйвера устройства BACnet выполняет следующие функции и действия:
Подписка на уведомления об изменениях значений (COV)
Данная функция позволяет создать/отменить подписку на уведомления об Изменениях Значений от объекта (COV). Механизм COV позволяет драйверу получать уведомления об изменениях свойств удаленных объектов BACnet.
Если объект предоставляет COV отчет, при изменении определенных свойств объекта подписанным клиентам отправляются COV уведомления.
После успешной подписки драйвер устройства будет асинхронно обновлять кэш настроек устройства при получении COV уведомления.
![]() | Существует определенные риски в использовании подписки на COV. Это проблемы, свойственные системам, основанным на событиях, например, неожиданные падения ссылок, потеря подписки при перезапуске устройства и т.д. Объекты критических данных должны периодически опрашиваться совместно с получением их обновлений через COV уведомления. |
Формат параметров ввода функции имеет следующие поля:
Имя | Тип | Описание |
subscribe | Boolean | Флажок, показывающий, следует ли выполнить подписку/отказ от подписки. |
subscriberProcessIdentifier | Long | Цифровая "основа", необходимая для идентификации подписки внутри драйвера. Не используйте один и тот же идентификатор процесса для разных подписок. Этот же идентификатор следует использовать для отмены подписки на COV уведомления. |
monitoredObjectIdentifier | DataTable | Хранит идентификатор объекта в принимающем устройстве, для которого требуется подписка. Здесь выделяются два поля:
|
issueConfirmedNotifications | Boolean | Определяет, необходимо ли устройству выполнить ConfirmedCOVNotifications или UnconfirmedCOVNotifications при изменениях. |
lifetime | Long | Требуемое время действия подписки. Значение, равное нулю, означает бесконечное время действия, не предусматривающее автоматическую отмену. Значение, не равное нулю, означает время действия до автоматической отмены подписки. |
Функция не имеет параметров выхода.
![]() | Для более подробной информации о COV подписках смотрите "Службы тревог и событий", раздел SubscribeCOV Service спецификации BACnet. |
Свойства COV подписки
Данная функция подобна описанной выше, но она позволяет подписаться на уведомления об изменениях свойств определенного объекта.
Формат параметров ввода функции имеет следующие поля:
Имя | Тип | Описание |
subscribe | Boolean | Флажок, показывающий, следует ли выполнить подписку/отказ от подписки. |
subscriberProcessIdentifier | Long | Цифровая "основа", необходимая для идентификации подписки в пределах драйвера. Не используйте один и тот же идентификатор процесса для разных подписок. Этот же идентификатор следует использовать для отмены подписки на COV уведомления. |
monitoredObjectIdentifier | DataTable | Хранит идентификатор объекта в принимающем устройстве, для которого требуется подписка. Здесь выделяются два поля:
|
issueConfirmedNotifications | Boolean | Определяет, необходимо ли устройству выполнить ConfirmedCOVNotifications или UnconfirmedCOVNotifications при изменениях. |
lifetime | Long | Требуемое время действия подписки. Значение, равное нулю, означает бесконечное время действия, не предусматривающее автоматическую отмену. Значение, не равное нулю, означает время действия до автоматической отмены подписки. |
monitoredPropertyIdentifier | Integer | Определяет свойство, изменение которого должно быть передано. |
covIncrement | Float | Минимальное изменение контролируемого свойства, приводящее к запуску COVNotification через BACnet устройство. Данный параметр игнорируется, если тип BACnet контролируемого свойства не является REAL. |
Функция не имеет параметров выхода.
Свойство чтения
Данная функция используется для запроса значения одного свойства определенного объекта BACnet.
Функция имеет следующие параметры ввода:
Имя | Тип | Описание |
objectIdentifier | DataTable | Определяет объект, свойство которого должно быть прочитано и возвращено в ответе. Выделяют два поля:
|
propertyIdentifier | Integer | Определяет свойство, которое должно быть прочитано и возвращено данной службой. |
propertyArrayIndex | Long | Если рассматриваемое свойство представляет собой массив, данный дополнительный параметр определяет индекс массива. Если он опущен (т.е. NULL), будет прочитан весь массив. |
Вывод функции представляет собой значение рассматриваемого свойства. Его формат зависит от типа свойства.
![]() | Вы можете использовать функции Read Property и Read Property Multiple, чтобы прочитать специализированные свойства. Просто установите параметр propertyIdentifier на желаемый индекс свойства. |
Свойство чтения множества
Данная функция используется для чтения значения одного или нескольких свойств одного или нескольких объектов BACnet.
Формат параметров ввода функции (может иметь несколько записей) содержит следующие поля:
Имя | Тип | Описание |
objectIdentifier | DataTable | Определяет объект, свойства которого должны быть прочитаны и возвращены в ответе. Выделяют два поля:
|
propertyReferences | DataTable | Список свойств, читаемых с объекта. Определяется двумя полями:
Могут быть использованы специальные идентификаторы свойств, такие как ALL, REQUIRED или OPTIONAL. |
Формат параметров вывода функции:
Имя | Тип | Описание |
objectIdentifier | DataTable | Идентификатор объекта, определяемый с помощью:
|
results | DataTable | Читает результат свойств вышеуказанного объекта в виде таблицы с несколькими полями:
Поле readResult содержит значение свойства или текст ошибки, в случае ее возникновения. |
Свойства записи
Функция используется для изменения значения одного свойства объекта BACnet.
Формат параметров ввода функции:
Имя | Тип | Описание | |
objectIdentifier | DataTable | Определяет объект, свойства которого должны прочитываться и возвращаться в ответе. Выделяют два поля:
| |
propertyIdentifier | Integer | Определяет свойство, которое должно быть прочитано и возвращено данной службой. | |
propertyArrayIndex | Long | Если рассматриваемое свойство представляет собой массив, данный дополнительный параметр определяет индекс массива. | |
valueType | String | Тип значения BACnet. Данный параметр необходим только в интерактивном режиме вызова функции. Он используется для установления формата параметра, описанного далее. | |
value | DataTable | Новое значение свойства. | |
priority | Integer | Целое число в диапазоне 1-16, которое указывает приоритет данной операции записи. | |
![]() | Для более подробной информации о свойствах смотрите "Процедуры BACnet" в разделе "Установление приоритетов команд" спецификации BACnet. | ||
Функция не имеет параметров выхода.
Подтверждение и получение тревог
Драйвер BACnet поддерживает работу с тревогами на стороне контроллера, позволяя подтверждать тревоги и получать сводку активных тревог напрямую с совместимых BACnet-устройств.
Подтверждение тревоги
Для подтверждения тревоги на контроллере BACnet используется функция acknowledgeAlarm:
acknowledgeAlarm(
Integer acknowledgingProcessIdentifier,
ObjectIdentifier eventObjectIdentifier,
EventState eventStateAcknowledged,
Date timeStamp,
String acknowledgmentSource,
Date timeOfAcknowledgment
)Параметры:
Имя | Тип | Описание |
|---|---|---|
acknowledgingProcessIdentifier | Integer | Идентификатор процесса, отправляющего подтверждение |
eventObjectIdentifier | ObjectIdentifier | Объект, вызвавший тревогу |
eventStateAcknowledged | EventState | Состояние тревоги, которое необходимо подтвердить (например, OFFNORMAL, FAULT) |
timeStamp | Date | Время возникновения тревоги |
acknowledgmentSource | String | Источник подтверждения (например, имя пользователя или модуля) |
timeOfAcknowledgment | Date | Время, когда было отправлено подтверждение |
Эта операция использует BACnet4j AcknowledgeAlarmRequest и обеспечивает синхронизацию между AggreGate и полевыми устройствами.
Получение активных тревог
Для получения списка активных тревог с контроллера BACnet используется операция getAlarmSummary(). Она опирается на сервис GetAlarmSummaryRequest и возвращает каждую тревогу с ключевыми метаданными.
Каждая сводка включает:
Идентификатор объекта
Текущее состояние события
Статус подтверждения
Эта операция удобна для опроса текущего состояния тревог на контроллере и отображения данных в панелях мониторинга или потоках событий AggreGate.
Интеграция с AggreGate
Драйвер может также преобразовывать полученные уведомления о событиях BACnet в стандартные события или тревоги AggreGate. Это формирует единое окружение мониторинга тревог и упрощает интеграцию с панелями, уведомлениями и рабочими процессами.
Можно комбинировать опрос (getAlarmSummary()) с обработкой событий в реальном времени для полного контроля и видимости.
Типичный сценарий работы
Устройство BACnet формирует тревогу
AggreGate получает её и регистрирует событие или тревогу
Оператор подтверждает тревогу в AggreGate
Драйвер отправляет подтверждение на контроллер
Состояние тревоги синхронизируется на обеих сторонах
Примечание: Целевой контроллер должен поддерживать
GetAlarmSummaryRequestиAcknowledgeAlarmRequest. Проверьте документацию контроллера или выполните обнаружение, чтобы убедиться в совместимости.
События device
Драйвер не представляет события.
Подключение
Драйвер приводит устройство в режим Онлайн, если:
Локальное устройство BACnet создано и инициализировано успешно.
Удаленное устройство BACnet самоопределяется во время обмена "Who-is"/"I-am" (если настройка подключения устройства Метод Адресации не установлена на Комбинированный).
Удалось прочитать следующие свойства удаленного объекта устройства: Максимально допустимая APDU длина, Сегментация поддерживается, Идентификатор поставщика (если настройка подключения устройства Метод Адресации не установлена на Комбинированный).
Синхронизация
Синхронизация между AggreGate Server и Device BACnet происходит в несколько шагов:
Чтение поддерживаемых удаленным устройством служб и создание необходимых операций устройства.
Распознавание всех объектов, представленных в удаленном устройстве, посредством чтения свойства "Список объектов" объекта устройства удаленной единицы BACnet.
Обнаружение свойств всех найденных объектов.
Драйвер BACnet сочетает два способа обнаружения свойств объекта:
запрос свойств от самого объекта;
чтение каждого свойства, определяемого в спецификации BACnet для данного типа объекта.
Первый способ позволяет обнаружить расширенные свойства объекта при наличии таковых, в то время как второй способ обнаруживает только стандартные свойства BACnet.
![]() | Собственные свойства могут быть обнаружены во время синхронизации, если устройство поддерживает специальный идентификатор свойств ALL в службе ReadPropertyMultiple. |
В настройках всех устройств имеется доступ на чтение/запись, однако, само устройство может запретить доступ на их запись. В случае создания переменной, защищенной от записи, устройство выдаст ошибку Доступ на запись запрещен.
Was this page helpful?


