主要内容

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

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

  • 库:
  • 金宝appSimulink / Ports &子系统

  • 子系统块

描述

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

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

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

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

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

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

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

  • 选择组成子系统的所有块和行,然后在多个选项卡上,单击创建子系统.金宝app动态仿真模块®将块替换为子系统块,连同必要的轮廓尺寸外港反射进出子系统信号的块。

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

子系统块支持金宝app信号标签传播通过子系统轮廓尺寸外港块。

请注意

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

港口

输入

全部展开

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

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

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

输出

全部展开

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

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

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

参数

全部展开

代码生成选项卡上的参数需要金宝app仿真软件编码器™或者嵌入式编码器®许可证。

主要

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

没有一个

不要显示端口标签。

FromPortIcon

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

FromPortBlockName

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

SignalName

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

编程使用

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

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

读写

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

只读的

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

NoReadOrWrite

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

请注意

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

编程使用

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

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

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

编程使用

参数ErrorFcn
类型:特征向量
价值''|“<函数名称>”
默认的''

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

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

所有

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

ExplicitOnly

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

没有一个

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

编程使用

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

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

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

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

编程使用

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

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

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

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

依赖关系

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

编程使用

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

指定如何调度子系统。

样品时间

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

周期性的分区

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

非周期分区

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

依赖关系

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

编程使用

参数ScheduleAs
类型:特征向量
价值“SampleTime”|“DiscretePartition”|“UnconstrainedPartition”
默认的“SampleTime”

指定子系统的分区名称。

依赖关系

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

编程使用

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

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

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

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

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

-1

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

(Ts 0)

指定周期采样时间。

依赖关系

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

编程使用

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

指定执行变量的变量控制(条件)表达式金宝app仿真软件的功能块时,表达式的计算结果为真正的

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

变体

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

逻辑表达式

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

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

如果您想为您的模型生成代码,那么将表达式中的变量定义为金宝app仿真软件。参数对象。

依赖关系

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

编程使用

块参数:VariantControl
类型:特征向量
值:“变异”|“逻辑表达式> <”
默认值:“变异”

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

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

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

编程使用

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

代码生成

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

汽车

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

内联

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

那种一次性的功能

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

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

可重用的功能

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

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

有关更多信息,请参见:

提示

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

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

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

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

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

依赖关系

  • 这个参数要求金宝app仿真软件编码器代码生成。

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

编程使用

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

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

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

汽车

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

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

使用子系统名称

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

请注意

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

用户指定的

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

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

依赖关系

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

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

编程使用

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

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

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

依赖关系

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

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

编程使用

参数RTWFcnName
类型:特征向量
价值''|“<函数名称>”
默认的''

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

汽车

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

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

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

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

使用子系统名称

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

请注意

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

使用函数名

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

用户指定的

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

请注意

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

依赖关系

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

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

编程使用

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

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

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

依赖关系

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

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

编程使用

参数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的系统目标文件。

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

编程使用

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

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

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

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

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

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

依赖关系

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

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

编程使用

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

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

继承模型

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

默认的

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

我们感兴趣的是记忆部分

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

提示

依赖关系

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

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

编程使用

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

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

继承模型

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

默认的

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

我们感兴趣的是记忆部分

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

提示

依赖关系

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

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

编程使用

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

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

继承模型

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

默认的

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

我们感兴趣的是记忆部分

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

提示

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

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

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

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

依赖关系

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

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

编程使用

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

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

继承模型

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

默认的

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

我们感兴趣的是记忆部分

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

提示

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

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

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

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

依赖关系

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

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

编程使用

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

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

继承模型

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

默认的

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

我们感兴趣的是记忆部分

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

提示

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

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

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

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

依赖关系

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

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

编程使用

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

子系统的参考

依赖关系

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

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

块特征

数据类型

布尔一个|公共汽车一个|一个|枚举一个|不动点一个|一半一个|整数一个|一个|字符串一个

直接引线

没有

多维信号

有限的一个

适应信号

有限的一个

讨论二阶导数过零检测

没有

一个实际的数据类型或功能支持取决于块的实现。金宝app

扩展功能

PLC的代码生成
使用Simulink®PLC Coder™生成结构化文本代码。金宝app

介绍了R2007a