文档

用于模型块的信号的存储类

包含模型块可以使用存储类的信号汽车没有限制。但是,当您将信号声明为全局信号时,您必须知道信号数据将如何处理。

全局信号是一个存储类不是汽车

  • ExportedGlobal

  • ImportedExtern

  • ImportedExternPointer

  • 风俗

上面的信号不同于使用存储类的信号模型的默认当您将相应数据类别的默认存储类设置为违约在代码映射编辑器中,它们被视为测试点汽车存储类。

全局信号的声明、定义和使用方法如下:

  • 一个走读生为使用给定全局信号的模型生成声明。

    因此,如果信号穿过模型块边界、顶部模型和参照模型都会生成走读生信号的声明。

  • 对于输出的信号,top模型负责定义(分配内存)信号,无论top模型本身是否使用该信号。

  • 被引用模型使用的全局信号被直接访问(作为全局内存)。它们不会作为参数传递给为引用模型生成的函数。

自定义存储类也遵循上述规则。但是,某些存储类目前不支持与模型引用一起使用。金宝app有关详细信息,请参见存储类的限制(金宝app仿真软件编码器)。

用于模型块的参数的存储类

模拟和代码生成支持存储类。存储类,但金宝app汽车可调。因此,支金宝app持的存储类包括

  • 模型的默认

  • ExportedGlobal

  • ImportedExtern

  • ImportedExternPointer

  • 风俗

请注意参考模型中参数的以下限制:

  • 非内联s函数不支持可调参数。金宝app

  • 忽略使用“模型参数配置”对话框设置的可调参数。

请注意以下有关如何在为目标生成的代码中声明、定义和使用全局可调参数的注意事项:

  • 全局可调参数是基本工作区中的参数,其存储类不是汽车

  • 一个走读生声明由使用给定参数的模型生成。

  • 如果一个参数被导出,顶级模型负责定义(分配内存)这个参数(不管它是否使用这个参数)。

  • 全局参数被直接访问(作为全局内存)。它们不会作为参数传递给为引用模型生成的函数。

  • 在将参数数据类别的默认存储类设置为违约在代码映射编辑器中,为模型的默认参数使用非结构化变量生成(rtP_xxx)而不是写入模型_P结构。这样,每个引用的模型都可以独立编译。

模型引用当前不支持参数的某些存储类。有关详细信息,请参阅金宝app存储类的限制(金宝app仿真软件编码器)。

参数作为模型块参数必须在被引用的模型的工作空间中定义。有关详细信息,请参见参数化可重用引用模型的实例(金宝app模型)。

跨模型参考边界的信号名称不匹配

在父模型中,进入或离开信号的名称和存储类模型块可能与附加到该引用模型内的根输入端口或输出端口的信号不匹配。因为引用模型是独立编译的,不考虑父模型,所以它们无法适应父模型标记和存储信号方式的可能变化。

代码生成器接受引用模型中输入和输出信号的情况汽车存储类。当这样的信号是测试指向的或者是全局的(如上所述)时,将应用某些限制。下表描述了如何处理父模型和引用模型之间的信号标签和存储类中的不匹配:

跨模型引用边界的信号和存储类的关系

引用模型

父模型

信号传递方法

信号不匹配检查

汽车

任何存储类

函数参数

没有一个

模型的默认(当代码映射编辑器指定违约存储类)或解析为信号对象

任何存储类

函数参数

信号标签不匹配

全球

自动或模型的默认(当代码映射编辑器指定违约存储类)

全局变量

信号标签不匹配

全球

全球

全局变量

标签和存储类必须相同(否则出错)

综上所述,以下信号解析规则适用于代码生成:

  • 如果参考模型中根输入或输出信号的存储类别为汽车(或模型的默认将相应数据类别的存储类设置为违约在代码映射编辑器中),信号作为函数参数传递。

    • 当发出这样的信号时模型的默认或者决定金宝app模拟信号对象,信号标签不匹配诊断应用。

  • 如果参考模型中的根输入或输出信号是全局的,则使用直接内存访问(全局变量)进行通信。此外

    • 如果父模型中相应的信号也是全局的,则名称和存储类必须完全匹配。

    • 如果父模型中对应的信号不是全局的,则信号标签不匹配诊断应用。

您可以设置信号标签不匹配诊断为错误警告,或没有一个诊断>连接对话框中的。

相关话题