BACnet/IP (HVAC / 楼宇自动化)
BACnet (Building Automation and Control networks) 是楼宇自动化 (BA) 领域的标准通信协议。它在空调 (HVAC)、照明、火灾探测、门禁等场景中应用最为广泛,而在 BACnet 之上承载 IP 的 BACnet/IP 目前已是事实标准。
本网关通过通用集成引擎以只读模式支持 BACnet/IP。
与其说是 PLC,不如说是 BMS
BACnet 通常不是出现在普通工业 PLC 上,而是出现在 BMS (Building Management System) 控制器 (Honeywell、Johnson Controls、Schneider Andover、Delta Controls、Siemens Desigo 等) 上。如果现场已有 BMS 在运行,不必直接轮询设备,建议优先考虑使用 BMS 的网关 / 集成 API。
注册表单输入项
| 输入栏 | 填写内容 | 示例 |
|---|---|---|
| IP 地址 | BACnet 控制器的 IP | 192.168.10.50 |
| 端口 | BACnet/IP 端口 | 47808 (= 0xBAC0,标准值) |
| Device ID (device-id) | BACnet 设备实例号 | 1001 |
| 响应超时 | 响应等待时间 (ms) | 3000 |
如何获取 Device ID
BACnet 通过 IP + Device ID 的组合来标识设备。使用 YABE (Yet Another BACnet Explorer) 之类的免费工具扫描网络,可以一览设备实例号 / 对象列表。BMS 图纸 (Submittal) 的 BACnet PICS 文档中也会明确标注。
如果是 BACnet/MSTP (串行)
如果现场部署的是 BACnet/MSTP (RS-485),PlantPulse Edge 无法直接通信,需要采用以下方式之一。
| 方法 | 备注 |
|---|---|
| BACnet 路由器 (Cimetrics B6020、Contemporary Controls BASrouter 等) | MSTP ↔ IP 转换,最常见 |
| 在 BMS 侧加装 IP 模块 | 控制器固件/模块升级 |
| 经由集成网关 (Niagara、Tridium) | 大型站点的标准做法 |
标签的 PLC 地址表示法
BACnet 对象按 <objectType>:<instance> 格式填写。
| 表示法 | 含义 |
|---|---|
analogValue:1 | Analog Value 1 (温度/湿度/流量等实数型) |
analogInput:5 | Analog Input 5 (传感器直连输入) |
analogOutput:2 | Analog Output 2 (阀门 / 风阀指令) |
binaryValue:10 | Binary Value 10 (布尔值) |
binaryInput:5 | Binary Input 5 (数字输入 / 触点) |
binaryOutput:3 | Binary Output 3 (继电器指令) |
multiStateValue:1 | Multi-State Value 1 (模式 / 状态) |
常用对象类型。
| 类型 | 代码 | 用途 |
|---|---|---|
| Analog Input / Value / Output | analogInput / analogValue / analogOutput | 实数 (温度、风量等) |
| Binary Input / Value / Output | binaryInput / binaryValue / binaryOutput | 0/1 (运行、报警) |
| Multi-State Input / Value / Output | multiStateInput / multiStateValue / multiStateOutput | 1、2、3、… (运行模式) |
数据格式匹配
| BACnet 对象 | 数据格式 | 格式辅助项 |
|---|---|---|
| analogValue / analogInput / analogOutput | Float | REAL |
| binaryValue / binaryInput / binaryOutput | Boolean | (留空) |
| multiStateValue / multiStateInput / multiStateOutput | Integer | (留空) |
| (属性) Object Name 等字符串 | String | (留空) |
默认读取对象的 Present_Value 属性。如需其他属性 (例如 Status_Flags、Out_Of_Service),请在 高级 — REST API 中直接调用。
常见问题与解决
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| “No response” / 超时 | Device ID 不一致、47808 端口被阻断、未配置 BBMD | 用 YABE 搜索设备确认 ID,防火墙放行 47808/UDP |
| 看不到其他子网的设备 | BACnet 默认限于同一广播域 | 配置 BBMD (BACnet Broadcast Management Device) 或 Foreign Device Registration |
| 有数值但含义不明 | Engineering Units 存放在对象属性中 | 在 YABE / BMS 图纸中确认各对象的单位 (°C、kPa、%、…) |
| 多状态只显示数字 | State_Text 是独立属性 | 参照 BMS 映射表 (1=停止、2=运行、3=报警等),用计算公式转换为标签 |
后续步骤
- 高级 — REST API 中的 BACnet 示例
- 楼宇站点的集成通常构建在 Niagara / Tridium 之上会更简单 — 请与 BMS 团队协商。