如何解决“在计算输出时更新持久变量或状态变量,因此它不能用于代数循环....”图表错误
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';
我有一个模型,其中包含 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';