计算机系统应用教程网站

网站首页 > 技术文章 正文

UDS诊断服务

btikc 2024-12-14 10:06:43 技术文章 24 ℃ 0 评论
  • What is UDS?

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、 功能要求越低,开发与测试人员投入时间降低,人力成本降低;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表