【车载开发系列】UDS诊断---诊断会话控制($0x10)

news2025/1/19 8:04:15

【车载开发系列】UDS诊断—诊断会话控制($0x10)

UDS诊断---诊断会话控制($0x10)

    • 【车载开发系列】UDS诊断---诊断会话控制($0x10)
      • 一.概念定义
      • 二.三种会话模式
        • 1)默认会话
        • 2)编程会话
        • 3)扩展会话
      • 三.会话模式切换
      • 四.报文格式
        • 1)请求报文
        • 2)肯定响应
        • 3)否定响应

一.概念定义

SID$0x10就是诊断会话控制服务DiagnosticSessionControl的意思。它包含3个子功能。ECU上电时,进入的是默认会话模式(Default),如果没有收到诊断会话请求,ECU需自动进入第一个默认会话模式(01h),在同一个时刻,只能有一个诊断会话模式被激活,所以这里的会话模式更像是一个容器,其他所有的服务都将在这个“容器”当中执行。诊断工具通过此服务使ECU进入不同的诊断会话模式。

二.三种会话模式

在诊断会话控制服务中包含默认会话,编程会话和Extended扩展会话3个子功能。
为什么设计三个会话模式呢?因为权限问题。默认会话权限最小,可操作的服务少;扩展模式通常用于解锁高权限诊断服务,例如写入数据/参数、读写诊断码;编程模式用于解锁bootloader相关的诊断服务,即程序烧录。

子功能会话模式
01默认会话模式
02编程会话模式
03扩展会话模式

1)默认会话

子服务代码是01。顾名思义,就是ECU在刚启动时保持的状态,当ECU复位的时候也是会返回默认会话,不需要超时处理。

2)编程会话

子服务代码是02。刷写程序时用的,超时或者刷写失败时会跳转回默认会话,即ECU从底层软件跳转到应用软件。
编程会话从字面上就很好理解,如果需要对ECU进行程序刷写操作,就需要进入编程会话才能执行相关操作。

3)扩展会话

子服务代码是03。通常诊断用的大部分功能以及特殊功能都在这个会话模式下进行。
扩展会话模式主要是用来写入一些信息如VIN和序列号等,以及控制ECU执行一些特殊请求如控制应用通信和故障信息的更新等

三.会话模式切换

默认会话模式 可以直接切换到扩展会话模式,但是不能直接切 换到编程会话模式,如果想进入编程会话模式, 则必须先进入扩展会话模式。同样,编程会话模式不能直接进入扩展会话模式,只能进入默认会话模式。
ECU复位以及 S3 定时器超 时将导致 ECU 进入默认会话模式。
在这里插入图片描述

四.报文格式

1)请求报文

参数“DiagnosticSessionType”定义了要求启动哪种会话。01-03分别对应着三种会话模式。
在这里插入图片描述

2)肯定响应

定时器 P2server 的数值以 1ms 计算。
定时器 P2server 的数值以 10ms 计算
在这里插入图片描述
时间参数有两个,P2server_max和P2
server_max,每个参数占用两个字节,所以一共占用四个字节。虽然每个参数都是两个字节,但是其单位(精度)是不一样的,P2参数的单位是10ms,也就是说P2的结果需要把后面两个字节的数值乘以10才是实际的时间。
P2server_max=50ms=0x0032
P2server_max=5000ms=50010ms=0x01F4*10ms

3)否定响应

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DevPress】V2.4.0版本发布,增加留资组件

DevPress V2.4.0版本于2022年9月29日发版 一、该版本功能包含 1、新需求 1)企业社区移动端优化,响应式布局,提升用户浏览体验。 2)增加社区留资组件,更好在社区首页和内容详情页展示 - 包含新建组件,包含…

基于PHP+MySQL医药信息查询系统的设计与开发

医药信息查询系统的基本功能包括用户注册登录,查看医药资讯,医药查询和在线留言等信息。 PHP中药管理系统是一个服务类型的网站,系统通过PHp:MySQL进行开发,分为前台和后台两部分,前台部分主要是让需要买药的人员查看和查询药品信息。后来部分主要是让管理员对网站的…

通过Xshell操作Jetson Nx

1 Jetson Nx Nx留有Uart2 口,便于使用xshell等进行操作。 串口有三根线。链接后使用。 2 XShell 软件 2.1 XShell软件介绍 XShell 软件是一个Windows上运行的终端模拟器,支持SSH, SFTP, TELNET, RLOGIN,和Serial。用于连接Unix或Linux服…

3.7.1、MAC地址(数据链路层)

1、基本介绍 连接在信道上的主机只有它们两个 一个数据链路层地址: 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识, 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这…

这支神秘组织,已成功预测了多届世界杯冠军

2022卡塔尔世界杯,正打的如火如荼,也有很多人买球买的不亦乐乎。 现在就有很多朋友、粉丝,通过各种渠道找我,让我来帮他预测一下比赛。可我预测的也不准呀,我都是猜的,不过我不准,不见得别人不准…

m基于基站休眠的LTE-A异构网络中节能算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 要求 1.开发一个软件工具,可以直观地演示如何在LTE-A异构网络中通过基站的睡眠模式节约能源 2.需要演示基于用户的移动性如何设置基站的开关(睡眠模式) 3.自己设计基站睡眠模式的直观…

Python标准库之pickle

1. pickle标准库简介 pickle,作为名词表示泡菜,作为动词表示用醋或盐水保存食物。由此不难联想到,用存储设备持久化保存数据。而pickle标准库恰是一个 Python 对象结构的二进制序列化和反序列化的核心库,专用于表示Python语言大量…

Stable Diffusion7

它也写到第七部了.. Stability AI宣布,Stable Diffusion 2.0版本上线!1.0版本在今年8月出炉,三个月不到,还热乎着呢,新版本就来了。 深度学习文本到图像模型的最新版本——Stable Diffusion 2.0。相较于1.0&#xff…

面试必知的9个性能测试指标,你完全了解吗?

吞吐量 单位时间内,系统能够处理多少请求,吞吐量代表网络的流量,TPS越高,吞吐量越大,还包含了数据的吞吐量。一般单位为秒,每秒处理的请求量。 注意:我们看到的JMeter聚合报告一般如下图&…

Kotlin高仿微信-第7篇-主页-动态权限申请

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

指定牛导|肿瘤专业医生芝加哥大学博士后实现夙愿

Q医生有个愿望,希望拜师在牛导麾下,利用国家留学基金委2年博士后的机会,真正做出科研成果,发表高质量文章。为此列出了合作导师标准并指定了几位教授。经过团队努力,我们终于为其达成夙愿—获得指定牛导的博士后邀请函…

Redis实战之缓存:查询、添加缓存、更新缓存、缓存预热、缓存穿透、缓存雪崩、缓存击穿 解决方案及实例代码

缓存 什么是缓存? 缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。 为什么要使用缓存? 缓存数据存储于代码中,而代码运行在内存中,内存的读写性能远高于磁盘,缓存可以大大降低用户访问并发量带来的服务器…

SpringBoot利用Spring SPI机制实现自动按顺序加载注册JavaBean到容器中

前言: 1、SPI机制(Service Provider Interface),服务提供接口,主要是用来解耦,资源文件目录下的 \resources\META-INF\spring.factories 我们把它归纳为Spring为我们提供的SPI机制,通过这种机制,我们可以在…

docker 容器原理分析笔记(下)

目录 chroot rootfs Volume(数据卷) 打包一个go镜像 总结 chroot 当一个容器被创建的时候,我们希望容器中进程看到的文件是一个独立的隔离环境,我们可以在容器进程重启之前挂载整个根目录 /,由于 Mount Namespace 的存在,这…

发布 .NET MAUI / MAUI Blazor 应用 (1) - Windows

发布用于Windows的 .NET MAUI 应用 打开 PowerShell 终端 , 命令行进入工程目录,以我的例子工程为例, cd BlazorMaui BlazorMaui 替换为你自己工程名字 New-SelfSignedCertificate -Type Custom -Subject "CNBlazorMaui" -KeyUsage DigitalSignature -FriendlyName &…

python如何将日期字符串格式化年月日

今天用Python的DataFrame处理数据时,相对一波数据按日期分组处理,但是原始数据包含时间分秒,无法按日期分组,因此需要先将数据转成只包含年月日的数据格式。但是写代码处理过程中发现有点绕,不熟悉的同学容易绕晕。这种…

编程语言如何推动DeFi成为主流?

随着DeFi的快速增长,提供DeFi服务的平台和产品也如雨后春笋般纷纷冒头。作为衡量DeFi协议管理资金规模的标准之一,DeFi“总锁仓量”在过去两年一路从100亿美元增长到超400亿美元,期间更是一度冲上1800亿美元的巅峰。但直到今天,智…

Python爬虫request模块的get、post方法应用

目录 post方法使用 一、确定爬取网站的数据 二、分析数据类型和相应类型 三、使用requetst模块方法进行爬取 四、源代码分享 get的方法使用 一、分析抓取网站操作 二、参数的分析和组成 三、使用get模块方法进行爬取结果 四、源代码分享 思考和总结 参考网站 爬虫是…

MySQL---触发器详解

目录 一、触发器的介绍 二、触发器的语法 (1)insert触发器 (2)update触发器 (3)delete触发器 一、触发器的介绍 触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后&…

4-UI自动化-selenium三大等待操作

4-UI自动化-selenium三大等待方式selenium三大等待方式强制等待timd.sleep隐式等待implicitly_wait显式等待WebDriverWait显式等待和隐式等待的区别上篇介绍了3-UI自动化-八大元素定位,xpath定位方式和相关的常问面试题 本篇来学习三大等待方式 ♡\color{red}{\hear…