2. 车载网络基础

在J1939车辆数据与诊断工程中,CAN总线是承载一切通信的底层基础。J1939并不是一套全新的物理网络,而是在CAN 2.0B扩展帧基础上定义的应用层协议。因此,理解CAN的物理层电气特性、数据链路层的帧组织方式、非破坏性仲裁机制以及错误处理策略,是读懂J1939报文、排查总线故障、设计诊断功能的前提。本节从工程视角梳理CAN总线的核心原理,帮助读者建立“电气—帧—仲裁—错误”四层贯通的认知。

一、物理层:差分信号与终端匹配

CAN总线采用差分传输,两条信号线分别称为CAN_H和CAN_L。总线空闲时,两者电压约为2.5V,差值接近0V,称为隐性电平(逻辑1);当节点发送显性位时,CAN_H被拉高至约3.5V,CAN_L被拉低至约1.5V,差值约2V,称为显性电平(逻辑0)。这种差分结构对共模干扰有很强的抑制能力,非常适合车辆上电机、点火系统带来的强电磁环境。

物理层的关键工程参数包括:总线两端必须各接一个120Ω终端电阻,并联后约60Ω,用于吸收信号反射;总线拓扑应尽量为线形,支线长度一般不超过0.3m;通信速率与总线长度成反比,500kbps对应约100m,250kbps对应约250m。J1939常用250kbps和500kbps两种速率,其中500kbps多用于动力总成,250kbps多用于车身与商用车底盘。

测量CAN总线静态电阻时,应在断电状态下测量CAN_H与CAN_L之间的阻值,正常约为60Ω。若测得约120Ω,说明有一端终端电阻缺失或断路;若接近0Ω,则可能存在短路。

二、数据链路层与帧结构

CAN 2.0B定义了标准帧(11位标识符)和扩展帧(29位标识符)。J1939全部使用扩展帧,29位标识符被划分为优先级(P)、保留位(R)、数据页(DP)、PDU格式(PF)、PDU特定(PS)和源地址(SA)。这一划分使J1939能够在CAN标识符中直接编码参数组编号(PGN)和源地址,实现面向参数组的通信。

一帧CAN扩展数据帧由帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束组成。数据场长度为0~8字节,J1939的多字节参数采用小端字节序传输。下表列出扩展帧主要字段及其工程含义:

字段长度工程含义
SOF1位帧起始,显性位,用于硬同步
标识符29位含优先级、PGN、源地址
RTR1位远程帧请求位,数据帧为显性
IDE1位扩展帧标识,隐性
DLC4位数据长度,0~8
数据场0~64位实际参数数据,小端序
CRC15位循环冗余校验,含界定符
ACK2位应答槽与界定符
EOF7位帧结束,隐性

三、仲裁机制:非破坏性逐位仲裁

CAN总线最精妙的设计之一是CSMA/CD+AMP(载波监听多路访问、冲突检测、逐位仲裁)。当多个节点同时开始发送时,它们先发送标识符。每个节点在发送每一位的同时监听总线电平:若自己发送隐性位而总线上出现显性位,说明有更高优先级节点正在发送,该节点立即退出仲裁,转为接收状态,且已发送的位不会破坏总线数据。标识符数值越小,优先级越高,因为显性位(0)在仲裁中胜出。

J1939利用这一机制实现优先级管理:标识符前3位为优先级,数值越小优先级越高。例如,安全相关报文通常使用较高优先级,而周期性状态报文使用较低优先级。仲裁过程完全由硬件完成,软件无需干预,但工程师在分配PGN和优先级时必须考虑总线负载与实时性。

CAN 非破坏性逐位仲裁与错误状态迁移 逐位仲裁过程 节点A 标识符:0x18FEEE00(优先级3) 节点B 标识符:0x0CF00400(优先级3,数值更小) 节点C 标识符:0x1CFE5A00(优先级7) 仲裁结果:B 胜出,A、C 退出发送并转为接收 显性位(0)在仲裁中覆盖隐性位(1) 总线电平与仲裁位 隐性 1 显性 0 仲裁场逐位比较,显性位优先 错误状态迁移 错误主动 错误被动 总线关闭 TEC/REC > 127 TEC > 255 总线关闭后需检测128次11个隐性位方可恢复

四、错误处理:五种错误与三级状态

CAN协议定义了五种错误类型:位错误、填充错误、CRC错误、格式错误和应答错误。每个节点维护发送错误计数器(TEC)和接收错误计数器(REC),并据此在错误主动、错误被动和总线关闭三种状态间迁移。错误主动节点检测到错误时会发送主动错误帧,由6个连续显性位组成,强制打断当前传输;错误被动节点只能发送被动错误帧,由6个隐性位组成,不影响总线;当TEC超过255时,节点进入总线关闭状态,自动脱离总线,需在检测到128次连续11个隐性位后才能恢复。

这一机制的意义在于:局部故障节点不会永久破坏总线通信,而是通过计数和隔离实现“故障收敛”。在J1939诊断中,读取节点通信状态、监控TEC/REC变化,是判断线束短路、终端电阻异常或节点故障的重要手段。

五、工程案例与常见误区

某商用车在整车路试中出现间歇性动力丢失,诊断仪读取到多条J1939报文超时。排查发现CAN_H对地存在约40Ω的间歇性短路,导致多个节点TEC快速上升并进入错误被动状态,总线负载异常升高。修复线束后,TEC恢复正常,报文超时消失。该案例说明:CAN错误计数是定位物理层故障的“早期预警信号”,不应只关注应用层报文。

常见误区一:认为CAN总线“谁先发谁赢”。实际上仲裁由标识符数值决定,数值越小优先级越高,与发送顺序无关。误区二:忽略终端电阻。缺少终端电阻会导致信号反射,表现为随机CRC错误和偶发通信中断。误区三:把总线关闭当作软件故障。总线关闭通常是物理层或节点硬件问题的结果,需结合TEC/REC和示波器波形综合判断。

掌握CAN物理层、帧结构、仲裁与错误处理,是后续理解J1939 PGN分配、地址声明、传输协议和多包报文的基础。在实车调试中,建议同时使用CAN分析仪抓取原始帧、读取节点错误计数,并结合示波器观察差分波形,形成“协议—计数—波形”三位一体的排障习惯。