主要内容

子系统,原子子系统,代码复用子系统

对块进行分组以创建模型层次结构

  • 图书馆:
  • 金宝appSimulink / Ports &子系统

  • 子系统块

描述

A.子系统块包含模型或系统中的块的子集。这个子系统块可以表示虚拟子系统或非虚拟子系统。

  • 非虚拟子系统——当子系统的内容被评估为单个单元时进行控制(原子执行)。创建有条件执行的子系统,这些子系统只在触发、函数调用、操作或启用输入时发生事件时运行(参见有条件执行的子系统和模型).

  • 虚拟子系统——子系统既不是有条件地执行,也不是原子地执行。虚拟子系统没有校验和。要确定一个子系统是否是虚拟的,请使用get_param函数的布尔块参数IsSubsystemVirtual

原子子系统是子系统Block参数视为原子单位选中。

代码重用子系统是一个子系统带参数的块视为原子单位选择和参数函数包装着手可重用的功能,指定子系统的功能代码生成格式。

要创建一个子系统,请执行以下操作之一:

  • 复制一个子系统块从Ports &子系统库到您的模型。然后通过打开子系统块并将块复制到其中。

  • 选择组成子系统的所有块和行,然后在倍数选项卡,单击创建子系统.金宝app动态仿真模块®将块替换为子系统块,以及必要的输入外港块以反映进入和离开子系统的信号。

输入端口的数量绘制在子系统块图标对应的数字输入子系统中的块。类似地,在块上绘制的输出端口数对应于外港子系统中的块。

这个子系统块支撑金宝app信号标签传播通过子系统输入外港块。

笔记

引用子系统是存储在单独文件中的子系统,使用子系统的参考块要重用该子系统,请添加多个子系统的参考块引用相同的子系统文件。在运行时,引用子系统的行为与常规子系统相同。

港口

输入

全部展开

放置一个输入块在子系统中添加一个外部输入端口子系统块端口标签与端口的名称匹配输入块。

使用输入块以从本地环境获取信号。

数据类型:一半|||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|公共汽车

输出

全部展开

放置一个外港子系统中的块从子系统块上的端口标签子系统块是外港块。

使用外港块发送信号到本地环境。

数据类型:一半|||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|公共汽车

参数

全部展开

“代码生成”选项卡上的参数需要金宝appSimulink编码器™或嵌入式编码器®许可证

主要

选择端口标签显示方式子系统块图标。

没有一个

不要显示端口标签。

FromPortIcon

如果对应端口图标显示信号名称,则在“子系统块否则,如果块名称是默认名称,则显示端口块名称或端口号。

FromPortBlockName

接口上对应端口块的名称子系统块。

信号名

如果已命名连接到端口的信号,则在屏幕上显示该信号的名称子系统块。否则显示对应端口块的名称。

用于在上编辑端口标签子系统块,看到编辑子系统的端口标签

程序化使用

参数:ShowPortLabels
类型:特征向量
价值:“FromPortIcon”|“FromPortBlockName”|“信号名”
默认的:“FromPortIcon”

控制用户对子系统内容的访问。

读写

启用子系统内容的打开和修改。

只读的

启用打开但不修改子系统。如果子系统驻留在块库中,则可以创建和打开指向子系统的链接,并可以制作和修改子系统的本地副本,但不能更改权限或修改原始库实例的内容。

NoReadOrWrite

禁用子系统的打开或修改。如果子系统位于库中,则可以在模型中创建指向子系统的链接,但不能打开、修改、更改权限或创建子系统的本地副本。

笔记

如果试图查看子系统的内容,则不会收到响应读/写权限参数设置为NoReadOrWrite.例如,当双击这样一个子系统时,Simulink不会打开该子系统,也不会显示任何消息。金宝app

程序化使用

参数:权限
类型:特征向量
价值:“读写”|“只读”|“NoReadOrWrite”
默认的:“读写”

输入在Simulink执行子系统时发生错误时要调用的函数的名称。金宝app

金宝appSimulink向函数传递两个参数:子系统的句柄和指定错误类型的字符向量。如果没有指定函数,当执行子系统导致错误时,Simulink金宝app将显示一个通用错误消息。

程序化使用

参数:ErrorFcn
类型:特征向量
价值:''|
默认的:''

选择是否解析此子系统引用的工作空间变量的名称。

有关更多信息,请参见符号分辨率符号解析过程

所有

解析此子系统使用的所有工作空间变量的名称,包括用于指定块参数值和Simulink数据对象的名称(例如,金宝app金宝app仿真软件。信号对象)。

明确地

只解析用于指定块参数值、数据存储内存(不存在块)、信号和标记为“必须解析”的状态的工作空间变量的名称。

没有一个

不要解析任何工作区变量名。

程序化使用

参数:PermitHierarchicalResolution
类型:特征向量
价值:“全部”|“ExplicitOnly”|“没有”
默认的:“全部”

导致Simul金宝appink在确定块方法的执行顺序时,将子系统视为一个单元。

在确定块方法执行顺序时,将子系统中的所有块视为与子系统在模型层次结构中的同一层。这可能导致子系统中块的方法的执行与子系统外块的方法的执行交叉。

在确定块方法的执行顺序时,将子系统视为一个单元。例如,当需要计算子系统的输出时,Simulink在调用与子系统相同级别的其他块的输出方法之前,会调用子系统中所有块的输出方法金宝app子系统块。

程序化使用

参数:TreatAsAtomicUnit
类型:特征向量
价值:“关闭”|“开”
默认的:“关闭”

尝试消除任何包含原子子系统的人工代数循环

不要试图消除任何包含原子子系统的人工代数循环。

尽量消除任何包含原子子系统的人工代数循环。

依赖关系

要启用此参数,请选择视为原子单位参数。

程序化使用

参数:尖塔
类型:特征向量
价值:“关闭”|“开”
默认的:“关闭”

指定如何计划子系统。

样品时间

指定这个子系统中的所有块是否必须以相同的速率运行,或者可以以不同的速率运行。

周期划分

将子系统计划为定期分区。指定分区名称和与分区运行速率相对应的采样时间。

非周期分割

将子系统调度为一个非周期分区。请指定分区名称。

依赖关系

要启用此参数,请选择视为原子单位参数。

程序化使用

参数:附表
类型:特征向量
价值:“SampleTime”|“PeriodicParition”|“AperiodicPartition”
默认的:“SampleTime”

指定子系统的分区名称。

依赖关系

要启用此参数,请选择视为原子单位参数,并设置计划是周期划分非周期分割

程序化使用

参数:PartitionName
类型:特征向量
价值:''
默认的:''

指定这个子系统中的所有块是否必须以相同的速率运行,或者可以以不同的速率运行。

  • 如果子系统中的块可以以不同的速率运行,请指定继承的子系统采样时间(-1).

  • 如果所有块必须以相同的速率运行,则指定与此速率对应的采样时间为样品时间参数。

  • 如果子系统中的任何块指定了不同的采样时间(除了-1),S金宝appimulink在更新或模拟模型时显示错误消息。例如,假设子系统中的所有块都必须运行5.次每秒。为此,将子系统的示例时间指定为0.2.在本例中,如果子系统中的任何块指定的样本时间不是0.2,-1,或,S金宝appimulink在更新或模拟模型时显示错误。

-1

指定继承的采样时间。如果子系统中的块可以以不同速率运行,则使用此采样时间。

[Ts 0]

指定定期采样时间。

依赖关系

要启用此参数,请选择视为原子单位参数。

程序化使用

参数:SystemSampleTime
类型:特征向量
价值:' 1 '|“(Ts 0)”
默认的:' 1 '

指定执行变量的变量控制(条件)表达式金宝appSimulink函数当表达式的计算结果为真正的

有关更多信息,请参见金宝app仿真软件。变种

变种

逻辑(布尔)表达式的默认名称。

逻辑表达式

逻辑(布尔)表达式或金宝app仿真软件。变种表示逻辑表达式的对象。

当表达式计算为时,函数被激活真正的

如果要为模型生成代码,请将表达式中的变量定义为金宝appSimulink.参数物体。

依赖关系

通过添加a子系统块内变型子系统块。

程序化使用

块参数:变量控制
类型:特征向量
值:“变异”|“逻辑表达式> <”
违约:“变异”

导致Simul金宝appink在传播变量条件时将子系统作为一个单元变异来源块或变体水槽块。

金宝appSimulink将子系统视为一个单元,从中传播各种条件变异来源块或变体水槽阻碍。例如,当Simulink计算子系统的变量条件时金宝app,它会将该条件传播到子系统中的所有块。

金宝appSimulink将子系统中的所有块视为在模型层次结构中与子系统本身处于同一级别,以确定其变化条件。

程序化使用

参数:TreatAsGroupedWhenPropagatingVariantConditions
类型:特征向量
价值:“开”|“关闭”
默认的:“开”

代码生成

选择要为原子(非虚拟)子系统生成的代码格式。

汽车

金宝app仿真软件编码器嵌入式编码器根据模型中存在的子系统实例的类型和数量为您选择最佳格式。

内联

金宝app仿真软件编码器嵌入式编码器无条件内联子系统。

那种一次性的功能

如果文件名选项被设置为汽车,金宝app仿真软件编码器和Embedded Coder包在模型文件中分离函数。如果文件名选项被设置为使用子系统名称,使用函数名,或用户指定使用不同的文件名,金宝app仿真软件编码器和嵌入式编码器包单独的功能在单独的文件。

具有此设置的子系统生成的函数可能具有参数,具体取决于函数接口参数设置。您可以使用参数命名生成的函数和文件函数名文件名(无扩展名).这些函数是不可重入的。

可重用的功能

金宝app仿真软件编码器嵌入式编码器生成一个带有参数的函数,当模型包含子系统的多个实例时,该函数允许重用子系统代码。

此选项还生成一个带有参数的函数,该参数允许在模型引用层次结构的生成代码中重用子系统代码,该模型引用层次结构包括跨引用模型的子系统的多个实例。在这种情况下,子系统必须位于库中。

有关更多信息,请参见:

提示

  • 当您希望将一个子系统的多个实例表示为一个可重用功能时,您可以将它们中的每一个指定为汽车或者是可重用的功能.最好使用其中一个或另一个,因为使用这两个都会创建两个可重用函数,每个名称对应一个函数。只有当不能重用时,这些选择的结果才会不同。选择汽车不允许控制子系统代码的函数或文件名。

  • 这个可重用的功能汽车选项都试图确定是否存在子系统的多个实例,以及代码是否可以重用。选项行为之间的区别在于,当无法重用时:

    • 汽车产生内联代码,或者如果环境禁止内联,则为每个子系统实例生成单独的函数。

    • 可重用的功能为模型中的每个子系统实例生成带有参数的单独函数。

  • 如果您选择可重用的功能当生成的代码受源代码控制时,设置文件名选项使用子系统名称,使用函数名,或用户指定. 否则,无论何时修改模型,代码文件的名称都会更改,这会阻止对文件进行源代码控制。

  • 如果您选择的选项不是汽车内联以及模型配置参数,代码生成器生成单独的输出和更新方法。代码生成器不考虑结合输出和更新方法进行代码生成和模拟规格

依赖关系

  • 此参数要求金宝app仿真软件编码器用于代码生成。

  • 要启用此参数,请选择视为原子单位

程序化使用

参数:RTWSystemCode
类型:特征向量
价值:“汽车”|“内联”|“那种一次性函数”|“可重用函数”
默认的:“汽车”

选择如何金宝app仿真软件编码器命名它为子系统生成的函数。

如果您有Embedded Coder许可证,您可以通过配置参数上的选项控制函数名代码生成>标识符窗格。

汽车

使用默认命名约定指定唯一的函数名,模型_子系统(),在那里模型是型号和名称吗子系统是子系统的名称(或在重用代码时相同子系统的名称)。

如果您选择可重用的功能对于函数包装参数,并且在模型引用层次结构中存在可重用子系统的多个实例,为了为子系统生成可重用代码,函数名的选择必须设置为汽车

使用子系统名称

使用子系统名作为函数名。默认情况下,函数名使用命名约定模型_子系统

笔记

当子系统位于库块中时,子系统参数函数包装被设置为可重用的功能,如果您设置使用子系统名称选项时,代码生成器使用库块的名称作为子系统函数名和文件名。

用户指定

启用函数名字段。输入任何合法的C或c++函数名,必须唯一。

有关更多信息,请参见子系统函数的控制生成(金宝app仿真软件编码器)

依赖关系

  • 此参数需要一个金宝app仿真软件编码器许可证

  • 要启用此参数,请设置函数包装那种一次性的功能可重用的功能

程序化使用

参数:RTWFcnNameOpts
类型:特征向量
价值:“汽车”|“使用子系统名称”|“用户指定”
默认的:“汽车”

为子系统代码指定一个唯一的、有效的C或c++函数名。

如果要为函数指定一个特定的名称,而不是允许金宝app仿真软件编码器代码生成器,以分配其自己的自动生成名称或使用子系统名称。有关详细信息,请参阅子系统函数的控制生成(金宝app仿真软件编码器)

依赖关系

  • 此参数需要一个金宝app仿真软件编码器许可证

  • 要启用此参数,请设置函数名的选择参数用户指定

程序化使用

参数:RTWFcnName
类型:特征向量
价值:''|
默认的:''

选择如何金宝app仿真软件编码器为它为子系统生成的函数命名单独的文件。

汽车

根据子系统的配置和模型中的实例数量,汽车产生不同的结果:

  • 如果代码生成器有为子系统生成一个单独的文件,子系统代码在由子系统父系统生成的代码模块中生成。如果子系统的父级是模型本身,则在其中生成子系统代码模型.c模型. cpp

  • 如果您选择可重用的功能对于函数包装参数和生成的代码处于源代码管理之下,请考虑指定文件名选项以外的价值汽车.这可以防止由于不相关的模型修改而更改生成的文件名,这对于使用源代码控制来管理配置是有问题的。

  • 如果您选择可重用的功能对于函数包装参数,并且在模型引用层次结构中存在可重用子系统的多个实例,为了为子系统生成可重用代码,文件名选项必须设置为汽车

使用子系统名称

代码生成器使用子系统(或库块)名称作为文件名生成一个单独的文件。

笔记

文件名选项被设置为使用子系统名称,如果模型包含,则子系统文件名被破坏模型块,或者是否为模型生成了模型引用目标。在这些情况下,子系统的文件名由以模型名为前缀的子系统名组成。

使用函数名

代码生成器使用指定的函数名函数名的选择作为文件名。

用户指定

此选项启用文件名(无扩展名)文本输入字段。代码生成器使用您输入的名称作为文件名。输入任意文件名,但不包括.c. cpp(或任何其他)延伸。这个文件名不需要是唯一的。

笔记

虽然子系统源文件名不必是唯一的,但必须避免给出导致循环依赖的非唯一名称(例如,sys_a.h包括系统b.h,系统b.h包括sys_c.hsys_c.h包括sys_a.h).

依赖关系

  • 此参数需要一个金宝app仿真软件编码器许可证

  • 要启用此参数,请设置函数包装那种一次性的功能可重用的功能

程序化使用

参数:RTWFileNameOpts
类型:特征向量
价值:“汽车”|“使用子系统名称”|“使用函数名”|“用户指定”
默认的:“汽车”

指定的文件名不必是唯一的。但是,避免给出导致循环依赖的非唯一名称(例如,sys_a.h包括系统b.h,系统b.h包括sys_c.hsys_c.h包括sys_a.h).

有关更多信息,请参见子系统函数的控制生成(金宝app仿真软件编码器)

依赖关系

  • 此参数需要一个金宝app仿真软件编码器许可证

  • 要启用此参数,请设置文件名选项用户指定

程序化使用

参数:RTWFileName
类型:特征向量
价值:''|
默认的:''

选择在生成的函数中使用参数。

void_void

生成不带参数的函数,并将数据作为全局变量传递。例如:

空白subsystem_function(空白)

允许参数(优化)

生成使用参数而不是将数据作为全局变量传递的函数。该规范减少了全局RAM。它可能会减少代码大小,提高执行速度,并使代码生成器能够应用其他优化。例如:

无效子系统功能(实时rtu输入1、实时rtu输入2、实时rtu输出1)
在某些情况下,当生成优化代码时,代码生成器可能不会生成带参数的函数。

允许参数(匹配图形界面)

生成使用与子系统图形块界面匹配的参数的函数界面。生成的函数接口是可预测的,不会更改。可预测的接口对于调试和测试代码以及与外部应用程序集成非常有用。例如,如果一个模型有两个输入端口和两个输出端口,那么生成的函数接口是:

void subsystem_function(real_T rtu_In1, real_T rtu_In2, real_T *rty_Out1, real_T *rty_Out2)

有关更多信息,请参见:

依赖关系

  • 此参数需要Embedded Coder和基于ert的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能

程序化使用

参数:FunctionInterfaceSpec
类型:特征向量
价值:“void_void”|'允许参数(优化)'|'允许参数(匹配图形界面)'
默认的:“void_void”

生成子系统函数代码,其中原子子系统的内部数据与它的父模型分离,并由子系统拥有。

不要生成原子子系统的内部数据与其父模型分离并归子系统所有的子系统功能代码。

生成子系统函数代码,其中原子子系统的内部数据与它的父模型分离,并由子系统拥有。子系统数据结构是独立于父模型数据结构声明的。具有独立数据的子系统具有自己的块I/O和DWork数据结构。因此,子系统生成的代码更易于跟踪和测试。数据分离还倾向于减少整个模型中全局数据结构的最大大小,因为它们被拆分为多个数据结构。

有关如何为原子子系统生成模块化功能代码的详细信息,请参阅为非虚拟子系统生成模块函数代码(嵌入式编码)

有关如何将内存部分应用到原子子系统的详细信息,请参见覆盖子系统功能和数据的默认内存位置(嵌入式编码)

依赖关系

  • 此参数需要嵌入式编码器许可证和基于ERT的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能

程序化使用

参数:FunctionWithSeparateData
类型:特征向量
价值:“关闭”|“开”
默认的:“关闭”

选择Embedded Coder如何将内存段应用于子系统初始化和终止函数。

继承模型

将根模型内存部分应用于子系统功能代码

默认的

不应用内存段到子系统系统代码,覆盖任何模型级规范

我们感兴趣的是记忆部分

将模型内存部分之一应用到子系统

提示

依赖关系

  • 该参数需要Embedded Coder软件的license和基于ert的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能可重用的功能

程序化使用

参数:RTWMemSecFuncInitTerm
类型:特征向量
价值:“从模型继承”|“默认”|"有趣的记忆部分"
默认的:“从模型继承”

选择Embedded Coder如何将内存段应用于子系统执行函数。

继承模型

将根模型内存部分应用于子系统功能代码

默认的

不应用内存段到子系统系统代码,覆盖任何模型级规范

我们感兴趣的是记忆部分

将模型内存部分之一应用到子系统

提示

依赖关系

  • 该参数需要Embedded Coder软件的license和基于ert的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能可重用的功能

程序化使用

参数:RTWMemSecFuncExecute
类型:特征向量
价值:“从模型继承”|“默认”|"有趣的记忆部分"
默认的:“从模型继承”

选择Embedded Coder如何将内存部分应用于子系统常量。

继承模型

将根模型内存部分应用于子系统数据

默认的

不对子系统数据应用内存段,重写任何模型级规范

我们感兴趣的是记忆部分

将模型内存部分之一应用到子系统

提示

  • 指定的内存部分应用于生成的代码中相应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参见标准的数据结构(金宝app仿真软件编码器)

  • 可能的值因您为型号配置设置的内存节包(如果有)而异。请参阅通过插入语控制数据和函数在内存中的位置(嵌入式编码)

  • 如果尚未使用包配置模型,继承模型是唯一出现的值。否则,列表包括默认的以及模型包包含的所有内存部分。

  • 这些选项对于覆盖给定子系统的模型内存部分设置非常有用。有关如何将内存部分应用到原子子系统的详细信息,请参见覆盖子系统功能和数据的默认内存位置(嵌入式编码)

依赖关系

  • 此参数需要嵌入式编码器许可证和基于ERT的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能并选择具有独立数据的函数参数。

程序化使用

参数:RTWMemSecDataConstants
类型:特征向量
价值:“从模型继承”|“默认”|"有趣的记忆部分"
默认的:“从模型继承”

选择Embedded Coder如何将内存段应用到子系统内部数据。

继承模型

将根模型内存部分应用于子系统数据

默认的

不对子系统数据应用内存段,重写任何模型级规范

我们感兴趣的是记忆部分

将模型内存部分之一应用到子系统

提示

  • 指定的内存部分应用于生成的代码中相应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参见标准的数据结构(金宝app仿真软件编码器)

  • 可能的值因您为型号配置设置的内存节包(如果有)而异。请参阅通过插入语控制数据和函数在内存中的位置(嵌入式编码)

  • 如果尚未使用包配置模型,继承模型是唯一出现的值。否则,列表包括默认的以及模型包包含的所有内存部分。

  • 这些选项对于覆盖给定子系统的模型内存部分设置非常有用。有关如何将内存部分应用到原子子系统的详细信息,请参见覆盖子系统功能和数据的默认内存位置(嵌入式编码)

依赖关系

  • 此参数需要嵌入式编码器许可证和基于ERT的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能并选择具有独立数据的函数参数。

程序化使用

参数:RTWMemSecDataInternal
类型:特征向量
价值:“从模型继承”|“默认”|"有趣的记忆部分"
默认的:“从模型继承”

选择Embedded Coder如何将内存段应用于子系统参数。

继承模型

将根模型内存部分应用于子系统功能代码

默认的

不将内存段应用于子系统系统代码,覆盖任何模型级规范

我们感兴趣的是记忆部分

将模型内存部分之一应用到子系统

提示

  • 指定的内存部分应用于生成代码中相应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参见标准的数据结构(金宝app仿真软件编码器)

  • 可能的值因您为型号配置设置的内存节包(如果有)而异。请参阅通过插入语控制数据和函数在内存中的位置(嵌入式编码)

  • 如果尚未使用包配置模型,继承模型是唯一出现的值。否则,列表包括默认的以及模型包包含的所有内存部分。

  • 这些选项对于覆盖给定子系统的模型内存部分设置非常有用。有关如何将内存部分应用到原子子系统的详细信息,请参见覆盖子系统功能和数据的默认内存位置(嵌入式编码)

依赖关系

  • 此参数需要嵌入式编码器许可证和基于ERT的系统目标文件。

  • 要启用此参数,请设置函数包装那种一次性的功能并选择具有独立数据的函数参数。

程序化使用

参数:RTWMemSecDataParameters
类型:特征向量
价值:“从模型继承”|“默认”|"有趣的记忆部分"
默认的:“从模型继承”

子系统的参考

依赖关系

要访问该参数,请单击转换按钮。

有关如何将一个子系统转换为被引用的子系统的更多信息,请参见将现有子系统转换为引用子系统

块特征

数据类型

布尔[A.]|公共汽车[A.]|[A.]|枚举[A.]|不动点[A.]|一半[A.]|整数[A.]|[A.]|字符串[A.]

直接引线

没有

多维信号

有限的[A.]

适应信号

有限的[A.]

过零检测

没有

[A.]实际的数据类型或功能支持取决于块的实现。金宝app

扩展功能

PLC代码生成
使用Simulink®PLC编码器生成结构化文本代码™.金宝app

R2007a中引入