4、充电协议详解(GB/T 27930续):参数配置阶段、充电阶段、结束阶段、故障处理机制

好,咱们接着聊GB/T 27930。上一章我们把握手和辨识阶段讲透了,这一章我重点说说后面三个关键阶段:参数配置、充电、结束,还有那个谁都不想碰但必须懂的故障处理。

说实话,我在现场调试时,80%的通讯问题都出在参数配置和结束阶段。很多人觉得握手过了就万事大吉,其实真正的坑都在后面。

4.1 参数配置阶段:BMS和充电桩的“讨价还价”

握手成功后,BMS和充电桩就要开始谈条件了。说白了,就是BMS告诉充电桩:“我需要这么多电,你给不给得起?”

核心报文:

  • BRM(BMS辨识报文):BMS上报电池类型、额定容量、额定总电压。嗯,这里有个细节——额定容量单位是Ah,不是kWh,我见过有人搞混过。
  • BCP(BMS参数配置):BMS发送电池充电参数,包括最高允许充电总电压、最高允许充电电流、最高允许单体电压等。
  • CTS(充电机参数配置):充电桩回复自己的输出能力,比如最大输出电压、最大输出电流。
  • CML(充电机最大输出):充电桩告诉BMS:“我最多能给你这么多。”

关键点:参数配置阶段有一个超时机制。BMS发送BCP后,必须在5秒内收到CTS,否则通讯超时,直接进入故障处理。我曾经在项目里遇到过,因为CTS报文里的电压参数写成了字符串格式,导致BMS解析失败,一直超时重启。查了两天才找到原因。

避坑指南:我曾经在测试中发现,有些BMS会把“最高允许充电电流”填得特别大,比如电池包额定100A,它填200A。充电桩如果真按这个值输出,电池就危险了。所以,充电桩侧一定要做二次校验,不能完全信BMS的数据。

4.2 充电阶段:真正的“拉锯战”

参数配置完成后,就进入充电阶段了。这个阶段的核心是BCL(BMS充电需求)和CCS(充电机充电状态)的交互。

报文交互流程:

  1. BMS发送BCL,告诉充电桩:“我现在要XX电压、XX电流。”
  2. 充电桩回复CCS,说:“好的,我输出XX电压、XX电流。”
  3. 这个交互每50ms一次,一直持续到充电结束。

你想想看,如果BMS突然要一个很大的电流,充电桩能不能给?不一定。充电桩有自己的功率限制,还有当前其他枪的负载情况。这就是多枪功率分配的核心逻辑所在。

个人经验:我习惯在充电桩侧做一个“电流平滑”处理。BMS的电流需求变化可能很剧烈,比如从50A直接跳到100A。如果充电桩直接响应,输出电流会有一个尖峰,对继电器和接触器都不好。所以,我会在软件里加一个斜坡函数,让电流在200ms内逐渐上升。这样既满足BMS需求,又保护了硬件。

充电阶段的状态机:

状态 描述 典型报文
充电准备 等待BMS发送BCL BCL
充电中 正常功率输出 BCL ↔ CCS
充电暂停 BMS或充电桩请求暂停 BST/BSM
充电结束 收到BST或CST BST/CST

这里有个容易忽略的点:充电暂停。BMS可以发BST(BMS中止充电)报文,充电桩收到后必须停止功率输出,但通讯链路保持。等BMS发BSM(BMS状态报文)恢复后,再继续充电。我在现场见过因为暂停后恢复时序不对,导致充电桩直接报故障的案例。

4.3 结束阶段:好聚好散

充电结束,不是直接拔枪走人那么简单。协议里有一套完整的“分手流程”。

正常结束流程:

  1. BMS发BST,中止充电,原因码为“正常结束”。
  2. 充电桩收到后,停止输出,发CST(充电机中止充电)确认。
  3. 双方交换充电统计数据(比如充了多少度电、充了多久)。
  4. 最后,BMS断开接触器,充电桩断开继电器。

异常结束:如果BMS检测到电池过压、过温,或者充电桩检测到绝缘故障,任何一方都可以直接发中止报文,不需要对方确认。说白了,就是“我不管你了,我先停”。

注意:结束阶段最容易出问题的是“接触器粘连检测”。BMS在断开接触器后,会检测接触器两端电压。如果还有电压差,说明接触器可能粘连了。这时候BMS会报故障,并且不允许再次充电。我遇到过因为继电器触点烧蚀,导致接触器检测失败的案例,最后只能换继电器。

4.4 故障处理机制:保命要紧

故障处理,说白了就是“出了事怎么办”。GB/T 27930定义了一套完整的故障分级和处理机制。

故障分级:

  • 一级故障(致命):比如绝缘故障、电池过压。必须立即停止充电,断开接触器。
  • 二级故障(严重):比如通讯超时、温度过高。可以降功率运行,或者请求暂停。
  • 三级故障(一般):比如电压轻微波动、电流纹波偏大。可以继续充电,但需要记录日志。

故障处理流程:

  1. 检测到故障后,发送对应的故障报文(比如BEM、CEM)。
  2. 根据故障等级,执行相应动作(停止、降功率、告警)。
  3. 记录故障码和时间戳,方便后续排查。
  4. 如果是可恢复故障(比如通讯临时中断),在故障消除后,可以重新进入握手阶段。

我的建议:故障处理一定要做“防抖”处理。比如绝缘检测,可能因为环境湿度大,瞬间出现一个低绝缘值,但很快就恢复了。如果直接触发一级故障,用户就得拔枪重来,体验很差。我一般会做3次连续检测,如果3次都低于阈值,才判定为真实故障。

常见故障码举例:

故障码 含义 处理方式
0x01 电池过压 立即停止充电
0x02 电池欠压 停止充电,告警
0x03 电池过温 降功率或停止
0x04 绝缘故障 立即停止,断开接触器
0x05 通讯超时 重试3次,失败则停止

嗯,这里要注意,故障码的定义在协议里是开放的,不同厂家可以自定义。但建议尽量遵循标准定义,否则不同品牌的BMS和充电桩对接时,容易出兼容性问题。

好了,这一章的内容就这些。参数配置、充电、结束、故障处理,这四个阶段环环相扣,任何一个环节出问题,都会影响充电体验。下一章我们聊聊多枪功率分配的具体算法,那才是真正考验架构设计能力的地方。