UDS诊断服务中网络层对应用层数据的封装(15765.2)
来源:互联网 发布:豆豆软件 编辑:程序博客网 时间:2024/05/01 05:34
在UDS诊断服务中:
发送方:
应用层在写好诊断服务后,需要调用网络层接口对诊断服务的内容进行封装,封装后的内容再进一步由数据链路层进行封装,最后才能通过CAN将数据发送出去。
接收方:
接收到的CAN报文,将先后通过数据链路层和网络层对报文的封装形式,来对报文进行解析,最终提取到和应用相关的信息。
本文描述网络层对应用层诊断服务内容的封装形式。
1、单帧诊断服务
顾名思义,该类诊断服务通过一帧CAN报文即可完成诊断服务。
在网络层中,也可以对此类报文称为SF(Single Frame)。
SF第一字节的高4位为0,低4位为数据长度,其余字节为服务数据内容,没用到的数据可以按FF填充。诊断服务中,10 31等服务都属于SF,举例如下:
10 03 请求进入诊断会话模式:
02 10 03 FF FF FF FF FF
31 01 启动例程控制服务(这里02 02是检查预编程条件)
04 31 01 02 02 FF FF FF
2、多帧传输服务
当诊断数据长度超过7个字节时,就必须使用多帧传输,这里有如下三个概念:
FF(First Frame)多帧传输的第一帧,其第一字节的高4位为1,低四位+第二字节为数据长度,其余字节为服务数据内容,没用到的数据可以按FF填充。
CF(Consecutive Frame)多帧传输的连续帧,其第一字节最高四位为2,低4位为帧序号编号(0-F)。第一个连续帧的帧序号为1,之后的连续帧序号逐一增加,当序列号大于F时,重新从0开始。其余字节为服务数据内容,没用到的数据可以按FF填充。
FC(Flow Control)多帧传输的流控制帧,其第一字节高四位为3,低四位为FS流控制状态
FS
第二和第三字节分别为BS和ST
BS
数值描述0~127两个连续帧之间的最小间隔时间,0~127ms241~249100~900us250~255保留
其余字节为服务数据内容,没用到的数据可以按FF填充。
实际应用中,像一些数据传输功能都是多帧传输,举例如下:
10 0B 34 00 44 00 00 20 FF
30 00 00 FF FF FF FF FF FC
21 00 00 00 00 18 FF FF CF
其中,FF定义的数据长度为00B为11,FC表示允许发送方继续发送连续帧,CF为连续帧的第一帧和最后一帧。
以上也是对15765.2网络层本质的描述。
- UDS诊断服务中网络层对应用层数据的封装(15765.2)
- 基于CAN总线的汽车诊断协议UDS (网络层 ISO 15765)
- angular4开发中对请求数据层的封装
- 【物联网安全】应用层(安全、服务层)对终端设备的标识管理服务
- 诊断数据与应用层数据不一致时的映射方法(Remapping)
- 对网络应用层的理解(一)
- 对网络应用层的理解(二)
- 对网络应用层的理解(三)
- 应用层编码与网络接口层的数据发送
- 脚本中对层的实际应用
- Android 网络层的封装
- iso15675 道路车辆控制局域网络诊断 第二部分 网络层服务 阅读笔记 (1)
- iso15675 道路车辆控制局域网络诊断 第二部分 网络层服务 阅读笔记 (2)
- 对AF的二次封装--ELNetworking(一个轻量级的iOS网络层)
- 应用层对SOCKET层的需求
- osi网络模型 协议层 数据封装
- 网络层提供的服务
- Android Framework层对Linux中线程的封装
- 恒德智能家居系统大行业解决方案
- Linux常用文本比对命令——diff
- 常考的Ajax面试题
- android:使用audiotrack 类播放wav文件
- learn opencv-使用forEach进行并行像素访问
- UDS诊断服务中网络层对应用层数据的封装(15765.2)
- CSDN-markdown编辑器
- jdk1.5新特性
- 题目:1009. 说反话 (20)(c++迭代器实现)
- c++文件读写之getline
- MySQL的timestamp类型自动更新问题
- 【胖张】Nginx 实现前后端分离部署(简单)
- NOIP赛前要注意的地方
- 谈谈String的一些事儿