CANoe:第5个仿真工程:仿真+测试

CANoe-第2个仿真工程-XVehicle—2 Panel设计(操作) 本文是详细的Xvehicle工程Panel设计的详细操作步骤,如果要了解相关思路或原理请查看CANoe-第2个仿真工程-XVehicle—2Panel设计(原理,思路)_lamanchas的博客-CSDN博客 本文内容来自于《CANoe开发从入门到精通》。 目录 关键步骤概述 控件的图片 Step1 添加系统变量 Step2 添加Control面板 2.1 创建面板 2.2 添加GroupBox 2.3 引擎开关控件 (引擎控制模块) 2.4 车速控制滑动条(引擎控制模块) 2.5 左 阅读详情

目录

工程背景

工程目的

报文发送情况

工程实现

工程步骤概述

1 测试方法分析

1-1 检测报文周期

1-2 检测报文长度DLC

1-3 功能测试

1-4 检测未定义报文

2 添加Test Module

2-1创建测试环境

 2-2 插入CAPL Test Module

3 CAPL编写测试用例

 3-1 测试模块入口函数MainTest

3-2 CAPL测试用例——检测报文周期

3-3 CAPL测试用例——检测报文长度DLC

3-4 CAPL测试用例——检测未定义报文undefined msg

3-5 CAPL测试用例——功能测试

4 工程运行测试

 5 故障注入

5-1 系统变量控制报文发送

5-2  IG节点发送自定义报文

 6 测试报告


工程背景

本工程主要目的是: 基于第3个仿真工程, 熟悉CANoe的报文测试功能。

工程目的

本工程将围绕CAN总线中的报文,在Test Module中实现测试功能。主要包括:

  1. 检测周期性报文的周期
  2. 检测报文的长度
  3. 检查网络中是否有未定义的报文
  4. 简单的功能测试:通过修改相关系统变量的数值,模拟真实测试环境的操作,最后检验总线上的信号数值的改变。
  5. 生成测试报告

报文发送情况

第3个仿真工程报文发送与接收情况如下:

报文的相关属性整理如下表:

报文中的信号属性如下表:

 

工程实现

工程步骤概述

本章实例基于第12章的仿真工程,为了便于区别,需要将原工程的文件夹复制并 名为Vehicle_System_Simulation_Test, 工程名称也另存为Vehicle_System_CAN_Test.cfg, 在该工程文件夹下创建一个名为Testmodul的文件夹,用于存放相关的测试代码。

接下来,将在此基础上添加测试模块及故障注入面板等。

工程包括以下几个关键步骤:

  1. 测试方法分析
  2. 添加Test Module,
  3. CAPL测试用例编写,
  4. 运行工程,运行测试用例。
  5. 故障注入,运行测试用例。
  6. 查看测试报告。

1 测试方法分析

本工程的目的是分别测试不同报文的发送周期、报文长度DLC;功能测试(检测信号值是否在期望的数值范围内 );未定义报文。

1-1 检测报文周期

检测报文周期的方法是划定某一段特定的时间,选取该时间段中第一条待测报文作为起始时间戳,观察此待测报文后续重复的时间间隔。

TSL函数——检测函数

检测函数1:

ChkStart_MsgAbsCycleTimeViolation ( Message aObservedMessage,duration aMinCycleTime, duration aMaxCycleTime)

函数功能:观察总线周期性报文aObservedMessage的每次出现,如果该报文的间隔不符合规范要求,则会触发一个代表异常出现的特殊事件。

返回值:>0,返回一个IDaCheckedId,即观察待测报文的事件;=0报错。

TSL函数——状态报告函数

状态报告函数1:long ChKQuery_NumEvents(dword aCheckId) 

函数功能:查询该时间段内异常出现的特殊事件的个数

状态报告函数2:double ChkQuery_StatProbeIntervalAvg(dword aCheckId)

返回该时间段内,该报文的平均周期间隔时间

状态报告函数3: double ChkQuery_StatProbeIntervalMin(dword aCheckId)

返回该时间段内,该报文的最小周期间隔时间

状态报告函数4: double ChkQuery_StatProbeIntervalMax(dword aCheckId)

返回该时间段内,该报文的最大周期间隔时间

TSL函数——检测控制函数

检测控制函数1: long ChkControl_Destroy(Check aCheckId)

用于测试结束时,销毁该事件对象aCheckId,释放资源。返回0操作成功,<0报错。

1-2 检测报文长度DLC

函数:

  • 状态报告函数 ChkQuery_NumEvents

  • 检测控制函数 ChkControl_Destroy

  • 检测函数:dword ChkStart_InconsistentDLC(Message aMessage,char [] aCallback)

    • 检测发送到总线上指定报文长度是否与DBC数据库中的定义一致

    • aMessage待测报文;char [] aCallback回调函数名,可选参数

    • 返回值:>0:返回一个事件对象aCheckId;=0报错

1-3 功能测试

功能测试用过CAPL程序逻辑来设置某信号的数值,然后使用ChkStart_MsgSignalValueInvalid函数来检测信号值是否在期望的数值范围内。

dword ChkStart_MsgSignalValueInvalid (Signal aObservedSignal,double aMinValue, double aMaxValue, Callback aCallback)

函数参数:待测信号,必须是定在DBC中的信号,最小信号值,最大信号值,回调CAPL函数名,可选。

返回值:返回一个事件对象aCheckId,即检测未定义报文的事件

1-4 检测未定义报文

检测函数:dword ChkStart_UndefinedMessageReceived (char [] CaplCallback)

作用:观察当前总线上是否有未定义的报文

返回值:>0:返回一个事件对象aCheckId,即待观测报文的事件;=0报错。

状态报告函数:long ChkQuery_EventMessageId (dword aCheckId)

作用:返回触发该事件的报文的MessageId

返回值:>0返回触发该事件的报文ID;<0报错。

2 添加Test Module

2-1创建测试环境

创建测试环境,命名为NetworkTester。

 2-2 插入CAPL Test Module

插入CAPL Test Module,并配置此模块Configuration对话框

 配置Module的Name为:Network Tester,在TestModule文件夹下创建CAPL文件NetworkTester.can

VN56x0硬件+CAPL脚本:5分钟快速上手CANoe以太网仿真测试(从新建工程到TCP通信成功) 本文详细介绍了如何使用VN56x0硬件和CAPL脚本在5分钟内快速搭建CANoe以太网测试环境,实现TCP通信成功。从工程创建、硬件配置到IP栈设置和CAPL脚本编写,提供了实战验证的极简流程和常见问题解决方案,帮助工程师高效完成以太网仿真测试。 阅读详情

相关推荐

CANoe与Matlab/Simulink联合仿真

当技术猿还在公司加着班的时候,突然接到老大任务,使用CANoe的CAPL语言仿真带有复杂算法的ECU节点。当下技术猿就爽快答应,因为知道CANoe是集仿真、测试、诊断、分析于一体的多功能软件,其CAPL语言可以模拟ECU节点,并在网络环境中与其他节点交互。 说干就干,撸起袖子加油干。经过对CAPL语言的一夜研究,这是个什么XX玩意儿,仿真算法通过CAPL语言真是太难实现了。 贼尴尬,完不成任务又不能加鸡腿了。想到这,技术猿就怒从心头起,恶向胆边生,决定忽悠一把老大,看看有没有可以替代CAPL编.

怿星科技的博客 1万+

pyqt5通过CANoe COM Server来操作CANoe仿真工程

pyqt5通过CANoe COM Server来操作CANoe仿真工程

jianxuezixuan的博客 1769

一步一步动手实现CANoe例程

一步一步动手实现CANoe例程

jianxuezixuan的博客 5317

Canoe仿真工程创建及测试

当一个信号的数据长度不超过 1 个字节(8 位)时,Intel 与 Motorola两种格式的编码结果没有不同。链接猪尾巴,一头链接副驾,一头链接can盒,can盒一般连三个口(BodyCan、InfoCan)定义了线性转换规则,可以从原始值(比如车速km/h)转换为物理值(报文中填充的数值),反之亦然。obd线一头链接车机,另一头链接电脑,直接把开发给的软件包推到车机上(准备好环境)当一个信号的数据长度超过 1 个字节(信号的起始位就是低字节的低位。信号的起始位就是高字节的低位。

fire21fly的博客 1044

CANoe仿真工程开发

CANoe仿真工程开发

jianxuezixuan的博客 2340

CANoe-第3个仿真工程-总线仿真- 3-2 工程实现

目录 6 自动序列 Automations Sequences 7 分析窗口 7.1 Graphics窗口 7.2 State Tracker窗口 ​7.3 Data窗口 8 Trace窗口与Logging 8.1 Trace窗口 8.2Logging窗口 9 Desktop布局 9.1 CAN布局​ 9.2 Analysis布局 9.3 Configuration布局​ 9.4 Trace布局 10 工程运行测试 10.1 Automation Sequences驱动...

lamanchas的博客 5214

CANoe自动化测试的配置方式总结分析(一)——CAPL编程方式

近期在做的一个自动化测试项目,尝试了一种以前没用过的测试配置方式,感觉效果还不错。然后又回顾了一下以前用过的其他几种方式,利用周末时间总结分享出来,希望对相关领域的网友有所帮助。本文参考其中一项典型的测试来做一个例程,首先讲解第一种实现方式,主要讲解了例程的功能和框架,展示了实现该方式的详细代码和实际运行效果,最后分析了这种配置方式的特点以及适用场景。

Mr.Cssust的博客 6828

Python控制CANoe使能TestCase

介绍Python使能/失能CANoe工程的测试用例

车载网络测试 1723

CANOE-介绍 @006-保存日志和保存测试报告

弹出配置按钮配置,日志保存地址和文件名字,名字基于CANOE的提供的一些变量和自己工程酌情设置。////测试日志保存为为 .\Log\testCaseName【时间】.html。2、基于界面的保存相对死板,运行一次保存一次,但是基于CAPL脚本的保存比较灵活,但是由于版本不同会有一些限制。3.2 基于界面保存报告,使用testCase 模块自动运行就可以保存到指定界面内。进入如下界面选择日志模块,鼠标双击 类似“等号”的按钮,激活保存日志功能。

沿流不止 6632

从零开始学习CANoe(一)—— 新建工程

从零开始学习CANoe (一)—— 新建工程、 这个系列会包含各种CANoe/CAPL的相关知识 包括dbc的设计、panel的设计、trace分析,系统环境变量、CAPL脚本编写等

蚂蚁小兵 4万+

手把手教你用分立元件搭建自举电路:解决高端MOS驱动难题

本文详细介绍了如何用分立元件搭建自举电路,解决高端MOS驱动中的栅源极电压不足问题。通过面包板实验,逐步讲解二极管、电容等关键元件的选型与电路搭建,提供波形调试和常见问题排查方法,帮助工程师提升开关电源和电机驱动等应用的效率与可靠性。

weixin_30555125的博客 145

别再只调API了!深度拆解Dify文件上传的两种传参方式(sys.file vs. inputs.upload_file)

本文深度解析Dify平台文件上传的两种传参方式——sys.file与inputs.upload_file,详细对比其设计原理、技术实现及适用场景。通过代码示例和性能分析,帮助开发者在本地大模型应用中做出精准技术选型,提升文件处理效率与系统稳定性。

weixin_29063979的博客 263

基于车辆运动学的规划算法 - Hybrid A*/ State Lattice Planning (前置知识:自行车模型、Dubins、Reeds Shepp、多项式曲线、螺旋曲线)

本文将按顺序讲解基于车辆运动学的规划算法,以及需要的前置知识:自行车模型、Dubins和Reeds Shepp曲线、多项式曲线和螺旋曲线

BigDavid123的博客 4848

别再只用CANape测数据了!手把手教你用ASAP2 Studio编辑A2L文件(附MAP文件更新避坑指南)

本文深入探讨ASAP2 Studio在ECU开发中的高阶应用,特别是如何利用其编辑A2L文件并同步更新MAP文件,提升测量标定效率。文章详细解析了ASAP2 Studio的双向同步能力、MAP文件更新全流程及变量管理技巧,帮助工程师避免常见错误,优化工作流程。

weixin_26833939的博客 499

Miniconda3迁移(附图详细过程)

服务器上目录占满,想要将conda迁移到其他目录下的操作方法,详细教程。

2301_77554343的博客 6936

GNSS-RTK/INS紧组合里,那个‘杆臂改正’到底怎么算?一个公式讲清INS与天线位置的关系

本文深入解析GNSS-RTK/INS紧组合导航系统中的杆臂改正(Lever Arm Correction)原理与实现方法。详细介绍了杆臂效应的物理本质、数学建模及误差扰动分析,揭示了IMU与GNSS天线位置关系的核心公式,并提供了工程实现中的常见误区与验证方法。通过Python代码示例和紧组合量测模型处理流程,帮助开发者准确理解并应用这一关键技术。

weixin_33137081的博客 349

Vue3 + uniapp 踩坑:iOS 真机调试一直报错Maximum call stack size exceeded,和(in promise)MiniProgramError err的解决方法

不是你写错代码,是微信开发工具和 iOS 真机调试的兼容问题。开个空项目都报错,勾个设置就没问题,不是你,是工具的锅。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1252

【人工智能】《Deep Dive into LLMs like ChatGPT 》—— Andrej Karpathy 第三阶段:强化学习(Reinforcement Learning, RL)

摘要:强化学习(RL)阶段通过让模型自主生成并验证答案,突破SFT阶段的模仿局限,使其在数学、代码等领域形成独特的推理路径。RL流程包括批量生成解答、自动批改筛选正确路径,并采用PPO/GRPO算法优化模型。模型会自发涌现自我检查、回滚等策略,显著提升正确率(如AIME竞赛准确率从15%升至56%)。与SFT模型相比,RL模型具备主动链式思维、验算能力,响应时间更长但效果更优,形成真正的“思考模型”。三阶段对比显示,RL通过可验证题的对错奖励机制,赋予模型超越人类范式的推理能力。

奶爸的编程之路,也就一周冷个三天 140

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: CANoe测试:CAPL Test Module的2种创建方式
下一篇: CANoe: IL层的简单理解
picoasis
博客等级 码龄14年 908粉丝 188原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

picoasis

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值