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;                // 校验和
我的小技巧:CAN通信一定要加硬件终端电阻(120Ω)。我曾经在一个项目里忘了加,结果数据时好时坏,排查了整整两天才发现是电阻问题。从那以后,我每次调试第一件事就是量终端电阻。

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就够了,根本用不着这么高端的协议。

避坑指南:我曾经见过一个项目,BMS和PCS之间用61850,但光纤链路没做冗余,结果一根光纤断了,整个系统直接瘫痪。61850虽然支持冗余,但你不配置等于没有。

4.2 EMS与场站SCADA系统对接

EMS是储能系统的「大脑」,SCADA是场站的「神经中枢」。两者对接,说白了就是EMS要把储能系统的状态告诉SCADA,同时接收SCADA下发的调度指令。

对接方式主要有两种:

  • 直连方式:EMS通过以太网直接连到SCADA交换机,用Modbus TCP或IEC 104协议。适合小型场站,结构简单。
  • 通过远动装置:EMS先连到远动装置(RTU),再由RTU统一上送SCADA。适合大型场站,便于统一管理。

我个人更推荐第二种方式。为什么?因为远动装置可以做协议转换和数据缓存。万一SCADA那边网络断了,远动装置还能存着数据,等网络恢复再补传。这个功能在电网考核里特别重要。

4.3 通信冗余与故障切换机制

通信冗余这事,平时看着没用,一旦出事就是救命稻草。我见过太多因为一根网线断了导致整个场站停摆的案例。

常见的冗余方案:

  1. 双网冗余:两套独立的以太网,一套主用一套备用。主网断了自动切到备用网,切换时间控制在50ms以内。
  2. 双链路冗余:同一套网络里,用两条物理链路。比如BMS和PCS之间拉两根CAN线,一根断了另一根顶上。
  3. 协议冗余:同时跑两种协议。比如主用CAN,备用Modbus。CAN断了自动切到Modbus。
关键点:冗余不是「多拉一根线」就完事了。你得配置心跳检测、故障切换逻辑、切换后的数据同步。我曾经在一个项目里,双网冗余配好了,但切换时数据丢了3秒,结果被电网考核扣了分。

我建议的切换逻辑是这样的:

// 通信冗余切换伪代码
if (主链路心跳超时 > 3次) {
    切换到备用链路;
    记录切换日志;
    上送告警「主链路故障」;
    启动数据补传机制;
}

if (主链路心跳恢复 && 稳定运行 > 60秒) {
    切回主链路;
    记录恢复日志;
    上送告警「主链路恢复」;
}

4.4 数据采集与上送规范

数据采集这事,看着简单,实际坑最多。我总结了几条铁律:

  • 采集周期要匹配:BMS的电压电流数据变化快,建议100ms采集一次;温度变化慢,1秒一次就够了。别一股脑全用1秒周期,数据量太大,网络扛不住。
  • 上送频率要合理:电网调度一般要求1秒上送一次实时数据,5分钟上送一次统计数据。别自己瞎改,否则被考核了别怪我没提醒。
  • 数据质量要标记:每个数据点都要带质量位。比如「正常」、「无效」、「可疑」、「替换值」。这样SCADA那边看到异常数据,知道是传感器坏了还是通信断了。
我的习惯:在EMS里建一个「数据质量统计表」,每天自动统计每个数据点的无效比例。超过5%就自动告警,提醒运维人员去检查。这个功能帮我提前发现过好几次传感器漂移的问题。

最后说一句:通信架构这东西,设计时多花点心思,调试时就能少掉点头发。别图省事,该加的冗余加,该配的协议配,该做的测试做。否则,等并网了再改,那成本可就大了去了。

储能系统通信架构总览 场站SCADA系统 IEC 104 / Modbus TCP EMS能量管理系统 CAN / Modbus Modbus / 61850 BMS电池管理系统 PCS储能变流器 CAN直连(冗余) 电池簇1 电池簇2 电池簇N 🔁 双网冗余 ⚡ 故障切换 <50ms 📊 数据质量标记
核心要点回顾:
  • BMS与PCS通信:CAN最可靠,Modbus最通用,61850最强大但别滥用
  • EMS与SCADA对接:建议通过远动装置,别直连
  • 通信冗余:双网/双链路/协议冗余,切换时间控制在50ms内
  • 数据采集:周期要匹配,频率要合规,质量要标记

专注资料整理