模型变换器任务
使用模型转换器应用程序重构模型以实现变体,消除符合条件的数据存储块,并提高表查找操作的仿真和代码效率。您可以在模型变换器中一次性执行所有步骤,也可以分步执行。
变换
可以使用模型变换器进行以下替换操作:
将符合条件的建模模式替换为变体模块。
数据存储块包含明确定义数据依赖关系的块。
将 Lookup Table 模块替换为 Interpolation using Prelookup 模块。
将使用多个 Interpolation using Prelookup 模块的建模模式整合为单一的 Interpolation using Prelookup 模块。
如果您希望执行所有变换,请为每个步骤指定相应的输入参数。然后,点击运行所选检查按钮。完成各项检查后,通过点击重构模型按钮即可采用变换创建新模型。
如果希望一次执行一个变换,您可分别选择各项检查。
用变体模块替换建模模式
选择将模型变换为变体系统按钮,以识别要在变体转换中使用的系统常量和符合转换为 Variant Subsystem 或 Variant Source 块条件的块。这些转变是可能的:
如果一个 If 模块连接到一个或多个 If Action Subsystem 模块,并且每个 If Action Subsystem 模块都有一个输出端口,则将此建模模式替换为一个子系统和一个 Variant Source 模块。
如果 If 模块连接到没有输出端口或有两个或多个输出端口的 If Action Subsystem 模块,则将此建模模式替换为 Variant Subsystem 模块。
如果一个 Switch Case 模块连接到一个或多个 Switch Case Action Subsystem 模块,并且每个 Switch Case Action Subsystem 模块都有一个输出端口,则将此建模模式替换为一个子系统模块和一个 Variant Source 模块。
如果 Switch Case 模块连接到没有输出端口或有两个或多个输出端口的 Switch Case Action Subsystem 模块,则将此建模模式替换为 Variant Subsystem 模块。
将 Switch 模块替换为 Variant Source 模块。
将具有两个或多个数据端口的 Multiport Switch 模块替换为 Variant Source 模块。
注意
对于某些建模模式和设置,模型转换器无法执行前面的每一种转换。
系统常量是控制输入或算术表达式的一部分,它构成 Multiport Switch 或 Switch 模块的控制输入以及 If 或 Switch Case 模块的输入。您必须使用 Constant 块和构成受支持的 MATLAB 表达式的块的组合作为这些块的控制输入。在 Constant 模块中,常量值参数是系统常数。在转换后的模型中,系统常量是 Variant Source 或 Variant Subsystem 块中的条件表达式的一部分。
运行此转换后,结果表将显示每个建模模式,并带有指向模型中相应位置的超链接。如果您不希望模型转换器执行转换,请清除模式旁边的复选框。
点击重构模型创建包含变换的模型。该应用程序会在名为 m2m_<original model name> 的文件夹中创建转换后的模型。
有关将模型中的块转换为变体模块的示例,请参阅 将模型转换为变体系统。
消除数据存储模块
选择消除数据存储模块以识别符合消除条件的 Data Store Memory、Data Store Read 和 Data Store Write 块。点击重构模型按钮,创建一个模型,用直接信号线、Delay 模块或 Merge 模块替换这些块。
替换这些模块可以明确数据依赖关系,从而提高模型的可读性。模型转换器可以替代这些数据存储:
对于非总线信号,如果 Data Store Read 模块在 Data Store Write 模块之前执行,则应用程序会将这些块替换为 Delay 模块。
对于非总线信号,如果 Data Store Write 模块在 Data Store Read 模块之前执行,则应用程序会将这些块替换为直接连接。
对于总线信号,如果在读取总线之前执行写入总线元素的操作,则应用程序会将 Data Store Read 和 Data Store Write 块替换为直接连接和 Bus Creator 模块。
对于总线信号,如果在读取总线元素之前执行对总线的写入操作,则应用程序会将 Data Store Read 和 Data Store Write 块替换为直接连接和 Bus Selector 模块。
对于条件执行的子系统,应用程序会将 Data Store Read 和 Data Store Write 块替换为直接连接和 Merge 模块。
模型转换器应用程序仅消除 Data Store Memory 块定义的本地数据存储。该应用不会消除全球数据存储。对于 Data Store Memory 模块,在“模块参数”对话框的信号属性选项卡上,必须清除数据存储名称必须解析为 Simulink 信号对象参数。
运行此转换后,结果表将显示指向相应 Data Store Memory、Data Store Read 和 Data Store Write 块的超链接。如果您不希望模型转换器执行转换,请清除 Data Store Memory 模块旁边的复选框。
点击重构模型创建包含变换的模型。该应用程序会在名为 m2m_<original model name> 的文件夹中创建转换后的模型。
有关替换模型中的数据存储块的示例,请参阅 通过消除本地数据存储块来提高模型可读性。
将表查找块转换为预查找块和 Interpolation Using Prelookup 块
选择将表查找变换为预查找和插值以识别要转换为共享 Prelookup 块和 Interpolation Using Prelookup 块的 n-D Lookup Table 块。消除模型中冗余的 Prelookup 块可以提高线性插值的仿真速度。
模型转换器识别多个 n-D Lookup Table 块的位置:
对 Lookup Table 模块使用相同的输入信号
具有相同的断点规范、值和数据类型
在模块参数对话框中保持算法参数一致。
分数参数应采用相同的数据类型
运行此转换后,结果表将显示已识别的块、其算法参数以及模型、库和引用的模型。选择要转换的块,然后点击运行此检查。
有关转换的示例,请参阅 通过优化 Lookup Table 块的预查找操作来提高仿真效率。有关 n-D Lookup Table 块的更多信息,请参阅 n-D Lookup Table。
替换 Interpolation Using Prelookup 块
选择同源插值模块变换以识别多个符合条件的 Interpolation Using Prelookup 块,这些块将与单个 Interpolation Using Prelookup 模块进行转换。消除冗余的 Interpolation Using Prelookup 块可以提高模型的代码效率。
模型转换器会识别模型中何时包含多个 Interpolation Using Prelookup,即:
将相同的输入信号连接到具有相同索引和分数参数的 Prelookup 模块
将输出信号连接到同一个 switch 模块
具有相同的断点规范、值和数据类型
具有相同的算法参数
分数参数应采用相同的数据类型
如果 Interpolation Using Prelookup 块的属性与表数据块的属性相同,则模型转换器应用程序可以正常工作。
运行此转换后,结果表将显示已识别的块、其算法参数以及模型、库和引用的模型。选择要转换的块,然后点击运行此检查。
有关转换的示例,请参阅 通过合并多个 Interpolation Using Prelookup 模块来提高代码效率。有关 Interpolation Using Prelookup 块的更多信息,请参阅 使用 Prelookup 和 Interpolation 模块。