1 概述
网络管理是一种为网络组织提供服务的网络综合协议。它是一种分散和直接的网络管理。这意味着每个ECU都传输一个特殊的网络管理消息,该消息只预留给网络管理。
2 状态机
自动存储器NM包括三种操作模式:
下图显示了与API规范有关的UML状态图。与模式变化相关的转换用绿色表示,与错误处理相关的转换用红色表示,可选的节点检测/动态pnc到信道映射相关的转换用蓝色表示。
2.1 Bus-Sleep Mode
单片机上电,调用CanNm_Init()之后会进入此状态。
状态跳转到Network Mode条件:
1)主动唤醒请求:CanNm_NetworkRequest()
2)被动唤醒请求:CanNm_PassiveStartup()
2.2 Network Mode
该网络模式包括以下三种子状态:
2.2.1 Repeat Message
进入Network Mode首先进入此状态,在Repeat Message状态下,节点会周期性发送NM报文,该状态的持续时长是可以配置的。
1)主动唤醒进入此状态,会先快发几帧NM报文,然后以正常周期发生NM报文,到达设置超时时间,进入Normal Operation 状态。
2)被动唤醒进入此状态,会跳过快发阶段,直接以以正常周期发生NM报文,到达设置超时时间,进入Normal Operation 状态。
2.2.2 Normal Operation
节点本地有通信需求时会一直处于Normal Operation状态,在该状态下会周期性的发送NM报文,Normal Operation State的进入路径有:
1)Repeat Message State结束时仍有本地请求
2)Ready Sleep State下有通信需求(Network requested)
此状态跳转至Ready Sleep状态条件:
收到网络释放请求:CanNm_NetworkRelease()
2.2.3 Ready Sleep
在此状态下,根据当前网络请求进行模式跳转。
此状态跳转至Repeat Message状态条件:收到CanNm_RpeatMessagerRequest()请求。
此状态跳转至Prepare Bus-Sleep模式条件:不再收到其它节点的NM报文时,等待NM Timeout Timer超时后跳转到Prepare Bus-Sleep Mode。
2.3 Prepare Bus-Sleep Mode
在Prepare Bus-Sleep模式下,会停发应用报文,但那些已经装填到底层寄存器/buffer等待发送的报文仍然会继续发完,因此,在该模式总线活动最终会恢复平静。
此状态跳转至Bus-Sleep Mode的条件:不再收到其它节点的NM报文时,等待NM Timeout Timer超时后跳转Bus-Sleep Mode。
此状态跳转Repeat Message State条件:
1)接收到主动唤醒请求:CanNm_NetworkRequest()
2)接收到被动唤醒请求:CanNm_PassiveStartup()
3 网络报文格式
下图显示了网络管理PDU的格式,例如8个字节,其中源节点标识符(SNI)位于第一个字节,控制位向量(CBV)位于第二个字节,使用用户数据,并启用部分网络。用户数据范围位于系统字节和PNC位向量之间:
其中Byte1 反应NM控制位,下图描述了控制位向量的格式:
Bit0:重复消息请求位
0:重复消息状态未请求1:重复消息状态请求
Bit1:PN关闭请求位(PNSR)
0:NM消息不包含同步部分网络关闭请求1:NM消息确实包PNC位的同步部分网络关闭请求
Bit3:NM协调器睡眠位
0:主协调器未请求启动同步关闭状态1:主协调器请求启动
Bit4 主动唤醒位
0:节点未唤醒网络(被动唤醒)1:节点已唤醒网络(主动唤醒)
Bit5 位部分网络学习位(PNL)
0: PNC学习不被请求1: PNC学习被请求第
Bit6 位部分网络信息位(PNI)
0: NM PDU不包含部分网络请求信息1: NM PDU包含部分网络请求信息,
Bit2 和Bit7 被保留以供将来扩展
4 主动唤醒及被动唤醒过程NM状态跳转
4.1 主动唤醒NM状态跳转
1)单片机上电,调用CanNm_Init()之后会进入Bus-Sleep Mode
2)ComM模式请求ComM_RequestComMode(FULLCOM),通知NM模式
3)NM模块根据主动唤醒请求调用Nm_NetworkRequest()
4) CanNm模块调研CanNm_NetworkRequest()进入Repeat Message状态
5)Repeat Message State 设定TimeOut超时结束时进入 Normal Operation状态
6)正常工作时会一直停留在此状态
4.2 被动唤醒NM状态跳转
1)单片机上电,调用CanNm_Init()之后会进入Bus-Sleep Mode
2)ComM模式请求ComM_RequestComMode(FULLCOM),通知NM模块
3)NM模块根据被动唤醒请求调用Nm_PassiveStartUp()
4) CanNm模块调研CanNm_PassiveStartup()进入Repeat Message状态
5)Repeat Message State 设定TimeOut结束时进入 Normal Operation状态
6)正常工作时会一直停留在此状态
4.3 休眠NM状态跳转
1)ComM模式请求ComM_RequestComMode(NOCOM),通知NM模式
2)NM模块根据被动唤醒请求调用Nm_NetworkRelease()
4) CanNm模块调研CanNm_Nm_NetworkRelease()进入Ready Sleep状态
5)Ready Sleep状态下设定TimeOut结束时进入 Prepare Bus-Sleep Mode
6)Prepare Bus-Sleep Mode状态下设定TimeOut结束时进入Bus-Sleep Mode
5 不同模式下报文收发情况
AUTOSAR网络管理状态:
1)睡眠模式(Bus-Sleep Mode):NM报文只收不发,APP报文不收不发
2)预睡眠模式(Prepare Bus-Sleep Mode):NM报文只收不发,APP报文不收不发
3)网络模式(Network Mode):
包含3个子状态:
-
重复报文状态(Repeat Message State):NM报文可收可发,APP报文可收可发
-
正常工作状态(Normal Operation State):NM报文可收可发,APP报文可收可发;
-
准备睡眠状态(Ready Sleep State):NM报文只收不发,APP报文可收可发;