BACnet/IP 从站
BACnet/IP 从站将数据转发组内的变量发布给楼宇自控主站。支持 Who-Is / I-Am、ReadProperty、ReadPropertyMultiple、Present_Value 写入、十六级命令优先级及确认和非确认 COV 通知。
转发组范围、公共变量和目标启停见数据转发。需要从其他 BACnet 设备采集数据时,选择 BACnet/IP 主站。
建立转发目标
- 登录 WEB 配置页,进入“开发配置 → 数据转发”。
- 新建或选择转发组,设置变量范围;确认源变量已初始化且在线。
- 新增目标,选择“BACnet/IP 从站”,将通道类型设为 UDP,填写本地绑定地址,例如
0.0.0.0:47808。 - 设置网络内唯一的设备实例号、设备对象名称和实际厂商编号。初次验证时保持“允许写入”为否。
- 在“目标变量属性”中选择已属于该组的变量,填写对象类型、对象实例号和工程单位编号。
- 保存并启用目标,在“调试 → 操作 → 映射点表”核对对象地址、当前值和访问权限。

仅保存目标变量属性不会把变量加入转发组。源变量不在组范围中、尚未初始化或离线时,不会用默认零值冒充有效数据。重复对象标识或名称会使建模失败,应先改正配置再重启目标。
目标参数
| 参数 | 说明 |
|---|---|
| 通道类型 | 仅支持标准 UDP 会话;BACnet/IP 使用 IPv4。 |
| 本地绑定地址 | 默认 0.0.0.0:47808。同一 IP 和端口应由一个目标独占;只在本机测试可填 127.0.0.1:47808。 |
| 设备实例号 | 默认 1001,范围 0~4194303,必须在当前 BACnet 网络唯一。 |
| 设备对象名称 | 默认 TGateway,不可为空,最多 255 字符,不能与变量对象重名。 |
| 厂商编号 | 按实际分配的 BACnet Vendor ID 填写;默认值 0。 |
| 允许写入 | 默认否。开启后仍需变量级写权限及源变量 RPC 写能力。 |
| 最大数据报字节数 | 默认 1476,范围 64~1476,包含协议头。请求或响应超过预算时不会发送超大报文。 |
| 请求超时毫秒 | 默认 5000,范围 100~120000,包含源变量回写等待。 |
| 最大 COV 关系数 | 默认 128,范围 1~1024。同一来源最多 128 个关系,永久租约也计入容量。 |
远程地址、串口和 SSL 公共字段不用于此协议服务。不要开启 SSL;本插件不提供 BACnet/SC。
保存时会校验通道和协议参数;导入配置在启动前也会执行同样校验。最大数据报超出上述范围时应先修正配置,目标不会占用监听端口。
变量映射
| 参数 | 说明 |
|---|---|
| 对象类型 | 支持 Analog Input / Output / Value、Binary Input / Output / Value、Multi-state Input / Output / Value。输入对象只读。 |
| 对象实例号 | 范围 0~4194303,相同类型内必须唯一。调试地址以“类型编号:实例号”显示,例如 2:1。 |
| 对象名称 | 留空时使用变量名;必须与全部对象及设备对象名称不同,最多 255 字符。 |
| 工程单位编号 | 模拟量使用 BACnet 标准单位编号,默认 95 表示无单位。 |
| 撤销默认值 | 默认 JSON 数值 0。所有命令槽释放后写回此值;多状态对象须配置至少为 1 的整数。 |
| 允许变量写入 | 默认否;只有目标级和变量级权限都开启时才能命令输出或值对象。 |
模拟量使用 BACnet Real;二进制对象使用枚举 0 / 1,布尔源变量会转换为相应枚举;多状态对象使用大于零的无符号整数。选择与源变量和实际设备一致的类型。
设备对象支持 Object_List,数组索引 0 返回元素数量;可按索引逐项读取,避免一次请求过大。对象提供标识、名称、类型、Present_Value、相关单位与状态属性;可写对象另提供 Priority_Array 和 Relinquish_Default。未知属性返回协议错误。
批量读取中某个源变量离线或值类型不符时,该属性返回错误,其他有效属性仍正常返回。主站应逐项检查结果,不应将错误项当作零值。
读写和 COV 验证
- 在映射点表中点击该行“网络探测”。
- 点击“网络读取”,核对结果与源变量当前值一致。探测使用网关主站驱动访问当前从站的真实监听端口。
- 在安全测试点启用目标、变量和源变量的写权限。
- 输入 JSON 数值,选择优先级后点击“网络写入并读回”,确认控制提示,再核对读回值及源变量。
- 撤销命令时,以相同优先级写入 JSON
null。数值越小,命令优先级越高;优先级6为协议保留,不接受人工写入。 - 使用 BACnet 主站订阅对象 COV,验证初值和后续变化;确认通知需要客户端 ACK。续订应在租约到期前完成,取消需发送取消订阅请求。租约
0表示永久关系。

低优先级命令不会覆盖高优先级命令;撤销后采用下一个有效槽值。修改映射或重启目标会清空运行时优先级数组及 COV 关系,主站应重新确认命令状态并订阅。
只有合法的 BACnet Null 才能释放指定优先级。携带正文的畸形 Null 或非法应用标签会被拒绝,不执行源变量回写,当前值和优先级槽保持原状。客户端收到拒绝后应检查应用类型和报文编码,再重新读取确认命令状态。
写入确认绑定打开提示时的目标、点位、值和优先级;切换目标或点位后原确认失效。修改输入后需要重新发起写入并确认。
范围与排障
当前提供无分段 BACnet/IP,不提供 BBMD、Foreign Device 注册、跨网段路由、分段 APDU 或 BACnet/SC。跨网段部署应先确认网络方案适合此能力范围;大对象列表和批读应拆分请求。
| 现象 | 处理方法 |
|---|---|
| 目标离线或端口绑定失败 | 检查本地 IP、UDP 端口占用、转发组和目标使能,再查看目标日志。 |
| 能按 IP 读取但广播发现不到 | 检查主站网卡、广播地址、防火墙与设备实例范围;优先使用直接地址验证。 |
| 没有映射对象 | 检查组变量范围和目标变量属性,确认对象名称及标识没有重复。 |
| 写入拒绝或读回未变化 | 检查双层权限、源变量 RPC、对象类型及优先级数组中更高优先级的命令。 |
| 超大请求返回 Abort | 缩小 RPM 批量;Object_List 按数组索引读取。 |
| COV 停止 | 检查租约、确认 ACK、关系容量及目标是否重启或改过映射,然后重新订阅。 |