Block Error, Singularity in Solution?

3 visualizaciones (últimos 30 días)
Michael Scirocco
Michael Scirocco el 17 de Sept. de 2019
Comentada: Walter Roberson el 20 de Sept. de 2019
The error for my sim reads:
  • Derivative of state '1' in block 'shifter_system_sim_new/Integration 2' at time 0.01322996254791375 is not finite. The simulation will be stopped. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)
I've been trying to resolve this issue for a while and have looked at similar solutions to the same problem but can't figure out what is wrong and how to resolve this error. Will someone please tell me if this error is a sigularity issue or a step size issue? If so, how would I resolve it exactly for it to work?
Files are attached.
  5 comentarios
Michael Scirocco
Michael Scirocco el 18 de Sept. de 2019
Well it is a motor simulation to test different motor specs, which also takes into consideration the load of a clutch on a car.
For the load, I’m inputting the position (in degrees) [between 0 and 58] and outputting the torque [between 61 and 76.25]. The relationship between the two are linear. I’m also trying to make it so that if the input is not in the position range I care about, then it puts a “wall “up so that it only shows the range of motion that I care about. How do I create this lookup table? I tried putting limits on the input inside the lookup table parameters/data but it gave me the error above. How do I do it?
Walter Roberson
Walter Roberson el 18 de Sept. de 2019
Ah, it looks to me as if I was mis-reading the parameters. I will have another look.

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 18 de Sept. de 2019
What I had to do to get your model to execute without error message, was to uncomment the saturation block that feeds the 1D lookup table.
The initial value of the angle is 0, which is less than the first breakpoint of 0.001 that you had established, so your model would abort soon after it initialized. The Saturation Block had a minimum of 0.1 and so prevented that, but the Saturation Block was commented out.
Note: the Saturation Block emits a maximum of 56, which is lower than the two upper breakpoints of 58 and 58.1. You might want to reconsider the saturation limits.
  4 comentarios
Michael Scirocco
Michael Scirocco el 20 de Sept. de 2019
Well I expect the first position to be 0. The idea is that it shows me the motor's range of motion in degrees (from 0 to 58) over time so I can see how a specific motor handles the requirements of the load. I was expecting the position to start at 0, ramp up to 58 in a short period of time.
I don't know why the position becomes such a huge negative number. When I take the saturation out and make the lookup table from just [0, 58] and [61, 76.25] it gives me a value of around -300. Why is my position still negative??
Walter Roberson
Walter Roberson el 20 de Sept. de 2019
You have a Gain block named Inertia, with gain 1/J where J is about 9.18e-07 . 1 over that is a little over a million. This boasts very modest values to large values, and that is sent into the integrator 2 to become speed...

Iniciar sesión para comentar.

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by