文章分为三个部分来
简绍AUTOSAR的网络管理的优点或缺点
AUTOSAR全称AUTomotive Open System ARchitecture(汽车开放系统架构)。有一点需要注意
注意看全称中的英文大写部分,写全称时必须要按照上面的格式写,不能只写首字母大写。
网络管理的定义:指通讯节点之间,睡眠-唤醒-工作之间的模式管理和切换。进一步的理解就是
每个节点内部都有几种不同类型的状态机,分别管理节点在参与通讯时的行为和规范。
AUTOSAR NM是一种分布式直接网络管理。
分布式:是指一条总线上各个节点分离。网络管理也是分布式(即自己管理自己,不直接管理其他节点)
直接网络管理:我的理解就是,网络管理是直接根据网络管理帧携带的信号来管理的。
1:AUTOSAR NetworkManage概述:
网络管理可以分为以下三大模块
时序上如图所示:
图例解析 :在黄色的repeatMessage部分,是NM报文以快速的周期发送5帧(5帧也是通过软件工具配置的参数值,快速周期也是配置的定时器)
节点处于不同模式下,对NM报文和Application报文的收发能力如下表所示:
N:代表不能执行该操作
Y:代表可以执行该操作
总结:
网络管理帧:
网络管理帧TX,只能在网络模式下的的重复模式下(RMS),和正常操作状态(NOS)下可以由节点发送。换个说法,节点只有处于RMS,和NOS状态下,才能发送网络管理帧。
网络管理帧的接收RX:节点处于任何状态下,都必须能够接收网络管理帧。(也可以这么理解,节点在任何状态下都能被NM报文唤醒)
应用报文的发送TX:只有在NM(network Mode),模式下才能发送。唯一的例外是(当节点从NM模式跳转到Prepare Sleep Mode)时,如果TX buffer(缓存器中依然有报文未完成发送工作,则在PSM模式下,依然可以发送应用报文)。
应用报文的发送RX:只有在NM(network Mode),模式下才能接收。
- 网络模式(Network Mode),简称NM
- 预睡眠模式 (Prepare Sleep Mode) 简写大写英文字符PSM(停止应用报文的接收和发送)
- 总线睡眠模式 (Bus-Sleep Mode) 简写BSM
其中网络模式中又分为三个子状态
- 重复消息状态(Repeat Message State),RMS
- 正常运行状态(Normal Operation State),NOS
- 准备睡眠状态(Ready Sleep State) , RSS(停止本模块网管报文的发送)
总结如下:网络管理帧无论何种情况下都能被接收,可以说网络管理帧到哪都吃得开。
预睡眠状态下,表明节点已经有点累,暂时只能接收网络管理帧,不能发生网络管理帧,也不能接收和发送应用帧
重复信息状态下,所有帧(包括应用报文)都能被发送和接收(这一点比较关键,也是容易混淆的点)重复状态下是指网络管理帧是以较快的速率连续发送若干帧信号。
正常运行状态下,网络管理帧以较慢的速率发送。
准备睡眠状态下,网络管理报文发送被禁止,只能接收网络管理报文。网络管理报文的接收和发送依然进行。
睡眠状态下,网络管理报文能被接收,但是不能发生网管报文,也不能收发应用报文
(测试时可以根据:“发送应用报文,查看被测样件是否产生ACK应答”)
2:应用层调用的两个接口和状态
AUTOSAR网络管理节点内部有两个状态,c,当节点的应用层需要使用总线进行通讯的时候,会调用接口使得节点进入请求状态,当应用层没有通信需求的时候,调用接口使得节点进入释放状态。
规范并没有规定,应用层何种情况下,需要调用接口进入被请求状态或被释放状态(只强制规定了,初始化上电的过程中,必须强制进入relaesed模式,其他状态下,由制造商自行编写程序判断是否需要进入某一种状态)
需要注意的是,即使节点当前处于释放状态,节点的通讯依然有可能是处于开启状态,因为网络上的其它节点有可能正在请求总线。所以这个状态代表的是节点应用层是否有通信需求,并不代表总线开启或关闭。有通讯需求的时候处于请求状态,无通讯需求的时候处于释放,但总线是否在通讯不仅仅取决于当前节点自己,而是取决于网络上的所有节点。
总结:
节点上电初始化后默认进入释放状态。
网络请求: 当ECU应用层需要总线通信时,它会调用CanNm_NetworkRequest请求网络;
网络释放: 当ECU应用层不需要总线通信时,它会调用CanNm_NetworkRelease释放网络。
触发这两个动作的条件由客户需求决定。
当ECU已经处于released 时,但是还是在通讯时,说明总线上还有其他节点处于requested状态。
4:网络管理帧的结构:
只有Byte0和Byte1被使用
Byte0:代表的是,节点源地址(Source Node Identifier),是专门指,发送该NM帧的节点的源地址。
Byte1:包含的是一些控制信息和控制命令,具体命令如下:
Bit 0: Repeat Message Request
- 0: Repeat Message State not requested
- 1: Repeat Message State requested
该位置1的时候表示当前节点请求所有节点进入报文重复阶段。(也就是接收这条网络唤醒报文的所有节点,都要进入报文重复阶段) -
Bit 3: NM Coordinator Sleep Bit
0: Start of synchronized shutdown is not requested by main coordinator
1: Start of synchronized shutdown is requested by main coordinator
该位置1时表示主协调节点(发送节点)请求(接收NM帧的节点)开始进入同步休眠。即这个位置1后,发送NM的节点自身也会开启一个计时器,并且同步要求接收节点也开启计时器。两个节点在计时器计时结束以后,同步进入睡眠状态。 -
Bit 4 Active Wakeup Bit(当节点被本地唤醒时,该bit=1)
0: Node has not woken up the network (passive wakeup),即当前节点收到网络管理报文,被其它节点唤醒。(即网络唤醒)
1: Node has woken up the network (active Wakeup),即当前节点主动唤醒网络(通过Request),亦称本地唤醒。 -
本地唤醒:如KL15唤醒,或按键唤醒,或者是定时自动唤醒
-
Bit 6 Partial Network Information Bit (PNI) Partial Network Information(PNI:子网网络管理信息位)
0: NM PDU contains no Partial Network request information
1: NM PDU contains Partial Network request information
该位表示该条网络管理报文中是否包含部分网络激活信息。详细解释就是,被唤醒的节点,充当网关的作用,唤醒此网关时,需要同步唤醒网关下所处的另外一条CAN网络。又比如比如很多CAN总线上的节点,是充当了LIN网络主节点的作用。我们唤醒此节点时,也就是唤醒了LIN网络。这两个位是相关的请求位。
5:网络节点之间的相互转换
模式切换规律:
分别以3个Mode为例,来讲解。其中NM有拆分为3个子状态
1:BSM模式下,可以直接跳转至NM下的RMS状态,(记住这是BSM唯一能够跳转到的一种状态),从外在看,就是存在本地唤醒,或远程报文唤醒。从应用层看,就是存在通讯的需求
注意:BSM不能直接跳转到,除RMS状态外的任何一种状态。如果能跳转说明存在BUG
2:RMS子状态下,
RMS->NOS,即在相关定时器,结束定时时和其他条件符合时(后面补充哪些计时器和条件)。自动进入NOS阶段。
3:RMS->RSS,即在相关定时器,结束定时时和其他条件符合时,节点会进入RSS状态,自身网管报文停止发送,能接收其他网管报文,正常发送APP报文。
6:网络管理的时间参数和配置参数
6.1 时间参数
T_STARIT_APPFrame,时间和初始化唤醒的时间之间的冲突,这里的初始化唤醒,是指报文中的信号发出有效值(比如,发出时刻下实际的发动机转速),故在实际完成初始化之前,报文中的信号可以发送初始默认值
2:表格里没有列举的一种时间,即在首诊NM报文发出后,必须在规定时间内,发出所有应用报文。