0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Simulink Function模块竟然可以这样测

北汇信息POLELINK 2022-08-04 14:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Simulink是美国Mathworks公司推出的一种强大的可视化仿真工具,现已应用到包括汽车、航空、工业自动化等领域。Simulink不仅提供了多种特定功能的模块,还提供Simulink Function,Function Caller等模块,便于用户在开发过程中,定制化一些常用函数,摆脱了Simulink中固有Block的功能限制,有效的提升了开发效率。

这个功能无疑十分强大,但这却给测试工作提出了很大的挑战:受软件开发架构限制,Function的定义可能放置在软件底层,以便于上层软件进行多次调用。但当用户对上层软件的单元层级进行测试时,往往面临着无法调用底层定义的Function的窘态(有枪无弹)。此外,当客户在测试底层单元模块时,由于Function只有定义没有被调用,往往无法对Function的内部逻辑进行测试(有弹无枪)。

针对这两种测试场景,自动化的软件动态测试工具——TPT提供了便捷的解决方案。

poYBAGLrWJmAP1ukAABNdGfGtl4332.png

图1模型

有枪无弹:

顾名思义,空有Function Caller而没有Function。如图1所示,如果要测试Calculate这个单元,这个单元调用了Function,而Function却定义在更底层,针对这种情况,TPT支持函数的插桩,提供Function Caller的接口模拟函数的返回值。

TPT支持函数的插桩,在对这种只有Caller没有Function的层级(如图2)进行测试时,非常高效。在TPT的Platform Configuration中提供了这样的选项:Simulink Functions,如图3:

pYYBAGLrWLyAAfNHAABH-KQYTVE401.png

图2单元模块内部结构

pYYBAGLrWNCAIK0QAAE43T8UauE659.png

图 3 Simulink Functions

回到图4平台配置窗口,加载好模型后 Import模型接口, TPT将以 server形式识别 callFunc函数,如图5。

poYBAGLrWNyAdaDLAAEsUPUT16o404.png

图 4 Import模型接口、参数

pYYBAGLrWOWABevvAADtSP7OhMs583.png

图 5识别callFunc函数

该函数会被直接加载到 Functions中, 以便于在编写测试用例时调用。

pYYBAGLrWPaAZDENAACVshqy1X8003.png

图 6 callFunc被加载到Functions中

可以在 Declaration Editor中添加一个 channel形式的本地变量return_Func模拟函数的返回值,然后编写图 8所示用例来验证:

pYYBAGLrWQKACHVAAACrvmX6XxQ134.png

图 7添加channel本地变量

poYBAGLrWQqASnQ9AADhoN1Ldjk726.png

图 8测试用例

运行结果和信号曲线如下图所示,compare是简单的评估,结果可见模型的输出符合期望,由信号曲线可以观察到local量的值即函数的输出值。

poYBAGLrWRWAFleUAACxagqfYlA845.png

图 9测试结果

pYYBAGLrWR2AN0MLAAEbW0wcis0819.png

图 10 Signal Viewer观测结果

有弹无枪:

上述方法并不能测到函数内部的逻辑,而实际上函数可以定义在模型的底层,如图1所示的模型wind_drag,Function定义在底层,没有对应的Function Caller,这就是有“弹”而无“枪”了。在单元测试阶段想要测试该函数的逻辑,因其没有相关的接口信息,测试工作无疑非常困难。

poYBAGLrWSuAIwWiAABQk6Eh0CY957.png

图 11被测函数逻辑

自动化测试工具TPT提供了m文件的接口,可以在配置测试环境或者测试执行过程中进行一些预处理,这就为测试该函数逻辑提供了绝佳的途径。

pYYBAGLrWTWAW_9nAAEm3ynXg-Q034.png

图 12 TPT提供的m文件接口

此处用m脚本编写一个函数,可以在TPT中实现对Function的调用。该函数主要有两个参数:

参数1:测试层级,可直接用TPT环境变量’${tpt.matlab.block.name}’

参数2:被调函数,例如:' F = wind_drag(Density,Speed) '

可以在 TPT\Platform Configuration\Original Model中可以编写相应的代码来加载m文件,并使用simulink_function_caller函数对模型中的SimulinkFunction进行调用,这无疑大大提升了测试的效率。

pYYBAGLrWa6AGw8iAAB6kUc1hdI655.png

图 13 m文件加载及函数调用

pYYBAGLrWbmARhZ8AABHR8vcXAI545.png

图 14模型中自动配置FunctionCaller

依次在TPT中配置测试环境,导入接口时即可发现模型中出现了Simulink Function调用的相关接口信息。上一步中加载的m文件,实现了自动创建所测Function对应接口信息,以及Function Caller模块的功能,这些新建的模块和Function在同一层级,这样就能够对Simulink Function逻辑进行测试。

poYBAGLrWcKAcHQBAADEYiZv43o099.png

图 15导入接口信息

编写测试用例来测试该函数:

pYYBAGLrWdCAFDyGAADCKZG9TW4717.png

图 16测试用例

该函数是简单的计算风阻的函数,,其中C取0.3,S取2.05,编写评估验证该用例:

poYBAGLrWeOAO_81AACUfm2SMf0956.png

图 17测试评估

测试结果显示模型输出与函数运算结果一致:

pYYBAGLrWfmABNAWAAC4z1MuiCM317.png

图 18测试结果

两者的信号曲线也是完全重合:

pYYBAGLrWgOAXeLBAAFCUCWlQ_k692.png

图 19信号曲线

总结

本文介绍了使用TPT测试Simulink Function模块的两种方案,TPT还支持MATLAB Function的测试。

PikeTec公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林。北汇信息作为PikeTec在中国的独家合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。目前,TPT已被众多国内知名主机厂和零部件企业认可,在新能源(VCU/BMS/MCU)以及ADAS等领域中被广泛应用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TPT
    TPT
    +关注

    关注

    0

    文章

    25

    浏览量

    7363
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MXAM常见问题解答:从配置到报告生成#simulink模型测试 #simulink

    Simulink
    北汇信息POLELINK
    发布于 :2025年11月14日 11:48:38

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    ,生成的HDL代码与目标无关。可以在任何通用FPGA或ASIC上部署该设计。 下面介绍如何在Simulink中创建单精度浮点乘法 直接使用乘法模块即可,并将输入口改为单精度浮点 使用Ctrl + g
    发表于 10-22 06:48

    求助:simulink里面是否有带负端的变压器

    simulink里面是否有每相都带负端的三相变压器,最近做HDT的仿真,simulink里面的三相变压器好像都没有负端,怎么才能用三相变压器像图中这样连接?
    发表于 09-24 09:05

    simulink只要运行就会死机

    在卸载了2345安全卫士之后,电脑就突然黑屏死机,然后再打开电脑,打开simulink后会有照片里的弹窗,就会退出MATLAB,之后再打开simulink只要运行就会死机,怎么解决(求高手解疑)
    发表于 07-24 17:11

    在IAR Arm开发工具链中--function_sections编译选项的使用

    本文主要介绍在IAR Arm开发工具链中不修改源代码的情况下使用‑‑function_sections编译选项把函数放到单独的section。
    的头像 发表于 06-13 13:53 1508次阅读
    在IAR Arm开发工具链中--<b class='flag-5'>function</b>_sections编译选项的使用

    UPS(不间断电源)故障频发?原因竟然这样

    UPS(不间断电源)故障频发?原因竟然这样
    的头像 发表于 04-19 13:53 1359次阅读
    UPS(不间断电源)故障频发?原因<b class='flag-5'>竟然</b>是<b class='flag-5'>这样</b>

    如何实现MC33774IC在Simulink环境中使用基于模型的设计?

    我想熟悉如何实现MC33774IC 在 Simulink 环境中使用基于模型的设计。 尽管 MATLAB 提供了一些示例文件,但它们似乎是最终版本。要更深入地了解如何配置MC33774,我正在寻找一个教程,该教程解释了如何从头开始在 Simulink 中设置和添加必要的
    发表于 04-10 08:05

    如何在Simulink中启用ADC校准?

    如何在 Simulink 中启用 ADC 校准? V4.2.0 产品发布报告指出,它在块中可用。但我在 ADC 配置块中找不到任何选项。
    发表于 03-31 07:50

    测量ADS1274的DOUT[5:8],竟然和地是通的,这是怎么回事?

    测量ADS1274的DOUT[5:8],竟然和地是通的,这是怎么回事? 是芯片的问题?
    发表于 02-13 08:21

    ADS8361输入不接的时候,输出端的时序竟然有波形出来,是哪里的问题?

    我现在在使用这款ADS8361采集芯片,请问,当输入不接的时候,输出端的时序竟然有波形出来,有6万多,我感觉是不是芯片有问题?当没有输入信号,输出端竟然有波形,而且还是一个很宽的高电平,但是每20个脉冲,输出端波形一致,感觉是不是哪里出问题了?请大牛解答下,谢谢!
    发表于 12-20 08:06

    Simulink与 Simscape的结合使用

    。用户可以利用 Simulink 进行系统建模、仿真、测试和验证,以及生成代码。 Simscape 简介 Simscape 是一个用于创建基于物理的模型的仿真环境。它提供了一个库,包含各种物理组件,如机械、电气、液压和热力系统等。Simscape 允许用户以直观的方式构建
    的头像 发表于 12-12 09:31 2692次阅读

    Simulink中的状态机建模方法 Simulink数据可视化与分析功能

    1. Simulink中的状态机建模方法 1.1 理解状态机的基本概念 在开始建模之前,了解状态机的基本概念是必要的。状态机由以下几个部分组成: 状态(States) :系统可能处于的不同条件或情况
    的头像 发表于 12-12 09:27 4271次阅读

    Simulink与 MATLAB 的结合使用 Simulink中的信号处理方法

    在工程和科学研究中,信号处理是一个重要的领域,涉及到信号的采集、分析、处理和生成。MATLAB 提供了丰富的信号处理工具箱,而 Simulink 提供了一个直观的图形界面,使得复杂的信号处理系统可以
    的头像 发表于 12-12 09:25 2188次阅读

    Simulink模型仿真与分析技巧

    1. 模型构建基础 1.1 理解系统需求 在开始构建模型之前,明确系统的需求和目标是至关重要的。这包括了解系统的动态特性、输入输出关系以及预期的性能指标。 1.2 选择合适的模块 Simulink
    的头像 发表于 12-12 09:23 3366次阅读

    Simulink自定义模块开发教程 Simulink 在控制系统中的应用

    自定义模块来扩展其功能。 1. 理解 Simulink 和控制系统 Simulink 是一个动态系统建模、仿真和分析的环境,它允许用户通过拖放预构建的模块来构建模型。控制系统是工程学的
    的头像 发表于 12-12 09:21 3103次阅读