【问题标题】:Ignore algebraic loops in simulink忽略 simulink 中的代数环
【发布时间】:2014-03-12 15:08:50
【问题描述】:

我有一个系统,其中 simulink 抱怨代数循环,但是在运行时代数循环永远不会发生。是否可以忽略错误?

该模型具有以下相同的属性。如果两个开关都打开,则有两个开关将形成一个代数循环,但这永远不会在运行时切换。 Simulink 无法解决它,因为该值很复杂。

错误信息是: 无法求解涉及“complexAlgebraicLoop/Sum”的代数循环,因为它由无法分配代数变量的模块组成,例如具有离散值输出的模块、具有非双精度或复数输出的模块、Stateflow 模块或非虚拟子系统。考虑打破代数循环。例如,在循环中添加延迟或内存块。

【问题讨论】:

  • 如果你使用两个单独的循环,一个用于真实的,一个用于复杂的,它是否有效?
  • @Navan:是的,这会起作用,但是当我有很多信号时,这不是一个干净的解决方案。 :-)
  • 是的。对于太多的信号,那将是不干净的。我能想到的唯一其他解决方法是对整个逻辑使用 MATLAB Function 块。
  • 你能解释一下为什么如果在运行时永远不会出现代数循环,为什么你需要对它们进行建模?
  • @PhilGoddard:原因是我模拟了一个节点连接成环的系统。连接可以打开或关闭。该系统可能如下所示: 1-2 | | 4-3 每个连接都可以打开或关闭。如果所有连接都关闭,则会出现代数环,因此打开一个(任意)连接,这给出了相同的解决方案。有时,1 和 2,以及 3 和 4 是“组”,有时可能是 1、2 和 3,而 4 与其他人断开连接。

标签: simulink


【解决方案1】:

这里的问题是代数环中的变量是复数,Simulink 无法解决复数的代数环。但是,一种解决方法是转换为实数值(例如,实部和虚部或幅度和角度),然后再转换回复数值。对于这个问题,它意味着:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多