文档gydF4y2Ba

代数循环gydF4y2Ba

一个代数循环是什么?gydF4y2Ba

在仿真软件万博1manbetxgydF4y2Ba®gydF4y2Ba模型中,一个gydF4y2Ba代数循环gydF4y2Ba发生在信号回路存在只有直接引线街区内的循环。gydF4y2Ba直接引线gydF4y2Ba意味着块输出取决于输入端口的值;输入的值直接控制输出的值。gydF4y2Ba

有些块输入端口直接引线。万博1manbetx仿真软件无法计算这些块的输出不知道信号的值在这些输入端口进入块在当前时间步。gydF4y2Ba

一些块直接输入引线的例子有:gydF4y2Ba

间接直通的gydF4y2Ba块维持一个状态变量。两个例子是gydF4y2Ba积分器gydF4y2Ba和gydF4y2Ba单位延迟gydF4y2Ba。gydF4y2Ba

提示gydF4y2Ba

来确定一块直接引线,阅读gydF4y2Ba特征gydF4y2Ba节块引用的页面。gydF4y2Ba

一个代数环的图显示了一个示例(仅供演示,而不是推荐建模模式)。的gydF4y2Ba总和gydF4y2Ba块是一个代数变量gydF4y2BaxgydF4y2Ba一个gydF4y2Ba这是约束等于第一个输入gydF4y2BaugydF4y2Ba-gydF4y2BaxgydF4y2Ba一个gydF4y2Ba(例如,gydF4y2BaxgydF4y2Ba一个gydF4y2Ba=gydF4y2BaugydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba一个gydF4y2Ba)。gydF4y2Ba

这个简单的循环的解决方案gydF4y2BaxgydF4y2Ba一个gydF4y2Ba=gydF4y2BaugydF4y2Ba/ 2gydF4y2Ba。gydF4y2Ba

解释的代数循环gydF4y2Ba

数学解释gydF4y2Ba

万博1manbetx模型包含一套解决数值模拟gydF4y2Ba常微分方程(ode)gydF4y2Ba系统的方程可以写成gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

地点:gydF4y2Ba

  • xgydF4y2Ba状态向量。gydF4y2Ba

  • tgydF4y2Ba是独立的变量。gydF4y2Ba

一些系统的方程包含额外的约束,包括独立变量和状态向量,但不是状态向量的导数。这样的系统是gydF4y2Ba微分代数方程(拓扑)gydF4y2Ba,而不是常微分方程。gydF4y2Ba

这个词gydF4y2Ba代数gydF4y2Ba指的是方程,不涉及任何衍生品。你可以表达在半显式的形式出现的标志性工程gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 0gydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

地点:gydF4y2Ba

  • fgydF4y2Ba和gydF4y2BaggydF4y2Ba可以是向量函数。gydF4y2Ba

  • 第一个方程是微分方程。gydF4y2Ba

  • 第二个方程代数方程。gydF4y2Ba

  • 微分变量的向量gydF4y2BaxgydF4y2Ba。gydF4y2Ba

  • 代数变量的向量gydF4y2BaxgydF4y2Ba一个gydF4y2Ba。gydF4y2Ba

在仿真万博1manbetx软件模型中,代数循环代数约束。模型与代数循环定义一个微分代数方程组。万博1manbetx模型并不直接解决拓扑。万博1manbetx仿真软件解决代数方程(代数循环)数值gydF4y2BaxgydF4y2Ba一个gydF4y2Ba在每一步的ODE求解器进行求解。gydF4y2Ba

的gydF4y2Ba模型gydF4y2Ba图中相当于这个方程组在半显式的形式:gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba 0gydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba −gydF4y2Ba xgydF4y2Ba +gydF4y2Ba ugydF4y2Ba −gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba 。gydF4y2Ba

在每一步的ODE求解器,解决代数循环必须解决代数约束gydF4y2BaxgydF4y2Ba一个gydF4y2Ba在计算导数gydF4y2Ba xgydF4y2Ba ˙gydF4y2Ba 。gydF4y2Ba

物理解释gydF4y2Ba

代数约束:gydF4y2Ba

  • 发生物理系统建模时,常常由于守恒定律,如质量和能量守恒gydF4y2Ba

  • 发生当你选择一个特定的坐标系统的一个模型gydF4y2Ba

  • 帮助实施设计约束系统响应在一个动态系统gydF4y2Ba

使用Simscape™模型系统跨机械、电气、液压等物理域的物理网络。Simscape结构的拓扑描述模型的行为。软件集成了这些方程的模型,然后直接解决拓扑。万博1manbetx仿真软件解决了组件的变量在不同的物理域同时,避免与代数环问题。gydF4y2Ba

一个人工代数循环是什么?gydF4y2Ba

一个gydF4y2Ba人工代数循环gydF4y2Ba发生在一个原子子系统或模型块导致模型检测一个代数循环,即使子系统的内容不包含一个代数约束。万博1manbetx当您创建一个原子子系统,所有尺寸块直接引线,导致一个代数循环。gydF4y2Ba

一个人工代数循环的例子gydF4y2Ba

从这开始gydF4y2Ba模型gydF4y2Ba,不包含一个代数循环。它模拟没有错误。gydF4y2Ba

  1. 附上一个子系统的控制器和植物块。gydF4y2Ba

  2. 在子系统块对话框中,选择gydF4y2Ba治疗作为原子单元gydF4y2Ba子系统的原子。gydF4y2Ba

  3. 在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba参数gydF4y2Ba错误gydF4y2Ba。gydF4y2Ba

当模拟gydF4y2Ba模型gydF4y2Ba,一个代数循环是因为子系统直接引线,尽管原子子系统内的路径不是直接引线。模拟与一个代数循环停止错误。gydF4y2Ba

为什么代数循环不良吗gydF4y2Ba

如果你的模型包含一个代数循环:gydF4y2Ba

  • 你不能为模型生成代码。gydF4y2Ba

  • 模型代数万博1manbetx循环解算器可能无法解决代数循环。gydF4y2Ba

  • 虽然仿真软件万博1manbetx是试图解决代数循环,仿真可以执行缓慢。gydF4y2Ba

    对于大多数模型,首次代数循环求解是计算昂贵的步骤。万博1manbetx仿真软件解决了后续步骤迅速,因为一个好的起点gydF4y2BaxgydF4y2Ba一个gydF4y2Ba可以从以前的时间步。gydF4y2Ba

确定代数循环在你的模型gydF4y2Ba

使用这些技术来寻找代数循环在你的模型:gydF4y2Ba

突出代数循环模型中gydF4y2Ba

使用gydF4y2BagetAlgebraicLoopsgydF4y2Ba确定代数循环模型中,强调他们在模型编辑器中。万博1manbetx用这种方法:gydF4y2Ba

  • 你可以遍历的多层模型层次结构定位代数循环。gydF4y2Ba

  • 你可以确定真正的和人工代数循环。gydF4y2Ba

  • 同时你可以想象所有循环在你的模型。gydF4y2Ba

  • 你不需要钻的模型,在边界。gydF4y2Ba

  • 你不需要检测以串行顺序循环。同时,你不需要每次编译模型检测和解决一个循环。因此你可以迅速解决循环。gydF4y2Ba

您执行代数循环强调整个模型,而不是具体的子系统。gydF4y2Ba

  1. 打开模型。gydF4y2Ba

  2. 在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba来gydF4y2Ba没有一个gydF4y2Ba或gydF4y2Ba警告gydF4y2Ba。设置这个参数gydF4y2Ba错误gydF4y2Ba防止模型编译。gydF4y2Ba

  3. 编译模型没有任何错误。模型必须编译之前你可以强调任何代数循环。gydF4y2Ba

  4. 在MATLABgydF4y2Ba®gydF4y2Ba命令提示符中,输入:gydF4y2Ba

    万博1manbetxSimulink.BlockDiagram.getAlgebraicLoops (bdroot)gydF4y2Ba

的gydF4y2BagetAlgebraicLoopsgydF4y2Ba功能亮点代数循环模型中,包括代数循环子系统。它还创建一个报告每个循环的信息:gydF4y2Ba

  • 实线代表真正的代数循环。gydF4y2Ba

  • 虚线代表人工代数循环。gydF4y2Ba

  • 周围会出现一个红色突出一块分配一个代数变量。gydF4y2Ba

  • 的gydF4y2Ba循环IDgydF4y2Ba可帮助您识别系统包含一个特定的循环。gydF4y2Ba

定制报告通过选择或清除gydF4y2Ba可见gydF4y2Ba一个循环的复选框。gydF4y2Ba

一旦你已经确定了代数循环模型中,您可以通过编辑删除它们的模型。关闭突出报告和修改模型。您可以编辑模型只有在您关闭报告。删除的信息真正的代数环,看到gydF4y2Ba消除代数环gydF4y2Ba。gydF4y2Ba

万博1manbetx仿真软件不拯救循环高亮显示。关闭模型或退出删除循环突出显示。gydF4y2Ba

使用代数循环诊断gydF4y2Ba

万博1manbetx模型检测代数循环在仿真初始化,例如,当您更新您的图。你可以设置gydF4y2Ba代数循环gydF4y2Ba诊断报告一个错误或警告如果软件检测到任何代数循环在你的模型。gydF4y2Ba

在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba参数。gydF4y2Ba

设置gydF4y2Ba 模拟反应gydF4y2Ba
没有一个gydF4y2Ba

万博1manbetx仿真软件试图解决代数循环;报告错误只有在代数循环不能解决。gydF4y2Ba

警告gydF4y2Ba

代数循环导致的警告。万博1manbetx仿真软件试图解决代数循环;报告错误只有在代数循环不能解决。gydF4y2Ba

错误gydF4y2Ba

代数循环停止初始化。回顾之前手动循环模型试图解决循环。万博1manbetxgydF4y2Ba

这个例子展示了如何使用代数循环诊断强调代数循环gydF4y2Basldemo_hydcylgydF4y2Ba模型。gydF4y2Ba

  1. 打开gydF4y2Basldemo_hydcylgydF4y2Ba模型。gydF4y2Ba

  2. 在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba参数gydF4y2Ba错误gydF4y2Ba。gydF4y2Ba

  3. 模拟模型。gydF4y2Ba

    当仿真软件万博1manbetx检测到一个代数循环初始化期间,仿真停止。诊断查看器显示一个错误消息和列表中的所有块模型的代数循环。gydF4y2Ba

    在模型中,红色突出显示模块和信号的循环。gydF4y2Ba

  4. 关闭诊断查看器删除了。gydF4y2Ba

  5. 关闭gydF4y2Basldemo_hydcylgydF4y2Ba模型。不保存更改。gydF4y2Ba

使用的演出调试器命令gydF4y2Ba

使用gydF4y2Ba的演出gydF4y2Ba在仿真软件调试器命令强调代数循万博1manbetx环和通过一个模拟步骤。gydF4y2Ba

  1. 打开gydF4y2Basldemo_hydcylgydF4y2Ba模型。gydF4y2Ba

    默认情况下,gydF4y2Ba代数循环gydF4y2Ba这个模型设置参数gydF4y2Ba没有一个gydF4y2Ba。gydF4y2Ba

  2. 启动仿真软件调试器。万博1manbetx选择gydF4y2Ba模拟gydF4y2Ba>gydF4y2Ba调试gydF4y2Ba>gydF4y2Ba调试模式gydF4y2Ba。gydF4y2Ba

    运行调试器。gydF4y2Ba

  3. 在MATLAB命令提示符中,输入:gydF4y2Ba

    的演出gydF4y2Ba

    命令返回代数循环gydF4y2Basldemo_hydcylgydF4y2Ba并在循环块的数量。gydF4y2Ba

    发现1代数循环(s):系统id号码#代数循环,循环的块- 0 # 1,9块循环gydF4y2Ba
  4. 列出这个代数循环的块,在MATLAB命令提示符,输入:gydF4y2Ba

    演出0 # 1gydF4y2Ba

    控制阀流量子系统在阀/汽缸活塞/弹簧装配子系统开场代数循环模型中突出显示。在代数函数列出了九块循环:gydF4y2Ba

    - sldemo_hydcyl /阀门/ /汽缸活塞/ / / /弹簧组/控制阀流量/ IC - sldemo_hydcyl /阀门/ /汽缸活塞/ / / /弹簧组/控制阀流量/签署√- sldemo_hydcyl /阀门/ /汽缸活塞/ / / /弹簧组/控制阀流量/产品- sldemo_hydcyl /阀门/ /汽缸活塞/ / / /弹簧装配/层流压降- sldemo_hydcyl /阀门/ /汽缸活塞/ / / /弹簧装配/ Sum7 - sldemo_hydcyl /泵/ IC sldemo_hydcyl /阀门/ /汽缸活塞/ / / /弹簧装配/控制阀流量gydF4y2Ba
    Sum1(代数变量)- sldemo_hydcyl /泵/ Sum1 sldemo_hydcyl /泵/泄漏(代数变量)gydF4y2Ba

如何处理代数循环模型gydF4y2Ba

如果模万博1manbetx型报告一个代数循环在你的模型中,代数循环求解器可以解决循环。如果模万博1manbetx型不能解决循环,有几种技术来消除循环。gydF4y2Ba

使用这个工作流来决定你想消除一个代数循环。gydF4y2Ba

代数循环解算器是如何工作的gydF4y2Ba

当一个模型包含一个代数循环,在每个时间步长仿真软件使用非线性规划求解来解决代数循环万博1manbetx。解算器执行迭代代数约束来确定解决方案,如果有的话。因此,模型与代数循环可以运行更慢比没有代数循环模型。gydF4y2Ba

万博1manbetx模型使用一个狗腿信赖域算法来解决代数循环。使用的公差小于ODE求解器进行求解gydF4y2BaReltolgydF4y2Ba和gydF4y2BaAbstolgydF4y2Ba。这是因为模型使用“显式赋法”来解万博1manbetx决索引1微分代数方程(拓扑)。gydF4y2Ba

为解决代数循环工作,gydF4y2Ba

  • 必须有一个块循环求解可以打破循环并尝试解决循环。gydF4y2Ba

  • 模型应该真正的双信号。gydF4y2Ba

  • 底层代数约束必须是一个光滑函数gydF4y2Ba

例如,假设你的模型和块有两个inputs-one添加剂,减去。如果你喂的输出和块的输入,您创建一个代数循环的所有块包括直接引线。gydF4y2Ba

块不能总和计算输出不知道输入。万博1manbetx仿真软件检测到循环代数,代数循环解算器解决了循环使用一个迭代循环。在和块的例子中,软件计算出正确的结果:gydF4y2Ba

xgydF4y2Ba一个gydF4y2Ba(gydF4y2BatgydF4y2Ba)=gydF4y2BaugydF4y2Ba(gydF4y2BatgydF4y2Ba)/ 2。gydF4y2Ba

基于代数循环求解器使用一个梯度搜索方法,它需要连续一阶导数对应的代数约束代数循环。因此,如果代数循环包含不连续,代数循环解决者可能会失败。gydF4y2Ba

有关更多信息,请参见gydF4y2Ba解决索引1在MATLAB和Simulink拓扑万博1manbetxgydF4y2Ba(gydF4y2Ba1gydF4y2Ba]gydF4y2Ba

信赖域和线搜索算法在解决代数循环gydF4y2Ba

模型代数万博1manbetx循环求解器使用两种算法来解决代数循环:gydF4y2Ba

  • 信赖域gydF4y2Ba

  • 线搜索gydF4y2Ba

默认情况下,解决代数循环利用信赖域算法。gydF4y2Ba

如果代数循环求解信赖域算法不能解决代数循环,尝试使用线搜索算法模拟模型。gydF4y2Ba

切换到线搜索算法,在MATLAB命令行,输入:gydF4y2Ba

set_param (gydF4y2Bamodel_namegydF4y2Ba、“AlgebraicLoopSolver”、“LineSearch”);gydF4y2Ba

切换回信赖域算法,在MATLAB命令行,输入:gydF4y2Ba

set_param (gydF4y2Bamodel_namegydF4y2Ba、“AlgebraicLoopSolver”、“TrustRegion”);gydF4y2Ba

有关更多信息,请参见:gydF4y2Ba

代数循环解算器的局限性gydF4y2Ba

解决代数循环是一个迭代的过程。模型代数万博1manbetx循环求解成功只有在代数循环收敛于一个明确的答复。当循环无法收敛,或收敛太慢,仿真退出一个错误。gydF4y2Ba

代数循环解决不能解决代数循环包含下列:gydF4y2Ba

  • 块与discrete-valued输出gydF4y2Ba

  • 块与nondouble或复杂的输出gydF4y2Ba

  • 不连续gydF4y2Ba

  • StateflowgydF4y2Ba®gydF4y2Ba图表gydF4y2Ba

消除代数环gydF4y2Ba

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

介绍一个延迟gydF4y2Ba

代数循环发生在大型模型,当原子子系统可以创建反馈循环。gydF4y2Ba

通用模型中,有两个代数循环涉及的子系统。gydF4y2Ba

  • BlackBox_A - > BlackBox_B - > BlackBox_C - > BlackBox_AgydF4y2Ba

  • BlackBox_B - > BlackBox_C - > BlackBox_BgydF4y2Ba

当你更新这个模型,仿真软件检测到循环BlackBox_A万博1manbetx - > BlackBox_B - > BlackBox_C - > BlackBox_A。gydF4y2Ba

因为你不知道这些子系统的内容,打破循环通过添加gydF4y2Ba单位延迟gydF4y2Ba块外的子系统。有三种方法可以使用gydF4y2Ba单位延迟gydF4y2Ba块打破这些循环:gydF4y2Ba

  • 添加一个gydF4y2Ba单位延迟gydF4y2Ba之间的gydF4y2BaBlackBox_AgydF4y2Ba和gydF4y2BaBlackBox_CgydF4y2Ba。gydF4y2Ba

  • 添加一个gydF4y2Ba单位延迟gydF4y2Ba之间的gydF4y2BaBlackBox_BgydF4y2Ba和gydF4y2BaBlackBox_CgydF4y2Ba。gydF4y2Ba

  • 添加gydF4y2Ba单位延迟gydF4y2Ba块代数循环。gydF4y2Ba

添加一个单位延迟BlackBox_A和BlackBox_C之间gydF4y2Ba

如果您添加一个单位延迟之间的反馈信号子系统BlackBox_A BlackBox_C,你介绍的最小数量单位延迟系统(1)。通过引入延迟BlackBox_A之前,BlackBox_B BlackBox_C使用数据从当前时间步。gydF4y2Ba

添加一个单位延迟BlackBox_B和BlackBox_C之间gydF4y2Ba

如果您添加一个单元子系统BlackBox_B和BlackBox_C之间的延迟,你打破BlackBox_B之间的代数环和BlackBox_C。此外,你打破BlackBox_A之间的循环和BlackBox_C,因为信号完成代数循环。通过插入gydF4y2Ba单位延迟gydF4y2Ba块BlackBox_C之前,BlackBox_C现在与以前的数据时间步。gydF4y2Ba

加单位延迟代数循环gydF4y2Ba

在这里的例子中,你插入gydF4y2Ba单位延迟gydF4y2Ba块打破两个代数循环。在这个模型中,BlackBox_A BlackBox_B使用数据从以前的时间步。从当前时间步BlackBox_C使用数据。gydF4y2Ba

手动解决代数循环gydF4y2Ba

如果模万博1manbetx型不能解决代数环,软件就会报告错误。使用这些技术来解决手动循环:gydF4y2Ba

使用集成电路和代数约束创建初始猜测块。gydF4y2Ba您的模型可能包含循环回路的解算器不能收敛没有好的,初始猜测代数。您可以指定一个初始猜测代数状态变量,但是使用这种技术只有当你认为循环是合法的。gydF4y2Ba

有两种方法可以指定一个初始猜测:gydF4y2Ba

消除人工代数循环gydF4y2Ba

使用这些技术来消除人工代数循环模型:gydF4y2Ba

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

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

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

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

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

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

  4. 保存更改。gydF4y2Ba

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

  • 一个代数约束gydF4y2Ba

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

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

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

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

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

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

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

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

如果你模拟gydF4y2Ba模型gydF4y2Ba与gydF4y2Ba代数循环gydF4y2Ba参数设置为gydF4y2Ba警告gydF4y2Ba或gydF4y2Ba错误gydF4y2Ba,模万博1manbetx型识别代数循环。gydF4y2Ba

消除代数环:gydF4y2Ba

  1. 改变gydF4y2BaCgydF4y2Ba和gydF4y2BaDgydF4y2Ba矩阵如下:gydF4y2Ba

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

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

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

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

  • 最小化代数循环出现gydF4y2Ba参数,指定模型试图消除任何人工代数循环:万博1manbetxgydF4y2Ba

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

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

  • 最小化代数循环gydF4y2Ba参数,指定模型需要如果诊断操作万博1manbetxgydF4y2Ba最小化代数循环出现gydF4y2Ba参数没有影响。gydF4y2Ba

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

    设置gydF4y2Ba 模拟反应gydF4y2Ba
    没有一个gydF4y2Ba

    万博1manbetx仿真软件并不采取任何行动。gydF4y2Ba

    警告gydF4y2Ba

    万博1manbetx模型显示一条警告gydF4y2Ba最小化代数循环出现gydF4y2Ba参数没有影响。gydF4y2Ba

    错误gydF4y2Ba

    万博1manbetx仿真软件终止模拟和显示一个错误gydF4y2Ba最小化代数循环出现gydF4y2Ba参数没有影响。gydF4y2Ba

块减少和人工代数循环gydF4y2Ba

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

使块也可以帮助减少模型解决人工代数循环。万博1manbetxgydF4y2Ba

考虑下面的例子gydF4y2Ba模型gydF4y2Ba。gydF4y2Ba

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

如果你减少使块和顺序,resimulate模型,模型显示块的顺序并没有降低。万博1manbetx你现在可以快速查看哪些块已经减少。gydF4y2Ba

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

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

提示gydF4y2Ba

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

如何gydF4y2Ba万博1manbetx消除了人工代数循环gydF4y2Ba

当你使gydF4y2Ba最小化代数循环出现gydF4y2Ba,模万博1manbetx型试图消除人工代数循环。在这个例子中,gydF4y2Ba模型gydF4y2Ba包含一个原子导致人造代数循环子系统。gydF4y2Ba

原子子系统的内容并不直接引线,但仿真软件标识原子子系统直接引线。万博1manbetxgydF4y2Ba

如果gydF4y2Ba代数循环gydF4y2Ba诊断设置为gydF4y2Ba错误gydF4y2Ba,模拟模型会导致错误,因为涉及它的原子模型包含一个人工代数循环子系统。gydF4y2Ba

消除代数环,gydF4y2Ba

  1. 从前面的图形创建模型,原子导致人工代数循环子系统。gydF4y2Ba

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

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

  4. 显示的顺序模型和原子子系统,选择gydF4y2Ba显示gydF4y2Ba>gydF4y2Ba块gydF4y2Ba>gydF4y2Ba执行顺序排序gydF4y2Ba。gydF4y2Ba

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

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

    请注意gydF4y2Ba

    关于顺序的更多信息,请参阅gydF4y2Ba控制和显示顺序gydF4y2Ba。gydF4y2Ba

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

  6. 点击gydF4y2Ba模拟gydF4y2Ba>gydF4y2Ba更新图gydF4y2Ba重新计算顺序。gydF4y2Ba

    现在有两个级别的顺序在子系统:1和2。gydF4y2Ba

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

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

  1. mdlOutputsgydF4y2Ba

  2. mdlDerivativesgydF4y2Ba

  3. mdlUpdategydF4y2Ba

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

请注意gydF4y2Ba

关于这些方法的更多信息,请参阅gydF4y2Ba块的方法gydF4y2Ba。gydF4y2Ba

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

这些条件是正确的:gydF4y2Ba

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

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

只有gydF4y2BamdlDerivativesgydF4y2Ba或gydF4y2BamdlUpdategydF4y2Ba原子单元方法2需要原子单元的输出1。万博1manbetx仿真软件可以执行期间通常会被执行gydF4y2BamdlOutputgydF4y2Ba方法的原子单位1gydF4y2BamdlDerivativesgydF4y2Ba原子单元二的方法。gydF4y2Ba

新模型的执行顺序:gydF4y2Ba

  1. mdlOutputsgydF4y2Ba模型的方法gydF4y2Ba

    1. mdlOutputsgydF4y2Ba原子单元二的方法gydF4y2Ba

    2. mdlOutputsgydF4y2Ba其他模块的方法gydF4y2Ba

  2. mdlDerivativesgydF4y2Ba模型的方法gydF4y2Ba

    1. mdlOutputsgydF4y2Ba原子单元1的方法gydF4y2Ba

    2. mdlDerivativesgydF4y2Ba原子单元二的方法gydF4y2Ba

    3. mdlDerivativesgydF4y2Ba其他模块的方法gydF4y2Ba

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

当gydF4y2Ba万博1manbetx无法消除人工代数循环gydF4y2Ba

设置gydF4y2Ba最小化代数循环出现gydF4y2Ba参数并不总是工作。万博1manbetx仿真软件不能改变的gydF4y2BaDirectFeedthroughgydF4y2Ba财产原子子系统的尺寸,如果尺寸只有通过direct-feedthrough块连接到一个输出港。gydF4y2Ba

在这个gydF4y2Ba模型gydF4y2Ba子系统植物+控制器引起一个代数循环,但它有一个额外的块和一个额外的输出。gydF4y2Ba

万博1manbetx仿真软件不能移动gydF4y2BamdlOutputsgydF4y2Ba控制器块的方法gydF4y2BamdlDerivativegydF4y2Ba一个原子单元法1因为原子子系统的输出取决于控制器的输出块。你不能使子系统non-direct-feedthrough。gydF4y2Ba

你可以修改这个模型以消除人工代数循环通过重新定义原子子系统通过添加额外的轮廓尺寸和增益模块,正如你所看到的gydF4y2Ba模型gydF4y2Ba在这里。这么做会让In1 non-direct-feedthrough和In2直接引线,从而打破了代数循环。gydF4y2Ba

管理大型模型与人工代数循环gydF4y2Ba

采用这些设计技术对大型模型与代数循环:gydF4y2Ba

  • 避免创建循环包含不连续或nondouble数据类型。基于仿真万博1manbetx软件代数循环求解是梯度和必须解决代数约束精度高。gydF4y2Ba

  • 开发方案明显识别原子子系统直接引线直接引线。使用视觉方案,如色素块或定义一个block-naming公约。gydF4y2Ba

  • 如果你计划为您的模型生成代码,使gydF4y2Ba最小化代数循环出现gydF4y2Ba所有原子子系统参数。在可能的情况下,确保原子子系统的输入端口直接连接到non-direct-feedthrough块。gydF4y2Ba

  • 避免non-direct-feedthrough和direct-feedthrough路径相结合使用gydF4y2Ba总线的创造者gydF4y2Ba或gydF4y2BaMuxgydF4y2Ba块。万博1manbetx模型可能无法消除任何产生的人工代数循环。相反,考虑集群non-direct-feedthrough和direct-feedthrough对象在不同的子系统。gydF4y2Ba

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

模型块和直接引线gydF4y2Ba

当一个gydF4y2Ba模型gydF4y2Ba块是一个循环的一部分,和块直接连通块,会导致一个代数循环。一个代数循环模型中不一定是一个错误,但它可以给意想不到的结果。看到的:gydF4y2Ba

直接模型块引线引起的子模型结构gydF4y2Ba

一个gydF4y2Ba模型gydF4y2Ba块可以直接连通块由于引用模型的结构。直接馈通结果子模型结构,并导致一个不受欢迎的代数循环,您可以:gydF4y2Ba

直接模型块引线引起的模型配置gydF4y2Ba

通用实时(gydF4y2Ba通gydF4y2Ba)和嵌入式实时(gydF4y2Ba导gydF4y2Ba)目标提供基础gydF4y2Ba单输出/更新功能gydF4y2Ba选择在gydF4y2Ba配置参数gydF4y2Ba对话框。这个选项控制生成的代码是否有单独的输出和更新功能,或合并输出/更新功能。看到的:gydF4y2Ba

当gydF4y2Ba单输出/更新功能gydF4y2Ba启用(默认),模型块组合输出/更新功能。函数使所有港口块直接连通块,无论引用的结构模型。在一个不受欢迎的代数循环的结果,您可以:gydF4y2Ba

使用代数循环求解时改变块优先级gydF4y2Ba

在更新阶段的模拟,模型决定了模拟块方法的执行顺序。万博1manbetx这一块调用命令gydF4y2Ba顺序gydF4y2Ba。gydF4y2Ba

如果你将优先分配给nonvirtual块来表示模型其执行顺序相对于其他块,代数循环解决不荣誉这些重点当试图解决任何代数循环万博1manbetx。gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba


(gydF4y2Ba1gydF4y2Ba]gydF4y2BaShampine,劳伦斯F。,其摘要,J.A.Kierzenka。“解决索引1拓扑在MATLAB和Simulink。”万博1manbetxgydF4y2Ba暹罗。gydF4y2Ba研究概述,第三,1999年,pp.538 - 552。gydF4y2Ba

(gydF4y2Ba2gydF4y2Ba]gydF4y2Ba更多,j,狗屁Garbow, K.E.Hillstrom。gydF4y2Ba用户指南MINPACK-1gydF4y2Ba。阿贡,IL):阿贡国家实验室,1980年。gydF4y2Ba

(gydF4y2Ba3gydF4y2Ba]gydF4y2BaRabinowitz,菲利普。gydF4y2Ba非线性代数方程的数值方法gydF4y2Ba纽约:戈登和违反科学出版社,1970年。gydF4y2Ba

这个主题有帮助吗?gydF4y2Ba