工程模型架构的实际工作
页面进行中。 |
文章中描述了*Engee*中的模型架构构建理论 恩吉的示范建筑. 我们建议您在开始研究当前文章之前先阅读它。 |
子系统和子模型用于对块进行分组。 子系统可以被视为函数,子模型可以被视为插件文件。 在*Engee*它们实现如下:
子系统的类型 | 子模型 | 子系统行为实现的其他块 | |
---|---|---|---|
经典作品 |
座 子系统 |
座 模型 (子模型) |
座 图表 |
由条件触发 |
激活子系统 触发子系统 触发和激活子系统 可重置子系统 Function-Call(函数调用) |
||
控制逻辑 |
开始! |
||
多重执行(计算周期) |
对于每个 对于迭代器 |
要查看各种子系统的实现示例,请转到 链接。 |
*Engee*的任何子系统都可以使用掩码进行配置(有关更多信息,请参阅 英国面具). |
经典子系统
经典子系统 —这是一个街区 子系统,用于在没有附加条件或需要控制外部信号的情况下将模型划分为模块。
何时使用经典子系统:
-
通过将大型模型分解为更小的模块来简化大型模型;
-
提高模型的结构化和可读性;
-
在模型之间传输现成的模块(复制子系统)。
了解有关经典子系统的更多信息
座 子系统 它包含模型或系统内的块子集,可以是非虚拟或虚拟子系统。:
-
非虚拟子系统作为单个单元运行,并且可以配置为仅在某些事件下运行。
-
虚拟子系统不作为单个单元运行,也不依赖于事件。 这样的子系统有助于在不影响其操作的情况下使模型更易于理解。
要将虚拟子系统切换到非虚拟子系统,请将*Treat as atomic unit*参数设置为"true"。
经典子系统具有以下特点:
-
它不是托管子系统;
-
允许您创建模型的层次结构,其中一个子系统可以包含另一个子系统;
-
它不能保存为单独的文件或子系统。 要将子系统保存为单独的模型,使用该块 模型 (子模型);
-
它不会影响模型的功能和逻辑。
如何使用经典子系统:
-
添加块 子系统 到画布并将所需的块添加到子系统;
或
-
使用键盘快捷键将块组合到子系统中 Shift+LKM 并选择 子系统 :
由条件触发
激活的子系统
可激活子系统 —这是一种块 子系统,其执行由外部信号控制。 激活的子系统在每个主要时间步长执行一次,只要控制信号具有正值。
何时使用激活的子系统:
-
来执行依赖于外部条件或信号的操作。
-
实现复杂的控制逻辑,其中只有在满足某些条件时才需要执行模型。
详细了解正在激活的子系统
激活的子系统具有以下功能:
-
它是一个托管子系统;
-
座 启用 添加外部信号以控制子系统执行;
-
控制信号可以是标量或矢量:
-
如果标量值大于零,则子系统执行;
-
如果向量值中的至少一个大于零,则子系统执行;
-
-
如果控制信号在较小的时间步长期间过零,则子系统直到下一个主要时间步长才打开或关闭。
如何使用激活的子系统:
触发子系统
触发子系统 —这是一种块 子系统,其执行由外部触发信号发起。 当控制信号的值以指定的方式改变时,触发的子系统将在每个步骤执行一次。
了解有关触发子系统的更多信息
触发子系统具有以下功能:
-
它是一个托管子系统;
-
座 触发器 添加外部信号以控制子系统执行;
-
与在控制信号的正值下运行的被激活的子系统不同,被触发的子系统将其输出参数保持在触发器之间的最后一个值。;
-
子系统内离散块的状态存储在触发器之间。
何时使用触发的子系统:
-
执行应由某些事件触发的操作;
-
来实现其中必须执行某些操作以响应中断或其他异步事件的系统。;
-
以实现必须以指定频率执行的任务,由外部触发信号确定。
如何使用触发子系统:
触发和激活子系统
触发和激活子系统 —这是将两个子系统(触发和激活)的功能集成到一个子系统中。 只有当激活控制信号具有正值并且发生触发事件时,才会执行这样的子系统。
何时使用触发和激活的子系统:
了解有关触发和激活子系统的更多信息
触发和激活子系统具有以下功能:
-
它是一个托管子系统;
-
子系统由两个外部信号同时控制:触发信号和激活信号。;
-
子系统必须由标量或矢量信号的正值激活。 如果标量值大于零或矢量值中的任何一个大于零,则激活子系统。
-
子系统在控制信号的值以指定方式改变时在每个步骤执行一次。 座 触发器 控制子系统的执行。
-
子系统将其输出参数保持在触发器之间的最后一个值。
-
子系统内离散块的状态存储在触发器之间。
如何使用触发和激活子系统:
可重置子系统
何时使用可重置子系统:
-
执行需要在特定条件下重置子系统内部所有块的状态的操作;
-
响应外部事件(例如,系统重新启动或错误),将子系统重置为初始状态;
-
来管理系统的状态,保证子系统在某些时间点复位。
详细了解正在重置的子系统
可重置子系统具有以下功能:
-
它是一个托管子系统;
-
复位块添加外部信号以控制子系统执行;
-
当在*Reset端口上触发触发器时,子系统内部所有块的状态都会重置为初始状态。*;
-
子系统在每个时间步执行,但仅当在*Reset端口上触发触发器时才重置块状态。*;
-
它类似于使用*Reset*端口重置块的行为,不同之处在于正在重置的子系统会重置自身内部所有块的状态。
如何使用可重置子系统:
-
添加块 子系统 到画布并将*Reset*块添加到子系统;
或
-
使用键盘快捷键将必要的块组合到子系统中 Shift+LKM 并选择 可复位子系统 :
如果使用组合键组合到可重置子系统中,将自动添加*Reset*块。
Function-Call(函数调用的子系统)
何时使用函数调用子系统:
-
创建类似于编程语言中的过程的功能,其中只有在调用函数时才需要执行。
-
实现复杂的控制逻辑,其中必须根据请求执行某些操作。
了解有关函数调用子系统的更多信息
函数调用子系统具有以下特性:
-
它是一个托管子系统;
-
座 触发器 使用值’function-call’中的*触发器类型*参数,它变成*函数*块并添加外部信号以控制子系统的执行。;
-
仅当在控制端口上接收到函数调用事件时,才执行子系统;
-
调用子系统以给定的顺序启动其中所有块的执行,类似于过程编程语言中的函数。
如何使用函数调用子系统:
控制逻辑
多重执行
对于每个(对于每个元素)
*对于每个子系统*是允许处理输入信号的每个元素的子系统。 这种子系统的控制单元是块 对于每个.
每个子系统何时使用:
-
用于处理每个元素的输入信号,例如在滤波或数据变换任务中。;
-
对输入信号的元素或子阵列执行并行计算;
-
实现复杂的处理逻辑,需要对每个数据元素的状态进行单独的核算。
详细了解每个子系统
对于Iterator(迭代子系统)
迭代器子系统*是一个具有可编程逻辑的迭代子系统。 它是在当前时间步长期间重复执行的子系统,直到迭代变量超过指定的迭代限制。 这允许您使用块实现与*Engee*中的For循环等效的逻辑 对于迭代器.
何时使用迭代子系统:
-
在需要在单个时间步长内累积或汇总数据的模型中。;
-
以实现需要多次执行同一操作的复杂数据处理算法。;
-
在需要对数据数组的元素执行多个计算的任务中。
了解有关For Iterator子系统的更多信息
模型(submodel)
何时使用子模型:
-
创建系统模型的层次结构;
-
用于在项目之间重用和分发模块;
-
开发具有多个互连组件的复杂系统;
-
将项目划分为可以单独开发和测试的独立部分。