4. ADAS域控CAN/CAN FD通信工程

ADAS域控的通信工程不是“把信号塞进CAN帧”这么简单。域控同时连接雷达、摄像头、超声波、底盘、车身网关,既要保证感知数据低延迟,又要保证控制指令高可靠。本节围绕报文设计、信号矩阵、网关路由、总线负载分析四条主线展开,并用Bosch典型报文案例说明工程落地方式。

一、报文设计:从信号到帧的映射

报文设计的核心是“信号—帧—周期—发送节点”四要素。以ADAS域控为例,典型输入包括前向雷达目标列表、摄像头车道线、超声波泊车距离;典型输出包括纵向加速度请求、转向扭矩请求、制动减速度请求。设计时先确定信号属性:位宽、精度、偏移、取值范围、更新周期、超时策略。

例如纵向加速度请求信号ACC_AxReq,取值范围-5.0~5.0 m/s²,精度0.01 m/s²,则位宽需覆盖1000个量化级,取12位(0~4095),偏移量设为500,物理值=原始值×0.01-5.0。该信号放入ADAS_AccelReq报文,周期20 ms,发送节点为ADAS域控,接收节点为ESP。若信号更新周期为10 ms,则报文周期必须≤10 ms,否则会出现“信号等帧”的延迟。

CAN FD报文设计还需考虑DLC与数据场长度。经典CAN最大8字节,CAN FD支持12/16/20/24/32/48/64字节。ADAS域控中,雷达目标列表通常超过8字节,应使用CAN FD。例如Radar_ObjectList报文,DLC=64,周期50 ms,包含最多10个目标,每个目标6字节(ID、距离、速度、角度、RCS、状态),共60字节,剩余4字节用于校验和与滚动计数器。

二、信号矩阵:整车通信的“字典”

信号矩阵是通信工程的唯一数据源,通常以DBC/ARXML形式维护。矩阵中每个信号必须明确:信号名、所属报文、起始位、位宽、字节序、精度、偏移、单位、最小值、最大值、发送节点、接收节点、超时值、初始值。ADAS域控的信号矩阵还需增加“功能安全等级”和“端到端保护”字段。

以Bosch典型ADAS报文为例,ADAS_Status报文周期100 ms,包含ADAS_Available(1位)、ADAS_Active(1位)、ADAS_Degraded(1位)、ADAS_Fault(1位)、ADAS_Mode(4位)。这四个状态位构成域控可用性判断链:Available=1且Fault=0才允许激活;Active=1表示功能正在输出;Degraded=1表示性能降级但仍可工作。接收节点(如仪表、网关)据此决定是否显示图标或触发降级策略。

三、网关路由:跨总线数据搬运

ADAS域控通常挂在CAN FD主干网,而底盘、车身仍使用经典CAN。网关负责将域控的ADAS_AccelReq从CAN FD路由到经典CAN,同时将底盘ESP_Status从经典CAN路由到CAN FD。路由设计需关注三点:路由延迟、信号映射、超时处理。

路由延迟包括网关接收、解析、重打包、发送四段。若网关处理时间为2 ms,CAN FD 20 ms周期与经典CAN 20 ms周期叠加,最坏延迟可达22 ms。对于AEB等安全功能,该延迟必须纳入时序预算。信号映射时,若源信号与目标信号精度不同,需做量化转换;若目标报文DLC不足,需拆分或压缩。超时处理则要求网关在源报文丢失时,按矩阵定义填充默认值或置无效,避免下游节点误用旧值。

四、总线负载分析:从理论到实测

总线负载率=单位时间内实际传输位数/总线带宽。经典CAN 500 kbps,CAN FD数据段可到2 Mbps或5 Mbps。以ADAS域控CAN FD主干网为例,假设报文清单如下:

报文DLC周期/ms帧类型单帧位数(含填充)
ADAS_AccelReq820CAN FD约130
ADAS_SteerReq820CAN FD约130
Radar_ObjectList6450CAN FD约620
Camera_LaneInfo3250CAN FD约340
ADAS_Status8100CAN FD约130

计算每秒位数:AccelReq 50帧×130=6500;SteerReq 50×130=6500;Radar 20×620=12400;Camera 20×340=6800;Status 10×130=1300。合计33500 bit/s。若数据段速率2 Mbps、仲裁段500 kbps,平均帧时间约0.15 ms,则负载率约33500/2000000=1.7%(仅数据段近似)。实际需用CANoe/CANalyzer测量总线负载峰值,并预留30%余量。若负载超过70%,需优化周期、合并报文或升级速率。

ADAS域控CAN FD通信工程链路 感知输入 前向雷达目标列表 摄像头车道线 超声波泊车距离 ADAS域控 信号矩阵 / DBC 报文打包 / 校验 E2E保护 / 滚动计数 执行输出 纵向加速度请求 转向扭矩请求 制动减速度请求 CAN FD CAN FD 中央网关 CAN FD ↔ 经典CAN 路由延迟 ≤ 2 ms 路由 经典CAN节点 ESP / EPS / 仪表 500 kbps 路由 总线负载分析(示例计算) ADAS_AccelReq: 50帧/s × 130 bit = 6500 bit/s Radar_ObjectList: 20帧/s × 620 bit = 12400 bit/s Camera_LaneInfo: 20帧/s × 340 bit = 6800 bit/s ADAS_SteerReq: 50帧/s × 130 bit = 6500 bit/s ADAS_Status: 10帧/s × 130 bit = 1300 bit/s 合计 ≈ 33500 bit/s,负载率 ≈ 1.7% ADAS_Status Available / Active Degraded / Fault

五、Bosch典型报文案例:ADAS_Status与ADAS_AccelReq

Bosch在ADAS域控通信中常采用“状态+请求”双报文模式。ADAS_Status周期100 ms,用于广播域控健康状态;ADAS_AccelReq周期20 ms,用于实时控制请求。两者均带滚动计数器与CRC校验,接收节点在连续3帧丢失或计数器跳变时置功能降级。

以ADAS_AccelReq为例,其数据场布局如下:Byte0~1为ACC_AxReq(12位)与ACC_ReqValid(1位);Byte2为ACC_ReqCounter(4位滚动);Byte3为ACC_ReqCRC(8位);Byte4~7预留。接收节点ESP在收到报文后,先校验CRC与计数器,再判断ACC_ReqValid,最后将ACC_AxReq解析为物理值。若CRC错误或计数器不连续,ESP丢弃该帧并保持上一有效值,同时通过ESP_Status反馈降级。

工程建议:ADAS域控的CAN FD报文应统一启用E2E Profile 1或Profile 2,滚动计数器位宽不低于4位,CRC多项式与接收节点严格一致。总线负载分析应在最坏场景(所有感知目标满负荷、所有控制请求同时激活)下进行,并预留30%带宽余量。

综上,ADAS域控CAN/CAN FD通信工程的核心是:用信号矩阵统一数据定义,用报文设计保证实时性与可靠性,用网关路由打通跨总线链路,用总线负载分析验证带宽余量,最终以Bosch典型报文案例为参照,形成可落地、可验证、可复现的通信工程方案。