1. 储能通信网关协议转换工程导论
储能电站是一个由多种设备协同工作的复杂系统。电池管理系统(BMS)负责电芯电压、温度、SOC、SOH 等状态采集与保护;储能变流器(PCS)负责直流与交流之间的双向变换和功率调度;能量管理系统(EMS)负责站级策略、功率分配、调度响应与运行监控;消防系统监测可燃气体、温度与烟雾并执行联动;空调或液冷系统维持电池舱温湿度在安全区间。这些设备来自不同厂家,使用不同通信协议、不同数据模型和不同点表定义,彼此之间无法直接“对话”。储能通信网关的核心价值,就是把这些异构设备统一接入、统一语义、统一转发,使 EMS 能够以一致的方式读取和控制全站设备。
本课程的目标不是泛泛介绍通信原理,而是围绕“协议转换工程”这一实际交付任务展开。学完本课程,你应当能够读懂储能站通信架构,识别 EMS、PCS、BMS、消防、空调之间的接口边界;能够根据设备手册和点表,完成 Modbus、IEC 61850、CAN、MQTT 等常见协议之间的映射设计;能够配置网关的采集、转发、告警和断线缓存策略;能够使用抓包、日志和点表核对手段定位通信故障;最终能够独立输出一套可交付的协议转换工程文件,包括通信点表、映射表、网关配置、测试记录和验收依据。
从架构上看,储能通信网关通常位于站控层与设备层之间,起到“协议适配 + 数据汇聚 + 语义统一”的作用。设备层中,BMS 多采用 CAN 或 Modbus RTU,PCS 常见 Modbus TCP 或 IEC 61850,消防主机可能使用 Modbus RTU 或私有协议,空调/液冷机组常为 Modbus RTU 或 BACnet。网关向下通过串口、以太网、CAN 等物理接口采集这些设备数据,向上通过 Modbus TCP、IEC 61850 MMS、MQTT 或 IEC 104 与 EMS 或云平台通信。下图给出一个典型的储能站通信架构与网关定位示意。
理解这张架构图后,协议转换工程的核心任务就清晰了。第一项是点表梳理:从 BMS、PCS、消防、空调各自的手册中提取需要接入的遥测、遥信、遥控、遥调点,明确每个点的名称、地址、数据类型、量纲、读写权限和正常范围。第二项是地址映射:把设备侧地址映射到网关内部统一的数据模型,再映射到 EMS 侧地址。例如 BMS 的 CAN 报文中的 SOC 位于某个字节偏移,需要转换为 Modbus 寄存器地址 40001,并保持浮点或整型格式一致。第三项是数据缩放:很多设备以整数传输,例如温度乘以 10 后传输,网关需要按比例还原为真实值,或者按 EMS 要求统一量纲。第四项是通信调度:确定采集周期、超时时间、重试次数和并发策略,避免轮询过密导致设备响应超时。第五项是告警联动:把设备故障码、消防报警、温度越限等信号映射为网关告警,并支持向 EMS 推送或触发本地联动。第六项是测试验收:通过点表逐点核对、抓包分析和断线恢复测试,确认数据准确、控制可靠、异常可恢复。
下面给出一份协议转换工程中常用的点表映射示例,用于说明从设备侧到 EMS 侧的字段对应关系。表中参数为教学示例,实际工程应以设备手册和设计图纸为准。
| 设备 | 设备侧地址/标识 | 数据含义 | 数据类型 | 缩放系数 | 网关内部点号 | EMS 侧地址 | 读写 |
|---|---|---|---|---|---|---|---|
| BMS | CAN ID 0x18F | 电池簇 SOC | UINT16 | ×0.1 % | GW_BMS_SOC_01 | 40001 | 只读 |
| BMS | CAN ID 0x18F | 最高单体温度 | INT16 | ×0.1 ℃ | GW_BMS_TMAX_01 | 40002 | 只读 |
| PCS | Modbus 40010 | 有功功率 | INT32 | ×0.001 kW | GW_PCS_P_01 | 40100 | 只读 |
| PCS | Modbus 40120 | 有功功率设定 | INT32 | ×0.001 kW | GW_PCS_PSET_01 | 40200 | 读写 |
| 消防 | Modbus 30001 | 烟感报警状态 | BOOL | — | GW_FIRE_SMOKE_01 | 40300 | 只读 |
| 空调 | Modbus 30010 | 舱内温度 | INT16 | ×0.1 ℃ | GW_HVAC_TEMP_01 | 40400 | 只读 |
在实际工程中,网关配置通常以结构化文件或配置界面完成。以下是一个简化的网关采集与转发配置片段,用于说明配置对象和字段组织方式。该片段为教学示例,不代表任何具体厂商的私有格式。
{
"gateway": {
"name": "GW-ESS-01",
"southbound": [
{
"protocol": "modbus_tcp",
"target": "PCS",
"ip": "192.168.10.21",
"port": 502,
"poll_interval_ms": 500,
"timeout_ms": 300,
"retry": 2,
"points": [
{ "name": "PCS_P", "addr": 40010, "type": "int32", "scale": 0.001, "unit": "kW" },
{ "name": "PCS_PSET", "addr": 40120, "type": "int32", "scale": 0.001, "unit": "kW", "rw": "rw" }
]
},
{
"protocol": "modbus_rtu",
"target": "BMS",
"port": "/dev/ttyS1",
"baud": 9600,
"poll_interval_ms": 1000,
"points": [
{ "name": "BMS_SOC", "addr": 1, "type": "uint16", "scale": 0.1, "unit": "%" },
{ "name": "BMS_TMAX", "addr": 2, "type": "int16", "scale": 0.1, "unit": "C" }
]
}
],
"northbound": {
"protocol": "modbus_tcp",
"listen_port": 502,
"mapping": [
{ "internal": "PCS_P", "addr": 40100, "type": "int32", "scale": 0.001 },
{ "internal": "BMS_SOC", "addr": 40001, "type": "uint16", "scale": 0.1 }
]
}
}
}
配置完成后,判断网关工作是否正常,不能只看“通信灯亮”。应逐点核对:EMS 侧读取的 SOC 是否与 BMS 本地显示一致,误差是否在允许范围内;PCS 有功功率设定值下发后,PCS 是否在设定周期内响应;消防报警信号是否能在网关告警列表中正确置位;断开某台设备后,网关是否按预期标记该设备离线,并在恢复后自动重新采集。这些判断依据,正是后续章节中测试与排障环节的基础。
需要特别注意的是,协议转换工程不是简单的“地址翻译”。它涉及数据语义一致性、时序一致性、异常可恢复性和安全边界。例如,BMS 的 SOC 在设备侧可能是 0~1000 对应 0~100%,而 EMS 期望 0~100 的整数;PCS 的功率设定可能要求先写使能位再写数值,顺序错误会导致控制无效;消防报警需要最高优先级转发,不能被普通遥测轮询阻塞。这些细节决定了网关是“能通”还是“可靠”。