Using Simulink to create generator that accepts feedback.
5 views (last 30 days)
Show older comments
Hello,
I am trying to create a generator that will accept feedback in order to raise and lower its voltage and frequency. I got a version of this to work using the old black outlined simscape generator model but cant seem to make progress with the blue outlined block. I found an example generator model that has a governor and excitor, I am feeding them a Vref and Wref from my own logic but I keep getting an error regarding my blocks being in an algebric loop. All help is appreciated.


3 Comments
Shivam Gothi
on 25 Nov 2024
Sorry, for the late reply and thankyou for sharing the model. I missed your comment. It would be great if you tag the community user while mentioning in the comment by using "@". This will notify the corresponding community user.
I worked on the file attached by you and was able to resolve the error.
Answers (2)
Abhishek Kumar Singh
on 8 Nov 2024
An algebraic loop occurs when a loop in your model is made up entirely of blocks that directly use their input to compute their output within the same time step. This creates a circular dependency, where both output and input values rely on each other simultaneously.
To resolve these issues, you can refer to the following resources:
- Understanding Algebraic Loops and General Solutions: https://www.mathworks.com/matlabcentral/answers/95310-what-are-algebraic-loops-in-simulink-and-how-do-i-solve-them
- Diagnosing Algebraic Loops: https://www.mathworks.com/matlabcentral/answers/97687-how-can-i-resolve-algebraic-loops-in-my-simulink-model?s_tid=answers_rcts
- Why Not to Break Algebraic Loops with Memory Blocks: https://blogs.mathworks.com/simulink/2015/07/18/why-you-should-never-break-an-algebraic-loop-with-with-a-memory-block/
Shivam Gothi
on 25 Nov 2024
I understand that you are facing the issue of algebraic loop while using “Synchronous Machine Round Rotor” block as used in your attached model.
I was able to reproduce the issue from my end. I resolved it by taking the following steps.
- Open the “configuration parameters” by pressing “Ctrl +E”.
- Navigate to the “solver” tab and expand the “Solver details” dropdown menu.
- Under “Zero-crossing options”, select the “Algorithm” property as “Adaptive”. This is shown in below figure:

- Add a “delay” block inside “AVR and Exciter” subsystem in your attached model as shown in below image:

- Add a “delay” block inside “Governor and Prime Mover” subsystem in your attached model as shown in below image:

The algebraic loop error was occurring because the solver was not able to solve the closed loop system by using numerical technique. These errors can be resolved by simply adding a delay block.
I have also attached the modified Simulink model with this answer.
I hope this resolves the issue !
0 Comments
See Also
Categories
Find more on Electrical Sensors in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!