Engee 文档

动态系统建模与仿真框图

*Engee*是一个平台,既包括用于计算的脚本语言,也包括用于开发控制系统和复杂技术系统建模的可视化环境。

可视化建模环境允许建立任何详细程度的模型—​从原子物理组件到复杂对象的系统模型。 Engee*的主要用途是动态系统的建模和仿真,即状态取决于时间的系统。

动态系统的例子

  • 水桶装满水 - 水以一定的速度流入,水桶变重。在这种情况下,可以用一个单独的块来表示水桶:输入是流速,输出是水桶的重量。

  • 你对着扩音器说话—​你的声音经过处理,并广播放大许多倍。在这里,扩音器可以用一个块来表示:声音(声源的声波)是它的输入,其他人听到的声音(接收器的声波)是输出。

  • 你推小车—​小车移动。小车将是一个块:你施加的力是输入,小车的位置是输出。 Engee 提供了按功能分组的程序块库(集)。

例如,要模拟一个将输入乘以常数的扩音器,我们可以使用数学运算 库中的增益 块。

gain

箭头 -> 表示程序块的输入和输出,可用于将其连接到其他程序块。

一个声波从输入端进入扩音器,一个更大音量的声波从输出端离开扩音器。

要在 Engee 中模拟正弦波进入扩音器,请打开声源正弦波

block diagrams 1

模块之间可以相互连接,形成单独的子系统,进而构成整个系统的模型。

例如,音频播放器将数字文件转换成声音。数字文件从内存中读取,经过数学解释后变成实际的声音。处理数字文件以计算声音波形的软件可以用一个单元来表示。将波形转化为声音的扬声器是另一个单元。最后,在模型中生成输入信号、模拟从内存中读取信号的组件代表第三个单元。

回想一下,Engee 的主要功能是模拟系统组件随时间变化的行为。最简单来说,这项任务包括以下步骤: . 确定模拟中的当前时间点; . 确定当前时间点各模块输出值的计算顺序; . 按顺序排列每个区块的输出值。

以扩音器为例。在每个时间步 Engee 必须计算正弦波的值,将其传输到程序块增益 (代表扩音器本身)的输入端,然后计算其输出值。

在每个时间步骤中,每个程序块都会根据输入端的信号值计算其输出信号的值。一旦图中的所有信号都在给定的时间步长内计算完毕,Engee 就会根据模型配置和所选求解器确定下一个计数步长的时间,并将模拟时钟向前推移。然后,每个区块重复计算这一新的时间步。

在模拟中,时间的运行与现实世界不同。每个计数步所需的时间与完成该时间步计算所需的时间一样长,无论该计数步代表的是几分之一秒还是几年。

*Engee*处理的数据分为三类:

  • 信号 - 在建模过程中计算出的模块输入和输出值。

  • 状态 - 在模拟过程中计算出的代表程序块动态的内部值。

  • 参数 - 用户设置的影响程序块行为的值。

信号和状态的值在 Engee 计数的每一步中进行计算。参数值在建立模型时设定(但有时可在模拟过程中更改)。