前言
这一块可是汽车电子工程师必须掌握的硬菜,虽然不难,但是都要懂点。
UDS相关的detail knowhow内容就不在本文中体现了,大家可以在网上搜索ISO14229、ISO15765、ISO11898等一系列标准来学习。本文只介绍knowhow summary和project level相关的内容,尽量偏向实战应用。
简单来讲,汽车的诊断基本都是通过UDS实现的。其中ISO14229定义了应用层,而ISO15765、ISO10681、ISO13400和ISO17987则分别定义了以CAN、Flexray、以太网和LIN通信实现的传输层和网络层,即通过CAN、Flexray和以太网等通信方式实现ISO14229定义的UDS应用层。
图1 UDS协议栈
还记得上一篇文章分享的网络拓扑图吗?在整车中,有不止一个CAN网络,每个CAN网络都有一定数量的ECU节点。其中有一个CAN网络名字叫做:诊断CAN网络,就是专门用来诊断的。诊断,实际上是开发人员拿着一些便携式设备,例如笔记本电脑、诊断仪等设备,通过OBD口等专用接口,接入整车CAN网络中,作为一个特殊的“外来使者”(Tester),抓取CAN网络中的消息,并能够对原生的CAN网络拓扑中的ECU进行通信、访问、刷写等操作。
系统测试很大程度上依赖UDS诊断提供的各种基础服务,例如读取DTC,读取Internal Fault Table,读写DID来改变或控制ECU的一些功能等等