Autosar 网络管理-诊断请求到底能不能快发Nm报文?

文章目录

前言

之前一直理解的诊断请求会维持网络,客户报问题说诊断请求不能快发Nm报文,但软件没改过,以前也没报过这个问题,本文梳理一下该问题报的是否合理

Autosar规范

标准Autosar CanNm状态机如下:

大家知道快发Nm报文是在Repeat Message State 状态下,正常ECU被动唤醒状态下,处于Ready Sleep State 状态下,不会发送Nm报文

由上图Nm状态机可以看到,当Nm处于Network Mode 时,如果CanNmPnHandleMultipleNetworkRequests 配置为True时(上图红框1),调用CanNm_NetworkRequest() ;函数会重新进入RMS状态,此时就可以快发Nm报文了。如果CanNmPnHandleMultipleNetworkRequests 配置为False,同时Nm处于Network Mode-RSS时(上图红框2),调用CanNm_NetworkRequest() ;函数,Nm状态会跳转到Normal Operation State ,此时Nm报文正常慢周期发送(如1s),也就不会有快发报文

对应的Autosar标准需求如下:

细心的同学应该发现了,从RSS到RMS还可以通过调用CanNm_RepeatMessageRequest 函数实现,那为什么诊断不是通过调用该函数实现快发的呢?之前介绍过诊断请求网络的实现,参考:Autosar Dcm开发-诊断报文请求网络管理报文的实现方法-基于ETAS软件

请求网络最终由ComM_DCM_ActiveDiagnostic函数实现,Autosar ComM中有如下需求:

可知诊断请求最终由Nm_NetworkRequest实现,对于Can网络来说,也就是CanNm_NetworkRequest实现。

同时,我查了下代码,项目中CanNm_RepeatMessageRequest实际没有用到,Nm在NOS或RSS状态下,外部调用这个函数可以主动进RMS,而诊断请求并不是通过该函数实现的。

问题分析

到此已经可以解释文章的问题了,到底能不能快发Nm报文取决于CanNm中的CanNmPnHandleMultipleNetworkRequests配置,配置为True才能快发Nm报文,否则不能快发Nm报文。

而客户需求中明确规定了CanNmPnHandleMultipleNetworkRequests需要配置为True,所以这个问题提的就是不合理的。

总结

Nm状态机这边只提了调用CanNm_NetworkRequest来触发快发报文,那诊断请求又是如何调用CanNm_NetworkRequest函数的呢?CanNmPnHandleMultipleNetworkRequests又是如何影响Nm状态机的呢?留着后面有空再整理吧~

相关推荐
赞哥哥s7 天前
初始化函数的用法-节约flash空间的“妙计”
autosar·flash·data·bss
正午游巳16 天前
第二十节:MCAL GPT理论
汽车·嵌入式·autosar·车载嵌入式
正午游巳17 天前
第二十一节:MCAL GPT实操
汽车·autosar·汽车电子·车载嵌入式
酷酷的boy18 天前
AUTOSAR下网络时间(CAN)与本地 RTC 同步。
autosar·汽车电子
AUTOSAR组织1 个月前
AUTOSAR CP NvM 模块解析
汽车·autosar·软件架构·软件·标准
赞哥哥s1 个月前
2025年终总结简版
autosar
汽车软件工程师0011 个月前
ChatGpt指导嵌入式软件开发能力——2、TriCore深度专项训练
人工智能·chatgpt·autosar
汽车软件工程师0011 个月前
ChatGpt指导嵌入式软件开发能力
人工智能·chatgpt·autosar
汽车软件工程师0011 个月前
vector autosar,CAN 总线上能看到报文RTE 收不到信号COM 层 IPDU Callout 不触发
autosar