UDS诊断 10服务

文章目录

  • 简介
  • 诊断会话切换
  • 请求和响应
    • 1、请求
    • 2、子功能
    • 3、肯定响应
    • 4、否定响应
    • 5、特殊的NRC
  • 为什么划分不同会话
  • 报文示例
  • UDS中常用 NRC
  • 参考

简介

10服务,即 Diagnostic Session Control(诊断会话控制)服务用于启用服务器中的不同诊断会话,可以通过会话模式赋予不同诊断服务 不同的执行权限。

诊断会话切换

诊断会话转换以及服务器转换到另一个会话时其应做出哪些反应。

流程序号会话切换前会话切换后描述
1默认会话默认会话 服务器处于defaultSession(默认会话)状态时,若客户端要求启动defaultSession(默认会话),则服务器应完全重新初始化defaultSession(默认会话)。
激活的会话期间,服务器应重置所有已激活的/初始化的/更改过的设置/控制。这不包括已编程入非易失性存储器中的长期更改。
2默认会话默认会话 服务器从defaultSession(默认会话)转换为defaultSession(默认会话)外的其他会话时,服务器应仅停止已在defaultSession期间通过ResponseOnEvent(基于事件响应)(Ox86)服务在服务器中进行配置的事件(类似于stopResponseOnEvent(停止基于事件响应))。
3其他会话相同会话或其他会话 服务器从defaultSession(默认会话)外的诊断会话转换为非defaultSession(默认会话)的其他会话(包括当前有效诊断会话)时,则服务器应(重新)初始化诊断会话,这意味着:
i) 应停止通过ResponseOnEvent(基于事件响应)(Ox86)服务在服务器中进行配置的所有事件。
ii) 应重新锁定安全性。注意,锁定安全访问应重置依存于待解锁的安全访问的任何有效诊断功能(例如,DID的有效inputOutputControl(输入输出控制))。
iii) 应维护好新会话中支持的且不依存于安全访问的所有其他有效诊断功能。例如,从一个non-defaultSession(非默认会话)转换为另一个或相同的non-defaultSession时,任何已配置的周期性调度器应保持活动状态,且不得影响CommunicationControl(通信控制)和ControIDTCSetting(控制DTC设置)的状态,这意味着,切换会话时若正常通信为禁用,则其应保持禁用状态。
4其他会话默认会话 服务器从非默认会话的任何诊断会话转换为defaultSession(默认会话)时,服务器应停止通过ResponseOnEvent(基于事件响应)(0x86)服务在服务器中已配置的所有事件,且应启用安全性。应终止defaultSession(默认会话)中不支持的任何其他活动的诊断功能。
例如,应禁用任何已配置的周期性调度器或输出控制,且应重置CommunicationControl(通信控制)和ControIDTCSetting(控制DTC设置)服务的状态,这意味着,会话切换为defaultSession(默许会话)时,若正常通信为禁用,则应重新启用正常通信。激活的会话期间,服务器应重置所有已激活的/初始化的/更改过的设置/控制。这不包括已编程入非易失性存储器中的长期更改。

在这里插入图片描述

除了发送请求可以使Server 切换会话,如果您进入了一个非默认会话的状态,一个定时器会运转,如果一段时间内没有请求,那么到时间(S3Server)后,诊断退回到默认会话01(最低权限)。当然,我们有一个$3E的服务,可以使诊断保持在非默认的状态。

请求和响应

1、请求

基本格式

归纳起来,诊断的request格式无非以下两种:

<SID> + <Sub-function> + <Parameter>

<SID> + <Parameter>

即有无sub-function的区别。Parameter可以是DID,可以是输入参数,可以是自定义的值,字节数视具体要求而定。
在这里插入图片描述

2、子功能

子功能参数定义(1字节数据):

  • Bit7:抑制肯定响应消息指示位 suppressPosRspMsgIndicationBit
    • 0=False:需要肯定响应
    • 1=True:禁止肯定响应
  • Bit6-0:子功能参数值(0x00~0x7F)

在这里插入图片描述
在这里插入图片描述

3、肯定响应

基本格式:

<SID + 0x40> + <Sub-function> + <Parameter>

<SID + 0x40> + <Parameter>

要注意,第一个字节是由SID和0x40的和构成。这里的Parameter项是optional的,具体要看协议规定。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、否定响应

基本格式:

<0x7F> + <SID> + <NRC>

看起来比较简单,格式比较固定,只要是Negative Response,第一字节就是0x7F,第二字节照抄原来的SID,第三个字节是错误响应码,指示具体错误响应的原因

在这里插入图片描述

5、特殊的NRC

这里提一下一个特殊的NRC——0x78,requestCorrectlyReceived-ResponsePending(RCRRP,请求已被正确接收-回复待定)。

这个NRC表明请求消息被正确地接收,请求消息中的所有参数都是有效的,但是要执行的操作还没有完成,Server端还没有准备好接收另一个请求。一旦请求的服务已经完成,服务器应该发送一个积极的响应或消极的响应,响应代码应与此不同。这个NRC的消极响应可以被Server端重复,直到被请求的服务完成并且最终的响应消息被发送。

请添加图片描述

https://zhuanlan.zhihu.com/p/37310388?utm_source=com.alibaba.android.rimet

为什么划分不同会话

因为权限问题。默认会话权限最小,可操作的服务少;扩展模式通常用于解锁高权限诊断服务,例如写入数据/参数、读写诊断码;编程模式用于解锁bootloader相关的诊断服务,即程序烧录。

题外话,讲个故事。这三个会话模式好比普通项目成员(默认会话)、项目组长(扩展会话)和会计(编程会话)的关系,小职员权限最小,小职员有的权限项目组长全有,项目组长还多了些其他的高端权限(如写数据、例程控制)。会计则不同,它有些自己独有的权限(刷写程序),但项目组的很多权限它没有(读/擦故障码),因为它只干会计相关的事,本身不参与项目。

下图仅供参数:
在这里插入图片描述

报文示例

Tx / RxCan Data描述
Byte 7 - Byte 0
Tx02 10 02 XX XX XX XX XX 0:单帧
2:2个有效字节长度
10:10服务
02:编程会话
请求切换到编程会话
Rx06 50 02 00 32 01 F4 XX 0:单帧
6:6个有效字节长度
50:SID + 0x40
00 32:P2server_max = 50ms
01 F4:P2*Server_max = 5000ms
回复肯定响应,并且回复 P2server、P2*Server 时间参数

UDS中常用 NRC

在这里插入图片描述

参考

  • https://blog.csdn.net/wto9109/article/details/121345955
  • https://zhuanlan.zhihu.com/p/37310388?utm_source=com.alibaba.android.rimet
  • http://www.360doc.com/content/12/0121/07/30375878_1052846532.shtml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/256631.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5+CSS3小实例:3D翻转Tab选项卡切换特效

实例:3D翻转Tab选项卡切换特效 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=…

Jsoup爬取HTTPS页面数据资源,并导入数据库(Java)

一、实现思路 示例页面&#xff1a; 2020年12月中华人民共和国县以上行政区划代码 忽略https请求的SSL证书通过Jsoup获取页面标签遍历行标签&#xff0c;分别获取每个行标签的第二个和第三个列标签将获取到的行政代码和单位名称分别插入sql语句占位符执行sql语句&#xff0c…

Ray构建GPU隔离的机器学习平台

Ray框架介绍 Ray 是一个开源分布式计算框架,在 机器学习基础设施中发挥着至关重要的作用。Ray 促进分布式机器学习训练,使机器学习从业者能够有效利用多个 GPU 的能力。 Ray可以在集群上分布式地运行任务,并且可以指定任务运行时需要使用的GPU数量。Ray可与Nvidia-docker等…

ChatGPT/GPT4科研实践篇: AI绘图+论文写作+编程

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…

基于ssm vue协同过滤算法的图书推荐系统源码和论文

基于ssm vue协同过滤算法的图书推荐系统源码和论文742 idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 开发技术 ssm 摘 要 “互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多行业…

Matlab 点云曲线探测(算法不稳定,仅用于学习)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的曲线探测的方法,不过我没有复现出论文中那样的效果,可能是理解有误,但这个算法仍然是很有意思,故这里也对其进行记录。 按照论文中的思路,首先我们需要通过一种线性强度图来计算确定每个点的法…

三层交换机配置DHCP服务

第一步&#xff1a;进入二层交换机Switch 1&#xff09;输入命令&#xff1a; Switch(config)#vlan 10 Switch(config)#vlan 20 2&#xff09;修改F0/1 和F0/2为access口&#xff0c;F0/24为trunk口 第二步&#xff1a;进入三层交换机 1&#xff09;输入命令 Switch(config)#…

Jenkins中文官网地址

Jenkins中文官网地址&#xff1a; Jenkins 用户手册Jenkins 是一个开源自动化服务器https://www.jenkins.io/zh/doc/

linux文件查找

grep: 文件内容过滤 [rootzaotounan ~]# grep 文件内容 路径 #从某个路径下的文件中过滤拥有文件内容的字段 ​ [rootzaotounan ~]# grep -r #递归查找 查找命令配置文件位置 查找命令位置 [rootzaotounan ~]# which 命令名 ​ 查找配置文件位置 [rootzaotounan ~]# wherei…

【Java用法】Lombok中@SneakyThrows注解的使用方法和作用

Lombok中SneakyThrows注解的使用方法和作用 一、SneakyThrows的作用二、SneakyThrows注解原理 一、SneakyThrows的作用 普通Exception类,也就是我们常说的受检异常或者Checked Exception会强制要求抛出它的方法声明throws&#xff0c;调用者必须显示的去处理这个异常。设计的目…

模式串匹配和字符串哈希

目录 一、字符串暴力匹配 二、字符串哈希解决匹配问题 不使用哈希的递归版本 使用哈希的版本 不太懂哈希表的可以看我上一篇文章。 哈希表及其基础&#xff08;java详解&#xff09;-CSDN博客 一、字符串暴力匹配 public class SubstringMatch {//构造函数设置成私有的&…

Day15——File类与IO流

1.java.io.File类的使用 1.1 File类的理解 File 类及本章下的各种流&#xff0c;都定义在 java.io 包下。一个 File 对象代表硬盘或网络中可能存在的一个文件或者文件目录&#xff08;俗称文件夹&#xff09;&#xff0c;与平台无关。&#xff08;体会万事万物皆对象&#xf…