诊断中P2,P2*与S3三类定时器的介绍与总结

2023-11-10 16:50

本文主要是介绍诊断中P2,P2*与S3三类定时器的介绍与总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

个人总结,有问题的地方欢迎指正

一、P2定时器——P2CAN_Client,P2CAN_Server,S3

1、DefaultSession下采用物理寻址

  1. P2CAN_Client是用于诊断仪的定时器
    图1-P2CAN_Client 与 P2CAN_Server 定时器实现过程

P2CAN_Client:从诊断仪发送完一条完整的请求后,开启该定时器,诊断仪应在该定时器定时时间内接受到从ECU传输过来的相应。若在该定时器timeout前就接受到了ECU的响应报文,那么该定时器停止计时。
若ECU响应为单帧,诊断仪应接收完完整的一帧响应报文后P2CAN_Client定时器stop;
若ECU响应为多帧响应,诊断仪应接受完完整的一帧首帧报文后P2CAN_Client定时器stop;

  1. P2CAN_Server是用于ECU的定时器

P2CAN_Server:从ECU接收完一帧完整的请求后,开启该定时器,且ECU应在该定时器定时时间内发送响应报文。如果在该定时器timeout前ECU就开始发送响应报文,那么该定时器在ECU开始发送响应报文的时候停止计时。

步骤e的说明:对于多帧传输,在P2CAN_Server时间内应开始传输第一帧,对于单帧传输,在该定时器时间内,应该开始传输响应报文。

2、DefaultSession下采用物理寻址且支持78否定响应机制

P2*CAN_Client与P2*CAN_Server
若在ECU中支持了78NRC的机制,那么当ECU忙于处理其他的事情的时候,诊断仪发送了一条请求到ECU,此时ECU是没空对该请求做出响应的(并不意味着否定响应),因此由于78这个机制的存在,ECU会回一个78NRC的响应报文,告知诊断仪ECU现在处于忙碌状态,稍后回复你,这个回复的时间就由P2*时间决定。

3. Physical communication during a non-default session

3.1 Functionally addressed TesterPresent(3E hex) message

在这里插入图片描述
P2CAN_Client>50ms
P2CAN_Server:0~50ms

总结
a. S3Client < S3Server:所以只要S3Client存在,即使两个定时器同时开启,ECU都不会跳出当前会话
b. S3Client , S3Server是相互独立的
c. 只要10服务使ECU切换到除01default以外的其他模式,S3Client 就会启动(定时器),当定时器timeout后,会发送功能寻址的3E服务,并重置S3Client 定时器
d. 当10服务请求后,ECU完成相应的响应后就会开启S3Server定时器,在该定时器开启过程中,若ECU对其它任何诊断服务响应了(包括3E),则该定时器stop,直到ECU对其他诊断服务的响应完成了,就会重启该定时器。
e. 在S3Server定时器stop期间,ECU将不会响应3E服务
f. 3E服务是为了重置S3Server定时器

3.2 Physically addressed TesterPresent(3E hex) message

在这里插入图片描述
总结:
a. 对于物理寻址,S3Client , S3Server定时器的启动需要在10服务的请求得到响应后才会开启
b. 在诊断仪和ECU端, 对于S3Client , S3Server两个定时器而言,只要两个设备空闲(即没有诊断服务需要发送,没有请求需要响应),则重启S3Client , S3Server两个定时器
c. 对于诊断仪而言,当在S3Client定时器期间,没有任何的诊断报文需要发送(包括3E),当timeout时,将发送物理寻址的3E服务以使S3Server,ECU保持在非默认会话
d. S3Client , S3Server两个定时器在一定程度上来说是同步的,同时重启,相继停止

4. Functional Communication

4.1 Functional communication during defaultSession

在这里插入图片描述

总结:
a. 对于功能寻址的请求报文,只能为单帧报文
b. 当发送完功能寻址请求后,开启P2CAN_Client和P2CAN_Server定时器
c. 对于P2CAN_Client的定时时间界定:
Functional communication—>使用default reload value 50ms
physical communication—>需要考虑latency,△P2can
d. 对图的理解应有四种情况

  1. server1为单帧响应, server2为多帧响应,则只有一个P2CAN_Client时间,即b—>f2

  2. server1为多帧响应, server2为单帧响应,则有2个P2CAN_Client时间,即b—>f2;e1—>f2

  3. server1为单帧响应, server2为单帧响应,则有2个P2CAN_Client时间,即b—>f1;f1—>f2

  4. server1为多帧响应, server2为多帧响应,则有2个P2CAN_Client时间,即b—>e1;e1—>e2

4.2 Functional communication during defaultSession with enhanced response timing

在这里插入图片描述
总结:
a. 功能寻址请求响应的ECU,都会开启一个P2CAN_Server定时器,是相互独立的
b. 对于客户端而言(诊断仪),只有一个P2CAN_Client定时器
c. 对同一个请求,只要有一个ECU回复了78 pending响应,则该ECU使用P2 * CAN_Server 定时器,但不会改变其他ECU的timer,对于client而言,则会启动P2* CAN_Client定时器,并存储回复78 pending的ECU ID, 直到ECU ID从Client中移出,若该ECU的ID为Client中存储的最后一个ID, 那么P2*CAN_Client将改为P2CAN_Client
d. 在h点,若该响应为最后一个响应,则stop P2CAN_Client,若不是,则重启P2CAN_Client

4.3 Functional communication during non-default session

非默认会话,存在78pending的传输过程
在这里插入图片描述

以上的所有图需要参照15765中对每个点的描述进行理解。

二、P3定时器——P3CAN_Function,P3CAN_Physical

总结:
a. P3CAN_Function(应用于所有功能寻址的报文),P3CAN_Physical(适用于所有物理寻址的报文)都适应于各自的寻址方式报文
b. P3CAN_Function = P2CAN_Server_max
P3CAN_Physical = P2CAN_Server_max
c. P3参数用于客户端发送相邻两条报文的讲个时间
d. P3CAN_Phy用于任何诊断会话中,采用物理寻址的任意请求报文,并且接收该请求的ECU不需要响应
P3CAN_Func用于任何诊断回话中,采用功能寻址的任意请求报文,并且ECU需要响应或不需要响应
e. 只有在上一条报文的响应(不论有没有响应)完全处理后,才可以发送下一条新的请求报文,P3定会器timeout前不允许发送新的msg
f. completely handle的界定:
1.没有要求ECU响应
2. 对于功能寻址msg的所有响应都收到
3. P2CAN_Client超时,需要响应的ECU没有收到响应

这篇关于诊断中P2,P2*与S3三类定时器的介绍与总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的