模型工作区
每个模型都有自己的工作区,用于存储变量值。当加载模型时,模型工作区从数据源初始化,该数据源可以是模型文件、MATLAB® 文件或存储在模型文件中的 MATLAB 代码。您可以通过交互方式重新加载和保存这些数据源。有关详细信息,请参阅在模型工作区中指定数据源。
模型工作区中的变量仅在该模型的作用域中可见。如果 MATLAB 工作区和模型工作区都定义了具有相同名称的一个变量,并且该变量不出现在任何中间封装子系统或模型工作区中,则 Simulink® 软件将在模型工作区中使用该变量的值。模型的工作区能够有效地为其提供自己的命名空间,从而允许您为模型创建变量,而不存在与其他模型发生冲突的风险。
注意
当对引用模型中的变量引用进行解析时,其解析方式就如同引用模型的父模型不存在一样。例如,假设引用模型引用的变量同时在父模型的工作区和 MATLAB 工作区中进行了定义,但未在引用模型的工作区中进行定义。在这种情况下,将使用 MATLAB 工作区。
要修改模型工作区中的变量,请参阅更改模型工作区数据。
使用模型工作区的好处
使用模型工作区存储仅在关联模型中使用的数据。这些数据可以包括:
模型参数,例如您用于指定模块参数值的数值变量
数据对象,例如您用于控制参数特性的
Simulink.Parameter对象模型参量
通过将数据存储在模型工作区中,可以提高模型的可移植性并确定数据的所有权。在这种情况下,模型文件永久存储数据。
在模型引用层次结构中,每个模型工作区相当于一个唯一的命名空间。因此,您可以在多个模型工作区中使用同一个变量名称。然后,您可以为每个模型赋予不同值。
内存问题故障排除
当您将工作区变量用作模块参数时,Simulink 会在仿真的编译阶段创建该变量的副本并将变量存储在内存中。这可能会导致您的系统在仿真期间或生成代码过程中将内存耗尽。当您存在以下情形时,便可能出现耗尽系统内存的情况:
具有多个参数的大模型
模型的参数具有大量元素
此问题不会影响用来表示生成代码中的参数的内存用量。
模型工作区的限制
要将信号对象存储在模型工作区中,需要将该对象的存储类设置为
Auto。信号对象包括您创建的Simulink.Signal和子类。如果您指定
Auto以外的存储类,则必须将信号对象存储在基础工作区或数据字典中,以确保对象在 Simulink 全局上下文中是唯一的且可供所有模型访问。在模型工作区中存储 MATLAB 变量和参数对象(例如
Simulink.Parameter)时,存在一些可调性限制。请参阅特定建模情形下的可调整性注意事项和限制。此外,如果将AUTOSAR.Parameter对象存储在模型工作区中,则代码生成器将忽略为该对象指定的存储类。当您存储
Simulink.NumericType对象时,您不能使用该对象作为数据类型别名。您必须将IsAlias属性设置为false。无法存储在模型工作区中的其他对象包括:
Simulink.BusSimulink.DataTypeSimulink.data.DataConnection
另请参阅
Simulink.ModelWorkspace | Simulink.data.DataConnection | Simulink.data.connect