Standing for Unified Diagnostic Services, UDS is a group of services that were put together and developed as a framework. Most cars follow the UDS standard to implement on-board diagnostics.
So What first is Diagnostics? It is a set of routines that run inside a car internally to check if ECUs are working properly etc. They also have services that make EOL testing easy, giving information needed by a service engineer at a service centre. It is a very very useful tool helpful to diagnose what's going on.
CAN总线与LIN总线是典型的车载 *** 总线。其两者的区别在于诊断时,CAN总线诊断遵循UDS协议,而LIN总线诊断在遵循UDS协议的基础上,还遵循LIN2.2协议。今天就向大家详细介绍一下关于LIN的诊断
首先,LDF是实现LIN诊断的充分条件
CAN总线诊断只需要有控制器(ECU)、诊断数据库(cdd&pdx等等)与诊断仪(Tester),通过请求ID与响应ID进行诊断。而LIN总线在此基础上,还必须通过LDF进行调度,以经典ID(0x3c与0x3D)进行LIN诊断。如下对比图所示。
其次,NAD的应用。
LIN *** 拓扑是“一主多从”的结构,通过NAD区分从节点。从上图中可以看出,CAN一般以Request/Response ID区分从节点。而LIN则是以NAD进行区分,利用一个ID实现多个从节点诊断服务;此方式节约了ID的使用,但是浪费了一个Byte,造成数据有效载荷降低。
LIN总线有两种诊断方式:
1) 主节点将从节点的诊断信息进行存储,当诊断仪发出诊断信息时,主节点将存储的诊断信息输出给诊断仪,此时的主节点具有存储卡的功能。
2) Tester将诊断命令发给主节点,主节点将诊断信息转发给对应的从节点进行通信交互,此时主节点的作用类似于***路由。两种方式对比如下图所示:
最后,LIN的3个诊断级别。
诊断级别1的控制器一般由简单的元件(如传感器等)组成,故障均由主节点进行读取、分析与保存。支持的诊断服务只有节点配置服务,传输层以单帧(SF)的形式就可以满足需求了。此处,看官有疑问:什么是节点配置服务?
节点配置服务是LIN诊断服务的一种,目的是为了区分同一个 *** 的不同节点。上文提及的NAD是区分现有的LIN *** 拓扑的节点,当引入新节点时,需要利用节点配置服务避免NAD和PID(Production Identification)发生冲突,实现“即插即用”。
节点配置ID
服务名称
0~0xAF
Reserved
0xB0
Assign NAD
0xB1
Assign frame identifier
0xB2
Read by Identifier
0xB3
Conditional Change NAD
0xB4
Data Dump
0xB5
Assign NAD via SNPD
0xB6
Save Configuration
0xB7
Assign frame identifier range
0xB8~0xFF
Reserved
节点配置服务类型如表1所示。当引入新的从节点时,一般利用主节点发送B0服务,给从节点分配新的NAD—06;主节点再发出3D,如果新从节点修改NAD成功,则会给出响应。如下图所示:
诊断级别2的控制器是诊断级别1的控制器上的扩展。支持传输层的全部功能,对于服务层不仅支持节点配置服务,还支持节点标识(产品ID和序列号)与读写参数服务(22与2E)。当节点同时支持诊断级别1的控制器与诊断级别2的控制器时,在LIN2.2中规定不必强制遵守诊断级别2。
如果将诊断级别2比作游戏的普通玩家,那么诊断级别3就是人民币玩家了。对于ISO14229-1中所有的诊断服务,诊断级别3是全部支持的,如在线刷写功能(诊断级别2不支持此功能)。诊断级别3中,每个从节点都需要有唯一的NAD,同时必须支持多帧传输。
诊断级别的总结如表2所示。
诊断级别
1
2
3
UDS服务号[hex]
传输协议层需求
仅单帧传输
+
完整传输协议
(包括多帧)
+
+
需要的配置服务
Assign frame identifier range
+
+
+
0xB7
Read by identifier
+
+
+
0xB2
Assign NAD
可选
可选
+
0xB0
Conditional change NAD
可选
可选
可选
0xB3
Positive response on supported configuration services
+
+
+
Service+0x40
Read data by identifier
0x22
Hardware and software version
+
+
0x22
Hardware part number (OEM specific)
+
+
0x22
Diagnostic version
+
+
0x22
Read by identifier (Parameters)
+
+
0x22
Write by identifier (Parameters)
如果支持
如果支持
0x2E
Read by identifier (Sensor and actuator data)
+
0x22
I/O control by identifier
+
0x2F
Read and clear DTC (Fault memory)
+
0x19,0x14
Routine control
如果支持
0x31
Other diagnostic services
如果支持
…
Flash刷写服务
Flash programming services
可选
/
相信看到这里,各位应该明白了LIN诊断的一些基本概念,其实LIN诊断划分等级的目地就是为提高性价比:
1、 等级越低,芯片要求与控制器协议栈要求也就越低,开发成本降低;
2、 功能要求越低,开发与测试人员投入时间降低,人力成本降低;