3. 通信协议详解
在BMS(电池管理系统)中,CAN总线承担着主控BCU与从控BMU、整车VCU、充电机之间的实时数据交互。理解CAN与CAN FD的帧结构、仲裁机制、错误处理以及位定时与采样点配置,是进行通信诊断与一致性验证的基础。本节从工程视角出发,逐层拆解这些机制,并给出可落地的配置与排查方法。
一、帧结构:从标准帧到CAN FD
经典CAN帧由帧起始(SOF)、仲裁段、控制段、数据段、CRC段、ACK段和帧结束(EOF)组成。标准帧使用11位标识符,扩展帧使用29位标识符。CAN FD在此基础上做了三处关键改动:一是控制段新增FDF、BRS、ESI位,用于标识FD帧、切换数据段波特率、指示错误状态;二是数据段长度由DLC编码扩展至最大64字节;三是CRC场根据数据长度采用不同多项式,并引入填充位计数与校验。
在BMS中,电压、温度、SOC等信号通常以周期报文发送。经典CAN单帧最多8字节,若一个BMU有96节电压,需要多帧拼接;而CAN FD单帧64字节可显著减少报文数量与总线负载。但要注意,CAN FD并非简单“加长”,其数据段波特率切换点、位定时参数与经典CAN不同,配置不当会导致采样点偏移。
关键点:CAN FD帧的仲裁段仍使用标称波特率,数据段可切换至更高波特率。BRS位为隐性时切换,为显性时保持标称速率。因此,同一帧内存在两套位定时参数,必须分别配置。
二、仲裁机制:非破坏性逐位仲裁
CAN采用多主竞争、逐位仲裁机制。当多个节点同时发送时,每个节点在发送每一位的同时回读总线电平。若发送隐性(1)而回读为显性(0),说明有更高优先级节点正在发送,该节点立即退出仲裁,转为接收状态,且不破坏已发送的数据。标识符数值越小,优先级越高。因此,在BMS中,安全相关报文(如过压、过温、绝缘故障)应分配更小的ID,确保在总线拥塞时优先传输。
仲裁段包括SOF、标识符和RTR位。标准帧与扩展帧的仲裁过程略有差异:扩展帧在11位标识符后发送SRR和IDE位,再发送剩余18位标识符。若标准帧与扩展帧ID前11位相同,标准帧因IDE位为显性而优先。这一细节在混合使用标准帧和扩展帧的BMS网络中容易引发优先级误判,需在DBC设计中统一规范。
三、错误处理:五类错误与状态机
CAN节点通过错误计数器(TEC/REC)管理通信可靠性。错误类型包括:位错误、填充错误、CRC错误、格式错误和ACK错误。节点根据TEC和REC值在错误主动、错误被动、总线关闭三种状态间迁移。当TEC超过255时,节点进入总线关闭状态,停止发送,需通过恢复机制重新接入。
在BMS诊断中,错误帧频繁出现往往指向三类问题:终端电阻不匹配导致信号反射、采样点偏差导致位采样错误、地电位差导致共模干扰。排查时应先读取节点的错误计数器与错误状态,再结合示波器观察总线波形。若某节点TEC持续增长而REC正常,通常说明该节点自身发送异常;若REC增长,则可能是接收端采样或总线干扰问题。
典型错误状态迁移阈值:
错误主动:TEC < 128 且 REC < 128
错误被动:TEC >= 128 或 REC >= 128
总线关闭:TEC > 255
恢复:总线关闭后检测到128次连续11位隐性位
四、位定时与采样点配置
位定时是CAN通信中最容易被忽视却影响最大的参数。一个位时间被划分为同步段(Sync_Seg)、传播段(Prop_Seg)、相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2)。采样点位于Phase_Seg1结束处,通常要求配置在75%~87.5%之间。采样点过早或过晚都会降低抗干扰能力,尤其在长线束、多节点、高波特率场景下更为敏感。
位定时参数由晶振频率、预分频器(BRP)、各段长度共同决定。以常见的16MHz晶振、500kbps波特率为例,若BRP=2,则TQ=125ns,位时间=16TQ。此时可配置Sync_Seg=1TQ、Prop_Seg=6TQ、Phase_Seg1=5TQ、Phase_Seg2=4TQ,采样点=(1+6+5)/16=75%。若改为Phase_Seg1=6TQ、Phase_Seg2=3TQ,采样点提升至81.25%,抗相位误差能力更强,但同步跳转宽度(SJW)需相应调整。
CAN FD数据段波特率更高(如2Mbps、5Mbps),位时间更短,对采样点精度要求更苛刻。建议数据段采样点配置在75%~80%,并确保所有节点使用相同或兼容的位定时参数。若节点间采样点差异超过5%,在长线束下可能出现偶发CRC错误或位错误。
配置建议:使用CAN分析仪或示波器测量实际采样点位置,而非仅依赖理论计算。晶振偏差、收发器延迟、线束传播时间都会使实际采样点偏移。BMS网络中,建议统一晶振精度为±0.5%以内,并在DBC或通信矩阵中记录每个节点的位定时参数。
五、案例与复盘:采样点不一致导致的偶发丢帧
某BMS项目在整车路试中出现偶发通信丢帧,仪表报“电池通信超时”。初期排查终端电阻、线束屏蔽均正常,错误计数器显示多个节点REC缓慢增长。用示波器抓取总线波形后发现,主控BCU采样点约为78%,而部分从控BMU采样点约为70%。在高温环境下,线束延迟增加,70%采样点的节点在数据段边缘采样,导致位错误。统一将所有节点采样点调整至80%后,问题消失。
该案例说明:位定时与采样点不是“能通就行”的参数,而是与温度、线束长度、节点数量强相关的系统级参数。在BMS一致性验证中,应把采样点一致性纳入测试用例,使用CANoe或类似工具模拟极限工况,验证各节点在电压、温度边界下的通信稳定性。
| 验证项 | 典型要求 | 测试方法 |
|---|---|---|
| 标称波特率 | 500kbps ±0.5% | 示波器测量位时间 |
| 数据段波特率 | 2Mbps ±0.5% | CAN FD分析仪测量 |
| 采样点 | 75%~80% | 示波器+分析仪联合测量 |
| 终端电阻 | 60Ω ±5% | 断电测量CAN_H-CAN_L |
| 错误计数器 | TEC/REC < 128 | 读取节点诊断寄存器 |
| 总线关闭恢复 | 自动恢复且不丢关键报文 | 注入干扰触发总线关闭 |
六、误区与工程建议
- 误区一:认为CAN FD只是“更长的CAN”。实际上FD的CRC、位填充、采样点规则均有变化,旧工具可能无法正确解析。
- 误区二:忽略采样点配置,直接使用控制器默认值。不同厂商默认值差异较大,混用易导致偶发错误。
- 误区三:只关注波特率,不关注SJW和晶振偏差。SJW过小会降低同步能力,过大则可能引入错误同步。
- 建议:在BMS通信矩阵中明确每个节点的位定时参数、采样点、晶振精度,并在台架阶段完成一致性测试。
掌握帧结构、仲裁、错误处理与位定时,是进行BMS通信诊断的底层能力。后续章节将在此基础上,进一步展开CAN FD数据段配置、网络负载计算与一致性验证用例设计。