Autosar CAN 网络管理测试用例设计(8)——RMS状态下NM报文周期和数量测试

AUTOSAR NM报文周期测试

📘前言

🍅 本地唤醒需求如下:
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报文

在这里插入图片描述

在这里插入图片描述

🌎总结

23

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18
AUTOSAR网络管理测试中,测试用例设计测试方法通常围绕网络管理NM)的状态机行为、通信行为、唤醒与睡眠机制、报文发送周期与格式、状态切换逻辑等核心功能展开。以下是一些典型的测试用例设计思路测试方法: ### 3.1 测试用例设计要点 1. **验证ECU是否仅能被外部网络管理报文唤醒** - 在测试中模拟非网络管理报文CAN帧,观察ECU是否保持睡眠状态,仅在接收到网络管理报文时唤醒。 2. **验证ECU能否被外部网络管理报文正确唤醒** - 发送合法的网络管理报文后,检查ECU是否在规定时间内进入正常通信状态。 3. **检查唤醒时间是否符合要求** - 使用CANoe等工具测量从唤醒事件触发到ECU开始发送网络管理报文的时间间隔,验证是否在规范允许范围内。 4. **检查RepeatMessage状态下的网络管理报文发送次数周期** - 模拟ECU进入RepeatMessage状态,验证其发送网络管理报文的次数周期是否符合配置参数。 5. **检查ReadySleep状态下的应用报文发送周期** - 在ReadySleep状态下,验证ECU是否停止发送应用报文或仅在特定条件下发送。 6. **验证ECU能否从RepeatMessage状态正确切换到ReadySleep状态** - 在RepeatMessage状态持续一段时间后,模拟无外部网络管理请求,观察ECU是否能自动切换到ReadySleep状态。 7. **检查NM bit位的设置是否符合规范** - 在RepeatMessage状态下,验证网络管理报文中特定bit位(如“Repeat Message Request”位)是否被正确设置。 8. **验证ECU在接收到持续网络管理报文时是否保持在ReadySleep状态** - 模拟外部持续发送网络管理报文,验证ECU不会因重复接收到报文而错误切换状态。 9. **检查ReadySleep状态的timeout值是否符合配置** - 测量ECU在ReadySleep状态下进入睡眠前的等待时间,确认是否符合NM超时配置。 10. **验证ECU在网络管理关闭时是否能正确进入睡眠状态** - 停止发送网络管理报文后,观察ECU是否在规定时间内进入睡眠状态,不再发送任何报文。 ### 3.2 测试方法与工具 - **CANoe仿真环境**:可以用于构建虚拟ECU节点,模拟网络管理行为,无需依赖真实硬件。通过CAPL语言编写测试脚本,实现自动化测试流程[^1]。 - **CAPL脚本编写**:使用CAPL编写测试用例,控制测试节点发送特定报文,并监听被测ECU的响应行为。 - **自动化测试框架集成**:将测试用例整合进自动化测试框架,实现批量执行与结果分析。 - **报文监控与时间测量**:利用CANoe的时间戳功能,测量ECU状态切换、唤醒、报文发送等关键时间点,验证是否符合系统规范。 ### 3.3 示例测试脚本(CAPL) ```capl variables { message nmMessage; } on start { setTimer(tWakeUp, 1000); // 1秒后发送唤醒报文 } timer tWakeUp { // 发送网络管理报文唤醒ECU nmMessage.id = 0x500; nmMessage.dlc = 8; nmMessage.byte(0) = 0x01; // NM bit位设置 output(nmMessage); write("NM message sent to wake up ECU"); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值