Algebraic Loop Problem - Avoiding Algebraic Analysis
1 次查看(过去 30 天)
显示 更早的评论
Hello,
I am trying to simulate a set of interconnected DT-LTI systems each modeled by discrete-time difference equations. I'm not exactly sure why Simulink is having an issue with this. It generates this error when I try to simulate:
Cannot solve algebraic loop involving 'test1/SingleLayer1/TLL/Product3' because it consists of blocks that cannot be assigned algebraic variables, such as blocks with discrete-valued outputs, blocks with non-double or complex outputs, Stateflow blocks, or nonvirtual subsystems. Consider breaking the algebraic loop. For example, add a delay or a memory block to the loop.
Since I am trying to model a set of discrete-time difference equations I cannot simply "add a delay" or "add a filter" or even break the loop, that defeats the whole purpose of the model. All I want is a numerical solution for the output of my simulation given an input and a set of constants that I know beforehand, and it only needs to be done all in discrete time. Is there a way to get Simulink to do this without solving things algebraically, or will I need to use other software?
0 个评论
回答(1 个)
Fangjun Jiang
2017-5-24
If the contents inside the two subsystem blocks are all simple arithmetic math, then most likely the model does have algebraic loops since there are outputs crossing two subsystems and feeding back to inputs.
Search "algebraic loop" in MATLAB document to understand it. In the Simulink model, go to menu "Simulation" -> "Model Configuration Parameters" -> "Diagnostics", play with the "Algebraic loop" and "Minimize algebraic loop" settings to see if you can make the simulation.
2 个评论
Fangjun Jiang
2017-5-25
Can you reduce the complexity of your model yet keep the error, make them in one subsystem and post the snapshot?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Block and Blockset Authoring 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!