车载网络测试 - UDS诊断篇 - 流控制帧

news2024/11/26 20:30:13

目录

一、流控制帧的功能

二、流控制帧组成说明

1、流控制帧组成

2、流控制帧字段说明

a、FlowControl

b、FlowState

c、BlockSize

d、STmin

e、Padding bytes

三、流控制帧使用举例

1、数据发送方发送所有连续帧数据

2、数据发送方每次发送至多2条连续帧

3、流控制帧等待


        在CAN&CANFD总线协议的诊断层测试中,我们除了对于诊断功能(或叫UDS诊断功能)的测试、ID测试(DID、Routine ID、IO Control ID等测试)、DTC故障码的测试外,还有一块非常重要的功能,那就是对于CAN&CANFD协议的传输层CANTP的测试,CAN&CANFD传输层中我们都知道诊断数据存在单帧和多帧2种诊断数据类型;其中单帧比较好理解,就是一帧数据即可完成完整的数据交互信息;然而当数据在一帧数据中无法完成传输的时候,这时候我们的多帧数据出厂的时候,多帧数据中有一个非常重要的数据,那就是流控制帧,今天我们主要就是来看下流控制帧到底是什么?

一、流控制帧的功能

        指示发送网络实体是否可以继续进行消息传输。

        FC N_PDU由FlowControl协议控制信息(FC N_PCI)来标识。 FC N_PDU指示发送网络实体开始、停止或恢复CF N_PDU的传输。 当准备好接收更多数据时,在正确接收
a、FF N_PDU
b、如果需要发送更多连续帧,则连续帧块的最后一个 CF N_PDU。
        FC N_PDU 还可以通知发送网络实体在分段消息传输期间暂停 CF N_PDU 的传输,或者如果发送实体发送的 FF N_PDU 中的长度信息 (FF_DL) 超过缓冲区大小,则中止分段消息的传输 接收实体的。

二、流控制帧组成说明

1、流控制帧组成

组成:FlowControl  + FlowState + BlockSize + STmin + Padding bytes

2、流控制帧字段说明

a、FlowControl

        byte 0高四位(bit4-bit7),值为3,代表流控制帧

b、FlowState

Value名称说明
0ContinueToSend (CTS)FlowControlContinueToSend参数应通过将N_PCI字节#1的低半字节设置为“0”来编码。 它应导致发送方恢复连续帧的发送。
该值的含义是接收器准备好接收最大BS数量的连续帧。
1Wait (WAIT)FlowControl 等待参数应通过将 N_PCI 字节 #1 的低半字节设置为“1”来编码。 它将导致发送方继续等待新的 FlowControl N_PDU 并重新启动其 N_BS 计时器。 如果FlowStatus设置为Wait,则FlowControl消息中的BS(BlockSize)和STmin(SeparationTime最小值)的值不相关并且应被忽略。
2Overflow (OVFLW)FlowControl Overflow 参数应通过将 N_PCI 字节 #1 的低半字节设置为“2”来编码。 它应导致发送方中止分段消息的传输,并使用参数 <N_Result> = N_BUFFER_OVFLW 进行 N_USData.confirm 服务调用。 该N_PCI FlowStatus参数值仅允许在FirstFrame N_PDU之后的FlowControl N_PDU中传输,并且仅在接收到的FirstFrame N_PDU的消息长度FF_DL超过接收实体的缓冲器大小时才应使用。
如果 FlowStatus 设置为 Overflow,则 FlowControl 消息中的 BS(BlockSize)和 STmin(SeparationTime 最小值)的值不相关,应被忽略
3-FOther保留值

c、BlockSize

Value名称说明
0BlockSize (BS)BS参数值0应用于向发送方指示在分段消息的传输期间不再发送FC帧。 发送网络层实体应发送所有剩余的连续帧,并且对于来自接收网络层实体的进一步 FC 帧不进行任何停止。
01-FFBlockSize (BS)该 BS 参数值范围应用于向发送方指示在没有来自接收网络实体的中间 FC 帧的情况下可以接收到的连续帧的最大数量

d、STmin

Value名称说明
00-7FSeparationTime:0 ms–127 msSTmin在0x00–0x7F(0–127) 范围内的单位是绝对毫秒 (ms)。
80-F0ReservedISO 15765 的这一部分保留了该值范围。
F1-F9SeparationTime:100 us–900 us0xF1–0xF9范围内STmin 的单位是100 µs 的偶数倍,其中参数
值 0xF1 代表 100 µs,参数值0xF9 代表 900 µs。
FA-FFReservedISO 15765 的这一部分保留了该值范围。

e、Padding bytes

        填充字节这里根据不同的主机厂,有不同的定义的,不过常见的填充字节主要有0x00、0xAA、0xCC、0x55等字节对未使用字节进行填充,我们根据主机厂的规范定义进行填充即可。

三、流控制帧使用举例

1、数据发送方发送所有连续帧数据

Tester:03 22 F1 90 00 00 00 00

DUT:10 14 62 F1 90 30 30 30

Tester:30 00 14 00 00 00 00 //希望DUT返回所有的连续帧数据

DUT:21 30 30 30 30 30 30 30  T1

DUT:22 30 30 30 30 30 30 30  T2

帧间隔:20ms < T2 - T1 < 150ms

2、数据发送方每次发送至多2条连续帧

Tester:03 22 F1 F2 00 00 00 00

DUT:10 26 62 F1 F2 30 30 30

Tester:30 02 1E 00 00 00 00 //希望DUT返回2帧连续帧数据

DUT:21 30 30 30 30 30 30 30  T1

DUT:22 30 30 30 30 30 30 30  T2

帧间隔:30ms < T2 - T1 < 150ms

Tester:30 02 28 00 00 00 00 //希望DUT返回2帧连续帧数据

DUT:23 30 30 30 30 30 30 30  T3

DUT:24 30 30 30 30 30 30 30  T4

帧间隔:40ms < T2 - T1 < 150ms

Tester:30 02 14 00 00 00 00 //希望DUT返回2帧连续帧数据

DUT:25 30 30 30 30 00 00 00

3、流控制帧等待

Tester:03 22 F1 90 00 00 00 00

DUT:10 14 62 F1 90 30 30 30

Tester:31 00 14 00 00 00 00 //Tester繁忙,DUT等待

Tester:30 00 14 00 00 00 00 //希望DUT返回所有的连续帧数据

DUT:21 30 30 30 30 30 30 30  T1

DUT:22 30 30 30 30 30 30 30  T2

        以上是今天对于流控制帧介绍的所有内容,以及我们经常会遇到的使用的方法。

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

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

相关文章

Linux驱动IO篇——IO多路复用

文章目录 什么是IO多路复用IO多路复用的三种方法selectpollpoll系统调用过程驱动中poll机制实现 什么是IO多路复用 简单来说&#xff0c;就是解决能够同时操作多个设备的方法&#xff0c;及时处理多个设备的数据。 具体的&#xff0c;是指单线程或单进程同时监测若干个文件描述…

数据在内存中的存储——练习4

题目&#xff1a; int main() {char a[1000];int i;for(i0; i<1000; i){a[i] -1-i;}printf("%d",strlen(a));return 0; }思路分析&#xff1a; 已知条件&#xff1a; 通过循环遍历&#xff0c;我们得到的结果是 -1、-2、-3、-4等等。这些是数组内部的存储的元…

R 语言的安装教程

一、下载相关软件 1、R 下载 官网&#xff1a;R: The R Project for Statistical Computing 找到中国镜像&#xff0c;下载快 历史版本点击这里 2、Rtools 下载 进入镜像后&#xff0c;点击这里 然后选择与上面下载的R版本相对应的版本即可 3、Rstudio 下载 官网&#xff1…

代码随想录算法训练营Day59 | 503. 下一个更大元素II | 42. 接雨水

文章目录 503. 下一个更大元素II42. 接雨水暴力解法双指针优化单调栈单调栈的处理逻辑 503. 下一个更大元素II 题目链接 | 解题思路 本题和每日温度非常相似&#xff0c;只是需要循环数组。最简单的方法当然是直接拼接数组&#xff0c;然后直接使用单调栈&#xff0c;最后修改…

搭建Jaeger

本篇是对 Golang 上手GORM V2 Opentracing链路追踪优化CRUD体验&#xff08;源码阅读&#xff09;[1] 阅读与实践 该篇相关代码[2] GORM V2版本开始支持Context上下文传递&#xff0c;支持插件Plugins(有了插件&#xff0c;callback和hook的代码就能更优雅一点) ORM利用反射&a…

Seata1.5.2解决分布式事务问题

分布式事务–Seata ​ 前面了解到一些分布式事务的解决方案&#xff0c;业内也涌现出不少解决分布式事务的优秀框架&#xff0c;如Atomikos、Seata等&#xff0c;本章来了解使用下Seata。 ​ Seata的前身是Fescar&#xff0c;而后改名Seata&#xff0c;简单可扩展的自治分布式…

性能工程全景图、实施方案、建设目标

性能工程是一个关注系统性能层面的体系,包含测试环境的性能测试、生产环境的性能测试、性能调优、容量规划等多个方面 性能工程主要包括如下3个部分 ❑建设性能测试理论体系和流程规范、链路分析基础知识体系和流程规范、性能调优基础理论体系和流程规范。 ❑搭建高效协同的工…

js通过xpath定位元素并且操作元素以下拉框select为例

js也可以使用xpath定位元素&#xff0c;现在实例讲解。 页面上有一个下拉框&#xff0c;里面内容有三个&#xff0c;用F12看一下 一、使用xpath定位这个下拉框select eldocument.evaluate(//select[name"shoppingPreference"], document).iterateNext()二、为下拉框…

代码随想录算法训练营Day60 | 84. 柱状图中最大的矩形

文章目录 84. 柱状图中最大的矩形首尾加 0双指针 84. 柱状图中最大的矩形 题目链接 | 解题思路 本题和接雨水的题目相互呼应&#xff0c;但是难度略有提升&#xff0c;同样是一道非常棒的题&#xff01; 在接雨水中&#xff0c;需要找到每一列的左侧最大值和右侧最大值&…

高阶数据结构(2)-----红黑树

一)红黑树的基本概念和基本性质: 1)红黑树就是一种高度平衡的二叉搜索树&#xff0c;但是在每一个节点上面都增加了一个存储位来表示结点的颜色&#xff0c;可以是红色或者是黑色&#xff0c;通过对任何一条从根节点到叶子节点上面的路径各个节点着色方式的限制&#xff0c;红黑…

Selenium+Pytest自动化测试框架实战(下)

前言 本文接上篇文章哟。 一、简单学习元素定位 在日常的工作中&#xff0c;我见过很多在浏览器中直接在浏览器中右键Copy Xpath复制元素的同学。这样获得的元素表达式放在 webdriver 中去运行往往是不够稳定的&#xff0c;像前端的一些微小改动&#xff0c;都会引起元素无法…

Truenas scale 安装 Tailscale 内网穿透远程连接SMB服务

起源 没有公网IP&#xff0c;不在同一个路由器&#xff0c;没法远程连接电脑或者服务器。之前一直使用 zerotier&#xff0c; 但是这次使用 Truenas scale 安装 zerotier&#xff0c; 每次重启都变化IP&#xff0c;一直没解决。转投 tailscale。 注册 YouTube有教程&#xf…

基于ssm智能停车场031

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

安装并设置linux虚拟机ubuntu20.04.6 LTS

1 安装虚拟机 1、安装虚拟机模拟软件virtualboxhttps://download.virtualbox.org/virtualboxhttps://download.virtualbox.org/virtualbox/7.0.10/VirtualBox-7.0.10-158379-Win.exe 2、在virtualbox中安装虚拟机ubuntu 20.04.6 LTS 桌面版https://www.releases.ubuntu.com/fo…

进度条--QProgressBar,进度对话框--QProgressDialog

一、QProgressBar 进度条 1、QProgressBar 类继承自 QWidget&#xff0c;它是一个 QWidget 部件&#xff0c; QProgressBar 除了将其放置 于进度对话框之中外&#xff0c;还可将其放置于窗口的状态栏等其他部件中。 QProgressBar提供了一个水平或垂直的进度条&#xff0c;可以…

JDBC基本概念

什么是JDBC JDBC概念 JDBC&#xff08;Java DataBase Connectivity&#xff09;是一套统一的基于Java语言的关系数据库编程接口规范。 该规范允许将SQL语句作为参数通过JDBC接口发送给远端数据库&#xff0c; …

8位和32位单片机如何选择适合,以及主要区别!

单片机直接影响到项目的成功和性能&#xff0c;我们将分享如何选择适合您的应用的8位或32位单片机。 8位单片机 vs. 32位单片机&#xff1a; 一、性能和处理能力&#xff1a; 8位单片机&#xff1a; 8位单片机通常适用于相对简单的应用&#xff0c;如传感器控制、LED显示、小…

代码随想录算法训练营第三十五天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

860.柠檬水找零 本题看上好像挺难&#xff0c;其实挺简单的&#xff0c;大家先尝试自己做一做。 代码随想录 public boolean lemonadeChange(int[] bills) {int five 0;int ten 0;for (int i 0; i < bills.length; i) {if (bills[i] 5) {five;} else if (bills[i] 10)…

Mysql同步数据到Doris的踩坑过程

问题背景 由于项目需要&#xff0c;需要把多个Mysql数据库的数据同步到Doris数据库&#xff0c;然后利用Doris强调的计算和查询能力&#xff0c;来满足业务需求。有关Doris可以查看它的官方文档来了解它。 seatunnel的使用到放弃 缘起 从《第十届GIAC全球互联网架构大会》了…

论如何在Android中还原设计稿中的阴影

每当设计稿上注明需要添加阴影时&#xff0c;Android上总是显得比较棘手&#xff0c;因为Android的阴影实现方式与Web和iOS有所区别。 一般来说阴影通常格式是有&#xff1a; X: 在X轴的偏移度 Y: 在Y轴偏移度 Blur: 阴影的模糊半径 Color: 阴影的颜色 何为阴影 但是在A…