代数循环gydF4y2Ba
一个代数循环是什么?gydF4y2Ba
在仿真软件万博1manbetxgydF4y2Ba®gydF4y2Ba模型中,一个gydF4y2Ba代数循环gydF4y2Ba发生在信号回路存在只有直接引线街区内的循环。gydF4y2Ba直接引线gydF4y2Ba意味着块输出取决于输入端口的值;输入的值直接控制输出的值。gydF4y2Ba
有些块输入端口直接引线。万博1manbetx仿真软件无法计算这些块的输出不知道信号的值在这些输入端口进入块在当前时间步。gydF4y2Ba
一些块直接输入引线的例子有:gydF4y2Ba
状态方程gydF4y2Ba,当D矩阵系数是零gydF4y2Ba
转移FcngydF4y2Ba,当分子和分母相同的顺序gydF4y2Ba
Zero-PolegydF4y2Ba,当块尽可能多的零极点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
地点:gydF4y2Ba
xgydF4y2Ba状态向量。gydF4y2Ba
tgydF4y2Ba是独立的变量。gydF4y2Ba
一些系统的方程包含额外的约束,包括独立变量和状态向量,但不是状态向量的导数。这样的系统是gydF4y2Ba微分代数方程(拓扑)gydF4y2Ba,而不是常微分方程。gydF4y2Ba
这个词gydF4y2Ba代数gydF4y2Ba指的是方程,不涉及任何衍生品。你可以表达在半显式的形式出现的标志性工程gydF4y2Ba
地点:gydF4y2Ba
fgydF4y2Ba和gydF4y2BaggydF4y2Ba可以是向量函数。gydF4y2Ba
第一个方程是微分方程。gydF4y2Ba
第二个方程代数方程。gydF4y2Ba
微分变量的向量gydF4y2BaxgydF4y2Ba。gydF4y2Ba
代数变量的向量gydF4y2BaxgydF4y2Ba一个gydF4y2Ba。gydF4y2Ba
在仿真万博1manbetx软件模型中,代数循环代数约束。模型与代数循环定义一个微分代数方程组。万博1manbetx模型并不直接解决拓扑。万博1manbetx仿真软件解决代数方程(代数循环)数值gydF4y2BaxgydF4y2Ba一个gydF4y2Ba在每一步的ODE求解器进行求解。gydF4y2Ba
的gydF4y2Ba模型gydF4y2Ba图中相当于这个方程组在半显式的形式:gydF4y2Ba
在每一步的ODE求解器,解决代数循环必须解决代数约束gydF4y2BaxgydF4y2Ba一个gydF4y2Ba在计算导数gydF4y2Ba 。gydF4y2Ba
物理解释gydF4y2Ba
代数约束:gydF4y2Ba
发生物理系统建模时,常常由于守恒定律,如质量和能量守恒gydF4y2Ba
发生当你选择一个特定的坐标系统的一个模型gydF4y2Ba
帮助实施设计约束系统响应在一个动态系统gydF4y2Ba
使用Simscape™模型系统跨机械、电气、液压等物理域的物理网络。Simscape结构的拓扑描述模型的行为。软件集成了这些方程的模型,然后直接解决拓扑。万博1manbetx仿真软件解决了组件的变量在不同的物理域同时,避免与代数环问题。gydF4y2Ba
一个人工代数循环是什么?gydF4y2Ba
一个gydF4y2Ba人工代数循环gydF4y2Ba发生在一个原子子系统或模型块导致模型检测一个代数循环,即使子系统的内容不包含一个代数约束。万博1manbetx当您创建一个原子子系统,所有尺寸块直接引线,导致一个代数循环。gydF4y2Ba
一个人工代数循环的例子gydF4y2Ba
从这开始gydF4y2Ba模型gydF4y2Ba,不包含一个代数循环。它模拟没有错误。gydF4y2Ba
附上一个子系统的控制器和植物块。gydF4y2Ba
在子系统块对话框中,选择gydF4y2Ba治疗作为原子单元gydF4y2Ba子系统的原子。gydF4y2Ba
在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
打开模型。gydF4y2Ba
在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba来gydF4y2Ba
没有一个gydF4y2Ba
或gydF4y2Ba警告gydF4y2Ba
。设置这个参数gydF4y2Ba错误gydF4y2Ba
防止模型编译。gydF4y2Ba编译模型没有任何错误。模型必须编译之前你可以强调任何代数循环。gydF4y2Ba
在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
打开gydF4y2Basldemo_hydcylgydF4y2Ba模型。gydF4y2Ba
在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba参数gydF4y2Ba
错误gydF4y2Ba
。gydF4y2Ba模拟模型。gydF4y2Ba
当仿真软件万博1manbetx检测到一个代数循环初始化期间,仿真停止。诊断查看器显示一个错误消息和列表中的所有块模型的代数循环。gydF4y2Ba
在模型中,红色突出显示模块和信号的循环。gydF4y2Ba
关闭诊断查看器删除了。gydF4y2Ba
关闭gydF4y2Ba
sldemo_hydcylgydF4y2Ba
模型。不保存更改。gydF4y2Ba
使用的演出调试器命令gydF4y2Ba
使用gydF4y2Ba的演出gydF4y2Ba
在仿真软件调试器命令强调代数循万博1manbetx环和通过一个模拟步骤。gydF4y2Ba
打开gydF4y2Basldemo_hydcylgydF4y2Ba模型。gydF4y2Ba
默认情况下,gydF4y2Ba代数循环gydF4y2Ba这个模型设置参数gydF4y2Ba
没有一个gydF4y2Ba
。gydF4y2Ba启动仿真软件调试器。万博1manbetx选择gydF4y2Ba模拟gydF4y2Ba>gydF4y2Ba调试gydF4y2Ba>gydF4y2Ba调试模式gydF4y2Ba。gydF4y2Ba
运行调试器。gydF4y2Ba
在MATLAB命令提示符中,输入:gydF4y2Ba
的演出gydF4y2Ba
命令返回代数循环gydF4y2Ba
sldemo_hydcylgydF4y2Ba
并在循环块的数量。gydF4y2Ba发现1代数循环(s):系统id号码#代数循环,循环的块- 0 # 1,9块循环gydF4y2Ba
列出这个代数循环的块,在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
Shampine和解决的gydF4y2Banleqn。m代码gydF4y2Ba
HYBRD1的Fortran程序gydF4y2Ba用户指南MINPACK-1gydF4y2Ba(gydF4y2Ba2gydF4y2Ba]gydF4y2Ba
鲍威尔的“一个Fortran子例程非线性方程,求解系统”gydF4y2Ba非线性代数方程的数值方法gydF4y2Ba(gydF4y2Ba3gydF4y2Ba]gydF4y2Ba
信赖域方法非线性最小化gydF4y2Ba(优化工具箱)。gydF4y2Ba
线搜索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之间的gydF4y2Ba
BlackBox_AgydF4y2Ba
和gydF4y2BaBlackBox_CgydF4y2Ba
。gydF4y2Ba添加一个gydF4y2Ba单位延迟gydF4y2Ba之间的gydF4y2Ba
BlackBox_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集成电路gydF4y2Ba在代数循环。gydF4y2Ba
指定一个初始猜测一个信号在一个代数循环使用gydF4y2Ba代数约束gydF4y2Ba块。gydF4y2Ba
消除人工代数循环gydF4y2Ba
使用这些技术来消除人工代数循环模型:gydF4y2Ba
消除人工代数循环引起的原子子系统gydF4y2Ba
如果一个原子子系统导致人为的代数环,原子系统转换为一个虚拟子系统。这种变化对模型的行为没有影响。当子系统原子模拟模型,模型调用代数循环求解程序。万博1manbetx一次迭代后的解算器终止。代数循环自动解决,因为没有代数不变。使子系统虚拟后,模型不调用代数循环在仿真解算器。万博1manbetxgydF4y2Ba
将一个原子一个虚拟子系统的子系统:gydF4y2Ba
打开包含原子模型子系统。gydF4y2Ba
右键单击并选择原子子系统gydF4y2Ba子系统参数gydF4y2Ba。gydF4y2Ba
清除gydF4y2Ba治疗作为原子单元gydF4y2Ba参数。gydF4y2Ba
保存更改。gydF4y2Ba
如果你取代原子与一个虚拟子系统子系统和仿真仍未使用一个代数循环错误,检查其中一个模型:gydF4y2Ba
一个代数约束gydF4y2Ba
人造代数循环并非由于这个原子子系统gydF4y2Ba
捆绑信号,创造人工代数循环gydF4y2Ba
一些模型信号捆绑在一起。这种捆绑可能会导致仿真软件来检测一个代数循环,即万博1manbetx使在一个代数约束并不存在。如果你重定向一个或多个信号,你可以移除人工代数循环。gydF4y2Ba
在这个例子中,线性化gydF4y2Ba模型gydF4y2Ba模拟了槽式系统的动力学美联储由一个泵。在这个模型中:gydF4y2Ba
输出gydF4y2Ba
第一季度gydF4y2Ba
是流体的速度流入泵的坦克。gydF4y2Ba输出gydF4y2Ba
h2gydF4y2Ba
是液体在第二槽的高度。gydF4y2Ba的gydF4y2Ba状态方程gydF4y2Ba块定义了动态响应的坦克系统泵操作:gydF4y2Ba
状态方程的输出是一个向量,其中包含块gydF4y2Ba
第一季度gydF4y2Ba
和gydF4y2Bah2gydF4y2Ba
。gydF4y2Ba
如果你模拟gydF4y2Ba模型gydF4y2Ba与gydF4y2Ba代数循环gydF4y2Ba参数设置为gydF4y2Ba警告gydF4y2Ba
或gydF4y2Ba错误gydF4y2Ba
,模万博1manbetx型识别代数循环。gydF4y2Ba
消除代数环:gydF4y2Ba
改变gydF4y2Ba
CgydF4y2Ba
和gydF4y2BaDgydF4y2Ba
矩阵如下:gydF4y2Ba通过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
从前面的图形创建模型,原子导致人工代数循环子系统。gydF4y2Ba
在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba参数gydF4y2Ba
警告gydF4y2Ba
或gydF4y2Ba没有一个gydF4y2Ba
。gydF4y2Ba在gydF4y2Ba数据导入/导出gydF4y2Ba窗格中,确保gydF4y2Ba信号记录gydF4y2Ba参数是禁用的。如果启用了日志记录信号,仿真软件无法消除人工代数循环。万博1manbetxgydF4y2Ba
显示的顺序模型和原子子系统,选择gydF4y2Ba显示gydF4y2Ba>gydF4y2Ba块gydF4y2Ba>gydF4y2Ba执行顺序排序gydF4y2Ba。gydF4y2Ba
检查顺序可以帮助您理解如何消除人工代数循环。gydF4y2Ba
所有子系统的模块执行在同一水平:1。(0是最低水平,表明第一块执行。)gydF4y2Ba
请注意gydF4y2Ba
关于顺序的更多信息,请参阅gydF4y2Ba控制和显示顺序gydF4y2Ba。gydF4y2Ba
在顶层模型gydF4y2Ba子系统参数gydF4y2Ba对话框中,选择gydF4y2Ba最小化代数循环出现gydF4y2Ba。这个参数指导模型试图消除代数环包含原子子系统,万博1manbetx当它模拟模型。保存更改。gydF4y2Ba
点击gydF4y2Ba模拟gydF4y2Ba>gydF4y2Ba更新图gydF4y2Ba重新计算顺序。gydF4y2Ba
现在有两个级别的顺序在子系统:1和2。gydF4y2Ba
消除人工代数循环,仿真软件试图使输入子系统或引用模型的非直接引线。万博1manbetxgydF4y2Ba
当你模拟模型,在这个订单所有块执行方法:gydF4y2Ba
mdlOutputsgydF4y2Ba
mdlDerivativesgydF4y2Ba
mdlUpdategydF4y2Ba
在最初的版本gydF4y2Ba模型gydF4y2Ba的执行gydF4y2BamdlOutputsgydF4y2Ba
方法从植物开始块,因为工厂间接块引线。与控制器块执行完成。gydF4y2Ba
请注意gydF4y2Ba
关于这些方法的更多信息,请参阅gydF4y2Ba块的方法gydF4y2Ba。gydF4y2Ba
如果你使gydF4y2Ba最小化代数循环出现gydF4y2Ba原子子系统参数,仿真软件将子系统划分为两个原子单元。万博1manbetxgydF4y2Ba
这些条件是正确的:gydF4y2Ba
原子单元2不直接引线。gydF4y2Ba
只有一个原子单位1gydF4y2Ba
mdlOutputsgydF4y2Ba
方法。gydF4y2Ba
只有gydF4y2BamdlDerivativesgydF4y2Ba
或gydF4y2BamdlUpdategydF4y2Ba
原子单元方法2需要原子单元的输出1。万博1manbetx仿真软件可以执行期间通常会被执行gydF4y2BamdlOutputgydF4y2Ba
方法的原子单位1gydF4y2BamdlDerivativesgydF4y2Ba
原子单元二的方法。gydF4y2Ba
新模型的执行顺序:gydF4y2Ba
mdlOutputsgydF4y2Ba
模型的方法gydF4y2BamdlOutputsgydF4y2Ba
原子单元二的方法gydF4y2BamdlOutputsgydF4y2Ba
其他模块的方法gydF4y2Ba
mdlDerivativesgydF4y2Ba
模型的方法gydF4y2BamdlOutputsgydF4y2Ba
原子单元1的方法gydF4y2BamdlDerivativesgydF4y2Ba
原子单元二的方法gydF4y2BamdlDerivativesgydF4y2Ba
其他模块的方法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
通用实时(gydF4y2Ba通gydF4y2Ba
)和嵌入式实时(gydF4y2Ba导gydF4y2Ba
)目标提供基础gydF4y2Ba单输出/更新功能gydF4y2Ba选择在gydF4y2Ba配置参数gydF4y2Ba对话框。这个选项控制生成的代码是否有单独的输出和更新功能,或合并输出/更新功能。看到的:gydF4y2Ba
配置模型入口点函数的代码生成gydF4y2Ba(万博1manbetx仿真软件编码器)单独和联合输出信息和更新功能。gydF4y2Ba
单输出/更新功能gydF4y2Ba(万博1manbetx仿真软件编码器)指定代码是否单独或联合信息功能。gydF4y2Ba
当gydF4y2Ba单输出/更新功能gydF4y2Ba启用(默认),模型块组合输出/更新功能。函数使所有港口块直接连通块,无论引用的结构模型。在一个不受欢迎的代数循环的结果,您可以:gydF4y2Ba
禁用gydF4y2Ba单输出/更新功能gydF4y2Ba。模型的代码块然后将输出和更新功能,消除了直接馈通,因此代数循环。gydF4y2Ba
自动消除代数环使用介绍的技术:gydF4y2Ba
手动插入一个或多个gydF4y2Ba单位延迟gydF4y2Ba块来打破代数循环。gydF4y2Ba
使用代数循环求解时改变块优先级gydF4y2Ba
在更新阶段的模拟,模型决定了模拟块方法的执行顺序。万博1manbetx这一块调用命令gydF4y2Ba顺序gydF4y2Ba。gydF4y2Ba
如果你将优先分配给nonvirtual块来表示模型其执行顺序相对于其他块,代数循环解决不荣誉这些重点当试图解决任何代数循环万博1manbetx。gydF4y2Ba
另请参阅gydF4y2Ba
解决者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