2. CAN总线基础

在新能源汽车的OBC(On-Board Charger,车载充电机)系统中,CAN总线是连接BMS(电池管理系统)、VCU(整车控制器)与OBC内部DSP/MCU之间的核心通信纽带。理解CAN协议并非仅仅背诵帧格式,而是需要从历史演进、标准体系、帧结构差异以及物理层电气特性四个维度建立完整的知识框架。本章将围绕这四个维度展开,帮助工程师在OBC的CAN节点设计、报文解析和故障排查中建立扎实的理论基础。

CAN总线协议演进与分层架构总览 协议发展历程 1986 Bosch CAN 2.0 1993 ISO 11898 国际标准 2011 ISO 11898-2 高速CAN 2015 CAN FD Bosch 1.0 CAN 2.0A / 2.0B 对比 CAN 2.0A CAN 2.0B • 11位标识符 • 标准帧格式 • 最大64位数据 • 29位标识符 • 扩展帧格式 • 兼容2.0A CAN FD 关键特性 Bosch CAN FD 1.0 / ISO 11898-1:2015 • 数据场最高64字节(经典CAN为8字节) • 数据段可变速率(最高8Mbps) • 增加CRC校验位(17/21位) ISO 11898 分层架构 数据链路层 (DLL) • LLC:帧接收滤波、超载通知、恢复管理 • MAC:数据封装/拆装、帧编码、错误检测 • 介质访问管理:CSMA/CA + 仲裁 物理层 (PLS) • 位编码/解码:NRZ + 位填充 • 位时序与同步:硬同步、重同步 • 收发器:CAN_H / CAN_L 差分信号 接口 OBC CAN节点设计需同时关注DLL的报文滤波与PLS的电气参数匹配

2.1 CAN协议的发展历程:从Bosch提案到国际标准

核心原理:CAN的诞生与演进脉络

CAN(Controller Area Network)协议最初由德国Bosch公司在1986年提出,其设计初衷是为了解决汽车内部日益复杂的线束布局和点对点通信带来的成本与可靠性问题。在CAN出现之前,汽车电子系统普遍采用星型或菊花链拓扑,每增加一个ECU就需要增加大量线束,导致整车重量增加、故障率上升。CAN采用多主广播式串行通信,所有节点共享一对双绞线,通过报文ID的优先级仲裁机制实现无冲突的介质访问,从根本上改变了车载网络的架构方式。

1993年,ISO组织在Bosch CAN 2.0规范的基础上正式发布了ISO 11898国际标准,将CAN协议划分为物理层和数据链路层两个主要部分。此后,ISO 11898系列标准不断扩展,形成了覆盖高速CAN(ISO 11898-2)、低速容错CAN(ISO 11898-3)以及CAN FD(ISO 11898-1:2015修订版)的完整标准体系。对于OBC应用而言,高速CAN(125kbps~1Mbps)是当前的主流选择,而CAN FD则正在逐步渗透到新一代OBC与BMS之间的高速数据交互场景中。

判断方法:如何根据OBC应用场景选择CAN协议版本

在实际的OBC开发中,选择经典CAN还是CAN FD,需要从以下三个维度进行判断:

  • 数据量需求:OBC在充电过程中需要上报电压、电流、温度、效率、故障码等参数,经典CAN的8字节数据场通常需要拆分为多帧传输,而CAN FD的64字节数据场可以一次承载完整的充电状态信息。
  • 实时性要求:若OBC需要与BMS进行高频次的功率调整交互(如动态DC-DC控制),CAN FD的可变速率特性(仲裁段1Mbps,数据段5Mbps)能显著降低总线负载率。
  • 兼容性约束:现有整车EE架构若仍以经典CAN为主,OBC节点必须兼容CAN 2.0B被动模式;若整车已全面升级CAN FD,则OBC应支持CAN FD主动通信。

案例拆解:某OBC项目从CAN 2.0B升级到CAN FD的决策过程

某新能源车企在开发11kW OBC时,最初沿用CAN 2.0B通信方案。在台架测试中发现,当OBC与BMS同时上报SOC、SOH、单体电压、充电桩握手信息时,总线负载率在1Mbps速率下达到62%,接近70%的警戒线。进一步分析发现,BMS每10ms发送一次包含48字节的电池状态信息,需要拆分为6帧标准CAN报文,不仅占用了大量总线带宽,还因帧间间隔导致数据刷新延迟达到15ms,影响了功率动态调节的响应速度。

项目组决定将OBC与BMS之间的通信链路升级为CAN FD。具体实施步骤为:

  1. 确认BMS主控芯片(如NXP S32K1系列)支持CAN FD控制器,并检查收发器(如TJA1044)的CAN FD速率能力。
  2. 将OBC的CAN控制器配置为CAN FD模式,仲裁段保持500kbps,数据段设置为2Mbps。
  3. 重新设计应用层报文格式,将原先6帧标准CAN报文合并为1帧CAN FD报文(数据场48字节)。
  4. 在CANoe中建立仿真环境,验证CAN FD报文在总线上的时序和错误帧行为。

升级后,总线负载率从62%降至18%,数据刷新延迟从15ms缩短至3ms,OBC的恒压/恒流切换响应速度明显提升。但项目组也付出了代价:CAN FD的CRC校验算法与经典CAN不同,原有的测试脚本和诊断工具需要同步升级,且CAN FD报文无法被传统CAN节点解析,需要确保总线上所有相关节点均支持CAN FD。

风险提示:在混合网络中(部分节点支持CAN FD,部分仅支持经典CAN),必须启用CAN FD的“经典CAN兼容模式”(即发送经典CAN帧),否则会导致不支持CAN FD的节点产生错误帧,严重时可能造成总线关闭。

2.2 ISO 11898标准体系与CAN 2.0A/B的区别

核心原理:ISO 11898的分层模型与CAN 2.0规范的对应关系

ISO 11898标准将CAN协议划分为数据链路层(DLL)和物理层(PLS),其中数据链路层又细分为逻辑链路控制子层(LLC)和介质访问控制子层(MAC)。CAN 2.0A/B规范主要定义了DLL层的帧格式、仲裁机制和错误处理,而ISO 11898-2则补充了物理层的电气特性、位时序和收发器要求。理解这一分层关系对于OBC开发至关重要:当OBC的CAN控制器(如MCU内置的FlexCAN模块)处理帧格式时,它工作在DLL层;而外部的CAN收发器(如TJA1042)则负责PLS层的电平转换和差分驱动。

判断方法:CAN 2.0A与CAN 2.0B的标识符差异及兼容性

CAN 2.0A与CAN 2.0B的核心区别在于标识符长度:CAN 2.0A使用11位标准标识符,CAN 2.0B使用29位扩展标识符。在OBC的CAN网络设计中,通常遵循以下兼容性规则:

特性 CAN 2.0A(标准帧) CAN 2.0B(扩展帧) OBC应用建议
标识符长度 11位(0x000~0x7FF) 29位(0x00000000~0x1FFFFFFF) OBC内部通信建议使用标准帧,与BMS/VCU交互时根据整车规范选择
帧格式 IDE位=0 IDE位=1 需确认CAN控制器支持扩展帧接收
仲裁优先级 11位ID决定优先级 29位ID中前11位为基本ID,后18位为扩展ID 扩展帧的优先级比较需注意基本ID与扩展ID的组合规则
兼容性 CAN 2.0B节点可接收2.0A帧 CAN 2.0A节点无法接收2.0B帧 若OBC需与旧ECU通信,必须发送标准帧

实战场景:OBC报文ID分配策略

在某量产车型的OBC CAN通信矩阵设计中,工程师采用了以下ID分配策略:OBC向VCU上报状态使用标准帧ID 0x18FF50E5(基于J1939协议),而OBC与BMS之间的充电控制报文使用扩展帧ID 0x0C010203。这种混合使用方式要求OBC的CAN控制器必须支持同时接收标准帧和扩展帧。在配置FlexCAN模块时,需要将接收滤波器设置为“接收所有帧”模式,然后在应用层通过软件过滤区分不同ID的报文。实际测试中发现,若将接收滤波器配置为仅接收标准帧,则扩展帧报文会被硬件直接丢弃,导致OBC无法响应BMS的充电指令。

经验总结:在OBC的CAN通信矩阵设计阶段,建议绘制一张“ID-帧类型-方向-周期-数据场”的完整映射表,并明确每个报文的发送节点和接收节点。这不仅能避免ID冲突,还能在后续的DBC(CAN数据库)文件编写和UDS诊断服务配置中提供清晰的参考。

2.3 CAN FD与经典CAN的区别:帧结构、速率与CRC

核心原理:CAN FD的帧格式演进

CAN FD(Flexible Data-rate)在经典CAN帧的基础上引入了两个关键变化:可变数据场长度和可变速率。在CAN FD帧中,FDF位(位于保留位位置)被置为隐性,表示这是一个CAN FD帧。数据场长度从经典CAN的8字节扩展到最多64字节,且数据段的位速率可以独立于仲裁段进行提升。这种设计使得CAN FD在保持与经典CAN相同的仲裁机制和错误检测机制的同时,大幅提升了有效数据传输效率。

判断方法:CAN FD与经典CAN的帧格式对比

在OBC的CAN FD报文设计过程中,工程师需要关注以下帧格式差异:

帧字段 经典CAN(2.0A/B) CAN FD OBC设计注意事项
FDF位 保留位(显性) 隐性(表示FD帧) 若OBC发送经典帧,FDF位必须为显性
数据场长度 0~8字节 0~64字节(支持12/16/20/24/32/48/64) 需根据实际数据量选择DLC值,避免浪费带宽
位速率 全帧固定速率(如500kbps) 仲裁段与数据段速率可不同(如1Mbps/5Mbps) 需配置收发器的环路延迟补偿,确保位时序正确
CRC算法 15位CRC(多项式0x4599) 17位CRC(数据场≤16字节)或21位CRC(数据场>16字节) CRC计算由硬件完成,但需确认MCU的CAN FD控制器支持对应CRC宽度
填充规则 固定位填充(每5个相同位插入1个反相位) 仲裁段固定填充,数据段可选填充(通过FDF位后的BRS位控制) 若数据段关闭填充,需确保数据场不出现连续相同位导致同步丢失

案例拆解:OBC与BMS之间CAN FD报文设计实例

某OBC项目需要向BMS发送充电控制报文,包含目标电压(2字节)、目标电流(2字节)、充电模式(1字节)、使能状态(1字节)和CRC校验(2字节),共8字节数据。若使用经典CAN,需要占用1帧标准帧;若使用CAN FD,同样8字节数据可以放入DLC=8的CAN FD帧中,但数据段速率可以提升至2Mbps,从而缩短帧传输时间。具体参数对比如下:

  • 经典CAN帧:仲裁段+数据段均为500kbps,帧总时长约130μs(含帧间隔)。
  • CAN FD帧:仲裁段500kbps,数据段2Mbps,帧总时长约85μs(含帧间隔)。

在100ms周期内,CAN FD节省了45μs的总线占用时间,对于高负载的充电控制总线而言,这意味着可以增加更多诊断报文或提高控制报文的发送频率。但项目组也发现,CAN FD的位时序配置比经典CAN复杂得多,需要根据收发器的传播延迟和MCU的时钟精度进行精确计算。例如,在2Mbps数据段速率下,位时间仅为500ns,若MCU的CAN时钟源存在±1%的误差,可能导致采样点偏移,进而引发位错误。

工程建议:在OBC的CAN FD硬件设计阶段,建议在CAN控制器与收发器之间预留串联电阻(如22Ω)和共模扼流圈的位置,以抑制高速数据段带来的EMI问题。同时,在PCB布局中,CAN_H和CAN_L差分对应保持等长布线,误差控制在5mm以内。

2.4 物理层与数据链路层要点:从差分信号到错误处理

核心原理:物理层的电气特性与数据链路层的通信机制

CAN物理层采用差分信号传输,CAN_H和CAN_L两条线在显性状态(逻辑0)时,CAN_H为3.5V、CAN_L为1.5V,差分电压为2V;在隐性状态(逻辑1)时,两条线均为2.5V,差分电压为0V。这种差分设计使得CAN总线具有很强的抗共模干扰能力,非常适合OBC这种存在高压功率器件和强电磁干扰的环境。数据链路层则负责将应用层数据封装为帧格式,通过CSMA/CA(载波监听多路访问/冲突避免)机制实现多节点无冲突通信。当多个节点同时发送时,ID较小的报文在仲裁场中逐位比较,ID小的节点赢得仲裁并继续发送,ID大的节点自动转为接收模式。

判断方法:OBC CAN物理层故障排查要点

在OBC的CAN通信故障排查中,物理层问题往往比数据链路层问题更隐蔽。以下是常见的排查步骤:

  1. 测量静态电平:断开OBC的CAN收发器电源,测量CAN_H和CAN_L对地电阻,正常应为60Ω(两个120Ω终端电阻并联)。若测量值为120Ω,说明缺少一个终端电阻;若为0Ω,说明存在短路。
  2. 检查差分电压:上电后,用示波器测量CAN_H和CAN_L之间的差分电压。在总线空闲时,差分电压应为0V;在显性位时,应为2V左右。若差分电压异常偏低(如0.5V),可能是收发器驱动能力不足或总线负载过重。
  3. 验证位时序:使用CANoe或PCAN的示波器功能,观察CAN报文中的位宽度。若位宽度明显偏离预期值(如500kbps时位宽应为2μs),则可能是MCU的CAN时钟配置错误或收发器的环路延迟补偿不当。
  4. 检查终端电阻位置:在OBC的CAN网络中,终端电阻应位于总线物理两端。若OBC处于总线中间位置,不应在其节点上放置终端电阻,否则会导致信号反射。

实战场景:OBC CAN总线间歇性通信故障的排障过程

某OBC在整车耐久测试中出现间歇性CAN通信中断,故障码显示为“总线关闭”(Bus-Off)。工程师使用CANoe记录总线日志,发现错误帧集中在OBC发送充电状态报文时,且错误类型为“位错误”(Bit Error)。进一步分析发现,OBC的CAN收发器供电电压在充电过程中存在±0.3V的波动,导致收发器的输出差分电压在显性位时降至1.6V,低于接收节点的识别阈值(通常为1.2V)。

排查过程如下:

  • 使用示波器测量OBC的CAN收发器VCC引脚,发现纹波峰峰值为300mV,超出规格书要求的100mV。
  • 检查OBC的电源设计,发现CAN收发器的VCC直接取自DC-DC转换器的输出,未经过LC滤波。
  • 在CAN收发器的VCC引脚与地之间增加一个4.7μF的陶瓷电容和1nF的高频去耦电容,并串联一个磁珠(600Ω@100MHz)。
  • 重新进行耐久测试,CAN通信中断现象消失,总线错误帧计数从每分钟200次降至0次。

这个案例说明,OBC的CAN物理层设计不仅要关注收发器本身的选型,还要重视供电电源的清洁度。在PCB布局中,CAN收发器的VCC引脚应尽量靠近电源输出端,并采用星型接地方式,避免与功率MOSFET的驱动电路共用回流路径。

关键提醒:在OBC的CAN总线设计中,必须确保所有节点的地电位一致。若OBC与BMS之间存在较大的地电位差(如超过±1V),会导致共模电压超出收发器的允许范围(通常为-12V~+12V),进而引发通信错误。建议在OBC与BMS之间采用双绞屏蔽线,并将屏蔽层单点接地。

总结复盘:OBC CAN通信设计的核心要点

本章从CAN协议的发展历程出发,梳理了ISO 11898标准体系、CAN 2.0A/B与CAN FD的差异,以及物理层和数据链路层的核心要点。对于OBC工程师而言,需要重点掌握以下内容:

  • 协议选型:根据OBC的数据量、实时性和整车EE架构,合理选择经典CAN或CAN FD。
  • 帧格式理解:熟悉标准帧、扩展帧和CAN FD帧的字段定义,能够正确解析和构造报文。
  • 物理层设计:关注终端电阻、差分阻抗、供电滤波和地电位一致性,确保总线信号质量。
  • 故障排查方法:掌握从静态电阻测量到动态波形分析的排障流程,能够快速定位物理层或数据链路层问题。