BACnet安全连接(BACnet/SC) 介绍

BACnet安全连接(BACnet/SC)是ASHRAE BACnet委员会最近发布的BACnet协议的增编。是在增编135-2016bj中介绍的。它基于一个安全的、加密的数据链路层。 专门设计以满足不同IP基础结构。对BACnet通信使用标准化的、通常已经存在的IP网络基础设施的需求正在增加,BACnet/SC的安全性正是满足这种需求,构建IoT网络(构建物联网-Biot)的一个关键部分。

那么为什么需要BACnet/SC ?

简单地说,现有BACnet系统的某些方面有时会出现问题,因为它们偏离了常见的IT策略和实践,尽管这些策略和实践从一种情况到另一种情况各不相同。从IT的角度来看,BACnet/SC解决了许多现有BACnet系统常见的问题:

  • BACnet/SC提供广泛使用的、标准的、被IT界所接受的网络安全解决方案。
  • BACnet/SC消除了对静态IP地址的需要,减轻了IT组的负担,并可能降低用户租赁成本。
  • BACnet/SC不依赖于网络广播消息。
  • BACnet/SC消除了BACnet/IP广播管理设备(BBMDs)及其配置和容忍网络拓扑的变化。
  • BACnet/SC可以轻松地与IT基础设施中常见的防火墙设备一起工作。

从增编135-2016bj中的协议架构图,我们可以发现新增的红色框中的链路。基于websocket 解决了常见的和IT基础设施中防火墙问题。它基于标准的TLS 1.3安全性,具有128位的选项以及256位椭圆曲线密码术。以及它消除了对静态IP地址和网络的需要广播。这些使其可以工作在通常已经存在的IP网络基础设施中。并且作为一种新的安全的BACnet数据链,消除了业主、设施管理人员和客户的许多担忧。

在这里插入图片描述

协议栈架构

下图给出了完整的协议栈架构
在这里插入图片描述

拓扑结构

BACnet/SC网络的逻辑拓扑结构一般遵循由多个节点BACnet/SC节点和Hub功能中心节点组成的中心辐射型模型。

对于传输单播BACnet消息,BACnet/SC节点也可以支持与其他节点的直接连接。在同一BACnet网络上的BACnet/SC节点,可以作为BACnet/SC直连的发起者或接收者。

为了提高可用性,BACnet/SC还提供了冗余功能。通过提供附加的Hub节点,作为备份中心功能。如下图所示。
在这里插入图片描述

最后,看一个网络构成示例图

主中心 ( P) 和故障转移中心(F)位于防火墙内部,用于保护BACnet/SC设施内的设备。包括一个BACnet/SC-to-BACnet/IP路由器,一个BACnet/SC-to-MS/TP路由器,以允许在BACnet/SC安全网络和传统BACnet网络。在本例中,外部(远程)访问是通过启用防火墙来提供的使用公网DNS名或公网静态IP地址转发BACnet/SC端口。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接BACnet并读取/写入数据,您需要使用BACnet协议栈和Java BACnet库。以下是一个简单的示例,使用BACnet4J库: ```java import java.util.List; import java.net.InetAddress; import com.serotonin.bacnet4j.*; import com.serotonin.bacnet4j.exception.BACnetException; import com.serotonin.bacnet4j.service.unconfirmed.WhoIsRequest; import com.serotonin.bacnet4j.obj.BACnetObject; import com.serotonin.bacnet4j.type.enumerated.ObjectType; import com.serotonin.bacnet4j.type.enumerated.PropertyIdentifier; import com.serotonin.bacnet4j.type.primitive.ObjectIdentifier; import com.serotonin.bacnet4j.type.primitive.UnsignedInteger; public class BacnetExample { public static void main(String[] args) throws Exception { // 创建BACnet协议栈 final LocalDevice localDevice = new LocalDevice(1234, "127.0.0.1"); localDevice.initialize(); // 发送Who-Is请求以获取设备列表 final List<RemoteDevice> devices = localDevice.sendGlobalBroadcast(new WhoIsRequest()).getDevices(); // 打印设备列表 for (final RemoteDevice device : devices) { System.out.println("Device: " + device); } // 读取设备属性 final RemoteDevice device = devices.get(0); final ObjectIdentifier objectId = new ObjectIdentifier(ObjectType.analogInput, 0); final BACnetObject object = localDevice.getObject(device, objectId); final UnsignedInteger presentValue = (UnsignedInteger) object.getProperty(PropertyIdentifier.presentValue); System.out.println("Present value: " + presentValue); // 写入设备属性 final UnsignedInteger newValue = new UnsignedInteger(42); localDevice.setProperty(device, objectId, PropertyIdentifier.presentValue, newValue); } } ``` 请注意,此示例仅适用于本地连接。如果您需要连接到远程BACnet设备,则需要更改代码以使用远程设备的IP地址和端口号。此外,您可能需要在代码中添加错误处理和异常捕获。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值