关于诊断中的各种时间参数

前言:

因为不会转载,故在这里贴出原文连接,写的非常好!条理清晰,一遍看懂@king110108

原文链接:UDS之时间参数总结篇_uds时间参数-CSDN博客

以下内容是我自己对这篇文章的一些备注和理解,以及从测试的角度如何测量这些时间参数

1:首先作者花心思用思维导图作了个提纲,就很不错,作者从应用分层的角度来划分各种时间参数 

作者按4层划分,一共统计了 15个时间参数,和BS(该参数也间接影响其他时间参数的设置和测量)

2:传输层的AM和BS,不算时间相关的参数,STmin该怎么测量。先看STmin的具体定义

计时开始时间:第一帧,续帧发送完成时刻 

计时结束时刻:第二帧,续帧开始发送时刻

2.1 测试方式1——最准确的测量方式,使用示波器或逻辑分析仪

步骤1:为了避免干扰,如果测试样件支持28服务,先禁止应用报文和网管报文的发送。

步骤2:发送一个多帧报文,如22读取一段大于12Byte的数据(是确至少存在两个续帧)

步骤3:找到第一个续帧的ack处,记为T_Stm_start

步骤4:找到第二个续帧的SOF处,记为T_Stm_stop

比较规定的Stmin 与(T_Stm_stop-T_Stm_start)的大小即可

2.2 测试方法2——不太准确,但是可以通过计算,补偿误差

就是我们使用CANoe或spy3中的报文显示界面直接测量,查看两个续帧之间的间隔时间即可。

误差在于,此侧脸的时间是,第一个续帧被接收时刻 ---第二个续帧被接收时刻,之间的差值

仔细看上图,这样侧脸的时间差值,与标准定义的Stmin,相差了第二个续帧从SOF开始发送到ACK的值。而这个值我们根据诊断帧的类型和长度,和波特率可以很容易得计算出来。

比如第2帧,续帧是CAN11bit仲裁段,经典帧,500k,数据段长度=8BYTE

可知发送的时长为,100nit*2us=200us,直接将测试值-200us即可

 3:网络层时间参数

3.1 从最简单的AS 大致讲一下As这个时间段内,样件通讯中的各层,都干嘛了?

**1)首先网络层,开始调用数据链路层的req函数(也可以称为服务)

**2)数据链路层,req函数开始接收,从网络层传入的实参数据。并判断数据是否合理和正确。

**3)判断数据正确后,数据链路层,则需要开始调用物理层的req服务

**4)物理层也有一套检查机制,数据正确,则开始向双绞线上发送实际的编码电压

**5)数据层发送完成,会调动一个confirm函数(常称为服务),向数据链路层报告数据已经完成发送。

**6)数据链路层,在接收完物理层传递的confirm信号后,开始向NM层调用一个confirm函数(常称为服务),表示数据传输已经完成。

到这里一个Ar的时间参数,算是走完了一整个流程。从以上描述我们知道,如果流程中的任何一个环节出错,Ar都会超时。

3.3 为什么要设置Ar参数

我们知道任何一种通讯协议,最重要的特性有以下几种,可靠性和实时性,时间参数就是为了保证通讯的实时性,如果一个通讯的底层代码,走完上面一套流程,花费了几百毫秒的时间。那这个通讯底层代码,就可以被称为一个合格的垃圾代码。

还想一下,我们bootload时,数据量巨大,如果每发一帧报文,在最初处理阶段就花费几百毫秒,你会不会头皮发麻???

3.3影响N_Ar的因素有那些?

因素1:代码的架构

因素2:波特率等

因素3,协议中的帧类型,和数据长度

3.4 如何测量N_Ar参数

具体如何测量,我不是很清楚,问了开发人员说可以,可以通过劳特巴赫,来测量等以后学会了,单独写出来和大家分享。

3.5 比较容易测量的N_Bs和N_Cr

3.5.1N_Bs参数

看下图,我圈出来的两个。可以明显的知道,就是在首诊发送完成后,到流控帧发送完成。

直接使用CANoe中的报文界面,直接量取就好 。

同样的N_Cr有两种方法去量取

**1)直接量取,从流控帧发出,到续帧中首帧报文发出的时间差

**2)从前一流控帧被发出,到下一帧流控帧被发出

思考问题 :看看上面中的N_Cr中的第二种描述,和STmin的描述。现在有如下情况,请思考

问1?:

当我们设置N_Cr=100时,我们有通过流控帧设置STmin=200,这样的设置会不会有问题。

答1 :这样设置是肯定有问题的,STmin<N_Cr

问2?:

日常诊断中,我们使用诊断仪和车辆进行诊断,如果这样描述诊断仪就是sender,在诊断仪中只设置N_Ax相关的参数是否就可以了?同理对于车辆认为是Receiver,只设置N_Bx相关参数是否就可以?

答2:不可以,诊断仪和车辆和sender和Receiver并没有确定的映射关系,即诊断仪既可以是sender也可以是Receiver

问3:?

网络层中的各种参数,之间的关系

 答3:

  •  (N_Br + N_Ar)<(0.9倍N_Bstimeout);
  •  (N_Cs + N_As)<(0.9倍N_Cr timeout);

4:会话层参数

会话层参数以s开头,代表的是Session(会话),一般情况下工程中会有 10 01 、10 02 、10 03

三种状态之间相互跳转。

Tester代表客户端,Server代表服务器端。

非默认10 01会话下,如果一段时间没有新的请求下,会话会自动跳转到10 01会话下,S3Server就规定了这个跳转的时间,一般设置为5s

S3Tester规定的是 3E服务在Test中发送的周期,为了维持会话,而定期发送的帧。

这里需要注意S3Server这个参数

这个参数在需要肯定响应和抑制肯定响应位时,情况还不一样。看下面一张图

4.1 关于服务器定时器初始化Init 

   提取信息1:S3必须是在非默认回话下,才会启动

提取信息2:S3server必须是应用层判断非否定响应,才会启动S3server定时器,非否定响应可能回一个postive响应,也可能不回响应

提取信息3:对必须回 postive响应,等待N_USD.con后,才会启动定时器

提取信息4:对子功能中的,存在肯定抑制响应位并置位的情况,只要Request中的Ind服务被调用时,才会启动S3server定时器。

对3和4的实例讲解

(**1)肯定响应情况+需要回复一个肯定响应帧的情况

       如 client端请求 71A 03 10 03 xx xx xx xx xx

Server端会回一个 72A 06 50 03 AA BB CC DD xx (AA,BB,CC,DD是P2相关的参数)的肯定响应

在这个帧发出后,网络层的服务才会调用con服务,给应用层,来指示已经发送完成,这是S3serve服务器才会启动。

这里也可以看出只有肯定响应,才能启动,定时器,如果是否定响应,不会触发定时器。

(**2)肯定响应情况+肯定响应被抑制的情况

       而当你发出  71A 03 10 83 xx xx xx xx xx(注意标红的是抑制肯定响应位,被抑制),

此时对于Server来说,只要服务器网络层中的N_Data_ind中的服务被调用,计时器就开始初始化且被计时。

这里还有一个点,比较重要“必须是服务器中的ind服务被调用,FF.Ind被调用是,不会开启定时器的”

4.2 关于服务器定时器初始化停止计时

这么一小段话,其实要分为两个 部分。

**1) N_USDataFirstFrame_ind 或者N_USData_ind,任何都会停止已经开始计时的计时器。

**2)一旦重新回到默认回话,定时器也会被停止

4.3 关于服务器定时器初始化重新初始化

**1)是指新的诊断回应被发出(且已经被全部成功发出了),此时如果旧的计时器还没结束,此时会重置S3server计时器。上图中第一栏又说明,无论是正响应还是负响应。都能重启计时器,上一个章节又说必须正响应才能

初始化计时器。这里情况不同,上一章节是指初始状态为 10 01 跳转到其他状态 如 10 02活10 02

这里说的是指会话状态已经在非默认会话状态下。这一点需要清楚。

**2)0x78不会重置S3server定时器

**3)对于不需要响应的诊断请求,从诊断请求被完全被发出后开始计时。

**4)多帧的诊断request帧(指client发出的),在server接收时,出现错误。这里的错误,存在以下类型

一共大概10种,具体不再详述,大家有兴趣自行参考IS015765-3,这里有几种错误是server能发出的,大家需要自己去查阅标准。当错误发生时计时器也会报错

4.4 如何测试S3clent和S3server相关参数

S3server如果想简单测一下timeout比较好测,如果要求测试精度不高,甚至可以手动计时。但是如果想详细测试,比较复杂。等我理清了,可能以一个测试case的方式和大家分享。

5:应用层参数

5.1 规范中对这些参数的解释

5.2  P2can_Clinet与P2can_server

**1) P2can_Clinet 是指应用层,在接收到网络层的 N_USData.con后,此处为开始点。到接收到服务器端的N_USDataFirstFrame.ind 或 N_USDataind,也就是接收到网络层的首诊,或多帧信息的首帧指示时,为结束点

这里上一段标红的字段“在接收到网络层的 N_USData.con后”也存在两种不同的情况,先看下面这张图

应用层定时器参数:request请求多帧或单帧,response回复单帧

情况1:N_USData.req请求的帧,数据链路层使用signalFrame就可以发出

情况2:N_USData.req请求的帧,数据链路层使用MulFrame才可以发出,以多帧为例

关注图中的 a,b,c,d的各种图标,实际图中是外侧带一个圆圈。

a和b之间时间 略微大于N_b->C

B——>C之间的时间,要略微大于 N_Br+N_Bs+若干个*N_Cr

故等待Sender端(此处也是指client端)所有多帧都发送完之后,才会走到C处。然后从C点开始

到客户端接收到首诊指示或数据指示,指的是P2client的值。从D点开始到E点,意义在于诊断请求报文全部发出后,到应用层开始求发出诊断响应。诊断响应也需要分为两种,一种是单帧,一种是多帧,无论是单帧或者多帧报文对P2Server的值几乎不受影响。P2Server 稍微>N_Br.

 5.3  P2*can_Clinet与P2*can_server

**1)P2*can_server ,是指从0x78 被发出后,网络层调用.con服务为起始点,到应用层再次调用.req服务为终点时刻。

**2) P2*can_Clinet,是指client端从接收0x78服务开始计时,为开始时刻,到response的FF帧被接收,或SF被接收,为结束时刻。

注意,此图中其实P2can_server计时器和P2can_Clinet,计时器也是启动了

一般可以设置定时器参数如下图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术干货|HyperMesh CFD功能详解:虚拟风洞 Part 2

在上期 Part 1文章中&#xff0c;我们介绍了从 v2023 版本开始&#xff0c;虚拟风洞VWT&#xff08;Virtual Wind Tunnel&#xff09;模块合并到HyperMesh CFD中。用户在VWT模块中完成LBM求解器ultraFluidX的前处理设置&#xff0c;导出参数文件XML和模型文件STL&#xff0c;并…

H7-TOOL的CAN/CANFD助手增加帧发送成功标识支持, 继续加强完善功能细节

2.27版本固件正式携带此功能&#xff0c;包括之前做的负载率检测和错误信息展示也将集成到这个版本固件中。 对于接收&#xff0c;我们可以直接看到效果&#xff0c;而发送不行&#xff0c;所以打算在发送的地方展示下发送成功标识。CAN发送不像串口&#xff0c;需要等待应答后…

mysql5安装

1.下载安装包 https://downloads.mysql.com/archives/community/ mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar2.安装依赖 yum -y install perl yum -y install net-tools yum install numactl libaio libaio-devel -y也可…

大模型应用编排工具Dify二开之工具和模型页面改造

1.前言 简要介绍下 dify&#xff1a; ​ 一款可以对接市面上主流大模型的任务编排工具&#xff0c;可以通过拖拽形式进行编排形成解决某些业务场景的大模型应用。 背景信息&#xff1a; ​ 环境&#xff1a;dify-0.8.3、docker-21 ​ 最近笔者在做 dify的私有化部署和二次…

开放寻址法、链式哈希数据结构详细解读

一、开放寻址法&#xff08;Open Addressing&#xff09; 1. 定义 开放寻址法是一种哈希冲突解决策略&#xff0c;所有元素都存储在哈希表中。当发生冲突时&#xff0c;即两个键计算出的哈希值相同时&#xff0c;会按照一定的探查序列查找下一个可用的位置来存储新元素。 2.…

并查集(基础学习与应用)

并查集 基本原理&#xff1a; 对于多个集合&#xff0c;每个集合中的多个元素用一颗树的形式表示&#xff0c;根节点的编号即为整个集合的编号&#xff0c;每个树上节点存储其父节点&#xff0c;使得当前集合的每个子节点都可以通过对父节点的询问来找到根节点&#xff0c;根…

基于 Encoder-only 架构的大语言模型

基于 Encoder-only 架构的大语言模型 Encoder-only 架构 Encoder-only 架构凭借着其独特的双向编码模型在自然语言处理任务中表现出色&#xff0c;尤其是在各类需要深入理解输入文本的任务中。 核心特点&#xff1a;双向编码模型&#xff0c;能够捕捉全面的上下文信息。 En…

sql数据库-DQL-条件查询

条件查询 SELECT 字段列表 FROM 表名 WHERE 条件列表; 条件列表 比较运算符功能> 大于>大于等于 < 小于<小于等于等于!不等于between...and...某个范围之间&#xff08;闭区间&#xff09;IN(...)在in之后的列表中的值&#xff0c;多选一LIKE 通…

Android CCodec Codec2 (二十)C2Buffer与Codec2Buffer

在阅读Codec2框架代码时&#xff0c;我们可能会发现好几个名称中都带有“buffer”的类&#xff0c;如MediaCodecBuffer、ABuffer、CCodecBuffers、Codec2Buffer以及C2Buffer。它们分别是什么&#xff1f;各自承担着什么功能&#xff1f;它们之间有何联系&#xff1f;本文将围绕…

WPF怎么通过RestSharp向后端发请求

1.下载RestSharpNuGet包 2.请求类和响应类 public class ApiRequest {/// <summary>/// 请求地址/// </summary>public string Route { get; set; }/// <summary>/// 请求方式/// </summary>public Method Method { get; set; }/// <summary>//…

SQL Server 日志记录

SQL Server是一个关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;旨在有效地存储、组织、检索和操作大量结构化数据。SQL Server日志是监控数据库活动、排查问题和确保数据一致性的基础&#xff0c;这些日志记录了SQL Server实例中发生的事件的时间顺序。它们充当…

书生实战营第四期-基础岛第三关-浦语提示词工程实践

一、基础任务 任务要求&#xff1a;利用对提示词的精确设计&#xff0c;引导语言模型正确回答出“strawberry”中有几个字母“r”。 1.提示词设计 你是字符计数专家&#xff0c;能够准确回答关于文本中特定字符数量的问题。 - 技能&#xff1a; - &#x1f4ca; 分析文本&…

默认 iOS 设置使已锁定的 iPhone 容易受到攻击

苹果威胁研究的八个要点 苹果手机间谍软件问题日益严重 了解 Apple 苹果的设备和服务器基础模型发布 尽管人们普遍认为锁定的 iPhone 是安全的&#xff0c;但 iOS 中的默认设置可能会让用户面临严重的隐私和安全风险。 安全研究员 Lambros 通过Pen Test Partners透露&#…

双指针算法篇——一快一慢须臾之间解决问题的飘逸与灵动(3)

前言&#xff1a;本篇来到双指针算法介绍的最终篇&#xff0c;该文将通过三个同类型但难度逐渐累增的题目&#xff0c;再次强化对双指针算法的理解和运用。 相关题目及讲解 一. 两数之和 题目链接&#xff1a;LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetC…

sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)

- UDF&#xff1a;一对一的函数【User Defined Functions】 - substr、split、concat、instr、length、from_unixtime - UDAF&#xff1a;多对一的函数【User Defined Aggregation Functions】 聚合函数 - count、sum、max、min、avg、collect_set/list - UDTF&#xff1a;…

Springcloud高校选课管理系统-计算机毕业设计源码27115

摘 要 随着信息技术的快速发展和高校信息化建设的深入推进&#xff0c;选课管理系统作为高校教育信息化建设的重要组成部分&#xff0c;其重要性和紧迫性日益凸显。传统的选课管理系统往往采用单体架构&#xff0c;存在系统耦合度高、可维护性差、扩展性不强等问题&#xff0c;…

ChatGPT 新体验:AI 搜索功能与订阅支付指南

就在凌晨&#xff0c;在 ChatGPT 迎来两周岁生日之际&#xff0c;OpenAI 重磅发布了 ChatGPT 的全新人工智能搜索体验。 期待已久的时刻终于到来&#xff0c; ChatGPT 正式转型成为一款革命性的 AI 搜索引擎&#xff01; 先来看看 ChatGPT 搜索&#xff1a;这次不是简单的加个…

奇瑞汽车:降阶模型在新能源汽车热管理仿真上的应用

随着新能源汽车的发展&#xff0c;对仿真技术的要求也越来越高。那么奇瑞汽车利用降阶模型在新能源汽车热管理仿真上做了哪些应用呢&#xff1f;本次内容主要从四个方面展开介绍&#xff1a; 1、 奇瑞汽车简介&#xff1b; 2、 热管理降阶模型开发的背景&#xff1b; 3、 高低…

RPC核心实现原理

目录 一、基本原理 二、详细步骤 三、额外考虑因素 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议&#xff0c;也是一种用于实现分布式系统中不同节点之间进行通信和调用的技术。其实现原理主要可以分为以下几个步骤&…

HTML前端页面设计静态网站-仿百度

浅浅分享一下前端作业&#xff0c;大佬轻喷~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>百度&#xff08;伪&#xff09;</title><style>body {margin: 0;padding: 0;}.top-bar {dis…