如何解决“在计算输出时更新持久变量或状态变量,因此它不能用于代数循环....”图表错误

How to resolve'updates persistent or state variables while computing outputs, therefore it cannot be used in an algebraic loop....' error with Charts

我有一个模型,其中包含 2 个用代码创建的图表。我的第一个图表是一个测试模拟,它在 TimerStatus = 1; 时进入 TIMER EXPIRED 状态。我的计时器图表出现错误:

当我尝试模拟时出现错误:

'ES_TestDS/Timer_principal' updates persistent or state variables while computing outputs, therefore it cannot be used in an algebraic loop. However, it is in a loop with the following blocks. For more information, see Algebraic Loops with MATLAB Function and Stateflow Blocks.

我该如何解决这个问题?我阅读了有关摩尔图表的信息,但我不知道如何将我的图表转换为摩尔图表。

编辑 1:除了错误之外还有这个警告:

If the inport 'ES_TestDS/Timer_principal/Start_Timer' of subsystem 'ES_TestDS/Timer_principal' involves direct feedback, then an algebraic loop exists, which Simulink cannot remove. Consider clearing the 'Minimize algebraic loop occurrences' parameter to avoid this warning.

Stop_Timer

也一样

编辑:如果我显示我的计时器和图表之间的联系,也许它会有所帮助

我找到了手动解决方案:

  • 转到 Model Explorer 并将导致错误的图表的 State Machine Type 设置为 Moore

  • 删除图表中的所有 entry, during, exit ... 个语句

问题是如果有人知道,我仍然不知道如何使用 Matlab 代码设置状态机类型

编辑:cht.StateMachineType = 'Moore';