Bacnet/IP с.NET

У меня есть задача, в которой мне нужно понять техническую осуществимость установки сценария удаленного мониторинга для решения HVAC, в котором используется Bacnet/IP. Мне нужно настроить клиент.NET, который получает телеметрию и отправляет ее в Azure IoT Hub. Моя текущая задача - понять, как я могу подключиться к сети Bacnet/IP.

У меня не так много информации об установленном оборудовании, кроме того, что оно имеет датчики давления и влажности в сети и контроллер DDC (EBCON - Delta Controls). Как мне сказали, мне не нужно заботиться о самих датчиках, поскольку они посылают телеметрию на контроллер, поэтому мне нужно только заботиться о контроллере и подключаться к нему.

Тем не менее, основываясь на том, что я прочитал до сих пор, у меня есть некоторые сомнения по поводу этой информации, но у меня нет технических знаний, чтобы поддержать ее. Похоже, что на основе информации, которую я прочитал, связь с Bacnet осуществляется посредством UDP-прослушивания через порт (что, кажется, идет вразрез с вышеуказанной информацией, которая мне нужна для подключения к контроллеру), если это правда, и я прослушиваю UDP порт, все устройства будут транслировать телеметрию в сети, и мне нужно только слушать? Какова роль контроллера тогда? Могу ли я игнорировать это?

Любое объяснение или указатели могут помочь мне понять это от программиста PoV.

2 ответа

Решение

BACnet действительно общается через UDP. Описанный вами сценарий, хотя и возможный, является довольно опасным подходом. Очень немногие продукты BACnet предлагают какой-либо вид безопасности протокола BACnet, поэтому для создания безопасного соединения вам понадобится VPN на ваш сайт. После подключения к VPN, сама VPN, скорее всего, будет блокировать широковещательные рассылки, поэтому для подключения вам потребуется использовать BACnet "Регистрация сторонних устройств". Однако большинство VPN также выполняет трансляцию NAT, поэтому сервер BACnet на сайте должен будет обеспечить поддержку BACnet BBMD с FD с NAT. Довольно редко В качестве альтернативы можно получить ящик на своем сайте, обеспечивающий подключение с сайта на сайт IoT Azure. Есть несколько компаний, которые предлагают этот тип продукта, но кажется, что вы хотите программировать самостоятельно. Это не будет тривиальным, и тогда вам придется выполнить "объект BACnet" для отображения "независимо от формата данных, который вам нужен на Azure", что потребует довольно глубокого понимания спецификации BACnet, которая, на бумаге около 2,5 дюймов толщиной. Вы можете игнорировать подход VPN, порт перенаправления порта 47808 (по умолчанию BACnet, но он может отличаться для каждой конфигурации сайта) для контроллера. Вот как взломали системы HVAC у некоторых довольно крупных компаний. Если вы продолжите использовать этот подход, вам все равно понадобится агент сопоставления / передачи BACNet Client-to-Azure. Вы не выбрали тривиальный проект здесь.;) Или вы можете приобрести готовый продукт (коробку), который уже все это делает.

Для блага других, если не для себя; есть еще один аспект BACnet в вашем вопросе, который, я не думаю, был рассмотрен.

Вы должны быть немного более активными с BACnet- у вас может быть присутствие новых устройств (или, по крайней мере, устройств, которые только что снова подключились к сети), передаваемых вам, но в противном случае вы должны активно читать все значения свойств (/ телеметрии) - по крайней мере, те, которые представляют интерес.

Существует возможность подписки на изменения / значения CoV (Изменение значения), но, по крайней мере, в прошлом (если все еще не сейчас) была обеспокоенность тем, что это может затопить сеть, а также, возможно, обременять устройство необходимостью продолжать отправку обновления, возможно, для многих клиентов или слишком часто (помимо основной задачи по мониторингу и контролю здания для обеспечения комфорта, здоровья и безопасности).

Стандарт предоставляет "список объектов" (для объектов типа "устройство") и "список свойств" для каждого объекта, но вы, вероятно, обнаружите, что "список свойств" никогда не поддерживается / не реализуется, несмотря на то, что он был обязательное свойство (!?!).

Так что это то, где вы должны интересоваться каждым физическим устройством - по крайней мере, его IP-адрес и, возможно, MAC-адрес, а также все его (соответствующие) объекты и свойства объекта, для которых вам, скорее всего, придется сидеть с Один / два / более инженеров сначала должны согласовать и понять, какая информация будет активно предоставляться (для вас, чтобы контролировать) и как (например, единицы измерения, в которых передается значение).

В некоторых случаях (например, может быть для небольших зданий) вам, возможно, придется общаться со всеми устройствами по отдельности, но в других случаях у вас будут точки (/point 'объекта) на устройстве шлюза, которое будет представлять все устройства, которые находятся за этим.

Таким образом, в целом, независимо от того, направляете ли вы, скажем, до 300 устройств или опрашиваете 300 объектов на устройстве шлюза - каждый из которых представляет физическое устройство, вы все равно можете иметь несколько интересующих вас свойств - в рамках под видом вашей телеметрии, поэтому 300 x 3 (например), она складывается довольно быстро, а затем есть обработка ошибок и сложность стандарта в целом (- сложная кривая обучения / вы должны принять участие, чтобы понять основы как минимум).

Я бы порекомендовал вам также взглянуть на (расширенный и бесплатный) инструмент VTS (Visual Test Shell).

Не уверен, поможет ли это, но на это стоит обратить внимание; недооценивать BACnet на свой страх и риск (!!).;)

И кстати, есть клиент FOSS C# BACnet, который вы можете использовать для справки: https://sourceforge.net/projects/yetanotherbacnetexplorer/

Другие вопросы по тегам