在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会有更加用户友好的方式解决此问题。
基于虚拟仪器技术的705D雷达自动检测系统
全球汽车行业的三支创新力量_重塑十年后的汽车产业
基于声卡的QPSK信号的实时软解调
四海八荒三生三世只为你?华为P10:称霸高端旗舰抢占海外市场
《60天10串BMS锂离子电池管理系统设计实战特训班》开班倒计时第7天
如何测试带服务接口的Simulink模型?
部署更多的射频场来支持能量收集设备助力物联网下一个挑战
行程开关控制电路图
荣耀畅玩5X官方升级Android 6.0
基于雷达的杂波速度谱图的建立方法
LG化学和SK创新的商业机密盗窃案件判决公布
米粉来看:这才是热衷于小米手机的原因 你中了哪几点?
又放迷雾弹!苹果iPhone8或启用不锈钢外壳!
Microchip中国2023大咖汇报名进行时!
采用JFET晶体管置于电路中实现高频LC振荡器的设计
详解Σ-Δ型ADC拓扑结构的基本原理
无监督学习方法来聚类“车辆相遇”数据
乐视盛大发布会:声称谷歌苹果都做不到这些事
怎样制作一个具有物理数据锁的USB驱动器
示波器探头对信号源阻抗的影响