UDS 服务和NRC,以及单帧多帧

在这里插入图片描述

Negative response codes
The negative response codes (NRC) are divided into 3 ranges:

0x00: positiveResponse parameter value for server internal implementation,
0x01 – 0x7F: communication related negative response codes,
0x80 – 0xFF: negative response codes for specific conditions that are not correct at the point in time the request is received by the server. These response codes may be utilized whenever response code 0x22 (conditionsNotCorrect) is listed as valid in order to report more specifically why the requested action can not be taken.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通用服务响应流程:

在这里插入图片描述

带子功能服务响应流程:
在这里插入图片描述

&&&&&&&&&&&&&&&&&下面是单帧和多帧&&&&&&&&&&&&&&&&&&&&&

在这里插入图片描述

UDS 的诊断数据的发送与接收都是基于CAN,所以每个数据流都包含基本的CAN Message 的架构

CAN Message = CAN ID + CAN DATA

CAN ID 分为标准与扩展

在UDS的协议里面 ID 的类型并没有对其进行具体的定义,可以根据自己的需求进行自己定义,在Autosar里面是个两个配置变量,一个配置ID值,一个配置ID类型,大家自己配置一下就可以 ,对于UDS数据流来说,需要重点分析一下CAN DATA. CAN DATA的最终形成是在 网络层实现的,遵循ISO15765-2的规则,在这个层里面吸收应用层的UDS诊断数据,同时增加了这个CAN 信息的控制信息,最终形成一个帧的CAN消息,放入物理层的数据收发器里面。

每一个PDU 包含控制信息PCI,数据信息Data. 具体如下图所示:
在这里插入图片描述

综上所述,N_PDU =N_PCI+N_DATA, N_PCI的值主要集中的前三个字节,N_DATA值主要集中在后面7位字节。其中,SF_DL 代表单帧中数据的个数,FF_DL代表 连续帧中的数据总数,SN代表此帧为连续帧中的第几帧, FS参数控制发送端是否能继续传输数据,BS规定发送端允许持续传输连续帧数目的最大值,STmin限定连续帧相互之间所允许的最小值。

先面用连个例子进行说明,请参考!

例子 1— 单帧的数据传输与接收

数据发送:27 09

数据反馈:7F 27 7E — 负反馈

数据发送: 10 40

数据反馈: 50 40 00 32 01 F4

下图为在Canlyzer里面的数据截图,请参考

在这里插入图片描述

由于这个数据发送与接收都是单帧传输,所以第一个数据的高四位均为0,四个数据流中的第一个数据位,02,03,02,06代表的为此帧数据含有几个数据位,多余的数据位都用 00或者AA行填充。

例子2 — 多帧的数据接收与传输

数据发送:19 04 00 01 00 00

数据反馈:59 04 00 01 00 27 00 0B FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

下图为在Canlyzer里面的数据截图,请参考

在这里插入图片描述

数据发送为单帧,所以06代表发送的数据中含有6个字节,回复为正反馈,为连续帧,10 代表连续帧的首帧,1E代表此连续帧含有30个字节,30代表此连续帧的流控制帧,21,22,23,24代表连续帧中的第几帧,21代表第一帧,22代表第二帧,依此类推,其中AA为填充位。

UDS(统一诊断服务)是在车辆中使用的一种通信协议,它是基于ISO 14229标准开发的,用于车辆的诊断通信。在UDS中,数据的传输涉及多种不同类型的,包括连续、流控和多等。 连续(Flow Control Frame):在处理较大的数据传输时,如果数据量超过了单帧能够承载的大小,就需要将数据分割成多个来传输。连续用于标记一个数据消息的多个的连续部分。它们通常会包含一个连续计数器,这个计数器会指明当前是该消息中的第几,以及消息总共有多少。 流控(Flow Control Frame):用于控制数据的发送速率,确保发送端和接收端的数据处理能够匹配。流控可以是正向的,比如发送方请求继续发送更多的数据,也可以是反向的,比如接收方请求发送方减慢发送速度或者暂停发送。在UDS中,流控制通常通过发送特定的消息(如ISO 14229-3中定义的单帧和连续)来实现。 多(Multi Frame):当传输的数据量超过一个的最大数据载荷时,就需要使用多传输。多传输涉及到将数据分成多个连续的,每个都有序号和总数的信息,接收方通过这些信息将多个重新组合成原始的数据消息。 在使用多传输时,发送方和接收方之间的通信需要有相应的协议来确保数据的完整性和顺序性。如果在数据传输过程中,接收方没有正确地接收到某个,它可以通过发送流控来请求重传那个特定的
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值