UDS(八)应用层 22/2E

2023-11-08 12:51
文章标签 应用层 22 uds 2e

本文主要是介绍UDS(八)应用层 22/2E,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Data Transmission functional unit
UDS的第二类诊断服务:数据传输。该类型服务包含SID如下:

ReadDataByIdentifier (0x22)
ReadMemoryByAddress (0x23)
ReadScalingDataByIdentifier (0x24)
ReadDataByPeriodicIdentifier (0x2A)
DynamicallyDefineDataIdentifier (0x2C)
WriteDataByIdentifier (0x2E)
WriteMemoryByAddress (0x3D)

通常,0x22和0x2E成对使用,0x23和0x3D成对使用,这几个服务用于诊断数据的基本读写操作。0x24,0x2A,0x2C是一些特殊操作。本人只使用过SID:0x22和0x2E,本章目前就只对这两个服务进行介绍,后续如果有其他的SID使用将会对其补上。

1. ReadDataByIdentifier (0x22) service

该服务通过标识符(identifier)来读取ECU的数据。

1.1 请求格式:
在这里插入图片描述
由上图可知请求格式分为两个个部分:
第一部分:请求SID:0x22,占用一个字
第二部分:dataIdentifier(DID),占用两个字节,由厂家定义DID的值,代表读取的是什么数据。如0x0123代表的是读取ECU版本号。一次请求可读取多个DID数据。DID范围如下图所示:

1.2 响应格式:

在这里插入图片描述
由上图可以响应格式分为三个部分:
第一部分:response SID:0x62
第二部分:dataIdentifier(DID),请求读取的DID值
第三部分:dataRecord,要读取DID对应的数据。
注意:根据诊断仪一次请求读取多少个DID,ECU就响应多少个DID的数据给诊断仪。格式:response SID + n(dataIdentifier + dataRecore)。一般都是一次请求读取一个DID数据

1.3 举例

读取ECU版本号,假设DID:0x0123为ECU版本号的标识符

在这里插入图片描述

2. WriteDataByIdentifier (0x2E) service

该服务通过标识符(identifier)来写入数据到ECU。

2.1 请求格式

在这里插入图片描述
由上图可知,请求格式分为三部分
第一部分:请求SID:0x2E,占用一个字节
第二部分:dataIdentifier(DID),需要写入数据对应的DID标识符值。占用两个字节
第三部分:dataRecord,需要写入的数据

2.2 响应格式

在这里插入图片描述
由上图可知,响应格式分为两个部分
第一部分:response SID:0x6E
第二部分:dataIdentifier(DID),请求DID的echo

2.3 举例
写入ECU版本号,假设DID:0x0123为ECU版本号的标识符

在这里插入图片描述
参数知乎:https://zhuanlan.zhihu.com/p/33995635

UDS协议栈系列文章:

UDS(一)入门概述

UDS(二)网络层

UDS(三)网络层时间参数

UDS(四)应用层

UDS(五)应用层10/3E

UDS(六)应用层11/27

UDS(七)应用层28/85

UDS(八)应用层22/2E

UDS(九)应用层14/19

UDS(十)应用层34/36/37

这篇关于UDS(八)应用层 22/2E的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369977

相关文章

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

应用层简单实现udp / tcp网络通信

一、常见网络接口总结 1、创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain, int type, int protocol); domain:AF_INET:网络通信,AF_LOCAL:本地通信 type:UDP:SOCK_DGRAM,TCP:SOCK_STREAM protocol:协议编号一开始设0 返回值:文件描

【DL--22】实现神经网络算法NeuralNetwork以及手写数字识别

1.NeuralNetwork.py #coding:utf-8import numpy as np#定义双曲函数和他们的导数def tanh(x):return np.tanh(x)def tanh_deriv(x):return 1.0 - np.tanh(x)**2def logistic(x):return 1/(1 + np.exp(-x))def logistic_derivati

C#从入门到精通(22)—Path类的使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!人工智能学习网站 前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发上位机软件的过程中,有时候需要对文件的路径、文件名、扩展名进行操作,下面进行详细介绍: 1、合并路径 将盘符、文件夹、文件进行合并成最全的文件路径 st

青岛实训 8月22号 day34

一、回顾 1.主从复制(高可用) 2.传统的主从复制 3.gtids事务型的主从复制 4.注意 1)server_id唯一 2)8.X版本需要get_ssl_pub_key 3)5.X不需要 4)change master to 5)stop | start slave 5.非交互 import pymysql conn=pymysql.connect(host=xxx,user=xxx,pa

Ubuntu上安装libdc1394-22-dev出现无法定位安装包的解决办法

一、libdc1394-22-dev介绍       libdc1394-22-dev 是一个开发库,用于与IEEE 1394 (FireWire)摄像头进行交互。具体来说,它是 libdc1394 的开发版本,提供了开发者头文件和链接库,方便在应用程序中集成对基于 IEEE 1394 标准的数码相机的支持。 主要功能: - IEEE 1394 (FireWire) 协议:这是一个支持高速数据

『功能项目』骑乘坐骑【22】

我们打开上一篇21项目优化的项目, 本章要做的事情是在召唤坐骑后的指定距离内点击骑乘即可乘坐坐骑 首先进入坐骑熊的预制体空间,将主角模型拖拽至坐骑身上并删除所有组件及标签 将子物体Player拖拽至其子级,父类删掉 将其Player隐藏 创建坐骑的动画控制器MountBearAC 创建参数IsIdle 设直线 设置返回线 将新建动画控制器M

leetcode解题思路分析(四)22-28题

括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 很容易想到采用回溯法解决该题,通过画出树分析递归规律可得如下代码 class Solution {public:void backtrace(int left, int right, int n, string& s, vector<string>& res) {if (left == n

LeetCode 22 Generate Parentheses

题意: 用n组小括号,生成所有满足括号匹配的序列。 思路: 我用了比较粗暴的方式,用set不断迭代答案,每次迭代使得括号组数+1直到n为止。 还有一种方法是dfs构造,因为长度已经确定,所以每个位置要么放(要么放),利用前缀和维护括号匹配即可。 代码: class Solution {public:vector <string> generateParenthesis