文章目录
- 前言
- NRC78的使用场景
- 客户需求解读
- Autosar Dcm中的定义
- 工具链中的配置
- 总结
前言
在项目开发过程中,客户变更需求,是关于NRC78的回复时间点的,该需求在Autosar Dem中也有对应的参数,DcmTimStrP2ServerAdjust(针对于P2Server),DcmTimStrP2StarServerAdjust(针对于P2 *Serverr),本文结合需求来学习下这两个参数的使用。
NRC78的使用场景
谈到NRC78,就必须要了解UDS中的时间参数P2Server和P2 *Server(Server即针对于ECU端),14229中定义如下:
带有0x78回复的数据流如下:
所以NRC78的使用场景为:当ECU在P2Server_max(非编程会话一般为50ms)时间内无法处理完成,需要额外的时间才能正确响应诊断仪的请求时,发送一次0x78可以多争取P2 *Server_max的时间(一般为5000ms)
客户需求解读
需求1:连续的0x78负响应,发送时间应该在 0.3 * P2* Server_max 到 0.8 * P2* Server_max,目的是为了尽可能少的发送0x78。
需求2:对于第一次0x78负响应的发送时机应尽可能的靠近P2Server_max,如果发送的太快,可能会导致网关在转发过程中丢失而导致刷写失败。
Autosar Dcm中的定义
DcmTimStrP2ServerAdjust正好针对于需求2,但需要清楚的是,实际的响应时间为P2Server_max - DcmTimStrP2ServerAdjust,如果需要满足需求2,则DcmTimStrP2ServerAdjust应该尽可能的小。
DcmTimStrP2StarServerAdjust正好针对于需求1,同样的道理,实际的响应时间为P2* Server_max - DcmTimStrP2StarServerAdjust,所以按需求,DcmTimStrP2StarServerAdjust应该配置为0.2-0.7倍的P2* Server_max
Autosar Dcm中定义如下:
DcmTimStrP2ServerAdjust单位为秒,且需要为DcmTaskTime的整数倍
DcmTimStrP2StarServerAdjust单位为秒,且需要为DcmTaskTime的整数倍
工具链中的配置
以ETAS软件为例:配置这两个参数在DcmDslProtocolRow中
当P2Server_max为50ms时,实际第一次响应0x78的时间为40ms,当P2* Server_max为5000ms时,实际连续响应0x78的时间为3000ms
总结
理清需求很重要,希望大家在开发过程中少做无用功。