autosar网络管理(转发)
1 概述
AUTOSAR NM 是AUTOSAR软件架构默认的一种网络管理策略。AUTOSAR NM是一种分布式直接网络管理,每个节点根据网络管理帧的状态独立的控制自己的网络状态。
2 策略描述
该策略是基于网络上周期性广播的网络管理帧。
在网络唤醒状态下,当一个节点A需要保持网络唤醒时,节点A会周期性地发送网络管理帧。假如网络中有一个节点B准备好睡眠,节点B停止发送自己的网络管理帧。一旦节点B接收到其他节点的网络管理帧,节点B会推迟进入睡眠状态。如果连续一段时间都没有接收到任何网络管理帧,则网络上的所有节点进入睡眠状态。
在网络睡眠状态下,当一个节点A需要网络通信时,节点A可以通过发送网络管理帧唤醒网络。
3 网络管理模式
AUTOSAR NM有三种网络管理模式:
睡眠模式(Bus-Sleep Mode)
网络模式(Network Mode)
预睡眠模式(Prepare Bus-Sleep Mode)
其中网络模式有三个状态:
帧重复状态(Repeat Message State)
正常运行状态(Normal Operation State)
准备睡眠状态(Ready Sleep State)
每个模式下帧的发送情况如下:任何状态下都可以接收网络管理帧,只有在网络模式下才能接收应用帧
3.1 睡眠模式(Bus-Sleep Mode)
为了降低汽车的功耗,当网络上没有信息交互时,网络将进入睡眠模式。该模式下,所有节点不发帧(网络管理帧和应用帧)。ECU会将CAN收发器设置成睡眠模式,并激活相应的唤醒机制。
ECU 上电后默认进入睡眠模式。
在睡眠模式下,有如下两个条件使得网络进入网络模式:
接收到其他节点的网络管理帧(Passive Wake-up)
主动请求唤醒网络(Active wake up)
3.2 网络模式(Network Mode)
网络模式下,ECU处于信息交互阶段,可以正常的收发应用帧。ECU上的CAN收发器处于正常工作状态。
网络模式包含三个状态:
帧重复状态(Repeat Message State)
正常运行状态(Normal Operation State)
准备睡眠状态(Ready Sleep State)
当网络从其他模式转移到网络模式时,默认进入帧重复状态。 当ECU进入网络模式后, NM模块要启动一个网络管理超时定时器(T_NM_TIMEROUT)。每次成功接收或发送网络管理帧时刷新该定时器。
从睡眠模式进入网络模式后,要在T_WakeUp时间内发出网络管理帧。
3.2.1 帧重复状态(Repeat Message State)
当ECU从睡眠或预睡眠进入到网络模式后,帧重发状态保证了自己可以被其他节点发现。此外,也使得网络上的节点在一定时间(T_REPEAT_MESSAGE)内保持激活状态。该状态可用于检测网络上存在的节点。
在该状态下,ECU要周期性地向外发送网络管理帧。根据进入该状态的条件不同,发送网络管理帧的周期也不同。
快速模式:当进入帧重复状态的条件是网络请求(自身条件满足)或者重发请求(自身请求重发)。也可以叫做主动进入帧重复状态。这时,ECU要立即发出规定数量(N_ImmediateNM_TIMES.)的网络管理帧,并且发出第一帧的时间越快越好。发送周期按照T_NM_ImmediateCycleTime。发完这些规定数量的帧后,发送周期换成T_NM_MessageCycle。并且,如果进入条件是自身请求重发时,发送的网络管理帧要置为重复帧标志位。如下图:
常速模式:当进入帧重复状态的条件是接收到网络管理帧或者帧重复请求位(Repeat Message Request Bit Indication)。也可以叫做被动进入帧重复状态。这时,ECU以正常的周期T_NM_MessageCycle发送网络管理帧。如下图:
进入Repeat Massage State后必须在T_START_NM_TX时间内发出第一帧网络管理帧。第一个网络管理帧成功发出后,应用帧要在T_STARTx_AppFrame时间内发出。
在此状态下,每次发生T_NM_TIMEROUT超时,都要重置这个时间。
ECU会在T_REPEAT_MESSAGE时间内保持为Repeat Massage State。过了这个时间后,ECU要离开重复帧状态。离开此状态后,如果有请求网络,则进入正常运行状态(Normal Operation State);如果有释放网络,则进入准备睡眠状态(Ready Sleep State)。离开后,要清除帧重复请求位(Repeat Message Request Bit Indication)。
3.2.2 正常运行状态
正常运行状态是为了确保在ECU需要网络时,网络一直保持唤醒状态。
在该状态下,ECU会一直以T_NM_MessageCycle为周期发送网络管理帧。同时,当发生T_NM_TIMEROUT定时器超时后,重置该定时器。
在正常运行状态下,当ECU主动释放网络后,转移到准备睡眠状态。
在正常运行状态下,当ECU接收到重复帧标志位(Repeat Message Request Bit Indication)或者自身请求进入重复帧状态后,转移到重复帧状态。
3.2.3 准备睡眠状态
准备睡眠状态下,还有其他节点会发网络管理帧保持网络唤醒,此时ECU处于等待进入预睡眠模式的阶段。
在此状态下,ECU停止发送网络管理帧。当发生T_NM_TIMEROUT定时器超时后(即其他节点没有再发送网络管理帧),ECU进入到预睡眠状态。
在此状态下,如果自身请求网络,ECU进入正常运行状态;如果接收到重复帧标志位(Repeat Message Request Bit Indication)或者自身请求进入重复帧状态后,转移到重复帧状态。
3.3 预睡眠模式
预睡眠模式是为了使网络上的所有节点在进入睡眠模式前有足够的时间停止自身的网络活动。在该模式下,所有节点停止发送网络管理帧和应用帧,总线静默。从网络模式进入该模式时,会启动一个睡眠等待时间(T_WAIT_BUS_SLEEP),当这个时间到后,网络就进入睡眠模式。
在预睡眠模式下,如果ECU接收到网络管理帧或者自身请求网络,ECU会回到网络模式,默认状态是重复帧状态。
3.4 网络请求与释放
网络请求: 当ECU需要总线通信时,它会调用CanNm_NetworkRequest请求网络;
网络释放: 当ECU不需要总线通信时,它会调用CanNm_NetworkRelease释放网络。
触发这两个动作的条件由客户需求决定。
4 网络管理帧
一般情况下,网络管理帧长度为8个字节。这8个字节的内容如下:
其中,byte0的内容是节点ID;byte1的内容是网络控制信息;byte2~byte7是用户数据。
4.1 节点ID
节点ID一般是网络管理帧ID的低8位。
4.2 网络控制信息
bit0: 默认值是0, 当ECU是主动请求进入重复帧状态时,要把这一位置为1,直到离开重复帧状态。
bit4: 当ECU是主动请求网络而进入重复帧状态时,该位为1;当ECU是接收到其他节点的网络管理帧而进入重复帧状态时,该位为0。
网络管理帧的长度和内容都是可以配置的。