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状态机的呢?留着后面有空再整理吧~

相关推荐
豆包公子2 天前
程序流监控:AUTOSAR CP 功能安全在裸机 MCU 上的实现(理论篇)
运维·单片机·嵌入式硬件·安全·车载系统·autosar
北京智和信通3 天前
统一监控,智能预警:智和信通天津某部队项目落地
网络监控·网络管理·网管平台·网管软件·it综合监控
咸鱼嵌入式7 天前
【AutoSAR】详解CANIF模块
单片机·mcu·车载系统·autosar
Electron-er8 天前
汽车ECU LIN通信网络管理:从原理到实战应用
网络管理·嵌入式通信·lin通信
正午游巳14 天前
第二十六节:枚举和数组
汽车·autosar·汽车电子·车载嵌入式
赞哥哥s1 个月前
初始化函数的用法-节约flash空间的“妙计”
autosar·flash·data·bss
正午游巳1 个月前
第二十节:MCAL GPT理论
汽车·嵌入式·autosar·车载嵌入式
正午游巳1 个月前
第二十一节:MCAL GPT实操
汽车·autosar·汽车电子·车载嵌入式
酷酷的boy1 个月前
AUTOSAR下网络时间(CAN)与本地 RTC 同步。
autosar·汽车电子