- 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
- 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
- 🍅 玩转CANoe,博客目录大全,点击跳转👉
📘前言
🍅 本地唤醒
需求如下:
1、网络处于睡眠状态,运行CANoe;
2、触发DUT本地唤醒事件,DUT正常通信;
3、检测DUT发送的前10帧NM报文周期NmImmediateNmCycleTime;
4、检测DUT发出的第10帧后的NM报文周期NmMsgCycleTime。
🍅 被动唤醒需
求如下:
1、网络处于睡眠状态,运行CANoe;
2、 仿真发送有效的NM报文,唤醒网络;
3、检测DUT发送的3帧NM报文周期NmMsgCycleTime;
📙网络管理状态机
- 不同的项目网络管理状态机会有差异,下图仅供参考。
Repeat Message Timer
是AUTOSAR网络管理中的关键定时器,用于控制节点在进入重复报文状态(RMS)后的行为。RMS时间不同项目需求不用,本项目需求为3000ms ,偏差为±50ms。- 如下图所示:DUT由两类方式进入RMS状态
- NM_02 : Remote Wakeup 也就是被NM报文唤醒,属于被动唤醒,DUT将以某个周期发送指定帧数的NM报文,本项目的DUT将以1000ms周期发送3帧NM报文,也就是3000ms。如果
- NM_03 : Local Event Wakeup 也就是本地条件唤醒,DUT将以另一种方式发送NM报文表示被唤醒(即 Immdiate Transmit),DUT会先快速周期的发送指定帧数的NM报文,然后再以正常周期发送报文。本项目的DUT将以20ms周期快速发送10帧NM报文,然后再以1000ms周期发送2帧NM报文。
🍅 用例设计代码
- 因为工程大,代码关联多,这里只列出测试用例的代码,不展开步骤/函数内部的具体实现,读者可以参考下设计思路。
- DUT_Check_In_BSM_Status:通过判断是否收到DUT发送的App和NM报文,来判断DUT是否处于BSM状态.
- Trigger_WakeUp: 唤醒DUT的方式有很多,通过type变量选择唤醒方式。
- Test_Flag_Init:初始化一些变量,这些变量会开始在on message 中接收数据
- NM_Cycle_Test:用于判断测试结果。
testcase TG1_TC14_NM_Cycle_Test(int type)
{
TestStep_i=0;SubtestStep_i=0;
testGetCurrentTestCaseTitle(Title,elcount(Title));
Start_Logging("Logging",loggingStoragePath, "",Title,TraceType,50);
TestStep_Descriable(TestStep_i,SubtestStep_i,"检测Dut进入BSM状态");
DUT_Check_In_BSM_Status(g_NM_Tx_ID,g_TX_APPMsgID,2000);
Test_Flag_Init();
Trigger_WakeUp(type);
testWaitForTimeout(T_Repeat_Message_Timer*0.5);
UnTrigger_WakeUp(type);
testWaitForTimeout(T_Repeat_Message_Timer);
NM_Cycle_Test(type);
NM_Check_Flag = 0;
DUT_Wait_To_BSM_Status();
Stop_Logging("Logging",1000);
}
testfunction NM_Cycle_Test(byte type)
{
if(type == WakeUpBy_NM)
{
NM_Cycle_Check(T_Normal_NM_Cycle);
}
else if(type == WakeUpBy_Local)
{
NM_Cycle_Immediate_Check(T_Immediate_NM_Cycle,T_Normal_NM_Cycle);
}
else
{
NM_Cycle_Immediate_Check(T_Immediate_NM_Cycle,T_Normal_NM_Cycle);
}
}
🍅 测试结果展示
- 由本地条件主动唤醒,DUT将通过NM_0路线进入到RMS阶段,先通过Immdiate Transmit方式快速以20ms周期发送10帧NM报文,然后通过Normal Thansmit的方式以1000ms周期发送2帧NM报文
- 由NM报文唤醒,属于被动唤醒,DUT将通过NM_02路线进入到RMS阶段,并通过Normal Thansmit的方式以1000ms周期发送3帧NM报文
🌎总结
- 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。