主要内容

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

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

  • 图书馆:
  • 万博1manbetxSimulink / Ports &子系统

  • 子系统块

描述

一种子系统块包含模型或系统中的块的子集。这子系统块可以代表虚拟子系统或非虚拟子系统。

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

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

原子子系统是子系统Block参数当作原子单位对待选择。

代码重用子系统是一个子系统块与参数当作原子单位对待选择和参数函数包装设置为可重复使用的功能,指定子系统的函数代码生成格式。

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

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

  • 选择组成子系统的所有块和行,然后在多种的选项卡,单击创建子系统.万博1manbetxSimulink.®用一个替换块子系统块,连同必要的轮廓尺寸外港反射进出子系统信号的块。

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

子系统块支持万博1manbetx信号标签传播通过子系统轮廓尺寸外港块。

请注意

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

港口

输入

全部展开

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

使用轮廓尺寸街区来获取当地环境的信号。

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

输出

全部展开

放置一个外港块在子系统中添加一个输出端口子系统块。端口标签子系统块的名称外港块。

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

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

参数

全部展开

代码生成选项卡上的参数需要a万博1manbetx仿真软件编码器™或者嵌入式编码器®执照。

主要的

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

没有一个

不要显示端口标签。

fromporticon.

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

FromPortBlockName

显示相应端口块的名称子系统块。

SignalName

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

程序使用

范围ShowPortLabels
类型:字符向量
价值'fromporticon'|“FromPortBlockName”|“SignalName”
默认'fromporticon'

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

读写

允许打开和修改子系统内容。

只读的

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

noreadorwrite.

禁止打开或修改子系统。如果子系统驻留在库中,您可以在模型中创建到子系统的链接,但不能打开、修改、更改权限或创建该子系统的本地副本。

请注意

如果试图查看子系统的内容,则不会收到响应读/写权限参数设置为noreadorwrite..例如,当双击这样的子系统时,Simulink不会打开子系统,并且不显示任何消息。万博1manbetx

程序使用

范围权限
类型:字符向量
价值“读写”|“只读”|'noreadorwrite'
默认“读写”

输入在Simulink执行子系统时发生错误时要调用的函数的名称。万博1manbetx

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

程序使用

范围ErrorFcn
类型:字符向量
价值''|“<函数名称>”
默认''

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

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

全部

解析此子系统使用的所有工作空间变量的名称,包括用于指定块参数值和Simulink数据对象的名称(例如,万博1manbetx万博1manbetxsimulink.signal.对象)。

明确

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

没有一个

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

程序使用

范围PermitHierarchicalResolution
类型:字符向量
价值'全部'|“ExplicitOnly”|“没有”
默认'全部'

导致Simul万博1manbetxink在确定块方法的执行顺序时将子系统视为一个单元。

在确定块方法执行顺序时将子系统中的所有块视为模型层次结构中的模型层次结构中的相同级别。这可能导致子系统中的块中的块方法执行,以便在子系统外部的块的执行执行。

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

程序使用

范围金目atomicunit.
类型:字符向量
价值“关闭”|'在'
默认“关闭”

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

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

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

依赖关系

要启用该参数,请选择当作原子单位对待参数。

程序使用

范围MinAlgLoopOccurrences
类型:字符向量
价值“关闭”|'在'
默认“关闭”

指定如何调度子系统。

样品时间

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

定期分区

将子系统安排为一个定期分区。指定分区名称和与分区运行速率对应的示例时间。

非周期分区

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

依赖关系

要启用该参数,请选择当作原子单位对待参数。

程序使用

范围调度
类型:字符向量
价值“SampleTime”|“DiscretePartition”|'不计的分裂'
默认“SampleTime”

指定子系统的分区的名称。

依赖关系

要启用该参数,请选择当作原子单位对待参数,设置计划是定期分区非周期分区

程序使用

范围PartitionName
类型:字符向量
价值''
默认''

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

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

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

  • 如果子系统中的任何块指定了不同的采样时间(除了-1),S万博1manbetximulink在更新或模拟模型时显示错误消息。例如,假设子系统中的所有块必须运行5.次每秒。为此,将子系统的示例时间指定为0.2.在此示例中,如果子系统中的任何块指定除此之外的采样时间0.2-1,或,当万博1manbetx您更新或模拟模型时,Simulink显示一个错误。

-1

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

(Ts 0)

指定定期采样时间。

依赖关系

要启用该参数,请选择当作原子单位对待参数。

程序使用

范围SystemSampletime.
类型:字符向量
价值'-1'|'[ts 0]'
默认'-1'

指定执行变量的变量控制(条件)表达式万博1manbetx仿真软件的功能当表达式评估时块真正的

有关更多信息,请参见万博1manbetx仿真软件。变体

变体

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

逻辑表达式

逻辑(布尔)表达式或万博1manbetx仿真软件。变体表示逻辑表达式的对象。

当表达式评估时,该函数被激活真正的

如果您想为您的模型生成代码,那么将表达式中的变量定义为万博1manbetxSimulink.Parameter.对象。

依赖关系

通过添加a子系统块内不同的子系统块。

程序使用

块参数:VariantControl
类型:字符向量
价值:'变体'|“逻辑表达式> <”
默认值:'变体'

导致Simul万博1manbetxink将子系统视为传播变体条件的单位变异来源块或变体汇块。

万博1manbetxSimulink将子系统作为一个单元,从变异来源块或变体汇块。例如,当Simulink计算子系统的万博1manbetx变体条件时,它将该条件传播到子系统中的所有块。

万博1manbetx当确定子系统的变量条件时,Simulink将子系统中的所有块视为与子系统本身在模型层次结构中的同一层。

程序使用

范围TrysAsgroupedWhenAgagationVariantConditions.
类型:字符向量
价值'在'|“关闭”
默认'在'

代码生成

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

汽车

万博1manbetx仿真软件编码器而Embedded Coder则根据模型中存在的子系统实例的类型和数量为您选择最佳格式。

内联

万博1manbetx仿真软件编码器并无条件地嵌入了子系统的嵌入式编码器。

那种一次性的功能

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

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

可重复使用的功能

万博1manbetx仿真软件编码器和Embedded Coder生成一个带有参数的函数,当模型包含子系统的多个实例时,该函数允许重用子系统代码。

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

有关更多信息,请参见:

提示

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

  • 可重复使用的功能汽车选项都尝试确定是否存在子系统的多个实例,并且如果代码可以重用。选项'行为之间的差异是,当不可用时:

    • 汽车产生内联的代码,或者如果情况禁止内限,每个子系统实例的单独函数。

    • 可重复使用的功能产生模型中每个子系统实例的参数的单独函数。

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

依赖关系

  • 这个参数要求万博1manbetx仿真软件编码器用于代码生成。

  • 要启用该参数,请选择当作原子单位对待

程序使用

范围RTWSystemCode
类型:字符向量
价值“汽车”|“内联”|“那种一次性函数”|“可重用函数”
默认“汽车”

选择如何万博1manbetx仿真软件编码器命名它为子系统生成的函数。

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

汽车

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

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

使用子系统名称

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

请注意

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

用户指定

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

有关更多信息,请参见子系统函数的控制生成(万博1manbetxSimulink编码器)

依赖关系

  • 此参数需要万博1manbetx仿真软件编码器执照。

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

程序使用

范围RTWFcnNameOpts
类型:字符向量
价值“汽车”|“使用子系统名称”|用户指定的
默认“汽车”

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

如果要为函数提供特定名称而不是允许此参数,请使用此参数万博1manbetx仿真软件编码器代码生成器分配它自己自动生成的名称或使用子系统名称。有关更多信息,请参见子系统函数的控制生成(万博1manbetxSimulink编码器)

依赖关系

  • 此参数需要万博1manbetx仿真软件编码器执照。

  • 要启用该参数,请设置功能名称选项参数到用户指定

程序使用

范围RTWFCNAME.
类型:字符向量
价值''|“<函数名称>”
默认''

选择如何万博1manbetx仿真软件编码器将单独的文件命名为其生成子系统的函数。

汽车

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

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

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

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

使用子系统名称

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

请注意

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

使用函数名

代码生成器使用指定的函数名功能名称选项作为文件名。

用户指定

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

请注意

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

依赖关系

  • 此参数需要万博1manbetx仿真软件编码器执照。

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

程序使用

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

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

有关更多信息,请参见子系统函数的控制生成(万博1manbetxSimulink编码器)

依赖关系

  • 此参数需要万博1manbetx仿真软件编码器执照。

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

程序使用

范围RTWFileName
类型:字符向量
价值''|' <文件名> '
默认''

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

void_void.

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

空白subsystem_function(空白)

允许参数(优化)

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

void subsystem_function(real_T rtu_In1, real_T rtu_In2, real_T *rty_Out1)
在某些情况下,当生成优化代码时,代码生成器可能不会生成带参数的函数。

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

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

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

有关更多信息,请参见:

依赖关系

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

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

程序使用

范围functionterfacespec.
类型:字符向量
价值'void_void'|'允许参数(优化)'|“允许参数(匹配图形界面)”
默认'void_void'

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

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

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

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

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

依赖关系

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

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

程序使用

范围functionwithsepectpectatata.
类型:字符向量
价值“关闭”|'在'
默认“关闭”

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

继承模型

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

默认

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

感兴趣的记忆部分

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

提示

依赖关系

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

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

程序使用

范围RTWMemSecFuncInitTerm
类型:字符向量
价值“继承模式”|“默认”|"有趣的记忆部分"
默认“继承模式”

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

继承模型

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

默认

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

感兴趣的记忆部分

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

提示

依赖关系

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

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

程序使用

范围RTWMEMSECFUNCEXECUTE.
类型:字符向量
价值“继承模式”|“默认”|"有趣的记忆部分"
默认“继承模式”

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

继承模型

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

默认

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

感兴趣的记忆部分

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

提示

  • 您指定的内存部分适用于生成的代码中的相应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅标准的数据结构(万博1manbetxSimulink编码器)

  • 可能的值取决于您为模型配置设置的内存段包(如果有的话)。看到通过插入语控制数据和函数在内存中的位置(嵌入式编码)

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

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

依赖关系

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

  • 要启用该参数,请设置函数包装那种一次性的功能并选择这一点函数单独的​​数据参数。

程序使用

范围RTWMemSecDataConstants
类型:字符向量
价值“继承模式”|“默认”|"有趣的记忆部分"
默认“继承模式”

选择嵌入式编码器如何将内存部分应用于子系统内部数据。

继承模型

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

默认

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

感兴趣的记忆部分

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

提示

  • 您指定的内存部分适用于生成的代码中的相应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅标准的数据结构(万博1manbetxSimulink编码器)

  • 可能的值取决于您为模型配置设置的内存段包(如果有的话)。看到通过插入语控制数据和函数在内存中的位置(嵌入式编码)

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

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

依赖关系

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

  • 要启用该参数,请设置函数包装那种一次性的功能并选择这一点函数单独的​​数据参数。

程序使用

范围RTWMemSecDataInternal
类型:字符向量
价值“继承模式”|“默认”|"有趣的记忆部分"
默认“继承模式”

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

继承模型

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

默认

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

感兴趣的记忆部分

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

提示

  • 您指定的内存部分适用于生成的代码中的相应全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅标准的数据结构(万博1manbetxSimulink编码器)

  • 可能的值取决于您为模型配置设置的内存段包(如果有的话)。看到通过插入语控制数据和函数在内存中的位置(嵌入式编码)

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

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

依赖关系

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

  • 要启用该参数,请设置函数包装那种一次性的功能并选择这一点函数单独的​​数据参数。

程序使用

范围RTWMemSecDataParameters
类型:字符向量
价值“继承模式”|“默认”|"有趣的记忆部分"
默认“继承模式”

子系统参考

依赖关系

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

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

块特征

数据类型

布尔[一种]|公共汽车[一种]|[一种]|枚举[一种]|固定点[一种]|一半[一种]|整数[一种]|[一种]|字符串[一种]

直接引线

没有

多维信号

有限的[一种]

适应信号

有限的[一种]

零交叉检测

没有

[一种]实际数据类型或能力支持取决于块实现。万博1manbetx

扩展功能

PLC代码生成
使用Simulink®PLC Coder™生成结构化文本代码。万博1manbetx

介绍了R2007a