我们知道车内ECU是通过CAN/LIN/Flexray/ETH等网络进行信息交互的,各类网络必须遵循各自的通信协议。如果整车某ECU需要进行故障诊断和软件升级是如何进行的?必须遵循相应协议,如ISO14229、ISO15765。
上文对CAN-CAN报文/信号路由有相关介绍;路径如下:
车载网关测试入门1-【路由功能】
大家带着以下问题进行本文的阅读,希望有所帮助。
汽车ECU的诊断和软件升级一般通过OBD(车载诊断系统)或者OTA连接网关实现的。
下图以OBD为例简述其过程:
这样工程师就可以通过专有诊断设备连接OBD接口(OBD接口与网关相连)对整车所有ECU进行诊断,软件更新原理类似。因此,网关充当的是对外的接口,也是通信的核心枢纽。
备注:
图示的0x721和0x729分别为BCM的诊断请求ID和诊断响应ID;整车上支持诊断的所有ECU都会存在一对诊断请求和响应ID,这样就能通过不同的诊断ID来明确应该对哪一个ECU进行诊断或者软件升级。图示的19和59为ISO14229定义的诊断服务,此例是为了完成获取故障信息,所有用到了19服务。感兴趣的可以去查询标准,此处不做详细介绍,后续有需要可开专题详细介绍。
TP路由又称诊断路由,一共分为两类:不带协议转换的诊断路由、带协议转换的诊断路由。
什么叫协议转换,也就是发送数据和接收数据的ECU支持的通信协议不一致。比如:CAN-CANFD、CAN-LIN、CAN-ETH等。
不带协议转换的诊断路由仅转发原始报文(需总线协议一致),而带协议转换的诊断路由需适配不同总线的传输层协议。两者核心区别在于是否修改报文格式以匹配目标总线要求。
类型 | 不带协议转换的诊断路由 | 带协议转换的诊断路由 |
---|---|---|
核心功能 | 网关直接转发原始报文,不修改协议格式。 | 网关解析并转换协议格式,适配目标总线要求。 |
适用场景 | 源总线和目标总线协议完全相同(如CAN到CAN)。 | 源总线和目标总线协议不同(如CAN到CAN FD、CAN到以太网)。 |
TP层处理 | 保留源报文TP层封装,无需修改。 | 需解析源TP层,按目标总线协议重新封装(如CAN TP转DoIP)。 |
兼容性要求 | 两端总线需支持相同协议版本及参数(如波特率)。 | 目标总线协议可独立于源总线,网关负责协议适配。 |
本文主要介绍CAN-CANFD的类型,其他类型后续专题补充。
02 10 01
(单帧会话控制),网关直接转发至CAN-B,格式不变。22 ReadDataByIdentifier
(读取DID-整车VIN码等)多帧请求,转换为CAN FD单帧传输(若数据允许)。22 F1 90
)。备注:
SF:单帧、FF:首帧、CF:连续帧、FC:流控帧;其他参数可以参考ISO15765-2;
初始条件:
1.系统电压=12V
2.KL15=ON
3.CANoe按照通信矩阵定义模拟发送所有周期报文(模拟实车环境-对应打开CANoe节点同步)
测试步骤:
1.CANoe按照诊断路由表定义的路由关系遍历模拟发送诊断测试报文且数据场为0x02 0x10 0x01 0x00 0x00 0x00 0x00 0x00(某一测试报文如:源网段:DCAN、报文ID:0x721、DLC:8、源报文周期:100ms;目标网段:BCAN、报文ID:0x721、DLC:8、目标报文周期:100ms);
2.持续监控10S,观察目标网段报文转发情况
预期结果:
1.监控到目标网段的网段、报文ID、DLC符合诊断路由表定义且数据场为0x02 0x10 0x01 0x00 0x00 0x00 0x00 0x00;(如:目标网段BCAN是否正常监控到0x721报文且DLC为8以及周期为100ms);
初始条件:
1.系统电压=12V
2.KL15=ON
3.CANoe按照通信矩阵定义模拟发送所有周期报文(模拟实车环境-对应打开CANoe节点同步)
测试步骤:
1.CANoe按照诊断路由表定义的路由关系遍历模拟发送诊断测试报文且数据场为0x00(某一测试报文如:源网段:DCAN、报文ID:0x721、DLC:8、源报文周期:100ms;目标网段:BCAN、报文ID:0x721、DLC:8、目标报文周期:100ms);
2.持续监控10S,观察目标网段报文转发情况
预期结果:
1.监控BCAN网段无0x721报文
其他用例就不一一展示了,如果有需要可联系我交流,如果后续大家有此类需求,我会继续新增专题进行介绍。
上面就是对CAN诊断路由相关概念、原理以及测试用例的介绍,后续专题会对诊断路由测试自动化脚本实现进行介绍。如果存在描述问题,欢迎各位大佬给我留言,一起讨论、学习、成长!