1、概述
AUTOSAR网络管理是对整车控制器状态的管理。
2、工作模式的切换
1、AUTOSAR网络管理
AUTOSAR网络管理:是控制ECU工作模式状态的切换,比如网络状态、预睡眠模式、睡眠模式。
2、AUTOSAR如何切换工作模式的状态:
1、 当ECU处于睡眠模式或预睡眠模式时,接收到网络管理报文(NMF)或网络请求时,ECU进入网络状态;
2、 当ECU被唤醒后,进入网络状态。
首先,进入repeat模式,利用定时器,重复唤醒所需要的ECU;
其次,如果有需求,被唤醒的ECU进入Normal模式,既可以发送和接收NMF,又可以发送App Frame。如果没有需求,被唤醒的ECU进入Ready模式,不发送NMF可以接收NMF,也可以发送APP Frame;
最后,当所有的网路节点都不发送NMF,并且持续2s(主机厂规定的时间),进入预睡眠模式。
3、 进入预睡眠模式后,等待TWBS时间后且无唤醒,进入睡眠模式;
3、模式说明
3、AUTOSAR模式说明
3.1、睡眠模式、预睡眠模式
1.1、唤醒方式
主动唤醒:ECU本身有需求时,收到NMF,并且发送NMF的时间早于发送App Frame,比如KL15上电,定时器,传感器。(主动设置或者通过人的操作硬件,进而被设备感知)
定时器:节点休眠前设定的时间,比如:每2h节点主动醒来;
传感器:脚踢门功能。脚踢后备箱,后备箱对应控制器主动唤醒网络,进而执行后备箱开启功能。
被动唤醒:收到其他节点的有效网络管理报文的网络请求。
App Frame无法唤醒的原因:
因为睡眠模式和预睡眠模式状态下,不接收和发送App Frame(但是CAN总线已接收,只是无法进入应用层,被CAN控制器里的过滤器过滤了),所以APP Frame无法唤醒。
App Frame发送的时间:CANStartAPPTime
3.2、网络模式
1、Repeat Message模式
分为两个子状态:快速发送状态、正常发送状态。
快速发送状态:为了快速唤醒有需求的网络,进入Normal Operation模式;
正常发送状态:待快速发送状态结束,进入正常发送状态,然后选择进入Read 2、Sleep模式或者Normal Operation模式。
Normal Operation模式:发送网络管理报文,若是网络管理访问释放,则到Ready Sleep模式;
Ready Sleep模式:不发送网络管理报文,若是接收到网络管理报文,转变为Normal Operation模式;
4、AUTOSAR网络管理模式时间
Repeat Message的时间是用时间卡的,在这个时间内要唤醒的ECU必须醒;
它的快速发送状态是用次数卡的,其余时间是正常发送状态。
序号 | 时间参数 | 描述 | 测试方法 | 时间 |
---|---|---|---|---|
1 | T_Wakeup | 从睡眠模式到网络模式,(上位机)发送NM报文的时间 | 唤醒源的时间 | 100ms |
2 | T_START_NM | 从睡眠模式到网络模式,DUT发送的第一帧NM报文 | 捕获到DUT发送第一帧NM报文(进RMS) | 50ms |
3 | T_STARTTx_AppFrame | 成功发送第一帧网络管理报文后,开始发送应用报文的最大时间间隔 | 第一帧NM报文发送后,捕获App报文的时间() | 20ms |
4 | T_NM_MessageCycle | NM报文的时间周期 | 两帧NM报文的时间差 | 500ms |
5 | T_NM_ImmdeiateCycleTime | 快速发送子状态下,NM报文发送周期 | 两帧NM报文的时间差(本地唤醒,进RMS) | 20ms |
6 | N_ImmediateNM_TIMES | 快速发送子状态下,以周期T_NM_ImmediateCycleTime = 20ms发送的NM报文数量 | 捕获到NM的次数 | 5次 |
7 | T_REPEAT_MESSAGE | 网络上的其他节点可以通过接受网络管理报文来唤醒的最小时间 | 第一帧NM报文发送的时间到最后一帧“RMS Flag=0”NM报文 | 1500ms |
8 | T_NM_TIMEOUT | 只要节点进入网络模式并启动此定时器。当此定时器到期时,节点将进入预睡眠模式 | 最后一帧NM报文停发的时间(可能还要加上一帧网络管理报文的时间,因为可能周期没到,有误差,进RSS状态) | 2000ms |
9 | T_WAIT_BUS_TIMEOUT | 确保所有的节点时间停止其网络活动定时器 | 最后一帧APP报文停发的时间(进PBM状态) | 5000ms |
5、状态迁移图
BSM状态下,检查没有报文,且不能被APP报文唤醒;
RMS状态下,检查RMS Flag。若是本地唤醒检查立即发送的次数以及周期;
NOS状态下,检查NM报文周期以及APP报文;
RSS状态下,没有NM报文,存在APP报文;
PBS状态下,没有报文(NM报文和APP报文)。
注意:信号KL15和硬线KL15是不同的,信号KL15是有误差的,硬件KL15可以忽略不计。
2、远程唤醒(没有本地唤醒的参与):
ECU首先被唤醒,进入RMS对ECU进行一个唤醒,等待一个CanNMRepeatMessageTime时间,若没有本地唤醒,那么ECU直接进RSS状态,等待NMTimeoutTimer进入预睡眠,等待CanNMWaitBusSleepTime睡眠。
CanNMRepeatMessageTime如何测试?
捕获到的报文RMS Flag为1的时间 + (第一个RMS Flag为0-最后一个RMS Flag 为1的时间)。
第二个时间是考虑到:可能会有报文周期没有到,发送失败的报文时间,但是没有在RMS中体现,
NMTimeoutTimer如何测试?
如何判断进图PBM状态
假设等待2秒,从RSS 到PBM 。从RMS状态起始时间到进入PBM2s之内,报文停止发送都是正确的。可能会小于2s,因为报文可能在1.98s发送报文,但是报文的时间周期没到,所以发送不出来。在1.98s已经停发,所以在2s减去NM周期到2s内都是正确的。
最后一帧网络管理报文的时间到最后一帧APP Frame的时间。但是若是最后一帧APP Frame周期未到,没有发出来,这段时间应该怎么统计?
CanNMWaitBusSleepTime:该时间段已经没有报文,所以用电压判断电平从2.5V到1.5V时间或者电流。
先远程唤醒,后续有本地唤醒的需要。
ECU首先被唤醒,进入RMS对ECU进行一个唤醒,等待一个CanNMRepeatMessageTime时间,CanNMRepeatMessageTime期间有本地唤醒,那么ECU进入NOS状态,若本地唤醒结束,则直接进入RMS状态(针对硬线信号误差忽略不计,信号模拟要计算误差),等待NMTimeoutTimer进入预睡眠,等待CanNMWaitBusSleepTime睡眠。
RMS状态下 的立即发送模式,只有在睡眠或预睡眠下,直接由本地唤醒才会进入。
6、程序编写思路
1、复位环境和参数:每到一个状态进行,环境和参数的初始化相关变量;
2、进入一个状态,统计报文;
3、捕获唤醒源;
4、捕获NM报文;
5、停止捕获报文(状态到期,到期之前进入下一个状态);
6、分析报文
进行下一个状态。