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

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

3天内不再提示

如何测试带服务接口的Simulink模型?

冬至子 来源:鸣鸣锣的小屋 作者:Maxwell Luo 2023-07-22 09:51 次阅读

图片

Matlab 2022a之后引入了Service Interface的建模元素,这让Simulink模型拥有了向外部其他模型提供函数的能力,也为服务接口建模语义打下基础。

图片

“模型可以对外提供函数功能”

新的建模元素带来一个问题:如何对服务接口进行测试呢?经过尝试(在2022b环境下),如果对包含服务接口的模型直接创建test harness会造成Maltab的崩溃。原因是Simulink Test工具箱还未支持Service Inteface接口的测试模型自动生成,且没有做好异常检测,从而导致软件崩溃。那么,我们如何对这类模型进行测试呢?

测试是可以进行的,只不过是思路要从直接测试新接口,转变为通过包装“桩模型”来间接测试。这算是针对Matlab当前特性的一种变通。

我们通过一个简单的例子来了解这种方法。下面是目标被测模型的功能:实现一个特殊加法函数,该加法函数接受两个被加数,返回被加数1、被加数2、固定偏置的和;该模型不直接求加数,而是借助外部的基础加法函数。

图片

“一个简单的示例”

由于用到了Service Interface,使用System Composer来生成是最方便的事情。因此我们创建如下System Composer模型,配置好接口定义,并生成行为模型。

图片

“借助System Composer模型快速生成目标模型”

图片

“自动生成的行为模型,需要一点改造”

图片

“按照功能需求完成改造”

下面就到了比较关键的一步,即:创建一个新的测试用的System Composer模型,并补充上游调用模型和下游响应模型。

我们初步创建如下模型,然后逐步完善它。

图片

首先是完成服务接口的连接,然后生成对应行为模型。

图片

对于Source模型,我们需要补充其功能,即实现一个简单的加法。

图片

对于Trigger模型,我们需要对外暴露函数参数的输入接口。对于这个函数来说,需要u1和u2两个参数。同时,我们也需要对外暴露函数的返回值,因此新建输出接口y。同时不要忘记把子模型的接口连接到外部System Composer模型的根部,因为我们还是在借助System Composer来进行测试,如果不和System Composer模型建立联系,那么测试数据是无法传入的。

图片

我们对此测试专用的System Composer模型创建test harness。

图片

根据我个人的喜好,选择test sequence来创建测试用例,可以很方便地创建函数调用,且基于场景测试。

图片

于是我们就得到了一个测试对象。

图片

点击test sequence来编辑测试用例。这里需要对测试用例做如下说明:函数调用的方法是发出一个函数触发信号,同时与之配套的函数参数也要及时赋值;采用 if t == xx ... end的语句来触发函数调用,这是因为test sequence本质上是一个信号发生器,如果不限定时刻,test sequence会按照默认的时间节奏(如默认0.2s周期)反复产生信号,这对我们测试函数调度是不利的。

图片

完成测试用例的编写之后,我们还需要设置观测。在我们关注的输出信号线上打上log标签,在模型层面全局打开log event选项来记录函数调度情况。

图片

图片

运行仿真,可以看到这两个图标都提示有结果输出。

图片

我们打开Data Inspector,观察输出y值的情况。可以看到仿真符合我们的预期。

图片

我们打开Sequence Viewer观测函数调用情况,也符合我们的预期。

图片

除此之外,根据实践,如果System Composer的输入输出接口是Bus类型的话,需要使用Bus Element In和Bus Element Out(且设置为non-virtual)才能够通过仿真;如果使用Inport和Outport(设置数据类型为Bus),仿真将会报错。

以上就是测试带服务接口的Simulink模型的方法。相比普通的Simulink模型测试方法,带服务接口的模型测试更加繁琐和复杂,希望在未来高版本的Matlab会有更加用户友好的方式解决此问题。

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

    关注

    14

    文章

    1526

    浏览量

    106493
  • 仿真器
    +关注

    关注

    14

    文章

    988

    浏览量

    82995
  • 触发器
    +关注

    关注

    14

    文章

    1681

    浏览量

    60406
  • 信号发生器
    +关注

    关注

    28

    文章

    1277

    浏览量

    107772
  • MATLAB仿真
    +关注

    关注

    4

    文章

    174

    浏览量

    19640
收藏 人收藏

    评论

    相关推荐

    使用LabView SIT工具包链接Simulink模型的方法

    点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程之前一直在用Simulink做仿真模型,现在要做测试需要用NI的设备和LabView软件,通过一段时间的学习,在SIT
    发表于 04-10 14:31

    怎么利用SIT接口将Labview模型的数据传给Simulink模型

    Simulink模型转化为Labview后在进行datamapping时,发现MDL模型的参数只能映射到Labview里面的indicator类型的组件中。这是不是因为SIT接口只能将
    发表于 12-04 17:49

    LabVIEw调用多个simulink模型

    哥哥姐姐们,求助啊,小弟最近才开始看LabVIEW,老师让做个在一个LabVIEW的面板中,通过下拉菜单来选择加入不同的simulink模型的仿真信息,一个面板里面通过下拉菜单可以选择显示多个simulink
    发表于 07-20 10:37

    LabVIEW调用simulink模型

    各位亲,小弟在simulink中做了一个模型 想通过使用SIT工具包在LabVIEW里面调用,但是遇到了些许小问题,一直搞不懂 向各位请教一下~~跪求各位大大不吝赐教!!!!首先就是我已经弄好
    发表于 09-17 13:09

    Simulink模型生成代码

    本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件。最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果。阅读本文需要
    发表于 08-11 07:56

    利用MATLAB的simulink建立仿真模型

    利用MATLAB的simulink建立仿真模型,与stm32cubemx搭建数据链,通过simulink搭建的模型生成工程!(基本不用修改底层代码)【转载自】
    发表于 08-17 07:11

    如何搭建simulink模型

    如何搭建simulink模型?EPS系统的工作原理是什么?
    发表于 10-20 07:44

    如何建立一个simulink模型

    Simulink模型转嵌入式代码流程Simulink模型转嵌入式代码流程Simulink模型转嵌
    发表于 12-17 07:58

    AD9215 SIMULINK ADIsimADC模型

    AD9215 SIMULINK ADIsimADC模型
    发表于 06-06 16:33 4次下载
    AD9215 <b class='flag-5'>SIMULINK</b> ADIsimADC<b class='flag-5'>模型</b>

    AD9287 SIMULINK ADIsimADC模型

    AD9287 SIMULINK ADIsimADC模型
    发表于 06-06 17:41 4次下载
    AD9287 <b class='flag-5'>SIMULINK</b> ADIsimADC<b class='flag-5'>模型</b>

    AD9461 SIMULINK ADIsimADC模型

    AD9461 SIMULINK ADIsimADC模型
    发表于 06-06 18:38 6次下载
    AD9461 <b class='flag-5'>SIMULINK</b> ADIsimADC<b class='flag-5'>模型</b>

    AD9430 SIMULINK ADIsimADC模型

    AD9430 SIMULINK ADIsimADC模型
    发表于 06-06 18:42 7次下载
    AD9430 <b class='flag-5'>SIMULINK</b> ADIsimADC<b class='flag-5'>模型</b>

    基于模型开发,SImulink建模有哪些优势

    陆续收到粉丝反馈,公司目前新产品开发在走基于模型开发路径,慢慢替代传统手写C代码模式。其实不止电池管理系统(BMS),很多汽车控制器的开发测试都是在用simulink做开发。现在为什么都喜欢基于
    的头像 发表于 07-25 15:00 4268次阅读

    模型调参:CANape与Simulink的强强联手

    CANape推出新功能Simulink XCP Server,针对Simulink模型以及ECU内部数据的参数化和可视化,让模型调参变得简单。
    的头像 发表于 08-01 15:00 738次阅读
    <b class='flag-5'>模型</b>调参:CANape与<b class='flag-5'>Simulink</b>的强强联手

    Simulink集成模型测试太慢怎么办?

    作者|单线程生物小编|吃不饱Tips:现阶段模型开发大部分采用Simulink,为了验证模型实现了相关功能,需要对模型进行测试
    的头像 发表于 09-09 14:53 740次阅读
    <b class='flag-5'>Simulink</b>集成<b class='flag-5'>模型</b><b class='flag-5'>测试</b>太慢怎么办?