主要内容

消除代数环

使用这些技术来消除代数环的一个模型。

引入延迟消除代数环

这个案例展示了如何消除代数环在模型中通过引入延迟块之间在一个循环中。这是一个方法来消除代数环在较大的模型,这样循环可以是由于原子之间的反馈子系统。

考虑到模型附加这个例子。有两个代数循环造成的原子模型子系统

  • 黑盒一个- >黑箱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. 从前面的图形创建模型,原子导致人工代数循环子系统。

  2. 诊断面板模型的配置参数,设置代数循环参数警告没有一个

  3. 数据导入/导出窗格中,确保信号记录参数是禁用的。如果启用了日志记录信号,仿真软件无法消除人工代数循环。金宝app

  4. 显示块的执行顺序模型和原子子系统,调试选项卡上,选择信息覆盖>执行顺序

    检查执行顺序可以帮助您理解如何消除人工代数循环。

    所有子系统的模块执行在同一水平:1。(0是最低水平,表明第一块执行。)

    请注意

    关于块执行顺序的更多信息,请参阅控制和显示执行顺序

  5. 在顶层模型子系统参数对话框中,选择最小化代数循环出现。这个参数指导模型试图消除代数环包含原子子系统,金宝app当它模拟模型。保存更改。

  6. 建模选项卡上,单击更新模型重新计算的执行顺序。

    现在有两个层次的子系统内部的执行顺序:1和2。

消除人工代数循环,仿真软件试图使输入子系统或引用模型的非直接引线。金宝app

当你模拟模型,在这个订单所有块执行方法:

  1. mdlOutputs

  2. mdlDerivatives

  3. mdlUpdate

在最初的版本模型的执行mdlOutputs方法从植物开始块,因为工厂间接块引线。与控制器块执行完成。

关于这些方法的更多信息,请参阅金宝app仿真软件模型

如果你使最小化代数循环出现原子子系统参数,仿真软件将子系统划分为两个原子单元。金宝app

这些条件是正确的:

  • 原子单元2不直接引线。

  • 只有一个原子单位1mdlOutputs方法。

只有mdlDerivativesmdlUpdate原子单元方法2需要原子单元的输出1。金宝app仿真软件可以执行期间通常会被执行mdlOutput方法的原子单位1mdlDerivatives原子单元二的方法。

新模型的执行顺序:

  1. mdlOutputs模型的方法

    1. mdlOutputs原子单元二的方法

    2. mdlOutputs其他模块的方法

  2. mdlDerivatives模型的方法

    1. mdlOutputs原子单元1的方法

    2. mdlDerivatives原子单元二的方法

    3. mdlDerivatives其他模块的方法

最小化代数循环出现技术要想成功,子系统或引用的模型必须有一个non-direct-feedthrough块直接连接到一个尺寸。金宝app仿真软件可以设置DirectFeedthrough属性的块尺寸表明输入端口并不直接引线。

消除人工代数循环引起的原子子系统

如果一个原子子系统导致人为的代数环,原子系统转换为一个虚拟子系统。这种变化对模型的行为没有影响。当子系统原子模拟模型,模型调用代数循环求解程序。金宝app一次迭代后的解算器终止。代数循环自动解决,因为没有代数不变。使子系统虚拟后,模型不调用代数循环在仿真解算器。金宝app

将一个原子一个虚拟子系统的子系统:

  1. 打开包含原子模型子系统。

  2. 右键单击并选择原子子系统子系统参数

  3. 清除治疗作为原子单元参数。

  4. 保存更改。

如果你取代原子与一个虚拟子系统子系统和仿真仍未使用一个代数循环错误,检查其中一个模型:

  • 一个代数约束

  • 人造代数循环并非由于这个原子子系统

捆绑信号,创造人工代数循环

一些模型信号捆绑在一起。这种捆绑可能会导致仿真软件来检测一个代数循环,即金宝app使在一个代数约束并不存在。如果你重定向一个或多个信号,你可以移除人工代数循环。

在这个例子中,线性化模型模拟了槽式系统的动力学美联储由一个泵。在这个模型中:

  • 输出第一季度是流体的速度流入泵的坦克。

  • 输出h2是液体在第二槽的高度。

  • 状态方程块定义了动态响应的坦克系统泵操作:

  • 状态方程的输出是一个向量,其中包含块第一季度h2

如果你模拟模型代数循环参数设置为警告错误,模金宝app型识别代数循环。

消除代数环:

  1. 改变CD矩阵如下:

  2. 通过第一季度直接范围而不是通过状态方程。

    现在,输入(第一季度)不直接传递到输出(D矩阵是0),所以状态块不再直接引线。现在反馈信号只有一个元素,所以选择器块不再是必要的,正如你所看到的在下面模型

模型和块参数诊断和消除人工代数循环

有两个参数需要考虑当你认为你的模型有一个人工代数循环:

  • 最小化代数循环出现参数,指定模型试图消除任何人工代数循环:金宝app

    • 原子的子系统,子系统参数对话框中,选择最小化代数循环出现

    • 模型块——引用模型模型参考面板的配置参数,选择最小化代数循环出现

  • 最小化代数循环参数,指定模型需要如果诊断操作金宝app最小化代数循环出现参数没有影响。

    最小化代数循环的参数是诊断面板的配置参数。这个参数的诊断操作:

    设置 模拟反应
    没有一个

    金宝app仿真软件并不采取任何行动。

    警告

    金宝app模型显示一条警告最小化代数循环出现参数没有影响。

    错误

    金宝app仿真软件终止模拟和显示一个错误最小化代数循环出现参数没有影响。

块减少和人工代数循环

当你使块减少配置参数优化模型,仿真软件崩溃某些组块到一个更有效的阻止,或完全删除它们。金宝app使块减少结果在更快的执行模型模拟和生成代码。

使块也可以帮助减少模型解决人工代数循环。金宝app

考虑下面的例子模型

最初,减少块是关闭的,当你模拟模型原子单元子系统和获得恒定的块和比较模型不能解决一个代数循环的一部分。金宝app

如果你减少使块和执行顺序,模拟模型,模型显示块的执行顺序并没有降低。金宝app你现在可以快速查看哪些块已经减少。

取消了与常数和增益模块的模型,因此他们不再产生一个代数循环错误。原子单元子系统生成一个警告:

警告:如果尺寸的ex_aloop_block_reduction_errwarn /原子单位/ In1子系统ex_aloop_block_reduction_errwarn /原子单位涉及直接的反馈,然后一个代数环的存在,仿真软件不能删除。金宝app考虑清理最小化代数循环出现的参数来避免这个警告。

提示

只使用总线选择器块通过成原子子系统所需的信号。

相关的话题