UDS统一诊断服务【一】诊断会话控制0X10服务

这篇具有很好参考价值的文章主要介绍了UDS统一诊断服务【一】诊断会话控制0X10服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

最近在做诊断相关的开发工作,将自己接触到的知识点记录下来。前面的文章已经介绍过UDS的一些基础知识,和基本的一些概念,不清楚的可以查看之前的文章:UDS基础知识介绍


一、诊断会话控制简介

诊断会话控制服务 DiagnosticSessionControl,SID是0X10,主要功能是控制服务端的会话模式切换。一般默认上电后是在默认会话模式下,当某一个服务端正在运行时,只会出现一个会话模式,不会同时存在两个会话模式。

二、会话模式

常用的会话模式有如下几种:

默认会话:01 Default Session,支持信息的读取和查询操作,权限最小。

编程会话:02 Programming Session 顾名思义这个是用来烧录程序的

扩展会话:03 Extended Session,主要是用来读写数据,如写入VIN,序列号,读写诊断码等

uds诊断会话切换,汽车电子,嵌入式硬件

  1. 默认会话:当服务端在默认会话模式下收到默认会话的请求时,服务端应当重新初始化默认会话,即之前被临时激活或者改变的数据都应该恢复到刚上电初始化的状态,写入到非易失存储器(断电数据不会消失的存储器)的数据不会重新初始化。

  2. 其他会话:当服务端在默认会话模式下收到任何非默认会话模式请求,服务端应当切换到被请求的会话模式,并且如果通过0x86服务设置了事件的话,这时候需要暂停。但是目前基本上不会使用0x86服务,所以一般直接切换即可。

  3. 在非默认会话模式下收到非默认会话模式请求:服务端完成会话模式切换的同时需要完成以下操作:

a, 停止通过ResponseOnEvent(0x86)服务设置的事件;

b,重新锁定安全访问状态,并且重置依赖于安全访问的服务;

c,不依赖于安全访问的服务,如果在被请求的会话模式也支持,应当保持当前状态,例如通信控制服务和DTC控制服务。

  1. 在非默认会话模式下收到默认会话模式请求:服务端应当恢复之前被暂停的通过0x86服务设置的事件,停止所有默认会话模式不支持的服务,其余需要执行的操作与第一条一样。

三、报文格式

1. 请求报文

上篇文章介绍UDS基础知识的时候,也有介绍过诊断请求的格式,有如下3种:

格式1:[Service Identifier] + [Sub-function]

格式2:[SID] + [Data Identifier]

格式3:[SID] + [Sub-function] + [DID]

uds诊断会话切换,汽车电子,嵌入式硬件

2. 子功能

诊断会话控制使用子功能参数diagnosticSessionType诊断会话类型,被用于激活电控单元中对应的诊断会话,具体的参数含义如下:

uds诊断会话切换,汽车电子,嵌入式硬件

更完整的参数含义请参考ISO14229-1,表格很长,此处只截了一部分

uds诊断会话切换,汽车电子,嵌入式硬件

sub-function严格来说是7个bit,而不是1个byte,因为它的最高位bit被用于抑制正响应(suppress positive response,SPR),如果这个bit被置1,则ECU不会给出正响应(positive response);如果这个bit被置0,则ECU会给出正响应。这样做的目的是可以告诉ECU不要发不必要的 response,从而节约通信资源。

uds诊断会话切换,汽车电子,嵌入式硬件

3. 响应报文

当服务端收到诊断请求时,如果能执行则回复肯定响应,不能执行则回复否定响应;也有不给出响应的情况,就是抑制正响应(suppress positive response,SPR),如果这个bit被置1,则ECU不会给出正响应(positive response)

3.1 肯定响应

肯定响应的格式为:[SID + 0X40] + [Sub-function] + xx xx xx xx xx

当然肯定响应的格式是根据请求报文的格式来的,请求报文是[SID] + [Sub-function],则肯定响应就为[SID + 0X40] + [Sub-function];请求报文是[SID] + [DID],则肯定响应就是[SID + 0X40] + [DID]。其余字节是时间参数,后面举例子说明。

uds诊断会话切换,汽车电子,嵌入式硬件

3.2 否定响应

negative response的格式为3个字节,格式为:[0X7F] + [SID] + [NRC]

uds诊断会话切换,汽车电子,嵌入式硬件

常用的否定响应码如下:

uds诊断会话切换,汽车电子,嵌入式硬件

更详细完整的否定应答码请参考ISO14229-1 Table A.1

uds诊断会话切换,汽车电子,嵌入式硬件

4. 时间参数

时间参数有两个,P2server_max和P2*server_max,每个参数占用两个字节,所以一共占用四个字节。虽然每个参数都是两个字节,但是其单位(精度)是不一样的,P2*参数的单位是10ms,也就是说P2*的结果需要把后面两个字节的数值乘以10才是实际的时间

uds诊断会话切换,汽车电子,嵌入式硬件

四、举例说明:

ISO14229的例子:

uds诊断会话切换,汽车电子,嵌入式硬件

实际的例子:

此处的例子都是针对CAN总线网络为例。在举例之前,先介绍简单介绍一下CAN总线的诊断报文格式,后面文章会单独详细介绍

报文的类型包括了首帧FF,流控帧FC,连续帧CF和单帧SF四种。N_PCL中字节1的4-7位用来区分类型。N_PCLType = 0 单帧 N_PCLType = 1 首帧 N_PCLType = 2 连续帧 N_PCLType = 3 流控帧

uds诊断会话切换,汽车电子,嵌入式硬件

肯定响应:

TX 02 10 03 00 00 00 00 00 // 02: 0表示单帧,2表示后面的数据有2个字节;10:10服务是诊断会话控制服务;03:表示子功能,扩展诊断会话;后面的0是填充位

RX 06 50 03 00 32 01 F4 AA// 06:0表示单帧,6表示后面的数据有6个字节;50:肯定响应码,值为服务请求的值加0X40;03表示子功能;00 32表示P2server_max,转换成十进制就是50,那么P2server_max就是50ms

01 F4表示P2*server_max,转换成十进制就是500,再乘以单位10ms,即P2*server_max为5000ms

否定响应:

TX 02 10 02 00 00 00 00 00 // 10:诊断会话控制服务,02:编程会话模式

RX 03 7F 10 78 AA AA AA AA // 03: 0表示单帧,3表示后面的数据有3个字节;7F为否定响应的SID;10为会话请求;78为否定应答码

最后,如果觉得有帮助,希望你能点个关注,一键三连,感激不尽文章来源地址https://www.toymoban.com/news/detail-775038.html

到了这里,关于UDS统一诊断服务【一】诊断会话控制0X10服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【车载开发系列】UDS诊断---动态定义DID($0x2C)

    动态定义数据标识符 DynamicallyDefineDataIdentifier(2Ch) 此服务允许诊断工具在ECU的内部动态定义一个数据标识符,一个临时的DID,可以通过这个DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。 该数据标识符还可以被读取数据服务22h或读取数据(周期标识

    2024年02月02日
    浏览(62)
  • 汽车诊断之UDS入门-0x27(SecurityAccess)安全访问

    安全访问服务 0x27 用来解锁 ECU 对应的安全等级 , 一般处在非默认会话 下 进行解锁,这个服务解锁的是 处在某个安全等级下的服务 。 服务格式   安全等级解闭锁   需要注意的是: 1.P owerOn 或者 R eset 后, ECU 处在 locked 状态; 2.同一时刻只有 1 个安全等级是 active ,与这个

    2024年02月08日
    浏览(67)
  • 【车载开发系列】UDS诊断---读取DTC信息($0x19)

    UDS可以简单理解为一套完整的通讯协议框架,其目的在于规范各种行车电脑和ECU之间的通讯。0x19服务其实是读取DTC信息的服务。 1)DTC概念 故障存储相关的0x19和0x14服务。 当系统检测到了一个错误或者是一个故障发生的时候,会将相对应的数值故障码进行存储,那么这个对应

    2024年01月15日
    浏览(53)
  • uds的0x14服务介绍

    0x14服务是UDS(Unified Diagnostic Services)中的诊断服务之一。具体而言,0x14服务是用于执行ClearDTC(Drive Train Controller)操作的服务。Drive Train Controller通常指的是车辆驱动控制器,包括发动机控制单元、传动控制单元、制动控制单元等。 执行ClearDTC操作后,UDS 0x14服务可以清除D

    2024年02月09日
    浏览(47)
  • uds的0x11服务介绍

    UDS(Unified Diagnostic Services)是一种汽车电子系统的诊断协议,目标是提供具有通用性、标准化和可互换性的诊断接口。在UDS中,0x11服务主要用于对ECU的存储器进行读取和写入操作,其具体介绍如下: 0x11服务被称为“安全访问(Request Upload / Request Download)”,是UDS协议的两项

    2023年04月09日
    浏览(42)
  • UDS诊断系列之七 安全访问(27)服务(番外)附录I

    附录I的主要内容是通过一个状态图来描述ECU在安全访问的各状态之间的切换条件,以及如何进行状态切换即切换过程中都需要执行哪些操作。 下面直接先上图。 图看起来流程很多,但实际上很简单,先说图中的四个状态: A - ECU没有接收过任何安全访问的请求,或者刚刚接

    2024年02月10日
    浏览(49)
  • 【AUTOSAR】UDS协议的代码分析与解读(五)----ECU诊断服务

    8    诊断服务 8.1 总览 此章节定义了本规范中可使用的诊断服务及其执行规则 。 下表列出 了 h 事业部定义的所有 UDS 诊断服务。 ECU 最终实现与下述定义不符之处必须得到 h 事业部   的认可。服务实现内容需在零部件诊 断规范中详细说明。 表   9 诊断服务支持列表 诊 断服

    2024年02月09日
    浏览(54)
  • 【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分

    总目录:(单击下方链接皆可跳转至专栏总目录) 《UDS/OBD诊断需求编辑工具》总目录 https://blog.csdn.net/qfmzhu/article/details/123697014 目录 1 $0x36 TransferData诊断服务描述 2 0x36服务请求消息 2.1 0x36服务请求消息定义 2.2 0x36服务请求消息子功能参数$ Level(LEV_)定义 2.3 0x36服务请求消息

    2024年02月06日
    浏览(49)
  • 车载诊断协议UDS——诊断刷写(Software Update)

    刷写,顾名思义就是两个动作:刷和写: 刷是擦除ECU芯片内存上原有的数据; 写是重新在ECU芯片内存上写入新的数据(Application or Calibration Data……);         在控制器量产之初,会将valid application data烧录到控制器芯片内存上。但随着时间推移,控制器中运行代码出现

    2024年02月08日
    浏览(58)
  • UDS诊断协议

    UDS 本质上是一系列服务的集合,包含 6 大类,共 26 种。每种服务都有独立的 ID ,即 SID 。 请求 SID(1Byte) + 参数 SID(1Byte) + Sub-function(1Byte) + 参数 SID + DID(2Bytes) 响应 肯定响应 SID+0x40(1Byte) + Sub-function (根据请求是否存在) + 参数 SID+0x40(1Byte) + DID + Data 否定响应 0x7F + SID + NRC(1Byte)

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包