主要内容

本页采用了机器翻译。点击此处可查看英文原文。

通过消除本地数据存储块来提高模型可读性

您可以使用模型转换器工具,通过将 Data Store MemoryData Store ReadData Store Write 块替换为直接信号线、Delay 模块或 Merge 模块来提高模型的可读性。对于总线信号,该工具可能还会添加 Bus CreatorBus Selector 块作为替换的一部分。替换这些模块可以明确数据依赖关系,从而提高模型的可读性。模型转换器会使用这些替换项创建一个模型。新模型与现有模型的功能相同。

模型转换器可以替代这些数据存储:

  • 对于非总线信号,如果 Data Store Read 模块在 Data Store Write 模块之前执行,则该工具会将这些块替换为 Delay 模块。

  • 对于非总线信号,如果 Data Store Write 模块在 Data Store Read 模块之前执行,则该工具会将这些块替换为直接连接。

  • 对于总线信号,如果在读取总线之前执行写入总线元素的操作,则该工具会将 Data Store ReadData Store Write 块替换为直接连接和 Bus Creator 模块。

  • 对于总线信号,如果在读取总线元素之前执行对总线的写入操作,则该工具会将 Data Store ReadData Store Write 块替换为直接连接和 Bus Selector 模块。

  • 对于条件执行的子系统,该工具将 Data Store ReadData Store Write 块替换为直接连接和 Merge 模块。对于读/写对跨越 If 子系统边界且 Write 模块位于子系统内部的模型,该工具可能还会添加 Else 子系统模块。

模型转换器工具仅消除 Data Store Memory 块定义的本地数据存储。该工具不会消除全球数据存储。对于 Data Store Memory 模块,在模块参数对话框的信号属性选项卡中,必须清除数据存储名称必须解析为 Simulink 信号对象参数。

使用模型转换器消除本地数据存储块,从而提高模型可读性

模型 data_store_elimination 包含两个本地数据存储:BA。对于数据存储 B,有两个 Data Store Read 块和一个 Data Store Write 模块。对于数据存储 A,有一个 Data Store Write 模块和一个 Data Store Read 模块。红色数字代表排序后的执行顺序。

替换数据存储块

确定符合替换条件的数据存储块。然后,创建一个模型,将这些块替换为直接信号线、Delay 块或 Merge 块。

  1. 打开模型 data_store_elimination

  2. 将模型保存到您的工作文件夹中。

  3. 应用选项卡上,点击模型转换器

  4. Transformations 文件夹中,选中 Eliminate data store blocks 复选框。

  5. 重构模型的前缀字段中,指定重构模型的前缀。

  6. 点击运行此检查按钮。顶部的结果表格包含指向 Data Store Memory 块以及符合消除条件的相应数据存储读取和 Data Store Write 块的超链接。

  7. 点击重构模型按钮。底部的结果表格包含指向新模型的超链接。该工具会创建一个名为 m2m_ex_data_store_replacement 的文件夹。此文件夹包含 gen_ex_data_store_replacement.slx 模型。

对于本地数据存储 Agen_ex_bus_struct_in_code.slx 包含一个 Delay 模块来代替 Data Store Write 模块,并且包含一个直接信号连接来代替 Data Store Read 模块。对于本地数据存储 Bgen_ex_bus_struct_in_code.slx 包含从 Bias 模块到 Out2 的直接信号连接。

限制

模型转换器不会替换满足以下条件的数据存储读取和写入模块:

  • 它们跨越了条件执行子系统(如启用子系统、触发子系统或函数调用子系统)和 Stateflow 图的边界。

  • 它们并不构成 If-Action 子系统的互斥分支。

  • 它们跨越了变体的界限。

  • 它们有多个输入或输出。

  • 它们访问数组的一部分。

  • 它们的执行速度各不相同。

  • 它们位于不同的库子系统实例中,并且具有不同的相对执行顺序。

另请参阅

主题