Bacnet/IP 使用 .NET

Bacnet/IP with .NET

我有一项任务需要了解为使用 Bacnet/IP 的 HVAC 解决方案设置远程监控场景的技术可行性。我需要设置一个 .NET 客户端来获取遥测数据并将其发送到 Azure IoT 中心。我目前关心的是了解如何连接到 Bacnet/IP 网络。

除了它具有网络上的压力和湿度传感器以及 DDC 控制器(EBCON - Delta Controls)之外,我没有太多关于安装硬件的信息。有人告诉我,我不需要关心实际的传感器,因为它们会将遥测数据发送到控制器,所以我只关心控制器并连接到它。

然而,根据我目前所读的内容,我对这些信息有些怀疑,但我没有支持它的技术知识。根据我读过的信息,Bacnet 通信似乎是通过 UDP 侦听端口完成的(这似乎与我需要连接到控制器的上述信息相悖),如果这是真的并且我在 UDP 上侦听端口,是否所有设备都会在网络上广播遥测数据,而我只需要监听?那么什么是控制器角色呢?我可以忽略它吗?

任何解释或指示都可以帮助我从程序员 PoV 中理解这一点,我们将不胜感激。

BACnet 确实通过 UDP 进行通信。您描述的场景虽然可能,但却是一种非常危险的方法。 很少 BACnet 产品提供任何类型的 BACnet 协议安全性,因此要建立安全连接,您需要通过 VPN 连接到您的站点。一旦进入 VPN,VPN 本身很可能会阻止广播,因此您需要使用 BACnet "Foreign Device Registration" 进行连接。然而,大多数 VPN 也会进行 NAT 转换,因此现场的 BACnet 服务器必须提供 "BACnet BBMD with FD with NAT" 支持。相当罕见。另一种方法是在您的站点上安装一个盒子,提供从该站点到 Azure IoT 站点的连接。有几家公司提供此类产品,但您似乎想自己编写程序。这不是微不足道的,然后 你将不得不做 "BACnet Object" 到 "whatever-data-format-you-need-on-Azure" 的映射,这需要对 BACnet 规范有相当深入的理解,这, 在纸上,大约 2.5 英寸厚。您可以忽略 VPN 方法,将端口转发端口 47808(默认为 BACnet,但每个站点配置可能不同)到控制器。这就是一些相当大的公司如何让他们的 HVAC 系统遭到黑客攻击。如果您确实采用这种方法,您仍然需要一个 BACNet Client-to-Azure mapping/transfer 代理。您没有在这里选择一个琐碎的项目。 ;) 或者您可以购买现成的产品(盒子)来完成这一切。

顺便说一下,有一个 FOSS C# BACnet Client 可供参考:https://sourceforge.net/projects/yetanotherbacnetexplorer/

为了他人的利益,如果不是为了自己;我认为你的问题还有更多 BACnet-ty 方面的问题没有得到解决。

您必须更加积极主动地使用 BACnet - 您可能会向您广播新设备(或至少是刚刚重新上线的设备)的存在,但否则您必须主动阅读所有属性(/telemetry) 值 - 至少是感兴趣的值。

有订阅 CoV(价值变化)的设施 changes/values 但至少在过去(如果现在还没有)担心这可能会淹没网络,并可能造成负担该设备可能不得不不断向可能很多客户端发送更新,或者发送更新的频率太高(超出其监控和控制建筑物以确保舒适、健康和安全的主要工作)。

标准确实提供了一个 'object list'(在 'device' 类型的对象上),以及在每个对象上的 'property list',但是你可能会发现 'property-list' 永远不会 supported/implemented 尽管它是强制性的 属性 (!?!).

所以这是您必须对每个物理设备感兴趣的地方 - 至少它是 IP 地址,可能还有 MAC 地址,以及它的所有(相关)对象和对象属性,为此您很可能必须首先与 one/two/more 工程师坐在一起,以就将主动公开哪些信息(供您监控)以及如何公开(例如,传递价值的测量单位)达成一致并理解.

在某些情况下(- 例如,对于小型建筑物),您可能必须单独与所有设备通信,但在其他情况下,您将在网关设备上设置点(/点“对象”)代表它后面的所有设备。

所以总而言之,无论您是指向多达 300 台设备,还是询问网关设备上的 300 个对象 - 每个对象都代表一个物理设备,您仍然可能有一些感兴趣的属性感兴趣 - 在你的遥测的幌子下,所以 300 x 3(例如),它加起来很快,然后是整个标准的错误处理和复杂性( - 一个艰难的学习曲线/你必须购买-至少要了解基础)。

我建议您也看看(高级和免费)VTS(可视化测试 Shell)工具。

不确定这是否有帮助,但值得指出;低估 BACnet 后果自负 (!!)。 ;)