11-5 DCM P2Server_max P2*Server_max

P2Server_max:指的是ECU在收到请求和给出响应之间的这个时间间隔,他描述了ECU的反应速度

P2*Server_max:在ECU给出NRC 78(等待)之后生效,所以会需要更长的反应时间

在ECU的软件中,需要设置P2Server这个timer,而这个timer应该被赋P2Server_max或P2Server_max这两值。

定性地来说,P2Server_max指的是ECU在收到请求和给出响应之间的这个时间间隔,它描述了ECU的反应速度。定量地来说,它指的是T_Data.ind(ECU收到请求)和T_Data.req(ECU给出响应)这两个函数被调用之间的时间。

P2Server_max与P2Server_max的含义类似,区别在于,P2Server_max这个时间参数是在ECU给出NRC 0X78之后生效的,ECU返回NRC 0X78,说明ECU当前处理能量不足,所以需要更长的反应时间,即P2Server_max。所以P2Server_max通常比P2Server_max大很多。在讲0x10这个诊断命令的时候,我提过这个诊断命令的响应格式是类似50 01 xx xx yy yy这种, xx xx就表示P2Server_max,yy yy 就表示P2Server_max。诊断仪收到这两个参数之后,就对ECU的响应速度有了认知,可以据此来判断ECU的响应是否及时。


————————————————
版权声明:本文为CSDN博主「@3933549xx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45353815/article/details/105678942

三、诊断请求与响应
1、诊断请求

诊断请求发送格式:诊断请求ID:诊断数据长度 + 0X10 + 子服务

如:0x761 02 10 01

诊断请求ID(0x761):主机厂定义,一般为0X7** (CAN)

诊断数据长度(02):所需数长度(CAN报文数据8个字节:0x02代表有效字节长度为2,即10 01)

子服务(01):0x01(默认会话)、0x02(编程会话)、0x03(扩展会话) .....

2、诊断响应

诊断响应格式:

正响应:诊断响应ID: 响应数据长度 + 0X50 + 子服务 +P2server_max +P2*server_max

如:0X766 06 50 01 00 32 01 F4

诊断响应ID(0x766):一般也是0X7**大于请求ID

响应数据长度(06):同上

子服务 (01):同上

P2server_max(00 32):由主机厂定义,解析度为1毫秒,00 32既是50毫秒(ms)最大65535ms

P*2server_max(01 F4):由主机厂定义,解析度为10毫秒,01 F4既是5000毫秒(ms)最大655350ms

负响应:诊断响应ID: 响应数据长度 +7F+ 10 + NRC

如:0x766 03 7F 10 12

诊断响应ID(0x766):同上

响应数据长度(03):同上

0X7F:ISO14229规定否定响应均以0x7F 开头

NRC:否定响应码(下图为14229给出,根据主机厂需求可增加其他NRC)

<think>好的,我现在需要回答用户关于AUTOSAR中3E服务(会话维持)的实现或配置的问题。首先,我应该回忆一下AUTOSAR的基础知识,特别是诊断通信管理(DCM)和UDS服务相关的部分。 用户提到的3E服务对应于ISO 14229-1标准中的TesterPresent服务,主要用于保持诊断会话的活动状态,防止超时。接下来,我需要确认在AUTOSAR架构中,如何配置和实现这个服务。 根据引用[4],3E服务在AUTOSAR中由DCM模块处理,配置可能涉及DCM模块的参数设置,比如会话类型、时间参数等。另外,否定响应码(NRC)的处理也需要配置,比如当请求格式错误时返回7F加上相应的NRC。 我需要检查是否需要配置DcmTesterPresentService的启用,以及会话层的相关时间参数,如P2Server_max和S3Server。这些参数通常在DCM模块的配置中设置,可能通过工具如AUTOSAR配置工具(如DaVinci Configurator)进行配置。 另外,用户可能想知道如何调用3E服务,例如周期性地发送请求来维持会话。这部分可能涉及应用层的调用,比如在SWC中周期触发诊断请求,或者由测试工具定期发送3E 00报文。 还需要考虑安全会话的情况,如果当前处于安全会话(如27服务解锁后),3E服务是否需要包含安全级别参数,比如子功能01或02。引用[4]中的例子显示,在安全会话中可能需要发送带有子功能01的3E请求,并处理seed和key的交换。 可能还需要参考AUTOSAR的规范文档,如Specification of Diagnostic Communication Manager,确认配置参数和流程是否符合标准。此外,配置工具中的具体步骤,比如ComGwMapping或信号路由,可能与DCM的配置相关,但需要更详细的信息。 最后,用户可能对实际配置步骤或代码实现感兴趣,比如Dcm模块的配置参数和示例代码结构。但由于AUTOSAR通常使用配置生成代码,示例代码可能只是配置的一部分,而不是手动编写的。 总结,回答需要涵盖3E服务的配置步骤、相关参数、会话管理和安全处理,并结合引用中的信息,特别是引用[4]中的实例和NRC码,以及可能的工具配置方法。</think>关于AUTOSAR中3E服务(会话维持)的实现与配置,其核心涉及诊断通信管理模块(DCM)的配置和会话状态机的控制。以下是具体实现要点: ### 1. **服务功能与触发条件** - **功能定义**:3E服务(TesterPresent)用于阻止诊断会话超时,通过周期性发送请求(如$3E\ 00$)维持当前会话状态[^4]。 - **触发条件**:需在非默认会话(如编程会话、扩展会话)中启用,且需配置会话超时参数$S3Server$(例如$5000ms$)[^4]。 ### 2. **关键配置项** 在AUTOSAR配置工具(如DaVinci Configurator)中需设置: ```xml <DCM模块配置> <DcmDspSessionControl> <SESSION_TYPE>EXTENDED_DIAGNOSTIC</SESSION_TYPE> <P2_SERVER_MAX>50</P2_SERVER_MAX> <!-- 单位ms --> <S3_SERVER>5000</S3_SERVER> <!-- 会话超时时间 --> </DcmDspSessionControl> <DcmDspService> <SERVICE_ID>0x3E</SERVICE_ID> <SUPPRESS_RESPONSE>FALSE</SUPPRESS_RESPONSE> </DcmDspService> </DCM模块配置> ``` ### 3. **安全会话处理** 若处于安全会话(如通过$27$服务解锁),需在3E请求中指定子功能: - **子功能01**(需携带安全密钥): ```c /* 应用层调用示例 */ SendDiagnosticRequest(0x3E, 0x01, &security_key); ``` - 若密钥验证失败,DCM返回否定响应码$NRC=0x35$(invalid key)。 ### 4. **通信信号映射** 需在`ComGwMapping`中配置信号路由,确保3E服务请求能正确传递至DCM模块[^3]: ```xml <COM配置> <ComGwMapping> <SOURCE>CAN_IF</SOURCE> <DESTINATION>DCM</DESTINATION> <PDU_REF>Diagnostic_PDU</PDU_REF> </ComGwMapping> </COM配置> ``` ### 5. **会话状态机控制** DCM内部通过状态机管理会话生命周期: $$ \text{Session State} = \begin{cases} \text{Default} & \text{if } 3E \text{未激活} \\ \text{Extended} & \text{if } 3E \text{持续接收} \end{cases} $$ 当超时时间$S3Server$耗尽,状态机自动回退到默认会话。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值