4、储能系统通信架构:BMS与PCS通信协议
通信架构这事,说白了就是让储能系统里几个「大脑」能顺畅聊天。BMS、PCS、EMS,再加上场站的SCADA,这几家要是沟通不畅,整个系统就跟你手机断网一样——看着能用,实际啥也干不了。
我这些年调试过的项目,至少有一半的故障都跟通信有关。不是协议没对上,就是线缆接触不良,再不然就是数据上送延迟。嗯,咱们今天就把这块彻底捋清楚。
4.1 BMS与PCS的通信协议选择
BMS和PCS之间的通信,是储能系统最底层的对话。BMS告诉PCS:「我现在电压多少、电流多大、温度咋样」,PCS回应:「收到,我准备充/放多少功率」。就这么简单的事,却因为协议不同,搞出不少麻烦。
三种主流协议,我分别说说:
| 协议 | 速率 | 可靠性 | 适用场景 | 我个人的看法 |
|---|---|---|---|---|
| CAN | 250k~1Mbps | 高(硬件校验) | 电池簇内、PCS近端 | 最稳,但距离受限 |
| Modbus RTU/TCP | 9.6k~115.2kbps | 中(软件校验) | 中小型场站、改造项目 | 兼容性好,但别跑太远 |
| IEC 61850 | 100Mbps+ | 极高(冗余机制) | 大型风光场站、电网侧 | 功能强,配置也复杂 |
4.1.1 CAN协议:底层硬通货
CAN协议是我个人最偏爱的。为什么?因为它简单、可靠、实时性好。我在青海一个光伏项目里,BMS和PCS之间用CAN通信,距离不到5米,跑250kbps,两年没出过一次通信故障。
CAN的报文结构其实不复杂,但要注意ID分配。我习惯把电池簇号、数据类型、优先级都编码进ID里。举个例子:
// CAN报文ID定义(我常用的方式)
// 0x1A2B3C4D
// 1A = 电池簇号(0x1A = 26簇)
// 2B = 数据类型(0x2B = 电压信息)
// 3C = 优先级(0x3C = 高优先级)
// 4D = 备用
// 实际发送数据(8字节)
uint8_t can_data[8];
can_data[0] = (voltage >> 8) & 0xFF; // 电压高字节
can_data[1] = voltage & 0xFF; // 电压低字节
can_data[2] = (current >> 8) & 0xFF; // 电流高字节
can_data[3] = current & 0xFF; // 电流低字节
can_data[4] = temperature; // 温度
can_data[5] = soc; // SOC
can_data[6] = soh; // SOH
can_data[7] = checksum; // 校验和
4.1.2 Modbus协议:老当益壮
Modbus虽然老,但胜在通用。几乎所有PCS厂家都支持Modbus RTU或TCP。不过,Modbus有个致命弱点——它是主从架构,从站不能主动上报数据。
这就导致一个问题:BMS如果检测到电池过温,不能立刻告诉PCS,必须等PCS轮询到它才行。你想想看,这延迟在紧急情况下可能致命。
我建议的做法是:关键告警用Modbus的「异常响应」机制,或者干脆在BMS侧加一个硬接线干接点,过温直接拉高电平,PCS那边检测到就停机。别把所有希望都寄托在软件上。
4.1.3 IEC 61850:高大上但别滥用
IEC 61850是电网侧的标准,功能确实强大。它支持GOOSE(快速报文)和SV(采样值),延迟能控制在4ms以内。但代价是配置极其复杂,需要专门的工具软件。
我记得在甘肃一个风电场,业主非要上61850,结果光配置ICD文件就花了两周。后来发现,其实BMS和PCS之间用CAN就够了,根本用不着这么高端的协议。
4.2 EMS与场站SCADA系统对接
EMS是储能系统的「大脑」,SCADA是场站的「神经中枢」。两者对接,说白了就是EMS要把储能系统的状态告诉SCADA,同时接收SCADA下发的调度指令。
对接方式主要有两种:
- 直连方式:EMS通过以太网直接连到SCADA交换机,用Modbus TCP或IEC 104协议。适合小型场站,结构简单。
- 通过远动装置:EMS先连到远动装置(RTU),再由RTU统一上送SCADA。适合大型场站,便于统一管理。
我个人更推荐第二种方式。为什么?因为远动装置可以做协议转换和数据缓存。万一SCADA那边网络断了,远动装置还能存着数据,等网络恢复再补传。这个功能在电网考核里特别重要。
4.3 通信冗余与故障切换机制
通信冗余这事,平时看着没用,一旦出事就是救命稻草。我见过太多因为一根网线断了导致整个场站停摆的案例。
常见的冗余方案:
- 双网冗余:两套独立的以太网,一套主用一套备用。主网断了自动切到备用网,切换时间控制在50ms以内。
- 双链路冗余:同一套网络里,用两条物理链路。比如BMS和PCS之间拉两根CAN线,一根断了另一根顶上。
- 协议冗余:同时跑两种协议。比如主用CAN,备用Modbus。CAN断了自动切到Modbus。
我建议的切换逻辑是这样的:
// 通信冗余切换伪代码
if (主链路心跳超时 > 3次) {
切换到备用链路;
记录切换日志;
上送告警「主链路故障」;
启动数据补传机制;
}
if (主链路心跳恢复 && 稳定运行 > 60秒) {
切回主链路;
记录恢复日志;
上送告警「主链路恢复」;
}
4.4 数据采集与上送规范
数据采集这事,看着简单,实际坑最多。我总结了几条铁律:
- 采集周期要匹配:BMS的电压电流数据变化快,建议100ms采集一次;温度变化慢,1秒一次就够了。别一股脑全用1秒周期,数据量太大,网络扛不住。
- 上送频率要合理:电网调度一般要求1秒上送一次实时数据,5分钟上送一次统计数据。别自己瞎改,否则被考核了别怪我没提醒。
- 数据质量要标记:每个数据点都要带质量位。比如「正常」、「无效」、「可疑」、「替换值」。这样SCADA那边看到异常数据,知道是传感器坏了还是通信断了。
最后说一句:通信架构这东西,设计时多花点心思,调试时就能少掉点头发。别图省事,该加的冗余加,该配的协议配,该做的测试做。否则,等并网了再改,那成本可就大了去了。
- BMS与PCS通信:CAN最可靠,Modbus最通用,61850最强大但别滥用
- EMS与SCADA对接:建议通过远动装置,别直连
- 通信冗余:双网/双链路/协议冗余,切换时间控制在50ms内
- 数据采集:周期要匹配,频率要合规,质量要标记