使用这些技术来消除代数环的一个模型。
这个案例展示了如何消除代数环在模型中通过引入延迟块之间在一个循环中。这是一个方法来消除代数环在较大的模型,这样循环可以是由于原子之间的反馈子系统。
考虑到模型附加这个例子。有两个代数循环造成的原子模型子系统
黑盒一个
- >黑箱B
- >黑箱C
- >黑盒一个
黑箱B
- >黑箱C
- >黑箱B
当你更新这个模型,仿真软件®检测循环金宝app黑盒一个
- >黑箱B
- >黑箱C
- >黑盒一个
因为你不知道这些子系统的内容,打破循环通过添加一个单位延迟块之外的子系统。有三种方法使用单位延迟块打破这些循环:
添加一个单元之间的延迟黑盒一个
和黑箱C
。
添加一个单元之间的延迟黑箱B
和黑箱C
。
加单位延迟块代数循环。
添加一个单元之间的延迟黑盒一个
和黑箱C
如果您添加一个单位延迟之间的反馈信号子系统黑盒一个
和黑箱C
,你介绍的最小数量单位延迟系统(1)。通过引入延迟黑盒一个
,黑箱B
和黑箱C
使用数据从当前时间步。
添加一个单元之间的延迟黑箱B
和黑箱C
如果您添加一个单元子系统之间的延迟黑箱B
和黑箱C
,你打碎了一个代数之间的循环黑箱B
和黑箱C
。此外,您打破之间的循环黑盒一个
和黑箱C
,因为信号完成代数循环。通过插入单元延迟块之前黑箱C
,黑箱C
现在与以前的数据时间步。
加单位延迟代数循环
在这里的例子中,您插入单元延迟块打破两个代数循环。在这个模型中,BlackBox_A BlackBox_B使用数据从以前的时间步。从当前时间步BlackBox_C使用数据。
如果仿金宝app真软件®不能解决代数循环,软件就会报告错误。使用这些技术来解决手动循环:
底层拓扑使用技术,如分化重组或改变坐标。这些技术将标志性的形式解决代数循环更容易解决。
将拓扑转换为常微分方程,消除了任何代数循环。
您的模型可能包含循环回路的解算器不能收敛没有好的,初始猜测代数。您可以指定一个初始猜测代数状态变量,但是使用这种技术只有当你认为循环是合法的。
有两种方法可以指定一个初始猜测:
当你使最小化代数循环出现,模金宝app型试图消除人工代数循环。在这个例子中,模型包含一个原子导致人造代数循环子系统。
原子子系统的内容并不直接引线,但仿真软件标识原子子系统直接引线。金宝app
如果代数循环诊断设置为错误
,模拟模型会导致错误,因为涉及它的原子模型包含一个人工代数循环子系统。
消除代数环,
从前面的图形创建模型,原子导致人工代数循环子系统。
在诊断面板模型的配置参数,设置代数循环参数警告
或没有一个
。
在数据导入/导出窗格中,确保信号记录参数是禁用的。如果启用了日志记录信号,仿真软件无法消除人工代数循环。金宝app
显示块的执行顺序模型和原子子系统,调试选项卡上,选择信息覆盖>执行顺序。
检查执行顺序可以帮助您理解如何消除人工代数循环。
所有子系统的模块执行在同一水平:1。(0是最低水平,表明第一块执行。)
请注意
关于块执行顺序的更多信息,请参阅控制和显示执行顺序。
在顶层模型子系统参数对话框中,选择最小化代数循环出现。这个参数指导模型试图消除代数环包含原子子系统,金宝app当它模拟模型。保存更改。
在建模选项卡上,单击更新模型重新计算的执行顺序。
现在有两个层次的子系统内部的执行顺序:1和2。
消除人工代数循环,仿真软件试图使输入子系统或引用模型的非直接引线。金宝app
当你模拟模型,在这个订单所有块执行方法:
mdlOutputs
mdlDerivatives
mdlUpdate
在最初的版本模型的执行mdlOutputs
方法从植物开始块,因为工厂间接块引线。与控制器块执行完成。
关于这些方法的更多信息,请参阅金宝app仿真软件模型。
如果你使最小化代数循环出现原子子系统参数,仿真软件将子系统划分为两个原子单元。金宝app
这些条件是正确的:
原子单元2不直接引线。
只有一个原子单位1mdlOutputs
方法。
只有mdlDerivatives
或mdlUpdate
原子单元方法2需要原子单元的输出1。金宝app仿真软件可以执行期间通常会被执行mdlOutput
方法的原子单位1mdlDerivatives
原子单元二的方法。
新模型的执行顺序:
mdlOutputs
模型的方法
mdlOutputs
原子单元二的方法
mdlOutputs
其他模块的方法
mdlDerivatives
模型的方法
mdlOutputs
原子单元1的方法
mdlDerivatives
原子单元二的方法
mdlDerivatives
其他模块的方法
为最小化代数循环出现技术要想成功,子系统或引用的模型必须有一个non-direct-feedthrough块直接连接到一个尺寸。金宝app仿真软件可以设置DirectFeedthrough
属性的块尺寸假
表明输入端口并不直接引线。
如果一个原子子系统导致人为的代数环,原子系统转换为一个虚拟子系统。这种变化对模型的行为没有影响。当子系统原子模拟模型,模型调用代数循环求解程序。金宝app一次迭代后的解算器终止。代数循环自动解决,因为没有代数不变。使子系统虚拟后,模型不调用代数循环在仿真解算器。金宝app
将一个原子一个虚拟子系统的子系统:
打开包含原子模型子系统。
右键单击并选择原子子系统子系统参数。
清除治疗作为原子单元参数。
保存更改。
如果你取代原子与一个虚拟子系统子系统和仿真仍未使用一个代数循环错误,检查其中一个模型:
一个代数约束
人造代数循环并非由于这个原子子系统
一些模型信号捆绑在一起。这种捆绑可能会导致仿真软件来检测一个代数循环,即金宝app使在一个代数约束并不存在。如果你重定向一个或多个信号,你可以移除人工代数循环。
在这个例子中,线性化模型模拟了槽式系统的动力学美联储由一个泵。在这个模型中:
输出第一季度
是流体的速度流入泵的坦克。
输出h2
是液体在第二槽的高度。
的状态方程块定义了动态响应的坦克系统泵操作:
状态方程的输出是一个向量,其中包含块第一季度
和h2
。
如果你模拟模型与代数循环参数设置为警告
或错误
,模金宝app型识别代数循环。
消除代数环:
改变C
和D
矩阵如下:
通过第一季度
直接范围而不是通过状态方程。
现在,输入(第一季度
)不直接传递到输出(D
矩阵是0),所以状态块不再直接引线。现在反馈信号只有一个元素,所以选择器块不再是必要的,正如你所看到的在下面模型。
有两个参数需要考虑当你认为你的模型有一个人工代数循环:
最小化代数循环出现参数,指定模型试图消除任何人工代数循环:金宝app
原子的子系统,子系统参数对话框中,选择最小化代数循环出现。
模型块——引用模型模型参考面板的配置参数,选择最小化代数循环出现。
最小化代数循环参数,指定模型需要如果诊断操作金宝app最小化代数循环出现参数没有影响。
的最小化代数循环的参数是诊断面板的配置参数。这个参数的诊断操作:
设置 | 模拟反应 |
---|---|
没有一个 |
金宝app仿真软件并不采取任何行动。 |
警告 |
金宝app模型显示一条警告最小化代数循环出现参数没有影响。 |
错误 |
金宝app仿真软件终止模拟和显示一个错误最小化代数循环出现参数没有影响。 |
当你使块减少配置参数优化模型,仿真软件崩溃某些组块到一个更有效的阻止,或完全删除它们。金宝app使块减少结果在更快的执行模型模拟和生成代码。
使块也可以帮助减少模型解决人工代数循环。金宝app
考虑下面的例子模型。
最初,减少块是关闭的,当你模拟模型原子单元子系统和获得恒定的块和比较模型不能解决一个代数循环的一部分。金宝app
如果你减少使块和执行顺序,模拟模型,模型显示块的执行顺序并没有降低。金宝app你现在可以快速查看哪些块已经减少。
取消了与常数和增益模块的模型,因此他们不再产生一个代数循环错误。原子单元子系统生成一个警告:
警告:如果尺寸的ex_aloop_block_reduction_errwarn /原子单位/ In1子系统ex_aloop_block_reduction_errwarn /原子单位涉及直接的反馈,然后一个代数环的存在,仿真软件不能删除。金宝app考虑清理最小化代数循环出现的参数来避免这个警告。
提示
只使用总线选择器块通过成原子子系统所需的信号。