Nonlinear iteration error in Simulink model

5 visualizzazioni (ultimi 30 giorni)
Andrew BArney
Andrew BArney il 6 Apr 2023
Commentato: Andrew BArney il 7 Apr 2023
I'm currently trying to simulate a PMSM DC motor with sensorless field-oriented control from scratch. I believe I have fixed my model (other than updating my PI controllers since adding senslorless FOC), but I'm now getting this nonlinear iteration error:
An error occurred while running the simulation and the simulation was terminated
Caused by:
  • Solver encountered an error while simulating model 'PMSM_attempt_at_sensorless' at time 1.5027572535563431e-17 and cannot continue. Please check the model for errors.
  • Nonlinear iteration is not converging with step size reduced to hmin (5.33887E-32) at time 1.50276E-17. Try reducing the minimum step size and/or relax the relative error tolerance.
Is something gaurunteed to be wrong with my model, or can this be fixed by simulation settings? I'm not expecting anyone to understand much of my design, but any general suggestions that could be relevant to this error would be much appreciated.
Edit: I used to have an algebriac loop error but I believe I have since fixed that and am only getting this non-linear error. As you can see, I'm using a derivative block to take the derivative for my rotor angle to get my rotor speed (without using the motor's operational equations for senslorless FOC). I've read derivative blocks can likely cause issues, so would this likely be the source of my problems?

Risposte (1)

Sam Chak
Sam Chak il 6 Apr 2023
The message does not imply an algebraic loop error, but it suggests that one or more system states are approaching the numerical singularity at the specified time t = 1.5027572535563431e-17 sec.
I'm unfamiliar with your system. Most like the singularity is caused by some kind of division-by-zero stuffs, as one of the states approaches to zero, or approaching if it is related to the trigonometric functions such as , .
If you are unable to trace, then you should label the value on each signal line and run in step time to see which signal line explodes before t = 1.5027572535563431e-17 sec.
  1 Commento
Andrew BArney
Andrew BArney il 7 Apr 2023
My theta-estimator block does take the arctan of two different expressions so that could be it. Do you think the derivitive block could also be a suspect? I currently have the coefficient for the deriv block as it's default (inf)

Accedi per commentare.


Scopri di più su General Applications in Help Center e File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by