Bacnet

Драйвер устройства BACnet позволяет AggreGate Serverу взаимодействовать с устройствами, поддерживающими BACnet/IP протокол. BACnet широко используется для автоматизации зданий и систем контроля отопления, вентиляции, кондиционирования, освещения, доступа и систем пожарообнаружения и сигнализации.

Драйвер BACnet  обеспечивает подключаемость оборудования, используя BACnet протокол поверх IP сетей (часто соотносимый с BACnet/IP или Annex J).

Виды поддерживаемых объектов

Приведенный ниже список содержит все виды BACnet объектов, которые могут быть прочитаны, записаны или обработаны агентом через BACnet драйвер.

  • Analog Input

  • Analog Output

  • Analog Value

  • Binary Input

  • Binary Output

  • Binary Value

  • Calendar

  • Command

  • Device

  • Event Enrollment

  • File

  • Group

  • Loop

  • Multi State Input

  • Multi State Output

  • Notification Class

  • Program

  • Schedule

  • Averaging

  • Multi State Value

  • Trend log

  • Life Safety Point

  • Life Safety Zone

  • Accumulator

  • Pulse Converter

  • Event Log

  • Trend Log Multiple

  • Load Control

  • Structured View

  • Access Door

Поддерживаемые службы

Приведенный ниже список включает все службы 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".

Порт

Определяет локальный UDP порт, к которому будет привязан драйвер для выполнения всех взаимодействий по каналу. Настройка по умолчанию - 47808 (0xBAC0). Обычно все BACnet/IP устройства сети Ethernet используют один и тот же порт.

Время ожидания

Данный параметр определяет время ожидания драйвером ответа от устройства до повторной отправки или продолжения запроса. Действующий диапазон - от 100 до 9999 миллисекунд.

Время ожидания сегмента

Определяет то же время ожидания, что описано выше, но только для сегментированных запросов.

Окно сегмента

Данный параметр определяет количество сегментов сообщения, которые могут бы посланы до возвращения сегмента сообщения о подтверждении принимающей стороной. Отправитель предлагает размер окна, а получатель уточняет действительный размер (который будет не больше предлагаемого размера). Таким образом, драйвер использует эту настройку в качестве предлагаемого размера окна для запросов и действительного размера окна для ответов от устройства. Большие размеры, скорее всего, увеличат быстродействие надежной сети, но, с другой стороны, меньшие размеры позволят выявить проблемы взаимодействия на раннем этапе и исправить их при возврате меньших сегментов. Действующий диапазон - от 1 до 127.

Повторное выполнение

Определяет количество повторных попыток драйвера получить подтверждение запроса перед прекращением.

Максимально допустимая APDU длина  

Данный параметр определяет общую длину или количество байт в сегментах сообщений, принятых драйвером. Драйвер попытается прочитать максимальную APDU длину, назначенную конечным устройством при запуске, и будет использовать наименьшие из локальных или удаленных лимитов при отправке ответов. Настройки меньшей величины могут быть необходимы для приспособления ограничений оборудования между драйвером и конечным устройством. Варианты включают 50, 128, 206 (для формата LonTalk), 480 (для формата ARCNET), 1024 и 1476 (для формата ISO 8803-3). Наибольшее значение 1476 обычно является оптимальным.

Максимальное число свойств при составном сегментированном запросе

Ограничивает количество объектов, входящих в запросы Read Property Multiple. Фактическое число объектов, включенных в запрос, может варьироваться в зависимости от того, сколько объектов необходимо для чтения и записи в определенное время. Обычно чем выше значение, тем лучше производительность. Для больших запросов или ответов, однако, производительность может быть снижена сегментацией сообщения. К сожалению, нет установленных правил для определения оптимальной настройки. Для отладки какого-либо устройства пользователям необходимо экспериментировать с настройками. Устройства, не поддерживающие службы Read Property Multiple или Write Property Multiple, должны быть настроены на 1.

Максимальное число свойств при составном несегментированном запросе

То же, что описано выше, но для устройств, не поддерживающих передачу сегментации.

Настройки уровня пользователя

Не определены.

Свойства device

Настройки подключения

Настройки подключения определяют взаимодействие AggreGate Server с определенным устройством BACnet.  Доступны следующие свойства подключения:

Свойство

Описание

Сеть

Протокол связи, используемый для установления соединения между AggreGate и устройством BACnet.

  • BACnet IP. Использование протокола BACnet через стандартную сеть TCP/IP.

  • BACnet MS/TP. Использование протокола BACnet через последовательный интерфейс связи.

Метод адресации

Существует 3 способа адресации к устройству BACnet:

  • По адресу и порту. В данном случае номер экземпляра устройства определяется отправкой запроса "Who-Is" на заданный адрес/порт.

  • По номеру экземпляра устройства. В данном случае IP адрес и порт устройства с установленным номером экземпляра определяются отправкой широковещательного запроса "Who-Is" для диапазона IP, назначаемого широковещательным адресом общей настройки.

  • Комбинированный. Может быть использован для взаимодействия с устройствами, не поддерживающими идентификацию "Who-Is". В данном случае, адрес/порт и номер экземпляра нужно уточнить.

IP адрес и имя хоста

Адрес устройства BACnet, к которому необходимо подключиться.

Порт

IP порт устройства, к которому необходимо подключиться.

Удаленный

Включить, чтобы указать, что устройство BACnet и сервер AggreGate расположены в разных подсетях, а промежуточные шлюзовые устройства предварительно настроены на маршрутизацию UDP. В этом случае драйвер пропускает этап соединения WhoIs и пытается сразу прочитать свойства устройства.

Схема именования переменных

Определяет, как имена переменных строятся и представляются в AggreGate.

  • По идентификатору объекта. Строит имена переменных с использованием идентификатора объекта BACnet и идентификатора свойства. Например: {users.admins.devices.bacnet:presentvalue_0_54_85$presentvalue}. Здесь 0_54 представляет собой идентификатор объекта, а presentvalue_0_54_85 - идентификатор свойства.

  • По имени объекта. Создайте имена переменных на основе имени объекта и имени свойства. Пример структуры именования: {users.admins.devices.bacnet:Temperature_Indoor_PresentValue$value}. В этом случае Temperature_Indoor представляет собой имя объекта, а PresentValue - имя свойства.

Активы устройства

Драйвер создает один корневой актив для каждого вида объекта 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

Хранит идентификатор объекта в принимающем устройстве, для которого требуется подписка. Здесь выделяются два поля:

  • objectType

  • instanceNumber

issueConfirmedNotifications

Boolean

Определяет, необходимо ли устройству выполнить ConfirmedCOVNotifications или UnconfirmedCOVNotifications при изменениях.

lifetime

Long

Требуемое время действия подписки. Значение, равное нулю, означает бесконечное время действия, не предусматривающее автоматическую отмену. Значение, не равное нулю, означает время действия до автоматической отмены подписки.

Функция не имеет параметров выхода.

Для более подробной информации о COV подписках смотрите "Службы тревог и событий",  раздел SubscribeCOV Service спецификации BACnet.

Свойства COV подписки

Данная функция подобна описанной выше, но она позволяет подписаться на уведомления об изменениях свойств определенного объекта.

Формат параметров ввода функции имеет следующие поля:

Имя

Тип

Описание

subscribe

Boolean

Флажок, показывающий, следует ли выполнить подписку/отказ от подписки.

subscriberProcessIdentifier

Long

Цифровая "основа", необходимая для идентификации подписки в пределах драйвера. Не используйте один и тот же идентификатор процесса для разных подписок.

Этот же идентификатор следует использовать для отмены подписки на COV уведомления.

monitoredObjectIdentifier

DataTable

Хранит идентификатор объекта в принимающем устройстве, для которого требуется подписка. Здесь выделяются два поля:

  • objectType

  • instanceNumber

issueConfirmedNotifications

Boolean

Определяет, необходимо ли устройству выполнить ConfirmedCOVNotifications или UnconfirmedCOVNotifications при изменениях.

lifetime

Long

Требуемое время действия подписки. Значение, равное нулю, означает бесконечное время действия, не предусматривающее автоматическую отмену. Значение, не равное нулю, означает время действия до автоматической отмены подписки.

monitoredPropertyIdentifier

Integer

Определяет свойство, изменение которого должно быть передано.

covIncrement

Float

Минимальное изменение контролируемого свойства, приводящее к запуску COVNotification через BACnet устройство. Данный параметр игнорируется, если тип BACnet контролируемого свойства не является REAL.

Функция не имеет параметров выхода.

Свойство чтения

Данная функция используется для запроса значения одного свойства определенного объекта BACnet.

Функция имеет следующие параметры ввода:

Имя

Тип

Описание

objectIdentifier

DataTable

Определяет объект, свойство которого должно быть прочитано и возвращено в ответе. Выделяют два поля:

  • objectType

  • instanceNumber

propertyIdentifier

Integer

Определяет свойство, которое должно быть прочитано и возвращено данной службой.

propertyArrayIndex

Long

Если рассматриваемое свойство представляет собой массив, данный дополнительный параметр определяет индекс массива. Если он опущен (т.е. NULL), будет прочитан весь массив.

Вывод функции представляет собой значение рассматриваемого свойства. Его формат зависит от типа свойства.

Вы можете использовать функции Read Property и Read Property Multiple, чтобы прочитать специализированные свойства. Просто установите параметр propertyIdentifier на желаемый индекс свойства.

Свойство чтения множества

Данная функция используется для чтения значения одного или нескольких свойств одного или нескольких объектов BACnet.

Формат параметров ввода функции (может иметь несколько записей) содержит следующие поля:

Имя

Тип

Описание

objectIdentifier

DataTable

Определяет объект, свойства которого должны быть прочитаны и возвращены в ответе. Выделяют два поля:

  • objectType

  • instanceNumber

propertyReferences

DataTable

Список свойств, читаемых с объекта. Определяется двумя полями:

  • propertyIdentifier

  • propertyArrayIndex

Могут быть использованы специальные идентификаторы свойств, такие как ALL, REQUIRED или OPTIONAL.

Формат параметров вывода функции:

Имя

Тип

Описание

objectIdentifier

DataTable

Идентификатор объекта, определяемый с помощью:

  • objectType

  • instanceNumber

results

DataTable

Читает результат свойств вышеуказанного объекта в виде таблицы с несколькими полями:

  • error (Boolean)

  • propertyIdentifier (Integer)

  • propertyArrayIndex (Integer)

  • readResult (Data Table)

Поле readResult содержит значение свойства или текст ошибки, в случае ее возникновения.

Свойства записи

Функция используется для изменения значения одного свойства объекта BACnet.

Формат параметров ввода функции:

Имя

Тип

Описание

objectIdentifier

DataTable

Определяет объект, свойства которого должны прочитываться и возвращаться в ответе. Выделяют два поля:

  • objectType

  • instanceNumber

propertyIdentifier

Integer

Определяет свойство, которое должно быть прочитано и возвращено данной службой.

propertyArrayIndex

Long

Если рассматриваемое свойство представляет собой массив, данный дополнительный параметр определяет индекс массива.

valueType

String

Тип значения BACnet. Данный параметр необходим только в интерактивном режиме вызова функции. Он используется для установления формата параметра, описанного далее.

value

DataTable

Новое значение свойства.

priority

Integer

Целое число в диапазоне 1-16, которое указывает приоритет данной операции записи.

Для более подробной информации о свойствах смотрите "Процедуры BACnet" в разделе "Установление приоритетов команд" спецификации BACnet.

Функция не имеет параметров выхода.

События device

Драйвер не представляет события.

Подключение

Драйвер приводит устройство в режим Онлайн, если:

  • Локальное устройство BACnet создано и инициализировано успешно.

  • Удаленное устройство BACnet самоопределяется во время обмена "Who-is"/"I-am" (если настройка подключения устройства Метод Адресации не установлена на Комбинированный).

  • Удалось прочитать следующие свойства удаленного объекта устройства: Максимально допустимая APDU длина, Сегментация поддерживается, Идентификатор поставщика (если настройка подключения устройства Метод Адресации не установлена на Комбинированный).

Синхронизация

Синхронизация между AggreGate Server и Device BACnet происходит в несколько шагов:

  • Чтение поддерживаемых удаленным устройством служб и создание необходимых операций устройства.

  • Распознавание всех объектов, представленных в удаленном устройстве, посредством чтения свойства "Список объектов" объекта устройства удаленной единицы BACnet.

  • Обнаружение свойств всех найденных объектов.

Драйвер BACnet сочетает два способа обнаружения свойств объекта:

  • запрос свойств от самого объекта;

  • чтение каждого свойства, определяемого в спецификации BACnet для данного типа объекта.

Первый способ позволяет обнаружить расширенные свойства объекта при наличии таковых, в то время как второй способ обнаруживает только стандартные свойства BACnet.

Собственные свойства могут быть обнаружены во время синхронизации, если устройство поддерживает специальный идентификатор свойств ALL в службе ReadPropertyMultiple.

В настройках всех устройств имеется доступ на чтение/запись, однако, само устройство может запретить доступ на их запись. В случае создания переменной, защищенной от записи, устройство выдаст ошибку Доступ на запись запрещен.