第4章:BMS与EMS通信协议——CAN通信基础、Modbus、IEC 61850/104及故障诊断
各位工程师朋友,大家好。我是老张,在储能系统通信这块摸爬滚打了十几年。今天咱们聊聊BMS和EMS之间怎么“说话”的。
说白了,BMS是电池的“贴身保镖”,EMS是系统的“总指挥”。保镖和总指挥之间信息不通,那整个储能站就是聋子瞎子。我见过太多项目因为通信问题炸了锅——数据跳变、指令丢失、甚至直接停机。嗯,今天就把这些坑一个个填上。
4.1 CAN通信基础:CAN 2.0与CAN FD
先聊聊CAN。CAN总线在储能领域用得最多,尤其是BMS内部和BMS到EMS的通信。为什么?因为它实时性好,抗干扰能力强。
CAN 2.0 是经典版本,一帧最多传8字节数据。对于BMS上报的电压、温度、SOC这些信息,8字节基本够用。但我个人习惯,如果数据量超过4个字节,我就会考虑用CAN FD。
CAN FD vs CAN 2.0 核心区别
- 数据长度:CAN 2.0最多8字节;CAN FD最多64字节
- 速率:CAN 2.0最高1Mbps;CAN FD数据段最高8Mbps
- 兼容性:CAN FD向下兼容CAN 2.0,但需要控制器支持
我在一个百兆瓦时的储能项目中遇到过一个问题:BMS上报的电池簇数据太多,CAN 2.0一帧只能传一个模组的信息,导致总线负载率飙到80%以上。后来换成CAN FD,一帧能传整个簇的数据,负载率直接降到30%。
我的建议:新项目直接上CAN FD。虽然芯片贵一点,但省下来的调试时间绝对值回票价。
4.2 Modbus RTU/TCP协议在储能中的应用
Modbus是工业领域的老将了。在储能系统里,Modbus RTU常用于BMS与本地控制器之间的串口通信,Modbus TCP则用于EMS与上层系统之间的网络通信。
Modbus RTU 的典型场景:BMS通过RS485接口,以9600或19200波特率上报数据。一帧报文包含地址码、功能码、数据区和CRC校验。
举个例子,读取BMS的SOC值:
// 主机请求:读取从机地址0x01的寄存器0x0100(SOC寄存器)
发送:01 03 01 00 00 01 85 F6
// 从机响应:SOC = 75.2%
接收:01 03 02 01 58 79 A6
Modbus TCP 则简单一些,去掉了CRC校验,因为TCP/IP协议本身已经保证了数据完整性。我建议在EMS与上位机通信时优先使用Modbus TCP,调试方便,而且支持多客户端同时访问。
注意:Modbus RTU的响应时间一般在10-50ms,如果BMS有上百个寄存器要读,轮询周期会很长。我曾经遇到一个项目,BMS有300个寄存器,9600波特率下轮询一次要3秒多,EMS根本来不及做控制。后来改成只读关键寄存器,其他数据用事件触发上报。
4.3 IEC 61850/104在储能中的应用
IEC 61850是电力系统的“贵族协议”,在大型储能电站中越来越常见。它不像Modbus那样只传数值,而是定义了完整的对象模型——每个设备、每个数据点都有标准化的命名和结构。
比如一个电池模组,在IEC 61850里会定义成:
- 物理设备:BAT1(电池1号)
- 逻辑节点:ZBAT(电池逻辑节点)
- 数据对象:Vol(电压)、Tmp(温度)、SOC(荷电状态)
- 数据属性:mag(数值)、q(品质)、t(时标)
IEC 104(即IEC 60870-5-104)则更轻量级,常用于调度端与变电站之间的通信。在储能场景中,EMS通过IEC 104向电网调度上报有功功率、无功功率、SOC等遥测量,同时接收调度下发的AGC/AVC指令。
我的经验:IEC 61850配置复杂,但一旦配好,扩展性极强。IEC 104配置简单,适合快速对接。如果项目时间紧,我建议先用IEC 104打通通信,后续再升级到61850。
4.4 通信故障诊断实战
通信故障是储能系统最常见的“软故障”。我总结了几类典型问题:
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 数据丢帧 | 总线负载过高、终端电阻缺失 | 用CAN分析仪抓包,检查总线利用率 |
| CRC校验错误 | 波特率不匹配、线路干扰 | 示波器看波形,检查接地 |
| Modbus超时 | 从机响应慢、网络延迟 | 调整超时时间,检查TCP连接状态 |
| IEC 104断连 | 心跳超时、IP冲突 | 检查T0/T1/T2参数,ping测试 |
避坑指南:我曾经在一个项目中,BMS和EMS之间用CAN通信,总是间歇性丢帧。查了两天,最后发现是CAN总线终端电阻焊错了位置——两个120欧电阻并联成了60欧。嗯,这种低级错误最坑人。
我的调试工具清单:
- CAN分析仪(推荐周立功或PCAN)
- Modbus调试助手(ModScan/Moxa)
- Wireshark(抓IEC 104/TCP包)
- 示波器(看物理层波形)
最后说一句:通信协议选型没有绝对的好坏,关键看场景。小系统用Modbus RTU,大系统用CAN FD或IEC 61850。但不管用什么协议,物理层一定要做好——屏蔽、接地、终端电阻,这些基础工作做扎实了,能省掉80%的通信故障。
公众号:蓝海资料掘金营,微信deep3321