由于BACnetIP 在OPC 服务器里使用较多,所以此驱动以X2OPC 服务器采集BACnetIP 设备为例!
1、新建驱动
在 X2OPC 配置界面, 点击菜单栏“编辑”, 单击“新建驱动”, 如下图所示

图1:选择新建驱动
在弹出来的对话框中选择“BACnetIP1”驱动, 如下图。
注意:用在 X2OPC 里的 BACnetIP 和硬件网关的选择驱动不一样,区别如下: 普通硬件网关: 选择 BACnetIP,X2OPC:选择 BACnetIP1~BACnetIP8,代表可以连接 8 张网卡。其他设置相同。

图2:选择BACnetIP驱动
2、新建通道
添加好驱动后, 单击“新建通道”。
BACnetIP 驱动比较特别,以一个网卡为一个通道,并且 BACnetIP 驱动内部固定端口 号默认为为 47808。在配置时,IP 地址的内容包括全广播地址,再加上网卡的序号。如 255.255.255.255.x, 其中 x 表示选择的网卡序号,且从 0 开始。用户可以通过 BACnetScan 来查看网卡的序号, 如下图 所示:

图3:BACnetScan 自动扫描软件 BACnetIP 参数设置
例如电脑用了2 个网卡同时和 BACnetIP 设备通信, 一个通道的 IP 地址设置为 255.255.255.255.0,另外一个通道的 IP 地址设置则为 255.255.255.255.1。图 4 的 IP 设置说明选择第一个网卡和 BACnetIP 设备通信,注意超时时间 1000 是指请求帧的等待超 时时间,一般默认或设置比较大的值。主要如果是使用Modbus 网关采集 BACnetIP 设备, IP 地址直接设置“255.255.255.255.0” 。

图4:通道参数设置
3、新建设备
通道建立好后,单击“新建设备”。在弹出来的对话框中设置设备相关属性,设备 默认站号 500,这个站号是指 BACnet 的 DeviceID,用户可以通过 BACnetScan 自动扫描 来查询网络上有哪些设备在线, 请求帧间隔默认为 50 毫秒。
注:站号的填写方式
方式 1:如果是同一网段,被采集 BACent 设备 ID 地址都唯一的情况,此处站号可直 接填设备 ID,如 BACnetScan 搜出来的地址;


方式 2 :地址也可根据设备 IP 来填(若填写设备 IP,则不用填写设备 ID 了) 填写格式: IP.SNET.SADR(设备 IP 地址. 网络号.MAC 地址),对应下图范例中 BACnetScan 扫描到的三个属性。(如若不知上述属性,可用 BACnetScan 搜索查看)
序号 | 格式 | 描述 | 一般用途 |
1 | 192.168.1.10 | 此时只填写设备 IP | 跨网段的 BACnetIP 设备(非 路由) ,或者同网段 BACnet 设备 ID 重复, IP 地址不重复 情况 |
2 | 192.168.1.187.1.29 | 此时填写设备 IP,填写网络号 为 1,MAC 地址为 29 | 经过 BACnet 路 由 上 来 的 BACnetIP 设备 |



设备属性设置
在批量传输中,有效的 3 个参数分别是模拟量组包最大长度、数字量组包间隔以及数 字量组包最大长度。“模拟量组包最大长度”包括了所有对象的组包长度, 范围为 0-90。 这个参数对通信速度起作用。假如 BACnetIP 设备有 90 个对象, 如果这个参数为 0,则一 个对象要发送一个请求帧,通信速度会比较慢。如果参数是 90,则一个请求帧可以把 90 个对象的当前值一次性读回来, 理论上相当于通信速度提高了 90 倍。如果设备不支持同 时读多个属性, 可将此参数设置为 0 即可。
数字量组包间隔和数字量组包最大长度对写值刷新时间有效, 其具体功能如下表 所示。
数字量组包间隔 | 数字量组包最大长度 | 写值后动作 |
0 | 0 | 先读单点, 接着读当前设备的所有 对象 |
1 | 读当前整个设备的对象 | |
2 | 读单点 | |
其他数字 | 无动作 | |
非0 | 0 | 先读单点,接着读 DeviceID 为“数 字量组包间隔”的设备下所有对象 |
1 | 读 DeviceID 为“数字量组包间隔” 的设备下所有对象 | |
2 | 读单点 | |
其他数字 | 无动作 |
4、新建标签
新建好设备后,单击“新建标签”(点) ,如果点数比较多, 也可以通过新建组对标 签进行分组管理,如下图所示。

注意: 采集端寄存器地址通常情况下是整数地址,代表对象地址。当然寄存器地址也 可以用小数表示,这个时候整数部分依然代表对象地址,小数部分代表写值操作等级, BACnet 写值操作等级分为 1 ,2 ,3 ,… … 16 等 16 个等级。如寄存器地址为 2.8 表示采集 的对象地址值为 2,写值操作等级为 8 级。 如果寄存器地址为整数,则默认的写值操作等级为 16 级, 如 下图所示。如果是用在 BACnet 系列网关里(BACnetIP 转 BACnetIP), 则不需要填写控制等级, 操作等级完全由上位 BACentIP 端控制。

如要释放 8 等级,可再新建一个寄存器地址为 2.8.Release 的点,此点只写不读,具体 设置如下图所示。

5、快速新建标签方法
在配置点的时候,如果点数比较多, 可以用下面两种方法快速配点。
(1)可以通过“自动搜索点表”来扫描设备下所有的点,如下图所示

(2)也可以利用本公司自主研发的 BACnet 扫描软件 BACnetScan 扫描 BACnetIP 功能 将所有的点扫描出来,并且可以导出到 EXCEL 表中进行编辑保存,最后利用本软件的导 入导出功能,将保存好的数据表导入到配置工程中。例如在 BACnetScan 扫描结果如下图。

上图扫描的点一共有 60 个(6 种寄存器类型每种 10 个) ,将扫描结果保存到 EXCEL 表中,如下图


需要注意的是默认是导入 CSV,需要用户选择一下 XLS 文件类型, 才可以找到导入 的 XLS 文件。选择如下图 ,所有点导入成功。

注意: 以上 Tag 属性中,寄存器地址是指对象的 Instancenumber。
采集端支持的数据类型有Boolean、Dword、Float 三种类型,其中, Float 类型适用于AI,AO,AV 寄存器三种寄存器, Boolean 类型适用于 BI ,BO ,BV 三种寄存器, Dword 类型适用于 MI ,MO ,MV 三种寄存器,如下表所示。
数据类型 | 描述 |
Boolean | 0 、1 变量,适用于 BI ,BO ,BV 类型 |
Dword | 4Byte (0~4294967295) ,适用于 MI ,MO, MV 类型 |
Float | 4Byte,适用于 AI ,AO ,AV 类型 |
采集端支持的寄存器类型有 AI 、AO 、AV 、BI、BO 、BV 、MI 、MO 、MV,如下表所 示。
序号 | 寄存器类型 | 地址范围 | 描述 |
1 | AI(Analog Input) | 0~4194303 | 模拟量、只读(连续变化的对象类型) |
2 | AO(Analog Output) | 0~4194303 | 模拟量、可读可写(连续变化的对象类型) |
3 | AV(Analog Value) | 0~4194303 | 模拟量、可读可写(连续变化的对象类型) |
4 | BI(Binary Input) | 0~4194303 | 数字量、只读(只有 0 和 1 值的对象类型) |
5 | BO(Binary Output) | 0~4194303 | 数字量、可读可写(只有 0 和 1 值的对象类型) |
6 | BV(Binary Value) | 0~4194303 | 数字量、可读可写(只有 0 和 1 值的对象类型) |
7 | MI(Multi-state Input) | 0~4194303 | 模拟量、只读(连续变化的对象类型) |
8 | MO(Multi-state Output) | 0~4194303 | 模拟量、可读可写(连续变化的对象类型) |
9 | MV(Multi-state Value) | 0~4194303 | 模拟量、可读可写(连续变化的对象类型 |