主要内容

模型工作区

每个模型都有自己的工作区,用于存储变量值。当加载模型时,模型工作区从数据源初始化,该数据源可以是模型文件、MATLAB® 文件或存储在模型文件中的 MATLAB 代码。您可以通过交互方式重新加载和保存这些数据源。有关详细信息,请参阅在模型工作区中指定数据源

模型工作区中的变量仅在该模型的作用域中可见。如果 MATLAB 工作区和模型工作区都定义了具有相同名称的一个变量,并且该变量不出现在任何中间封装子系统或模型工作区中,则 Simulink® 软件将在模型工作区中使用该变量的值。模型的工作区能够有效地为其提供自己的命名空间,从而允许您为模型创建变量,而不存在与其他模型发生冲突的风险。

注意

当对引用模型中的变量引用进行解析时,其解析方式就如同引用模型的父模型不存在一样。例如,假设引用模型引用的变量同时在父模型的工作区和 MATLAB 工作区中进行了定义,但未在引用模型的工作区中进行定义。在这种情况下,将使用 MATLAB 工作区。

要修改模型工作区中的变量,请参阅更改模型工作区数据

使用模型工作区的好处

使用模型工作区存储仅在关联模型中使用的数据。这些数据可以包括:

  • 模型参数,例如您用于指定模块参数值的数值变量

  • 数据对象,例如您用于控制参数特性的 Simulink.Parameter 对象

  • 模型参量

通过将数据存储在模型工作区中,可以提高模型的可移植性并确定数据的所有权。在这种情况下,模型文件永久存储数据。

在模型引用层次结构中,每个模型工作区相当于一个唯一的命名空间。因此,您可以在多个模型工作区中使用同一个变量名称。然后,您可以为每个模型赋予不同值。

内存问题故障排除

当您将工作区变量用作模块参数时,Simulink 会在仿真的编译阶段创建该变量的副本并将变量存储在内存中。这可能会导致您的系统在仿真期间或生成代码过程中将内存耗尽。当您存在以下情形时,便可能出现耗尽系统内存的情况:

  • 具有多个参数的大模型

  • 模型的参数具有大量元素

此问题不会影响用来表示生成代码中的参数的内存用量。

模型工作区的限制

  • 要将信号对象存储在模型工作区中,需要将该对象的存储类设置为 Auto。信号对象包括您创建的 Simulink.Signal 和子类。

    如果您指定 Auto 以外的存储类,则必须将信号对象存储在基础工作区或数据字典中,以确保对象在 Simulink 全局上下文中是唯一的且可供所有模型访问。

  • 在模型工作区中存储 MATLAB 变量和参数对象(例如 Simulink.Parameter)时,存在一些可调性限制。请参阅特定建模情形下的可调整性注意事项和限制。此外,如果将 AUTOSAR.Parameter 对象存储在模型工作区中,则代码生成器将忽略为该对象指定的存储类。

  • 当您存储 Simulink.NumericType 对象时,您不能使用该对象作为数据类型别名。您必须将 IsAlias 属性设置为 false

  • 无法存储在模型工作区中的其他对象包括:

    • Simulink.Bus

    • Simulink.DataType

    • Simulink.data.DataConnection

另请参阅

| |

主题