4、控制网络与通信协议:BACnet、Modbus、LonWorks协议对比、网关配置、系统集成架构
做暖通自控这些年,我打交道最多的就是这三兄弟——BACnet、Modbus、LonWorks。说白了,它们就是设备之间沟通的“语言”。你想想看,一个冷机说德语,一个空调箱说中文,一个传感器说西班牙语,这系统怎么玩得转?
今天我就把这三位的底细给你扒一扒。顺便聊聊网关怎么配,系统怎么集成。嗯,都是实战里摸爬滚打出来的经验。
4.1 三大协议,各有各的脾气
先给个总览表,让你心里有个数:
| 特性 | BACnet | Modbus | LonWorks |
|---|---|---|---|
| 出身 | ASHRAE(暖通圈亲儿子) | Modicon(PLC起家) | Echelon(楼控老牌) |
| 传输介质 | 以太网、MS/TP、PTP | RS-232、RS-485、TCP/IP | 双绞线、电力线、射频 |
| 数据模型 | 对象+属性(标准设备描述) | 寄存器+线圈(裸数据) | 网络变量(NV) |
| 互操作性 | ★★★★★(天生为集成而生) | ★★☆☆☆(需双方约定) | ★★★★☆(LonMark标准) |
| 实时性 | 中等(MS/TP约10ms级) | 高(RTU可达1ms级) | 中等(事件驱动) |
| 典型场景 | 楼宇级集成、DDC系统 | 设备级通信、PLC、仪表 | 末端设备、传感器、执行器 |
4.2 BACnet——暖通圈的“普通话”
我个人最喜欢BACnet。为什么?因为它就是为暖通空调量身定做的。
BACnet定义了一套标准对象,比如模拟输入(AI)、模拟输出(AO)、二进制输入(BI)、二进制输出(BO)。每个对象都有标准属性。你想想看,一个温度传感器,在BACnet里就是一个AI对象,它的Present_Value就是当前温度,Units就是摄氏度。全世界的BACnet设备都认这套东西。
我在项目中遇到过一个典型场景:某商业综合体,冷机是特灵的,空调箱是江森自控的,新风机组是霍尼韦尔的。三家设备,三种品牌。但都支持BACnet/IP。我直接把它们挂到同一个以太网上,用一台BACnet路由器做隔离,数据就全通了。省了多少网关钱啊!
核心要点:BACnet的互操作性,靠的是标准对象和服务。你不需要知道对方设备内部怎么实现的,只要知道它暴露了哪些对象,就能读写数据。
BACnet的传输方式主要有两种:
- BACnet/IP:跑在以太网上,速度快,适合大型系统。我一般用它做主干网。
- BACnet MS/TP:跑在RS-485上,成本低,适合末端设备。注意,MS/TP的波特率通常设76.8k或38.4k,别设太高,容易丢包。
避坑指南:我曾经在某个项目中,MS/TP总线接了32个VAV控制器,波特率设了115.2k。结果呢?数据轮询一圈要3秒多,控制响应严重滞后。后来降到38.4k,一切正常。记住,MS/TP不是以太网,别贪快。
4.3 Modbus——工业界的“通用语”
Modbus简单、粗暴、有效。它不定义设备是什么,只定义怎么读写数据。你给它一个寄存器地址,它就能读回来一个16位的数。至于这个数代表温度还是压力,那是你应用层的事。
Modbus有三种变体:
- Modbus RTU:二进制传输,效率高。我90%的项目都用它。
- Modbus ASCII:文本传输,可读性好,但效率低。基本淘汰了。
- Modbus TCP:跑在以太网上,其实就是把RTU包封装到TCP里。
我个人习惯用Modbus RTU做设备级通信。比如电表、水表、变频器,这些设备几乎都支持Modbus。你想想看,一个变频器,通过Modbus读写它的频率、电流、故障状态,多方便。
这里有个关键点:Modbus没有标准的数据模型。A厂的电表,寄存器地址40001可能是电压,B厂的电表,40001可能是电流。所以,Modbus通信必须要有“点表”。没有点表,你就是在盲人摸象。
警告:千万不要相信“Modbus通用”这种鬼话。我曾经接手一个项目,前一家公司把Modbus点表弄丢了。我花了整整两天,用万用表一个一个测,才把关键数据对出来。那叫一个痛苦。所以,拿到设备的第一件事,就是找厂家要Modbus点表,保存好!
4.4 LonWorks——老牌劲旅,但日渐式微
LonWorks在楼控圈曾经是王者。它的核心是Neuron芯片,每个设备里都有一颗。设备之间通过“网络变量”(NV)通信。你定义一个NV为温度,另一个设备订阅这个NV,数据就自动传过去了。是不是很优雅?
但LonWorks有个致命伤:封闭。Neuron芯片只有Echelon一家能生产,价格下不来。而且配置工具LonMaker、NL220,学习成本高。现在新项目里,LonWorks已经很少见了。
我记得十年前做的一个五星级酒店,全部用的LonWorks系统。VAV控制器、风机盘管控制器、传感器,全是LonWorks的。调试的时候,光绑定网络变量就花了两周。但系统跑起来确实稳,十年没出过大问题。
现在嘛,除非是改造项目,否则我不会推荐LonWorks。BACnet和Modbus已经足够覆盖99%的场景了。
4.5 网关配置——让“鸡同鸭讲”变成“同声传译”
现实项目中,很少有一个协议打天下的情况。通常是BACnet做主网,Modbus接设备,中间需要网关来翻译。
网关配置的核心就三件事:
- 协议转换:把Modbus的寄存器地址,映射到BACnet的对象属性上。
- 数据映射:比如Modbus读回来的原始值是0-10000,对应0-100°C,网关要帮你做这个换算。
- 通信参数:波特率、数据位、校验位、停止位,两边要匹配。
举个例子,一个Modbus电表,要接入BACnet系统:
// 网关配置示例(伪代码)
// Modbus侧
Device: 电表_1
Protocol: Modbus RTU
BaudRate: 9600
DataBits: 8
Parity: None
StopBits: 1
Register: 40001 // 电压,单位0.1V
Register: 40003 // 电流,单位0.01A
Register: 40005 // 功率,单位W
// BACnet侧
Device: 电表_1
Protocol: BACnet/IP
Object: AI_1 // 电压
Mapping: Modbus.Register[40001] * 0.1
Units: volts
Object: AI_2 // 电流
Mapping: Modbus.Register[40003] * 0.01
Units: amperes
Object: AI_3 // 功率
Mapping: Modbus.Register[40005]
Units: watts
实战技巧:配置网关时,我习惯先在Modbus侧用调试工具(比如ModScan)把数据读出来,确认没问题了,再去做映射。别一上来就配网关,否则出了问题你都不知道是Modbus没通,还是映射配错了。
4.6 系统集成架构——怎么把这些东西串起来
一个典型的暖通自控系统集成架构,分三层:
- 管理层(BACnet/IP):工作站、服务器、Web客户端。跑在以太网上,用BACnet/IP通信。
- 控制层(BACnet MS/TP + Modbus):DDC控制器、PLC、网关。这一层是核心,负责逻辑运算和协调。
- 设备层(Modbus + 硬接线):传感器、执行器、变频器、电表。这一层只管干活,不关心上层逻辑。
我常用的架构是这样的:
管理层(BACnet/IP)
|
| 以太网
|
控制层
├── BACnet路由器 → MS/TP总线 → VAV控制器 × N
├── BACnet网关 → Modbus RTU总线 → 电表 × M
└── BACnet网关 → Modbus RTU总线 → 变频器 × K
|
设备层
├── 温度传感器、湿度传感器、CO2传感器
├── 电动调节阀、风阀执行器
├── 变频器、软启动器
└── 电表、水表、热量表
为什么这么分?因为BACnet/IP适合做大数据量的集成,但成本高。MS/TP和Modbus RTU成本低,适合接大量末端设备。网关的作用,就是把不同“语言”的设备,统一成BACnet/IP,让管理层能“一视同仁”。
集成架构的核心原则:管理层只认BACnet/IP。所有非BACnet设备,通过网关转换成BACnet。这样,上层软件(比如BMS)只需要支持BACnet,就能管理所有设备。简单、干净、可维护。
嗯,说到这里,你应该对控制网络和通信协议有个整体认识了。总结一下:
- BACnet是暖通圈的“普通话”,做系统集成首选。
- Modbus是工业界的“通用语”,接设备最方便。
- LonWorks是老牌劲旅,但新项目慎用。
- 网关是“翻译官”,配置时注意点表和映射关系。
- 系统架构要分层,管理层统一用BACnet/IP。
下一章,我们聊聊DDC控制器的选型和编程。那才是真正动手干活的部分。