从项目中初识Autosar网络管理

目录

0 前言

1 Autosar基本概念

1.1 网络管理主要有三种模式:

1.2 状态的转换(测试点)

1.3 时间参数

2 实践学习


0 前言

以下内容如有不对,还请评论区内多多指正

网络管理的理论知识网上很多,讲的也都很精细,所以本文主要从项目中来介绍。

首先需要明确的是网络管理听起来很高大上,但其目的很简单,就是为了省电。

1 Autosar基本概念

从项目中初识Autosar网络管理_第1张图片

TIPs:

1.CanNm_NetWorkRequest() :开关或者点火信号来唤醒网络

2.Repeat Message Bit Received;RepeatMessageRequest() :前者是自己发出的,后者是其他节点发出的

1.1 网络管理主要有三种模式:

        1.总线睡眠模式:为了省电进入低功耗模式,等待被唤醒。唤醒后进入网络模式重复报文状态

        2.准备总线睡眠模式:为即将到来的睡眠做准备(类似于睡前上个厕所给手机充电等),等T_WAIT_BUS_SLEEP定时器溢出后进入总线睡眠模式。如果被唤醒,进入网络模式重复报文状态。在该模式下,APP报文和NM报文都不再发送。

        3.网络模式:常规的活动模式,由内部的三种状态组成:重复报文状态常规运行状态准备睡眠状态

节点进入网络模式后,需要开启T_NM_TIMEOUT定时器。每次收发成功报文都会重新刷新定时器。

无论睡眠条件是否满足,重复报文状态都可以使节点保持一段时间的活跃状态。

节点处于重复报文状态时,T_NM_TIMEOUT定时器超时溢出时,需要重启T_NM_TIMEOUT定时器;进入重复报文状态后,需要在唤醒时间t内恢复通信。在重复报文状态内持续的时间 == T_REPEAT_MESSAGE,T_REPEAT_MESSAGE超时以后,若对网络通信有需求则进入常规运行状态,反之进入准备睡眠状态。节点离开重复报文状态时需要将重复报文请求标志位清零。

节点处于常规运行状态时,T_NM_TIMEOUT定时器超时溢出时,需要重启T_NM_TIMEOUT定时器;常规运行状态需要按照T_NM_MessageCycle 的周期发送网络管理报文。

节点处于准备被睡眠状态时,T_NM_TIMEOUT定时器超时溢出时,进入准备睡眠模式。准备睡眠状态时定时器T_NM_TIMEOUT 溢出后 ,需进入准备总线睡眠模式,定时器收到网络报文时会reset定时器。在准备睡眠状态时,NM报文会被停发,但是APP报文还是会继续发送。

1.2 状态的转换(测试点)

BSM TO RMS:

1.首先收到唤醒信号,然后就进入RMS,这一过程需要在T_WakeUp时间内完成。

2.如果是从PBSM/NOS/RSS进入RMS的话需要在T_START_NM_TX时间内发送第一帧网络报文;如果是从BSM或PBSM进入RMS的话需要在_START_App_TX时间内发送第一帧应用报文。

3.发送第一帧网络管理报文后按照T_NM_MessageCycle的周期持续发送报文。

4.RMS保持T_REPEAT_MESSAGE时间后节点将会进入下一个状态。

以T_START_APP_Tx为例:

RMS TO RSS:

1.唤醒后进入RMS

2.检查是否只回复应用报文没有回复网络报文,是的话就进入了RSS

RSS TO PBSM

1.检查是否没有收到网络报文,是的话就进入了RSS

2.检查是否没有收到APP报文,是的话就进入PBSM

PBSM TO BSM

1.首先进入PBSM中

2.检查错误帧,如果收到了错误帧则说明进入BSM

a. 检查NM_TIMEOUT = 最后一帧应用报文发出的时间 - 最后一帧网络报文发出的时间

b. 检查WAIT_BUS_SLEEP = 第一帧错误帧的出现时间 - 最后一帧应用报文发出的时间

总结:整体来说网络管理的循序为BSM -> RMS ->1500ms(在重复报文状态中保持的时间) -> NOS -> 停止ECU发送NM报文或关闭点火信号立即转换状态 ->RSS,ECU停发NM报文但APP报文还是会发,等定时器溢出后则进入PBSM,收到或者发送NM报文则会reset定时器 -> PBSM,ECU停发APP报文 ->BSM 总线休眠,测试中需检测是否发出错误帧,以及休眠电流是否符合要求。

1.3 时间参数

从项目中初识Autosar网络管理_第2张图片

从项目中初识Autosar网络管理_第3张图片

2 实践学习

网络管理中有许多状态的转化,又有一大堆定时器,如果只看理论那一定会让人很头疼。接下来将介绍3个例子来帮助理解:

         1 发送网络报文0x400: 00 11 01 00 00 00 00 00 (主动唤醒 请求节点进入网络报文状态)节点回复0x459:59 00 21 00 00 00 02 00 (21:重复报文状态 NM唤醒 02:首次被唤醒是因为网络报文)

从项目中初识Autosar网络管理_第4张图片

        报文先以50ms的间隔恢复一帧,然后以500ms的间隔恢复三帧以此为循环  --> 因为根据文档规定非BSM状态进入RMS要在50ms内发出第一帧500ms是网络模式中(除了准备睡眠模式外)报文的发送周期,发送三帧是因为RMS的计时器为1500ms

        2 从网络模式到总线睡眠模式一共需要的时间是4s (T_NM_TIMEOUT+ T_WAIT_BUS_SLEEP)

操作方法:

1)手动发送两帧网络报文(内容全为0),则应用报文和网络报文回复一段时间,然后停止

 2)检查最后一帧NM报文和最后一帧应用报文发出的时间,相减即为T_NM_TIMEOUT =2s

从项目中初识Autosar网络管理_第5张图片

3)出现第一帧错误帧时即说明总线已经休眠,错误帧出现时间减去最后一帧应用报文发出时间T_WAIT_BUS_SLEEP =2s

从项目中初识Autosar网络管理_第6张图片

        3 当节点在RSS时,收到诊断报文会恢复到NOS,并启动 T_WAIT_DiagReq定时器(5s),当定时器溢出后又会回到RSS

从项目中初识Autosar网络管理_第7张图片

谢谢大家 

你可能感兴趣的:(网络,测试工具,学习,笔记,自动化)