前言
BacNet标准
文章目录 |
---|
《BACnet标准与楼宇自控系统技术》 |
一、概述
提示:这里可以添加本文要记录的大概内容
BACnet - 用于智能建筑的通信协议,是国际标准化组织(ISO)、美国国家标准协会(ANSI)及美国采暖、制冷与空调工程师学会定义的通信协议
。BACnet针对智能建筑及控制系统的应用所设计的通信,可用在暖通空调系统(HVAC,包括暖气、通风、空气调节),也可以用在照明控制、门禁系统、火警侦测系统及其相关的设备。优点在于能降低维护系统所需成本并且安装比一般工业通信协议更为简易,而且提供有五种业界常用的标准协议
。
BACnet通信协议中定义了几种不同的 数据链接层 / 物理层 ,包括:
- ARCNET。
- 以太网。
- BACnet/IP。
- RS-232上的点对点通信。
- RS-485上的主站-从站/令牌传递(Master-Slave/Token-Passing,简称MS/TP)通信。
- LonTalk
对于应用层平台开发者,更多的是使用BACnet/IP进行服务通讯。
二、入门使用
Java对接BacNet进行读写操作 - 我在这里引入SpringBoot,每段代码都有注释了可以直接看
我在这里并没有向网友一样使用Yabe作为测试端,我在实际工作中直接与施耐德灯光设备进行联调。
通过修改present-value值实现控制,而监控端会自行修改目前设备的状态。
了解完上述背景后,开始实际的代码操作,首先引入POM依赖,依赖没有的去mvn仓库下载手动引入。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.rxtx</groupId>
<artifactId>rxtx</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>lohbihler</groupId>
<artifactId>sero-scheduler</artifactId>
<version>1.1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sero-scheduler-1.1.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.infiniteautomation</groupId>
<artifactId>bacnet4j</artifactId>
<version>6.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/bacnet4j-6.0.0.jar</systemPath>
</dependency>
<dependency>
<groupId>lohbihler</groupId>
<artifactId>sero-warp</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sero-warp-1.0.0.jar</systemPath>
</dependency>
第一步:客户端启动
package org.springblade.bacnet;
import com.serotonin.bacnet4j.LocalDevice;
import com.serotonin.bacnet4j.npdu.ip.IpNetwork;
import com.serotonin.bacnet4j.npdu.ip.IpNetworkBuilder;
import com.serotonin.bacnet4j.service.unconfirmed.WhoIsRequest;
import com.serotonin.bacnet4j.transport.DefaultTransport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java