在模型中,Simulink Function与Function Caller、Goto与From、Data Store Write/Memory与Data Store Read模块通常是成对出现使用的,但有可能不在同一层级。
若测试对象中只包含function caller、from或data store read/
write模块时,模型的仿真因缺少对应模块无法正常进行。
在MQT新版本中,增加了针对仅拥有function caller、from、data store read模块的子系统仿真的功能。
Simulink Function caller 能够方便地调用并执行模型中的函数,并获取其输出结果,从而更灵活地进行模型的设计和仿真,使得模型的功能更加模块化和易于维护。

MQT针对以下三种情况增加了新功能:
- 如果测试对象中的function caller对应的Simulink function不在用户所选择的测试对象中,但是存在于原模型中,那么在产生的测试环境时,会自动将对应的simulink function拷贝到测试对象中。

- 若原模型中只有function caller而没有对应的Simulink function,则在产生带有function caller的测试环境时,会自动创建一个符合function caller要求的simulink function,并且系统自动为此function caller的输出信号定义变量,该变量可以在测试用例中根据需要修改值。


- 也可以指定C代码,在产生的Simulink function 中嵌入此C代码,MQT在生成测试环境时会自动将对应的simulink function拷贝到测试对象中。(目前还未实现全自动,可使用MQT的代码测试功能进行手动嵌入,可根据您的需要实现自动嵌入)。

Data Store模块用于实现在模型中对某一全局变量的多次读取和赋值,从而极大提高工作效率和仿真精度。
Data Store模块包括Datastore变量以及Simulink中的Data Store Memory、Data Store Read和Data Store Write模块。

Data Store Memory模块:用于定义存储的数据的名称、初始值和类型。可以在顶层系统或子系统中定义。
Data Store Read模块:用于从指定的数据存储(Data Store Memory)中读取数据,并将其输出到仿真模型中。
Data Store Write模块:用于将输入信号写入到指定的数据存储(Data Store Memory)中。
Data Store Read和Data Store Write模块都需要指定要访问的数据存储的名称(即Data Store Memory模块中定义的名称)。
MQT针对以下三种情况增加了新功能:
- 测试对象中只有Data store read 和data store write模块,而没有对应的data store memory模块,在生成测试对象时MQT自动生成相应的参数变量,使数据传递顺利进行。

- 若测试对象中只有data store read,没有对应data store write和data store memory,在生成测试对象时MQT会为此data store read 模块产生相应的data store write模块,并把该变量作为输入信号,在编写测试用例时可以随时修改。


- Stateflow Chart中所使用的Data store memory 数据,如果在Chart中没有对该变量赋值的语句,或者则按照只有data store read(第二种)描述的情况处理,在测试环境中增加输入信号。

在Simulink中可以使用From模块和Goto模块搭配,精简模型,省略许多的连线。
Goto 模块将其输入传递给其对应的From模块。输入可以是任何数据类型的实数值或复数值信号或向量。
From和 Goto模块允许信号从一个模块传递给另一个模块,而无需实际连接它们。
一个Goto模块可将其输入信号传递到多个From模块,但是一个From模块只能接收来自一个Goto模块的信号。

Goto模块的输入传递到与它关联的 From 模块,两者通过Goto标记进行匹配,Goto模块标记的作用域可以为局部、限定作用域或全局。
MQT针对下述情况增加了新功能:
- 若测试对象中只有from模块,没有对应goto模块,在生成测试对象时MQT为此From模块自动产生对应的Goto模块,并把该变量作为输入信号,在编写测试用例时可以随时修改。


