使用IOT-Tree接入各种数据转BACnet模拟设备输出
IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了各种设备接入、数据组织管理、数据分享使用、消息流控制逻辑和人机交互多个方面的功能。当然,你也可以仅仅使用这个软件作为数据采集终端或边缘计算的软件。
这是IOT-Tree Server相关的系列文章,你可以参考其他文章更多了解IOT-Tree能给你带来的好处:
使用IOT-Tree Server通过PPI协议连接西门子PLC S7-200 Smart
使用IOT-Tree Server连接西门子PLC S7-300/1200/1500
使用IOT-Tree Server通过MC协议连接三菱Q系列PLC
使用IOT-Tree Server通过FINS协议连接欧姆龙CP2E-N系列PLC
系列文章还包含IOT-Tree完成一个具体项目的过程,非常详细,如下:
机房自动化监控手把手分享给你 - 10 项目完成总结
本文介绍的是使用IOT-Tree Server内部BACnet Device服务,支持项目数据通过BACnet模拟设备方式对外提供数据输出。这个功能和OPC UA Server类似——在工业现场运行IOT-Tree的嵌入式设备也可以作为BACnet网关使用。
1 BACnet介绍
BACnet基本概念
BACnet(Building Automation and Control Networks)是一种专为楼宇自动化和控制系统设计的通信协议标准,由ASHRAE(美国采暖、制冷与空调工程师协会)制定。其核心目标是实现不同厂商设备间的互操作性,支持暖通空调(HVAC)、照明、安防等系统的集成。
BACnet协议特点
开放性:协议标准公开,无需授权费用,鼓励多厂商兼容。
灵活性:支持多种物理层(如以太网、RS-485)和通信方式(IP或串行)。
对象模型:通过标准化对象(如Analog Input、Device)描述设备功能,便于数据交换。
服务功能:提供读/写属性、设备发现等标准化服务,简化系统集成。
BACnet网络架构
BACnet/IP:基于IP网络,适合现代楼宇的高带宽需求。
MS/TP(Master-Slave/Token Passing):基于RS-485的低成本解决方案,适用于小型系统。
其他层:如LonTalk、Zigbee可选,但IP和MS/TP为主流。
典型应用场景
HVAC系统:实时监控温湿度、设备状态。
能源管理:集成电表、照明数据,优化能耗。
安防联动:与门禁、消防系统协同工作。
2 IOT-Tree对BACnet输出支持
IOT-Tree Server直接提供对外BACnet设备模拟支持,通过内置BACnet Service方式提供。在IOT-Tree Server管理主界面中,点击"服务程序"的"设置”按钮,就可以在弹出对话框列中看到“BACnet Device”这个服务程序。你可以设置这个服务程序的参数或控制启动停止。如图:
此服务可以对IOT-Tree Server中的一个或多个项目中的组织和数据进行BACnet设备方式的输出。可以为智能楼宇中使用其他工业通信标准的设备数据进行转换,直接通过提供BACnet接入上位系统支持。
3 设置BACnet Device
点击编辑按钮,弹出详细的参数设置界面:
缺省情况下,BACnet Device没有被使能,并且使用端口47808。你可以修改端口,选择BACnet Device使用的本地网络地址,起用BACnet Device。
BACnet设备id和数据节点内部id都是一个整数,你可以设置设备id和修改设备名称。
在对话框下方是本地IOT-Tree运行实例中的项目列表,你可以勾选需要对外提供BACnet访问的项目。
3.1 选择项目并且确定项目内部IID范围
我们勾选一个或多个项目之后,可以看到需要设置每个项目内部IID范围,并且每个项目IID不能重复。
这是因为BACnet的设备要求内部每个数据节点都有整数唯一id,而我们一个IOT-Tree实例中有多个项目,并且输出到一个BACnet模拟设备中。因此,为了保证内部节点id唯一,IOT-Tree把每个项目使用的iid使用1000000为基数进行划分,只需要IID Base是个0-1000的整数且互不相同,那就可以保证输出的节点ID唯一。
IOT-Tree内部每个标签也有一个项目内唯一整数id,只需要把项目内唯一id与这个IID Base相加,就是BACnet输出对应的节点id。
以上参数设置成功之后,在Service列表中,点击启动服务按钮,本IOT-Tree Server运行实例就支持BACnet Device了
4 使用Yabe访问
你可以在你的电脑上安装一个“Yabe (Yet Another Bacnet Explorer)”软件,本文使用此软件用来查看我们的IOT-Tree是否正确模拟出了BACnet设备。
打开软件,点击"Add Channel"图标,在弹出对话框中,选择Local endpoint为本地ip地址,这个地址与上面IOT-Tree设置本地地址相同。如下图:
点击"Start"按钮,可以看到在Devices下方树形组织中找到了我们这个设备,点击这个设备节点,可以在下方的Objects列表中看到发布项目标签数据:
你可以仔细观察每个数据项,可以发现里面的唯一id,就是我们在IOT-Tree设置从配置的范围内。
4.1 数据项说明
点击某个Objects列表中的数据项,在右边的Properties框中,可以看到这个数据项对应的详细属性内容:
其中,Object Name属性使用的是IOT-Tree标签节点的唯一路径,格式为:
项目名称.通道.标签组*.标签名称
而每个IOT-Tree的标签状态(有效性、是否报警),在Status Flags中展示:
Present Value属性代表了当前值。
4.2 数据读取
把读取的数据拖入订阅区,就可以看到当前运行数据。
4.3 数据写入
对于AO 和BO类型的对象——对应于IOT-Tree的可写标签,可以支持写入数据操作:
如对于数据点“watertank.ch1.dio.pstart”,这是IOT-Tree内部自带Demo项目中的手工启动水泵标签,选中之后,在Properties区的Present Value属性项,写入1并回车。就会在IOT-Tree端触发写入指令。