本文主要是介绍诊断中P2,P2*与S3三类定时器的介绍与总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
个人总结,有问题的地方欢迎指正
一、P2定时器——P2CAN_Client,P2CAN_Server,S3
1、DefaultSession下采用物理寻址
- P2CAN_Client是用于诊断仪的定时器
P2CAN_Client:从诊断仪发送完一条完整的请求后,开启该定时器,诊断仪应在该定时器定时时间内接受到从ECU传输过来的相应。若在该定时器timeout前就接受到了ECU的响应报文,那么该定时器停止计时。
若ECU响应为单帧,诊断仪应接收完完整的一帧响应报文后P2CAN_Client定时器stop;
若ECU响应为多帧响应,诊断仪应接受完完整的一帧首帧报文后P2CAN_Client定时器stop;
- P2CAN_Server是用于ECU的定时器
P2CAN_Server:从ECU接收完一帧完整的请求后,开启该定时器,且ECU应在该定时器定时时间内发送响应报文。如果在该定时器timeout前ECU就开始发送响应报文,那么该定时器在ECU开始发送响应报文的时候停止计时。
步骤e的说明:对于多帧传输,在P2CAN_Server时间内应开始传输第一帧,对于单帧传输,在该定时器时间内,应该开始传输响应报文。
2、DefaultSession下采用物理寻址且支持78否定响应机制
若在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. 对图的理解应有四种情况
-
server1为单帧响应, server2为多帧响应,则只有一个P2CAN_Client时间,即b—>f2
-
server1为多帧响应, server2为单帧响应,则有2个P2CAN_Client时间,即b—>f2;e1—>f2
-
server1为单帧响应, server2为单帧响应,则有2个P2CAN_Client时间,即b—>f1;f1—>f2
-
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三类定时器的介绍与总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!