AUTOSAR 网络管理包含三种工作模式:
1、总线休眠模式
2、总线预休眠模式
3、网络运行模式
总线休眠模式
总线休眠模式用于降低功耗,在该模式下没有报文交互。总线休眠模式下,如果网络需要,则网络管理模块应通知上层,由上层决定是否唤醒。如需,则进入网络运行式。
总线预休眠模式
总线预休眠模式用于确保总线上所有节点在进入总线休眠模式前,有足够的时间用来停止网络活动。总线预休眠模式的停留时间由T_WAIT_BUS_SLEEP 决定,定时器超时后,将离开总线预休眠模式并进入总线休眠模式。在总线预休眠模式下,成功接收到网络管理PDU,网络管理将进入网络运行模式。在总线预休眠模式下,如果网络需要,则网络管理模块应进入网络运行模式。
网络运行模式
网络运行模式由三个内部状态组成:
1、重复消息状态
2、正常运行状态
3、准备休眠状态
从总线休眠模式、总线预休眠模式进入网络运行模式时,默认情况下网络管理模块将进入重复消息状态。进入网络运行模式,网络管理模块将启动网络管理超时定时器TNM_TIMEOUT。在网络运行模式下,成功接收到网络管理报文,网络管理模块将重新启动网络管理超时定时器。在网络运行模式下,当成功发送一帧网络管理报文,网络管理模块将重新启动网络管理超时定时器。CAN网络管理在每次启动和重启时应重启网络超时定时器。当ECU被本地事件唤醒或接收到网络管理报文被唤醒时,ECU应该进入网络运行模式,默认情况下网络管理模块应该进入重复消息状态,开始发送第一帧网络管理报文,这个过程应该在时间"t"内完成,t<=T WakeUp,详见下图。
重复消息状态
重复消息状态是为了保证节点从总线休眠状态和总线预休眠状态转换到总线运行状态时发送的所有数据对网络上所有节点都是可见的。同时可以保证节点处于激活状态的时间尽量短,重复消息状态也可以用于节点的在线检测。重复消失状态下,如T_NM_TIMEOUT超时,网络管理应重启网络管理超时定时器。当网络管理模块转出重复消息状态后,如果网络需要,则网络管理模块应进入正常工作状态;当网络管理模块转出重复消息状态后,如果网络被释放,则网络管理模块应进入准备休眠状态;当网络管理模块转出重复消息状态后,应清除重复消息标志位。进入重复消息状态,节点应立即以T_NM_ImmediateCycleTime 为周期发送一定数量的网络管理报文。按照T_NM_ImmediateCycleTime为周期发送的网络管理报文的数量由N_ImmediateNM_TIMES决定。超过这一数量之后,将恢复以T_NM_MessageCycle为周期发送网络管理报文。启动网络管理的时间T_START_NM_TX是从总线休眠模式、总线预休眠模式、正常工作状态或准备休眠状态进入重复消息状态的时间,第一帧网络管理报文应该在T_START_NM_TX时间内发送。T_REPEAT_MESSAGE之后,节点将转换到正常工作状态或准备休眠状态。应用报文应该在第一帧网络管理报文被成功发送后T_STARTx_AppFrame 时间内发送,详见下图。
正常工作状态
正常工作状态应确保节点有网络需求时可以使网络管理集群保持唤醒状态。从重复消息状态、准备休眠状态进入正常工作状态,网络管理模块应该以T_NM_MessageCycle为周期发送网络管理报文。在正常工作状态下 T_NM_TIMEOUT 定时器超时,网络管理模块应该重启T_NM_TIMEOUT 定时器。当前状态是正常工作状态且网络被释放,则网络管理模块应该进入准备休眠状态。在正常工作状态下,如果重复消息标志位被置位,网络管理模块应该进入重复消息状态。在正常工作状态下,出现重复消息需求,网络管理模块应该进入重复消息状态。在正常工作状态下,出现重复消息需求,应置位重复消息标志位。
准备休眠状态
准备休眠状态用以确保网络管理集群中的所有节点有足够的时间等待转换到总线预休眠状。从重复消息状态或正常工作状态进入准备休眠状态时,网络管理模块应停止发送网络管理报态。在准备休眠状态下T_NM_TIMEOUT定时器超时,则网络管理模块应该进入总线预休眠状态。当前状态是准备休眠状态,节点需要网络通信时,网络管理模块应该进入正常工作状态。在准备休眠状态下收到重复消息标志位被置位的网络管理消息时,网络管理模块应该进入重复消息状态。在准备休眠状态出现重复消息请求时,网络管理模块应该置位重复消息标志位。
AUTOSAR-网络管理状态机
网络转换条件和行为
网络转换条件
ConditionID | 描述 |
Condition1 | 网络需求 |
Condition2 | 成功接收到网络管理报文 |
Condition3 | 成功发送网络管理报文 |
Condition4 | T_REPEAT_MESSAGE定时器超时 |
Condition5 | 网络释放 |
Condition6 | T_NM_TIMEROUT定时器超时 |
Condition7 | 接收到重复消息请求位置“1” |
Condition8 | T_WAIT_BUS_SLEEP定时器超时 |
Condition9 | 网络管理重复消息需求 |
网络转换行为
ActionID | 描述 |
Action0 | 网络管理初始化 |
Action1 | 启动T_REPEAT_MESSAGE定时器 |
Action2 | 启动T_NM_TIMEROUT定时器 |
Action3 | 启动T_WAIT_BUS_SLEEP定时器 |
Action4 | 节点发送网络管理报文 |
Action5 | 节点停止发送网络管理报文 |
Action6 | 进入休眠模式 |