AnyMath 文档

与模型架构的实际工作 AnyMath

模型架构构建理论 AnyMath 在文章中描述 模型的架构 AnyMath. 我们建议您在开始研究当前文章之前先阅读它。

子系统和子模型用于对块进行分组。 子系统可以被视为函数,子模型可以被视为插件文件。 AnyMath 它们的实施方式如下:

子系统的类型 子模型 子系统行为实现的其他块

经典作品

座 子系统 classic subsystem

座 模型(子模型)

座 图表

由条件触发

激活子系统 enabled subsystem

触发子系统 triggered subsystem

触发和激活子系统 triggered enabled subsystem

可重置子系统 resettable subsystem

Function-Call(函数调用) function call subsystem

控制逻辑

开始!

多重执行(计算周期)

对于每个

对于迭代器

要查看各种子系统的实现示例,请转到 链接。
任何子系统 AnyMath 可以使用掩码进行配置(请参阅 英国面具).

经典子系统

经典子系统 classic subsystem -这是一个街区 子系统,用于将模型划分为模块,无需附加条件或需要控制外部信号。

何时使用经典子系统:

*通过将大型模型分解为较小的模块来简化大型模型; *提高模型的结构和可读性; *用于在模型之间传输现成的模块(复制子系统)。

了解有关经典子系统的更多信息

座 *子系统*包含模型或系统内的块子集,可以是非虚拟或虚拟子系统:

*非虚拟子系统作为单个单元运行,可以配置为仅在某些事件下运行。 *虚拟子系统不作为单个单元运行并且不依赖于事件。 这样的子系统有助于在不影响其操作的情况下使模型更易于理解。

要将虚拟子系统切换到非虚拟子系统,请将*Treat as atomic unit*参数设置为 真的.

经典子系统具有以下特点:

它不是托管子系统; *允许您创建模型的层次结构,其中一个子系统可以包含另一个子系统; *不能保存为单独的文件或子系统。 要将子系统保存为单独的模型,使用该块 *模型(子模型); *不影响模型的功能和逻辑。

如何使用经典子系统:

*添加块 *子系统*到画布并将所需的块添加到子系统;

+ 或 使用键盘快捷键将块组合到子系统中 Shift+ЛКМ 并选择 *子系统 :

classic subsystem cn

由条件触发

正在激活的子系统

启用子系统 enabled subsystem —这是一种块 子系统,其执行由外部信号控制。 激活的子系统在每个主要时间步长执行一次,只要控制信号具有正值。

何时使用激活的子系统:

*执行依赖于外部条件或信号的操作。 *实现复杂的控制逻辑,其中只有在满足某些条件时才需要执行模型。

详细了解正在激活的子系统

激活的子系统具有以下功能:

*是托管子系统; *座 *使能*添加外部信号以控制子系统执行; *控制信号可以是标量或矢量: 如果标量值大于零,则子系统执行; 如果向量值中的至少一个大于零,则子系统执行; *如果控制信号在较小的时间步长期间过零,则子系统直到下一个主要时间步长才打开或关闭。

如何使用激活的子系统:

添加块 *子系统*到画布并添加一个块 *使能*到子系统。 如果 *使能*在块引用的模型的根级别使用 *模型,那么您需要执行以下操作: 对于多速模型,将求解器设置为单任务模式。 对于具有固定步长的模型,模型中至少有一个块必须以固定步长的指定速度运行。

+ 或

使用键盘快捷键将必要的块组合到子系统中 Shift+ЛКМ 并选择 *启用子系统 :

+ enabled subsystem 1

+

如果使用组合键组合到激活的子系统中,则块 *使能*将自动添加。

触发子系统

触发子系统 triggered subsystem —这是一种块 子系统,其执行由外部触发信号启动。 当控制信号的值以指定的方式改变时,触发的子系统将在每个步骤执行一次。

了解有关触发子系统的更多信息

触发子系统具有以下功能:

*是托管子系统; *座 *触发器*添加外部信号以控制子系统执行; *与以控制信号的正值运行的激活子系统不同,被触发子系统将其输出参数保持在触发器之间的最后一个值; *子系统内离散块的状态存储在触发器之间。

何时使用触发的子系统:

*执行应由某些事件触发的操作; *实现必须执行某些操作以响应中断或其他异步事件的系统。; *实现必须以指定频率(由外部触发信号确定)执行的任务。

如何使用触发子系统:

*添加块 *子系统*到画布并添加一个块 *触发器*到子系统;

+ 或

使用键盘快捷键将必要的块组合到子系统中 Shift+ЛКМ 并选择 *触发子系统 :

+ triggered subsystem 1 cn

+

如果使用组合键组合到触发子系统中,则块 *触发器*将自动添加。

触发和激活子系统

触发并启用子系统 triggered enabled subsystem —这是将两个子系统(触发和激活)的功能集成到一个子系统中。 只有当激活控制信号具有正值并且发生触发事件时,才会执行这样的子系统。

何时使用触发和激活的子系统:

执行依赖于激活和触发事件的操作。; *用于仅在两个条件都为真时执行子系统的系统的实现(来自块的信号 *触发器*及 *使能). *实现复杂的控制逻辑,需要在特定条件下激活并在触发事件时执行。

了解有关触发和激活子系统的更多信息
座 *触发器*可以添加到块 *使能*以获得*触发和激活*子系统。

触发和激活子系统具有以下功能:

*它是一个托管子系统; *子系统执行由两个外部信号同时控制:触发信号和激活信号; *子系统必须由标量或矢量信号的正值激活。 如果标量值大于零或矢量值中的任何一个大于零,则激活子系统。 *当控制信号的值以指定的方式改变时,子系统在每个步骤执行一次。 座 *触发器*管理子系统执行。 *子系统将其输出参数保持在触发器之间的最后一个值。 *子系统内离散块的状态保存在触发器之间。

如何使用触发和激活子系统:

*添加块 *子系统*到画布并添加块 *触发器*及 *使能*到子系统;

+ 或

使用键盘快捷键将必要的块组合到子系统中 Shift+ЛКМ 并选择 *触发并启用子系统 :

+ triggered enabled subsystem 1 cn

+

如果使用键盘快捷键组合到触发和激活的子系统中,则块 *触发器*及 *使能*将自动添加。

可重置子系统

可重置子系统 resettable subsystem —这是一种块 子系统,其块的状态可以通过外部触发器重置。 该子系统在每个时间步执行,但在端口上时,其内部所有块的状态都重置为初始状态 *复位*发生触发事件。

何时使用可重置子系统:

*执行需要在特定条件下重置子系统内所有块的状态的操作; *响应外部事件(例如,系统重新启动或错误),将子系统重置为初始状态; *管理系统的状态,确保子系统在某些时间点复位。

详细了解正在重置的子系统

可重置子系统具有以下功能:

是托管子系统; *座 *复位*添加外部信号以控制子系统执行; *当在*Reset端口上触发触发器时,子系统内部所有块的状态都会重置为初始状态; 子系统在每个时间步执行,但仅当在*Reset端口上触发触发器时才重置块状态。; *类似于使用*Reset*端口重置块的行为,不同之处在于reset子系统重置自身内部所有块的状态。

如何使用可重置子系统:

*添加块 *子系统*到画布并添加一个块 *复位*到子系统;

+ 或

使用键盘快捷键将必要的块组合到子系统中 Shift+ЛКМ 并选择 *可重置子系统 :

+ resettable subsystem 1 cn

+

如果使用组合键组合到可重置子系统中,则块 *复位*将自动添加。

Function-Call(函数调用的子系统)

Function-Call(函数调用子系统) function call subsystem —这是一种块 子系统. 子系统在控制端口每次接收到函数调用事件时启动。 这些事件可以来自块 图表,块 函数调用生成器*或一个街区 *AnyMath 功能.

何时使用函数调用子系统:

*创建类似于编程语言中的过程的功能,其中只有在调用函数时才需要执行。 *实现复杂的控制逻辑,其中必须根据请求执行某些操作。

了解有关函数调用子系统的更多信息

函数调用子系统具有以下特性:

*是托管子系统; *座 *触发器*在值中使用*触发器类型*参数 函数调用 它变成一个*功能*块,并添加一个外部信号来控制子系统的执行。; *仅当在控制端口上接收到函数调用事件时,才执行子系统; *子系统调用以给定的顺序启动其内部所有块的执行,类似于过程编程语言中的函数。

如何使用函数调用子系统:

添加块 *子系统*到画布并添加一个块 *触发器*到子系统。 将*触发器类型*参数的值设置为 函数调用. 座 *触发器*将视图更改为*功能。

+ 或

使用键盘快捷键将必要的块组合到子系统中 Shift+ЛКМ 并选择 *函数调用子系统 :

+ function call subsystem 1 cn

+

如果使用键盘快捷键组合到函数调用子系统中,将自动添加*函数*块。

控制逻辑

行动(行动)

动作子系统*是一个子系统,其执行由块动作信号控制 *动作端口. 子系统用于包含块的模型 如果条件判断*及 *开关外壳.

何时使用操作子系统:

实现具有逻辑的模型 如果 和 开关箱; *基于动作信号(来自块)实现模型部分的条件执行 *动作端口); *创建复杂的分支逻辑,其中块的执行取决于外部信号确定的条件。

了解有关操作子系统的更多信息

操作子系统具有以下功能:

是托管子系统; *座 *如果条件判断*实现逻辑 如果-其他 来控制*动作子系统的执行; 座 *开关外壳*实现切换逻辑以控制*动作子系统的执行; *动作信号控制子系统内块的执行,类似于构造 如果 和 开关箱 在编程语言中。

如何使用操作子系统:

*添加块 *子系统*到画布并添加一个块 *动作端口*到子系统。 块将外部输入端口*动作*添加到子系统。

多重执行

对于每个(对于每个元素)

对于每个子系统*是允许处理输入信号的每个元素的子系统。 这种子系统的控制单元是块 *逐元素.

每个子系统何时使用:

*用于处理每个元素的输入信号,例如在滤波或数据转换任务中; *对输入信号的元素或子阵列执行并行计算; *实现复杂的处理逻辑,需要对每个数据元素的状态进行单独核算。

详细了解每个子系统

对于每个子系统具有以下功能:

*它是一个托管子系统; *子系统处理输入信号的每个元素; *子系统中的每个块为其处理的每个元素或子阵列维护一组单独的状态; *当元素或子阵列被处理时,子系统将结果组合成输出信号。; *块允许您为输入数据创建索引并将其作为端口输出。

如何使用每个子系统:

*添加块 *子系统*到画布并添加一个块 *逐元素*到子系统。


对于Iterator(迭代子系统)

迭代器子系统*是一个具有可编程逻辑的迭代子系统。 它是在当前时间步长期间重复执行的子系统,直到迭代变量超过指定的迭代限制。 这允许您实现相当于For循环的逻辑 AnyMath 使用区块 循环迭代器.

何时使用迭代子系统:

*在需要在单个时间步长内累积或汇总数据的模型中。; *实现需要多次执行同一操作的复杂数据处理算法; *在需要对数据数组元素执行多个计算的任务中。

了解有关For迭代器子系统的更多信息

迭代子系统具有以下功能:

是托管子系统; *子系统基于变量迭代在当前时间步长内重复执行; *座 *循环迭代器*控制迭代次数(参数*迭代限制),类似于循环 为; 块输出 *循环迭代器*不能是函数调用信号,并且 *AnyMath 如果违反此条件,则在更新模型时返回错误。

如何使用迭代子系统:

*添加块 *子系统*到画布并添加一个块 *循环迭代器*到子系统。 *启用*显示迭代变量*选项以显示输出端口。 启用*Set next i(外部迭代变量)*参数以显示输入端口。 确定*迭代限制*参数中的子系统迭代次数。 使用*Index mode*参数指定初始迭代次数。

模型(submodel)

模型*是链接到单独模型文件的块。 它可以使用块集成到其他模型中 *模型.

何时使用子模型:

*创建系统模型的层次结构; *在项目之间重用和分发模块; *用于开发具有多个互连组件的复杂系统; *将项目划分为可以单独开发和测试的独立部分。

了解有关子模型的更多信息

子模型具有以下特性:

*与经典子系统不同,子模型必须已经在沿着搜索路径的文件系统中,以便它可以在其他模型中使用。; *显示子模型顶层输入输出端口对应的输入输出端口。 这些端口允许您将子模型连接到父模型的其他块。; *一个子模型可以引用另一个子模型,并支持任何子系统和其他子模型的多级嵌入。;

所有子模型中求解器的步长必须与父模型的求解器的步长相匹配(与块 *模型). 否则,你会得到一个求解器错误。;

+ *您可以选择不同的求解器,前提是步长相同。 选择离散求解器或连续求解器。 在同一时间使用这两种类型的求解器将导致求解器错误。;

*子模型不支持库块 物理建模和多维信号。

如何使用子模型:

添加块 *模型*在画布上。 *在块设置中,通过单击指定子模型将引用哪个模型 *选择模型 . 要使输入/输出端口显示在模型块中,请将输入和输出块添加到引用的模型中,然后选择该选项 *刷新连接器 :

+ model 1 cn

要查看实现子模型的示例,请转到 链接。

图表(Chart)

*图表*是图形表示 有限状态机。 座 *图表*它用于对有限自动机的控制逻辑进行建模,有限自动机是描述具有有限数量状态的系统的设备的数学模型。

何时使用图表:

*实施 有限自动机的逻辑。 *实现图表 状态和流程图。 *用于建模具有显式控制逻辑和事件的系统。 *用于系统中状态和转换的可视化表示。 *实现复杂的控制算法。 *使用以下方法实现Julia语言结构 代码生成。

了解更多有关图表的资料

图表具有以下特点:

*图书馆由独特的组件组成:

+ stateflow library cn

您只能使用在添加信号菜单中声明的内部变量(在块中 *图表).

+ stateflow settings 3 cn

*要显示输入/输出端口,必须设置适当的局部变量。

如何使用图表:

添加块 *图表*在画布上。 *配置局部变量(输入/输出)以添加块的输入/输出端口 *图表.

了解有关有限自动机的更多信息 AnyMath 阅读文章 状态机.