代数环

Simulink.BlockDiagram.getAlgebraicLoops('untitled')

image.png
官方解释:在 Simulink模型中,当存在信号环并且信号环中只存在直接馈通模块时,将出现代数环。直接馈通表示 Simulink 需要模块输入信号的值来计算当前时间步的输出。这种信号循环会在同一时间步中产生模块输出和输入的循环依存关系。这会导致一个需要在每个时间步求解的代数方程,从而增加仿真的计算成本。
自搜解释:在数字计算中,输入信号决定输出信号,同时输出信号也决定输入信号,由于数字计算的时序性,导致没有输出信号无法计算输入信号,没有输入信号又反过来无法计算输出信号,形成一个死锁(deadlock)或死循环,这就是代数环。

代数环的解决措施

  1. 用工具栏中的“simulink”中的“diagnostics”对代数环进行消除
    将simulink中diagnostics的对代数环的处理信息进行选择,将对代数环的处理信息选择为“none”,即忽略代数环的信息。
  2. 在反馈回路中添加延时模块进行消除
    由于代数环的产生是由于整个模型中所有模块均为直通模块,因此只需在反馈回路中添加延时模块即可消除代数环。延时模块有delay模块、memory模块。
  3. 用变换法消除代数环
    对于简单的代数环问题,可以通过人为地采用数字变换法来求解消除代数环,但这只针对简单的代数环有限,对于复杂的代数环基本不可能实现。
  4. 在反馈回路中添加入高频传递环节
    在反馈回路中添加入高频传递函数,打断反馈回路中的直通模块,消除输入信号与输出信号的关联关系。

参考资料

  1. 代数环概念 - MATLAB & Simulink - MathWorks 中国
  2. 漫谈Simulink:什么是代数环?
  3. 代数环问题
  4. 漫谈Simulink:真假代数环
posted @ 2023-05-04 17:03  结了冰的可乐  阅读(372)  评论(0)    收藏  举报