UDS诊断详解(二)- ISO15765-2 详解

目录

传输层协议与网络层服务

1.1 数据帧格式

1.1.1 单帧(SF)

1.1.2 首帧(FF)

1.1.3 连续帧(CF)

1.1.4 流控帧(FC)

1.2 数据传输流程

1.2.1 单帧传输流程

1.2.2 多帧传输流程

1.3 网络层参数

1.3.1 接收方时间参数

1.3.2 发送方时间参数


 

经典CAN数据链路层最大能够支持8个字节,但ISO 14229并不仅仅是为了CAN总线设计的,最大容量达到4095个字节。比如VIN码是17个字节,CAN总线必然需要传递3帧才能传完VIN码,那么如何科学、快捷、安全地将多个字节通过经典CAN来进行传输,就成了一个需要解决的问题,ISO 15765-2协议由此诞生。

传输层协议与网络层服务

1.1 数据帧格式

UDS诊断报文收发相关的网络层协议一般采用 ISO 15765 - 2,ISO 15765 - 2采用4种数据帧,分别是单帧(SF)、首帧(FF)、连续帧(CF)、流控帧(FC);

下图为ISO 15765 - 2 中定义的4种数据帧的帧格式:

1.1.1 单帧(SF)

当诊断报文的长度大于0,小于8 bytes时,选用单帧进行传输;

单帧(SF)的格式如下图所示:

其中,SF_DL表示单帧的数据长度,如:诊断仪发送85 02服务请求,其诊断报文为:02 85 02 CC CC CC CC CC,CC为填充字节;

1.1.2 首帧(FF)

当诊断报文的长度大于等于8 bytes时,采用首帧、流控帧、连续帧的形式进行传输;

首帧(FF)的格式如下图所示:

其中,首字节高四位为1,低四位和Byte2组成FF_DL,FF_DL表示多帧传输数据的有效数据的长度;

1.1.3 连续帧(CF)

连续帧(CF)的格式如下图所示:

其中,首字节高四位为2,低四位组成SN,SN为多帧数据传输的帧序列号;

 

SN规则:

1. SN始终开始于0;

2. 第一个流控帧后的第一个连续帧SN 为1;

3. 在同一个多帧传输时,每增加一个连续帧,SN加1;

4. SN 的值不受后续流控帧的影响当SN的值达到15时,下一个连续帧的SN为0;

 

应用场合:

当诊断报文长度大于等于8时,再加上一个字节的PCI控制信息就是大于8,无法在单帧完成数据传输,在首帧和流控帧之后的数据连续帧;

1.1.4 流控帧(FC)

流控帧(FC)的帧格式如下图所示:

其中,首字节高四位为3,低四位组成FS,Byte2为BS,Byte3为Stmin;

FS:流控状态参数,控制多帧传输的状态

BS:块大小值,控制连续帧的连续传输的个数。例如:当BS设置成8时,表示接收流控帧之后,当发送完8个连续帧就需要再次接受流控帧。当值为0时,表示后续连续帧的发送不受流控帧的控制。

Stmin:连续帧之间最小时间间隔,接受方设置该参数,由连续帧发送实体实现。

应用场合:

当诊断报文长度大于等于8时,再加上一个字节的PCI控制信息就是大于8,无法在单帧完成数据传输,开始进行多帧传输,流控帧根据自身的接收能力控制发送端按照自身的能力发送连续帧。

例子:

响应报文ID为:0x7E2,为流控帧请求

FS:0,发送连续帧

BS:8,后续完成8个连续帧发送后,需要再次发送流控帧

Stmin: 0x14,连续帧的时间间隔最小为20ms;

1.2 数据传输流程

1.2.1 单帧传输流程

单帧传输,一帧单帧报文就可以完成:

1.2.2 多帧传输流程

1.发送方先发送首帧(FF),告诉对方我要发送FF DL长度的数据及N-2字节的数据;

2.接收方收到首帧后,发送流控帧(FC),告诉发送方流控的状态(FS)以及接收数据的能力 (ST)和下一次发送流控帧的间隔(BS);

3.发送方接收到流控帧后,就按照ST的时间间隔发送按SN计数的序列帧 (CF),每帧序列帧有N-1字节的数据;

4.发送方发送BS数量的序列帧(CF)后,等待流控帧,如果BS等于零,则此步骤省略;

5.发送方如果最后发送的序列帧数量小于BS,则不用等待流控帧,传输结束;

1.3 网络层参数

网络层参数包括N_As、N_Ar、N_Bs、N_Br、N_Cs、N_Cr;

其中N_Ar、N_Br、N_Cr为接收方时间参数,N_As、N_Bs、N_C发送方时间参数;

1.3.1 接收方时间参数

N_Ar:接收方数据帧经数据链路层传输的时间;

N_Br:接收方发送流控帧的时间间隔;(接收到发送请求到开始发送流控帧的时间间隔);

N_Cr: 接收方接收连续帧的等待时间;(即 NCr=NCs+NAs);

1.3.2 发送方时间参数

N_As:发送方数据帧经数据链路层传输的时间;

N_Bs:发送方接收流控帧的等待时间;

N_Cs:上一次连续帧发送成功到这一次连续帧开始发送的时间间隔;

 

实际开发过程中,需要对网络层时间参数和应用层时间参数进行配置,以满足需求;

应用层时间参数见上一篇文章《UDS诊断详解(一)》的第五章节:UDS相关的时间参数 - P2,P3,S3;

 

 

<think>好的,我现在需要回答用户关于UDS诊断类型及其用途的问题。首先,我需要回顾一下用户提供的参考引用,确保回答准确。 根据引用[1],提到了CANFD格式的诊断报文类型,但具体类型需要进一步确认。引用[2]指出UDS使用OSI第五层和第七层,服务ID(SID)和参数放在CAN数据的8字节中。引用[3]提到每个ECU有两个诊断ID,用于物理寻址的收发。 用户想知道UDS诊断的类型、定义和作用。UDS诊断的类型主要基于SID的不同,分为几类:诊断会话制、读写数据、通信制、故障码管理、输入输出制、例程制、上传下载等。需要详细说明每个类型,并举例对应的SID,如0x10用于会话制,0x22读取数据,0x2E写入数据等。同时,需要提到物理寻址和功能寻址的区别,引用[3]中的0x701和0x709作为例子。此外,还需区分单和多传输,确保信息全面准确。最后,生成相关问题时要涵盖类型区别、寻址方式、多应用以及SID的作用。</think>### UDS诊断的类型及其用途 UDS(统一诊断服务)协议中,诊断的类型主要由服务ID(SID)定义,用于实现不同的诊断功能。以下是主要类型及其定义和作用: #### 1. **诊断会话制(SID: 0x10)** - **定义**:用于切换ECU(电子制单元)的工作模式,例如默认会话、编程会话或扩展诊断会话。 - **作用**:不同会话模式对应不同的权限和功能。例如,编程会话允许刷写ECU固件,而默认会话仅支持基础诊断[^2]。 #### 2. **读写数据(SID: 0x22/0x2E)** - **读数据(0x22)**:通过数据标识符(DID)读取ECU内部参数,如传感器值或状态信息。 - **写数据(0x2E)**:修改ECU的配置参数,例如标定值或阈值设置[^2]。 #### 3. **通信制(SID: 0x28)** - **定义**:制ECU的通信行为,如关闭非诊断类报文以节省总线带宽。 - **作用**:在编程或诊断期间优化网络负载。 #### 4. **故障码管理(SID: 0x19)** - **定义**:用于读取(0x19 0x02)或清除(0x19 0x14)ECU存储的诊断故障码(DTC)。 - **作用**:帮助定位车辆故障并维护系统健康状态[^2]。 #### 5. **输入输出制(SID: 0x2F)** - **定义**:通过替代ECU的输入信号或制输出执行器,实现功能测试。 - **作用**:例如强制点亮故障灯或测试电机响应。 #### 6. **例程制(SID: 0x31)** - **定义**:启动或停止ECU内部的预定义例程,如自检或校准程。 - **作用**:用于自动化测试或系统重置。 #### 7. **请求下载/上传(SID: 0x34/0x35)** - **定义**:管理ECU与诊断工具之间的数据传输,例如固件更新。 - **作用**:通过多传输(如CAN FD)支持大文件传输[^1][^2]。 --- ### 物理寻址与功能寻址 - **物理寻址**:针对特定ECU的通信,使用其专属的发送和接收ID(如0x701接收,0x709发送)[^3]。 - **功能寻址**:向多个ECU广播请求,用于同时唤醒或复位多个制单元。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值