【UDS】ISO15765-2之诊断时间参数

文章介绍了诊断层中的六种定时器参数,特别是P2server,P2*server和S3server在ECU开发中的应用。P2client和P2server涉及请求与响应的超时时间,而P2*client和P2*server针对否定响应的处理。S3client和S3server则关乎3E服务的发送周期和非默认会话的持续时间。文章通过实例阐述了这些参数的具体含义和性能要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


->返回总目录<-

简介

诊断层包含六种定时器时间参数:P2client, P2client, P2server, P2server, S3client, S3server。
相对来说,比较好理解。就是节点请求消息时,一些定时器定义标准,在实际开发中这些时间会在整车厂(客户)的诊断输入文档种体现。
注:我们把 "节点“ 定义成公司开发的控制器(ECU)。在ECU的开发中,我们只对P2server, P2*server,S3server这三者。
因为ECU充当着服务器的角色。

下表是博主举例某一整车厂关于定时器P2server, P2*server,S3server的要求
在这里插入图片描述


分类

1. P2client

客户端(上位机CANoe)在成功发送请求消息后等待服务器发送响应时的超时时间(如ECU回复的首帧或者单帧)

~

2. P2server

对于服务器接收到请求消息后发出响应消息时间的性能要求

如下图:上位机CANoe在时间节点132.136257请求一个诊断报文 02 10 01 00 00 00 00 00
ECU在 10ms 后的132.146307时间节点回应06 50 01 00 32 01 F4 AA
由此可见 P2server <50ms,满足客户要求。
在这里插入图片描述

3. P2*client

当客户端在接收到否定响应码0x78后,等待服务器发送响应时的超时时间(首帧或单帧)

~

4. P2*server

当服务器在发送否定响应码0x78后,到服务器发出响应消息时间的性能要求

如下图,服务器在时间节点151.183258 回复否定响应码0x78。
过了318ms后的时间节点151.501985发出响应报文 06 50 02 00 32 F4 AA。
由此可见 P2*server < 5000ms,满足客户要求。
在这里插入图片描述

5. S3client

S3Client与S3Server相对应,它定义的是诊断仪发送3E服务(testerpresent)的循环周期。
该参数可以在CANoe上位机设置,如下图。
在这里插入图片描述
在这里插入图片描述

5. S3server

服务器在收到诊断请求报文后保持运行在非默认会话的持续时间。
转换成人话:在非默认会话,如此时请求进入扩展会话10 03,且没有请求0x3E握手服务。则会在定时器S3server超时后,会话模式退回默认会话。一般该时间会设置为5000ms。
在这里插入图片描述

总结

感觉还不错,自己写了一遍,又加深了知识点的印象。正所谓复杂问题简单做,简单事情重复做
(讲道理,这些我都忘记了,今天就当复习了一遍,以后想复习了,就可以来到这里啦)

->返回总目录<-

### 关于P2 Server 或 P2Server 配置和服务 在讨论P2 Server或P2Server配置和服务时,通常指的是点对点(Peer-to-Peer, P2P)网络架构中的服务器端组件。这类服务器可能负责协调客户端之间的连接建立、资源定位以及其他管理功能。 #### 协调NAT穿越机制 对于位于不同私有网络内的设备要实现直接通信而言,NAT(Network Address Translation)是一个挑战。为了克服这个问题,在某些情况下会部署专门的服务来帮助这些节点找到彼此并建立连接。例如,STUN (Session Traversal Utilities for NAT),TURN (Traversal Using Relays around NAT), 和ICE (Interactive Connectivity Establishment)协议被广泛应用于解决这一难题[^1]。 #### 支持多媒体传输的应用场景 考虑到实际应用需求,特别是在实时视频流媒体分发方面,Adobe Flash Player曾提供了一种基于P2P技术向多个客户端传递直播视频的方法。这种方法不仅减轻了中心化服务器的压力,同时也提高了数据传送效率和可靠性[^2]。 ```python # 示例Python代码片段展示如何通过第三方库模拟简单的P2P文件共享逻辑 import socket def start_server(host=&#39;localhost&#39;, port=6789): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((host, port)) server_socket.listen(5) print(f"P2P Server started at {host}:{port}") while True: conn, addr = server_socket.accept() with conn: print(&#39;Connected by&#39;, addr) data = conn.recv(1024) if not data: break conn.sendall(data) if __name__ == "__main__": start_server() ``` 此段代码仅作为概念验证用途,并不构成完整的P2P解决方案;真正的P2P系统设计远比这复杂得多,涉及更高级别的安全性和稳定性考量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&春风有信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值