UDS 诊断 - ReadScalingDataByIdentifier(按标识符读取换算数据)(0x24)服务

news2024/11/27 0:30:39

UDS 诊断服务系列文章目录

诊断和通信管理功能单元
UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务
UDS 诊断 - ECUReset(ECU重置)(0x11)服务
UDS 诊断 - SecurityAccess(安全访问)(0x27)服务
UDS 诊断 - CommunicationControl(通信控制)(0x28)服务
UDS 诊断 - TesterPresent(测试仪保活)(0x3E)服务
UDS 诊断 - AccessTimingParameter(访问计时参数)(0x83)服务
UDS 诊断 - SecuredDataTransmission(受保护的数据传输)(0x84)服务
UDS 诊断 - ControlDTCSetting(控制DTC设置)(0x85)服务
UDS 诊断 - ResponseOnEvent(基于事件响应)(0x86)服务
UDS 诊断 - LinkControl(链路控制)(0x87)服务
数据传输功能单元
UDS 诊断 - ReadDataByIdentifier(按标识符读取数据)(0x22)服务
UDS 诊断 - ReadMemoryByAddress(按地址读取内存)(0x23)服务
UDS 诊断 - ReadScalingDataByIdentifier(按标识符读取换算数据)(0x24)服务

文章目录

  • UDS 诊断服务系列文章目录
  • 一、服务说明
  • 二、请求消息
    • 1.请求消息定义
    • 2. 请求消息数据参数定义
  • 三、肯定响应消息
    • 1. 肯定响应消息定义
    • 2. 肯定响应消息数据参数定义
      • 1. scalingByte 参数定义
  • 四、支持的NRC
  • 五、示例
    • 1. 假设
    • 2. 示例 1:带 DID 0xF190(VIN 号)的 0x24 服务
    • 3. 示例 2:带 DID 0x0105(车速)的 0x24服务
    • 4. 示例 3:带 DID 0x0967 的 0x24 服务


一、服务说明

0x24 服务允许客户端请求服务器中通过一个 DID 所识别的换算数据记录信息。

客户端请求消息包含一个识别服务器所维护的数据记录的 DID 值。dataRecord(数据记录)的格式和定义应由车辆制造商规定,并且可包含模拟输入和输出信号、数字输入很输出信号、内部数据,以及系统状态信息(若服务器支持)。

接收到 0x24 请求后,服务器应访问与指定 DID 关联的换算信息,并以 ReadScalingDataByIdentifier(按标识符读取换算数据)的一个肯定响应传输换算信息。

二、请求消息

1.请求消息定义

字节参数名称字节值
#1 ReadScalingDataByIdentifier(按标识符读取换算数据)请求SID0x24
#2
#3
dataIdentifier[] = [
byte#1(MSB)
byte#2 ]

0x00 - 0xFF
0x00 - 0xFF

2. 请求消息数据参数定义

定义
dataIdentifier(数据标识符)
此参数识别客户端当前锁清秋的服务器数据记录。

三、肯定响应消息

1. 肯定响应消息定义

字节参数名称字节值Cvt
#1 ReadScalingDataByIdentifier(按标识符读取换算数据)请求SID0x64M

#2
#3
dataIdentifier[] = [
byte#1(MSB)
byte#2 ]

0x00 - 0xFF
0x00 - 0xFF
M
M
#4scalingByte#1(第 1 个换算字节)0x00 - 0xFFM

#5
.
.
#(p-1)+5
scalingByteExtension[]#1 = [
scalingByteExtensionParameter#1
.
.
scalingByteExtensionParameter#p ]

0x00 - 0xFF
.
.
0x00 - 0xFF

C1
.
.
C1
. .. .. .. .
#n-rscalingByte#k(第 k 个换算字节)0x00 - 0xFFC2

#n-(r-1)
.
.
#n
scalingByteExtension[]#k = [
scalingByteExtensionParameter#1
.
.
scalingByteExtensionParameter#r ]

0x00 - 0xFF
.
.
0x00 - 0xFF

C1
.
.
C1

C1:此参数的存在性取决于 scalingByte(换算字节)的高效半字节。若 scalingByte 的高效半字节被编码成公式、单位 / 格式或采用 bitMappedReportedWithOutMask(无掩码报告位映射),则必须存在此参数。
C2:此参数的存在性取决于换算信息的编码是否需要多个字节。

2. 肯定响应消息数据参数定义

定义
dataIdentifier(数据标识符)
此参数是请求消息中数据参数 dataIdentifier(数据标识符)的回显。
scalingByte(换算字节)(第 1 个至 第 k 个)
此参数用在 0x24 服务的肯定响应消息中,用以向客户端提供所请求的换算记录值。
scalingByteExtension(换算字节扩展)(第 1 个至第 9 个 / 第 1 个至第 r 个)
此参数用于提供有关带高效半字节的 scalingByte(换算字节)的附加信息。

1. scalingByte 参数定义

下表为换算字节高效半字节参数定义。

高效半字节编码数据类型说明
0x0unSignedNumeric(无符号数字)(第 1 至 4 个字节)
该编码采用通用二进制加权方案并取离散增量步长平均值表示相关数值。一个字节步长为 256;两个字节步长为 65536,依此类推。
0x1SignedNumeric(带符号数字)(第 1 至 4 个字节)
该编码采用二进制补码二进制加权法,并取离散增量步长平均值表示相关数值。一个字节步长为 256;两个字节步长为 65536,依此类推。
0x2bitMappedReportedWithOutMask(无掩码报告位映射)
位映射编码中采用单个位或位组显示状态。有效掩码体现了特定应用程序各位有效性。无掩码报告位映射编码表示参数定义本身不包括有效掩码。单独的 scalingByteExtension(换算字节扩展)需报告有效掩码。
0x3bitMappedReportedWithMask(有掩码报告位映射报告)
位映射编码中采用单个位或位组显示状态。有掩码位映射报告编码表示参数定义本身包括有效掩码。参数定义中表示状态的各位需对应某屏蔽位。该掩码体系拿了特定应用程序各位有效性。该种位映射参数包含各状态字节(表示状态)的有效掩码字节。由于参数定义包含有效掩码,因此,无需单独的 scalingByteExtension(换算字节扩展)。
0x4BinaryCodeDecimal(二进制编码的十进制)
传统二进制编码十进制编码能表示各字节两个数字。其中,上班字节表示最高有效数位(0 - 9),下半字节表示最低有效数位(0 - 9)。
0x5stateEncodedVariable(状态编码变量)(1 个字节)
该编码采用二进制加权方案表示近 256 种不同状态。例如,参数能表示点火开关状态。代码 “00”、“01”、“02” 和 “03” 分别表示熄火、锁定、运行和启动。该种表示方法通常只限于一个字节。
0x6ASCII(美国信息交换标准代码)(各换算字节分别包括 1 至 15 个字节)
传统 ASCII 编码能表示越 128 个标准字符,其中 MSB = logic ‘0’。MSB = logic ‘1’ 能表示其他 128 个自定义字符。
0x7signedFloatingPoint(带符号浮点)
浮点编码适用于采用浮点或科学记数法表示的数据。
0x8数据包
数据包含有大量数据值,各数据包通常对应独特换算方法。但是,其中不含单个数值的换算信息。
0x9公式
使用公式,将原始数据计算为数值。
0xA单位 / 格式
采用单位和格式使数据更方便用户阅读。
注意:若采用了组合式单位 / 格式,如 mV,则 0x24 服务肯定响应需包含各 单位 / 格式某 scalingByte(换算字节)(和 scalingData(换算数据))。
0xBstateAndConnectionType(状态和连接类型)(1 个字节)
这种编码方式尤其适用于输入和输出信号。数据字节中编码信息说明了高级物理布局、电平以及功能状态。建议将本编码方式用于数字输入和输出参数。
0xC - 0xF保留

下表为换算字节低效半字节参数定义。

低效半字节编码数据类型说明
0x0 - 0xFnumberOfBytesOfParameter(参数字节数)
该数值范围规定了参数标识符所引用数据流内数据字节数。根据换算字节确定参数长度,通常以参数标识符(一个或多个字节)开头。若参数标识符后续多个换算字节,则参数标识符引用数据长度为换算字节中低效半字节之和。
例如,VIN 根据单字节参数标识符确定,且后续两个换算字节。计算参数字节长度为 17 数据字节。两个低效半字节可能包含 17 个数据字节组合值。
注意:如果公式或单位 / 格式中换位字节采用高效半字节编码,则该数值为 0x0。

四、支持的NRC

NRC说明
0x13消息长度不正确或格式无效
0x22条件不正确
若不满足服务器的运行条件而无法执行所需的操作,则应发送此 NRC。
0x31请求超过限值
以下情况下,应发送此 NRC:
装置不支持所请求的 DID 值;
装置支持所请求的 DID 值,但指定的 DID 无可用的换算信息。
0x33安全访问被拒绝
若DID 已受保护,并且服务器未处于解锁状态,则应发送此 NRC。

下图为 0x24 服务的否定响应码的处理。
在这里插入图片描述

五、示例

1. 假设

本条规定了为执行 0x24 服务示例需满足的条件。不论服务器处于何种状态,客户端可随时请求 DID 换算数据。

第一则示例描述了与双字节 DID 0xF190(包含单条信息(17 个字符的 VIN 号))关联的换算信息。

第二则示例演示了使用公式和单位标识符指定服务器中的数据变量。

第三则示例举例说明了使用 readScalingDataByIdentifier(按标识符读取换算数据)回传通过使用 readDataByIdentifier(按标识符读取数据)在无掩码的情况下报告的位映射 DID 的支持位(有效性掩码)。

2. 示例 1:带 DID 0xF190(VIN 号)的 0x24 服务

req   24 F1 90
resp  64 F1 90 
	  6F (scalingByte#1 {ASCII,15 个数据字节})
	  62 (scalingByte#2 {ASCII,2 个数据字节})

3. 示例 2:带 DID 0x0105(车速)的 0x24服务

req   24 01 05
resp  64 01 05 
	  01 (scalingByte#1{无符号数字,1 个数据字节})
	  95 (scalingByte#2{公式,5 个数据字节}) 
	  00 (scalingByteExtension#2(第 2 个换算字节扩展){formulaIdentifier = C0 * x + C1})
	  E0 (scalingByteExtension#2(第 2 个换算字节扩展){C0 高字节})
	  4B (scalingByteExtension#2(第 2 个换算字节扩展){C0 低字节}[C0 = 75 * 10P - 2P])
	  00 (scalingByteExtension#2(第 2 个换算字节扩展){C1 高字节})
	  1E (scalingByteExtension#2(第 2 个换算字节扩展){C1 低字节}[C1 = 30 * 10P0P])
	  A1 (scalingByte#3{单位 / 公式,1 个数据字节})
	  30 (scalingByteExtension#3(第 3 个换算字节扩展){单位标识符,km/h)

常数(C0,C1)和单位的解码信息,按照下式计算车速的数据变量:
车速 = (0.75 * x + 30)km/h
式中,‘x’ 是服务器中所保存的实际数据,通过 DID 0x0105 加以识别。

4. 示例 3:带 DID 0x0967 的 0x24 服务

本示例说明了客户端如何解决服务器中经格式编排成在不带有效性掩码的情况下报告的位映射记录的 DID 所支持的位。

下表定义了示例 DID 0x0967。

数据字节说明
#27 - 4未使用
3中速风扇开启
2检测到中速风扇输出故障
1清洗显示器暖风机时间状态未标志
0加油事件阻碍了清洗显示器的怠速测试
#17油箱盖校验指示灯点亮
6检测到油箱盖校验指示灯输出故障
5检测到风扇控制 A 输出故障
4检测到风扇控制 B 输出故障
3检测到高速风扇输出故障
2高速风扇输出启动
1清洗显示器怠速测试(低泄露)准备就绪
0已监测到清洗显示器低泄漏
req   24 09 67
resp  64 09 67 
	  22 (scalingByte#1 {bitMappedReportedWithOutMask,2 个数据字节})
	  03 (scalingByteExtension#1 {dataRecord#1 (第 1 个数据记录)有效性掩码})
	  43 (scalingByteExtension#1 {dataRecord#2 (第 2 个数据记录)有效性掩码})

上述示例假设服务器中此 DID 所支持的位(即包含信息的位)仅为第 1 个字节,第 1 位和第 0 位,以及第 2 个字节,第 6 位,第 1 位和第 0 位。

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

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

相关文章

楼宇如何打造一个高效的智慧公厕系统

在现代化的楼宇中,公共设施的完善程度直接关系到人们的使用体验和楼宇的整体品质。其中,公厕作为必不可少的公共设施之一,其重要性不容忽视。打造一个高效的智慧公厕系统,不仅能够为使用者提供更加舒适、便捷的如厕环境&#xff0…

误删?损坏?SD卡数据恢复全攻略,让你的数据起死回生!

现在这年头,SD卡就像是我们数字生活的小助手。不管是拍照记录生活的人,还是玩无人机的高手,或者是上班经常传文件的白领,SD卡里都存着我们的重要信息。但是,万一这些信息出点问题,比如不小心删了、文件坏了…

云手机解决了TikTok哪些账号运营难题?

随着社交媒体的蓬勃发展,TikTok作为一款风靡全球的短视频应用,成为许多个人和企业进行品牌推广、内容创作的首选平台。然而,随之而来的是TikTok账号运营的一系列难题。本文将深入探讨云手机是如何解决这些难题的。 1、多账号运营的便捷性&…

怎么选择数据恢复精灵,如何恢复数据?

作为一名财务人员,每天打交道的除了账本就是各种电子表格和财务报告。数据的重要性不言而喻,一旦发生意外丢失,那可真是让人焦头烂额。今天给大家分享下三款优质数据恢复工具。 首先,我们得知道,数据丢失的原因多种多样…

【Python游戏】编程开发贪吃蛇游戏(升级版)

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、正式开始2.1 增加游戏背景音乐和吃掉食物动效音乐2.2 从单人游戏模式升级为双人游戏模式2.3 增加…

2024年8月22日,讲一讲这段时间的思考和正在做的事情吧

焦虑 这会工作不忙了,赶紧抓住这点时间写点自己的东西。记录一下最近正在做的事情。 在6月中旬以前吧,整个人都处于极其焦虑的状态,焦虑个人发展,焦虑自己的未来在哪里,想要回老家发展,焦虑回老家自己能做…

zyx青岛实训day31 8/19 playbook的基本使用

1、使用ansible安装并启动ftp服务 [root1 ~]# vim /etc/ansible/hosts s0 ansible_ssh_host10.0.0.12 ansible_ssh_port22 ansible_ssh_userroot ansible_ssh_pass1 s1 ansible_ssh_host10.0.0.13 ansible_ssh_port22 ansible_ssh_userroot ansible_ssh_pass1 s2 ansible_s…

华大FLASH之w25Q系列

W25Q64JV的标准/双/四SPl指令集由48条基本指令组成,这些指令通过SPI总线完全控制(见指令集表1-2)。 指令从芯片选择(/CS)的下降沿开始。时钟输入DI输入的第一字节数据提供指令代码。DI输入上的数据在时钟的上升沿上采样…

KCP源码解析系列(五)拥塞控制

流量控制和拥塞控制的区别 如果你约了你的朋友见面聊一件事,有两种沟通方式: 第一种是一次只说一句话,然后等待你的朋友回应“收到”,确认他在听之后,再说下一句话,如此反复,直到事情说完。第…

身份证二要素验证接口如何用PHP进行调用

一、什么是身份证二要素验证接口? 身份证二要素验证接口又叫身份证实名认证、身份实名验证、身份证核验接口、实名核验接口等,该接口叫法非常多,但是他的入参都是一样的,核验姓名和身份证号码是否一致,并返回性别、籍…

2024年了,我依然建议去创建属于自己的Google App

大环境的确不好,Android,iOS程序员都白菜价了,每天充斥着我们耳边的都是裁员、降薪等不好的消息,是不是我们移动端开发人员的日子真的到头了呢?大约在一年前,其实我也意识到这个问题,想学习的话…

BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs

Abstract 我们提出了BlazeFace,这是一种轻量级且性能优异的面部检测器,专为移动GPU推理而设计。它在旗舰设备上运行速度可达200到1000 FPS。这种超实时性能使其能够应用于任何增强现实管道中,作为任务特定模型的输入来准确识别面部感兴趣区域…

CST软件仿真案例:圆极化平板天线仿真02

本期继续完成一款圆极化Patch天线的仿真实例。读者可以完整的了解到怎么用CST微波工作室,完成对一款天线建模、设置到仿真分析的完整过程。 本期中,我们要设计的圆极化天线尺寸如下图所示: 本期内容是接着上期部分开始。首先先完成仿真实例0…

k8s部署redis一主两从三哨兵(集群内访问)

一、配置清单 1.基于K8s搭建部署1主2从3哨兵的Redis集群哨兵模式(集群内访问) 2.持久化数据选择用storageclass,动态创建pv存储,动态存储使用longhorn 创建redis配置文件 #注意内容中注释 apiVersion: v1 kind: Namespace metadata:name: prod--- ap…

C#学习第二节课 ,伤害计算

伤害计算 我一直好奇游戏的伤害计算是怎么计算并输出的,这第二节课利用学过的初级语法,Console.WriteLine,Console.ReadLine(),以及基础变量,int,string 和if 判断 组合,来实现打印一下伤害计算吧! 老规矩 先上结果图 代码区域 namespace hello01 {internal class Program …

秒杀商品超出限量购买修复方法

问题:秒杀商品购买会超出限量,多买 修复: 主要修改了以下文件,如果需要了文件全部在附件中,修改的基础版本是v2.3.2如果没有二开过,可以直接覆盖替换;如果二开了,请对比处理, ⚠️注意: 这样修改完以后,可能导致之前的秒杀都库存不足无法购买 ,需要重新添加 修改的记录,以供参…

开源低代码开发工具Lowcoder

Lowcoder_CN 是一个基于Web的低代码开发平台,旨在通过可视化界面和丰富的API,支持快速应用开发、企业内部工具构建以及教育用途。 以下是对Lowcoder_CN的详细介绍: 一、平台特点 开源与免费:Lowcoder_CN是开源的,允许…

【ACM出版 | IEEEACM院士、CCF杰出会员担任组委| 往届会后3个半月检索 】第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)将于2024年10月25日-27日在中国-天津举行。新一代人工智能理论的快速发展为信息处理技术的提供了新方法,促进了智能信息处理的发展与应用。智能信息处理是信号与信息领域一个前沿、热点…

颖通控股突击巨额分红6.31亿远超净利润,滞销产品三年累计1750万

《港湾商业观察》黄懿 7月18日,被外界称为香水巨头的颖通控股有限公司(下称“颖通控股”)向港交所主板提交上市申请,BNP Paribas、中信证券为其联席保荐人。颖通(上海)贸易有限公司为其国内运营主体。 据…

[星瞳科技]OpenMV如何进行wifi通信?

OpenMV官方扩展板采用ATWINC1500模组,可以传输图像。 详细资料:http://singtown.cc/product/openmv-wifi扩展板/ 如果想使用ESP8266,使用串口通信就可以。 wifi扫描 无线传输图像 无线传输小球坐标 import sensor import time import netw…