主要内容

与其他模块共享数据

之间共享数据MATLAB系统和其他模块使用全球关键字和数据存储内存块或金宝appSimulink.Signal对象。您可能需要使用全局数据MATLAB系统块如果:

  • 你有一个现有的模型,使用大量的全局数据,添加一个MATLAB系统这个模型块,你想避免弄乱你的模型与额外的输入和输出。

  • 你想范围模型的数据部分的可见性。

数据共享与MATLAB系统块

在仿真金宝app软件®,你使用数据存储内存存储全球数据。实现数据存储内存使用数据存储内存块或金宝appSimulink.Signal对象。你如何存储全局数据的数量和范围取决于你的全局变量。

范围规则在MATLAB系统共享数据块

MATLAB系统块使用这些范围规则:

  • 如果你使用相同的名称数据存储内存块和金宝appSimulink.Signal对象,数据存储内存块作用域数据模型。

  • 最近的一个全局变量解决层级结构数据存储内存块名称相同的模型。相同的全局变量出现在两个不同的MATLAB系统块可以解决不同数据存储内存根据模型的层次结构。你可以使用这个能力范围数据子系统的可见性。

使用MATLAB系统共享数据块

MATLAB系统支持数据块存储金宝app内存:

  • MATLAB®结构(公共汽车)

  • 枚举数据类型

如何使用数据共享与MATLAB系统块吗

在你使用共享数据MATLAB系统布洛克:

  1. 声明一个全局变量在系统™,你交往对象MATLAB系统块。

    您可以使用全球关键字在这些系统对象的方法:

  2. 添加一个数据存储内存块或金宝appSimulink.Signal对象具有相同的名称作为全局变量系统中的对象。

之间共享数据模型使用引用金宝appSimulink.Signal对象,定义金宝appSimulink.Signal对象的基本工作空间和使用相同的全局变量的名称MATLAB系统块。

选择如何存储共享数据

您可以使用数据存储内存块或金宝appSimulink.Signal对象存储共享数据。

类型的数据 全球数据存储方法 相关链接

少量的全局变量在一个模型,不使用模型参考。

数据存储内存块。

请注意

使用数据存储内存块作用域数据模型。

如何使用数据存储内存块的MATLAB系统块

大量的全局变量在一个模型,不使用模型参考。

金宝appSimulink.Signal对象模型中定义的工作区。金宝appSimulink.Signal对象提供这些优势:

  • 你不需要增加很多数据存储内存块模型。

  • 你可以加载金宝appSimulink.Signal从MAT-file对象。

如何设置仿真软件。金宝app信号对象

多个模型之间的数据共享(包括引用的模型)。

金宝appSimulink.Signal基本工作空间中定义的对象

请注意

如果你使用数据存储内存块以及金宝appSimulink.Signal,注意使用数据存储内存块作用域数据模型。

如何设置仿真软件。金宝app信号对象

如何使用数据存储内存块的MATLAB系统块

  1. 声明一个全局系统中的关键字对象支持全局变量的方法。金宝app例如:

    全球一个;
  2. 添加一个MATLAB系统阻止你的模型。

  3. 双击MATLAB系统块和系统对象关联。

  4. 添加一个数据存储内存块模型和设置:

    1. 数据存储名称匹配的全局变量的名称MATLAB系统块代码。

    2. 数据类型一个显式数据类型。

      数据类型是不可能的事情汽车

    3. 信号类型

    4. 初始值

      的初始值数据存储内存块不能不明。

使用数据存储内存MATLAB系统

这个模型展示了一个MATLAB系统使用全球数据块存储在数据存储内存B。的MATLAB系统块是相关的globalSysObjMatrix1系统对象。看到完整的模型,打开ex_globalsys_objmatrix1模型。

  1. 这些块拖到一个新的模型:

    • MATLAB系统

    • 数据存储内存

    • 显示

  2. 创建一个系统对象关联MATLAB系统块。首先,从MATLAB系统块,创建一个基本的系统对象模板文件。

  3. 在MATLAB的编辑器,创建一个系统对象,代码如下。保存系统对象globalSysObjMatrix1.m。系统对象修改B每次它执行。

    classdef globalSysObjMatrix1 < matlab。系统%全球/ DSM支持标量方法(访问=金宝app保护)函数例子setupImpl (obj) %执行一次性计算,如计算常数结束函数y = stepImpl (obj)全球B;B (: 1) = B (: 1) + 100;y = B;结束结束结束
  4. 双击MATLAB系统块和关联globalSysObjMatrix1系统对象的块。

  5. 在模型中,双击数据存储内存B

  6. 在信号属性选项卡中,输入一个初始值,例如:

    (74 75 5 1;22日23日24日32;33 44 55 22)
  7. 模拟模型。

    MATLAB系统块读取全局数据存储在的初始值B和更新的价值B每次它执行。这个模型执行步骤5次。

  8. 保存并关闭您的模型。

如何设置金宝appSimulink.Signal对象

创建一个金宝appSimulink.Signal对象模型中工作区。

提示

创建一个金宝appSimulink.Signal对象的基本工作空间使用多个模型的全局数据。

  1. 在模型浏览器中,导航到model_name>模型的工作空间模型层次结构窗格。

    选择添加>金宝app仿真软件的信号

  2. 确保这些设置申请金宝appSimulink.Signal对象:

    1. 数据类型一个显式数据类型。

      数据类型是不可能的事情汽车

    2. 完全指定。

      信号维度不能1或继承。

    3. 设置复杂性

    4. 指定一个初始值

      不能不明信号的初始值。

    5. 的名字全局变量的名称。

使用一个金宝appSimulink.Signal对象与一个MATLAB系统

这个简单的模型展示了MATLAB系统块使用金宝appSimulink.Signal与信号。MATLAB系统块是相关的globalSysObjScalar系统对象。看到完整的模型,打开ex_globalsys_金宝appsimulink_signal_share模型。

  1. 这些块拖到一个新的模型:

    • MATLAB系统

    • 显示

  2. 创建一个系统对象关联MATLAB系统块。首先,从MATLAB系统块,创建一个基本的系统对象模板文件。

  3. 在MATLAB的编辑器,创建一个系统对象。保存系统对象globalSysObjScalar.m。系统对象修改B每次它执行。

    classdef globalSysObjScalar < matlab。系统%全球/ DSM支持标量方法(访问=金宝app保护)函数例子setupImpl (obj) %执行一次性计算,如计算常数结束函数y = stepImpl (obj)全球B;B = B + 100;y = B;结束结束结束
  4. 双击MATLAB系统块和关联globalSysObjScalar系统对象的块。

  5. 从模型上建模选项卡上,单击模型浏览器

  6. 在Model Explorer的左窗格中,选择这个模型的模型空间。

    内容窗格显示工作空间中的数据模型。

  7. 在Model Explorer模型层次结构窗格中,导航到model_name>模型的工作空间。在内容窗格中,设置的名字B

  8. 导航回model_name>模型的工作空间

    • 选择添加>金宝app仿真软件的信号

    • 让这些设置金宝appSimulink.Signal对象:

      属性 价值
      数据类型
      复杂性 真正的
      1
      初始值 25
  9. 模拟模型。

    MATLAB系统块读取全局数据存储在的初始值B和更新的价值B每次它执行。模型运行5次步骤。

  10. 保存并关闭您的模型。

使用数据存储诊断检测内存访问的问题

您可以配置您的模型提供运行时数据存储和编译时诊断避免问题。诊断中可用的配置参数对话框和参数对话框数据存储内存块。这些诊断可用数据存储内存块,不是金宝appSimulink.Signal对象。使用数据存储诊断方法的更多信息,见数据存储诊断

使用共享数据的局限性MATLAB系统

MATLAB系统不支持数据块存储内存大小可变的金宝app数据

使用与p系统共享数据对象

如果系统对象称为p - code,你必须实现getGlobalNamesImpl方法来提供全局变量名称使用系统中的对象。例如:

classdef GlobalSysObjMatrix < matlab。系统%矩阵DSM支持:第一行的增量为1在金宝app每个时间步长方法(访问=保护)函数y = stepImpl (obj)全球B;B: B (1) = (1:) + 1;y = B;结束函数globalNames = getGlobalNamesImpl (~) globalNames = {B};结束结束结束

另请参阅

对象

相关的话题