定义
BACnet(Building Automation and Control Networks)是楼宇自动控制领域的标准协议,用于 HVAC、照明、安防等楼宇设备的数据采集与控制。设备管理平台通过网关实现 BACnet 设备接入,与 OPC UA、Modbus 等工业协议并存。
协议特点
BACnet 由 ASHRAE 制定,支持多种物理层(以太网、RS-485、ZigBee 等),采用面向对象的数据模型,设备以对象(Object)形式暴露属性,支持读/写/订阅。广泛应用于智能建筑、数据中心、医院等场景的暖通空调、照明、电梯、能源计量等设备互联。
与 DMP 的集成方式
设备管理平台通过 Edge Gateway 边缘网关或协议转换模块,将 BACnet 设备数据转换为 MQTT、HTTP 等云侧协议,实现楼宇设备上云。网关负责 BACnet 对象发现、轮询或订阅,并将数据映射为平台 Thing Model 物模型属性,支撑远程监控、告警与能源分析。
应用场景
适用于智慧楼宇、园区、酒店、医院等场景。通过 BACnet 与物联网平台的融合,可实现跨品牌楼宇设备的统一接入、集中监控与能效优化,支撑绿色建筑认证与运维成本降低。
对象属性怎样映射到平台
BACnet 在设备管理中的技术含义,是把楼宇控制器里的模拟量、二进制量和多状态量当成可寻址对象,而不是当成一条不透明的串口报文。每个对象有实例号和一组属性,读属性得到当前值,写属性才是控制。平台侧通常不直接铺满楼宇网络,而是由网关发现对象、按约定周期读取或接受值改变通知,再写成设备接入层能识别的属性。映射时要保留对象类型、实例号和单位,不能只把数值塞进一个叫“数据”的字段,否则后来无法区分温度、阀位和运行状态。
适合这样做的条件,是现场控制器已经用 BACnet 暴露对象,并且网关与控制器处在同一楼宇网络或可路由的 BACnet 链路中。控制器若只提供厂商私有寄存器、没有对象表,就不应先宣称已按 BACnet 接入。谁可以写哪个属性必须单独授权,只读点位不能因为映射到了平台就变成可下发。优先级数组也要保留:楼宇里手动、日程和应急往往占不同优先级,平台若总是写同一个优先级,会把现场更高优先级的保护盖掉,或自己的指令永远不生效。
现场设备号和网络号撞车
容易出错的是设备实例号在不同楼栋重复。BACnet 设备实例在路由后的网络里应当唯一,两台控制器碰巧都用出厂默认号时,网关会把它们的对象读串,平台上看到的曲线其实来自另一台机器。网络号规划不一致也会让路由时断时续:同一网段被配成两个网络号,发现能看见设备,后续读属性却超时。还有人把 COV 订阅当成保证实时,控制器重启或订阅数满了以后通知停止,平台仍显示最后一次的旧值,看起来像“数据正常但不再变化”。
写控制失败时,要区分是属性不可写、优先级被占用,还是数据类型不符。把浮点写进二进制对象、把枚举写成自由文本,控制器会拒绝,平台若只记录“下发失败”而不保留错误类别,现场无法判断该改物模型还是该改控制器。和设备监控一起用时,离线应指向这台控制器或这段路由,而不是把整栋楼标成一台设备离线。轮询过密会占满 MS/TP 总线,表现为随机超时,根子却是扫描周期,不是点位本身坏了。
写优先级被现场占用时
楼宇控制器里,同一个属性往往有多级优先级,手动旋钮、时间日程、应急和楼宇管理系统各写一级。平台若不知道自己应该写哪一级,就会出现两种相反的故障:写到了过低的一级,现场更高的一级一直盖着,指令看起来已发送,设备毫无变化;写到了过高的一级,又会压住应急或消防联锁,直到有人记得清除。因此映射阶段就要记下这个属性是否带优先级、平台固定使用哪一级、清除时是写空值还是写一个放弃命令。没有放弃动作的集成,会造成平台的一次测试写入永久占用该点。
读取时也不能只读当前生效值。生效值相同,可能来自日程,也可能来自被人锁住的手动级。只把一个数送上平台,运维会以为是自己上次下发的结果。值改变通知若在控制器重启后没有重新订阅,平台会一直显示重启前的数,和控制室现场屏幕不一致。排错时应能看到对象实例号、当前生效优先级和最近一次写失败的原因。把整栋楼收成一个设备、不保留控制器边界,会让这种不一致无法定位到具体的控制柜。