Unable to simulate a problem in simulink that runs effortlessly in Python.

Hi! I wish to simulate a problem in simulink that I simulated in Python last year. This problem is throwing a lot of problems in simulink from singularity issues to algebraic loop. The python code is as follows-
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
from numpy import tanh,sin,cos
t=np.linspace(0,100,10000)
y0=[0.3,-.4,0.1,0.3,0.5]
b,a1,a2,gamma,gamma1,gamma2,c,eta,k=2,1,3,7,5,6,3,1.5,15
def f(Y,t):
thetadot,psi,psidot,h1,h2=Y[0],Y[1],Y[2],Y[3],Y[4]
psiddot=a1*thetadot
e=psi-np.sin(t)
edot=psidot-np.cos(t)
eddot=psiddot+sin(t)
s=eddot+c**2*e+2*c*edot
u=h2*psidot+h1*(-cos(t))-h1*c**2*edot-2*h1*c*eddot-eta*tanh(s)-k*s
thetaddot=-a2*psidot+b*u
#hdot=gamma*(c*edot*s+np.sin(t)*s+.1*tanh(s)+2*s)
h1dot=-gamma1*(-cos(t)-c**2*edot-2*c*eddot)*s
h2dot=-gamma2*s*psidot
return[thetaddot,psidot,psiddot,h1dot,h2dot]
sol=odeint(f,y0,t)
thetadot=sol[:,0]
psi=sol[:,1]
psidot=sol[:,2]
h1=sol[:,3]
h2=sol[:,4]
plt.figure(1)
plt.plot(t,psi,t,psi-sin(t),'r--')
plt.figure(2)
plt.plot(t,thetadot,'r-',t,psidot,'g-')
plt.figure(3)
plt.plot(t,h1,t,h2)
plt.show()
I have also attached the simulink file- Right Now it is throwing algebraic loop error.

6 Comments

Model can not be opened. Can you reshare it?
I have reshared it. Kindly have a look.
It ran without any error for me. What was the error statement? Can you share it? Where is the algebraic loop found?
I have shared the graph with you. Can you check, are you getting similar results in matlab?
It is constantly throwing error in my case. Here is the screenshot of algebraic loop error.

Sign in to comment.

Answers (1)

For algebraic loop errors, simply add a Delay block to where the feedback occurs. This should solve it.

5 Comments

I dont know how to add delays to the loop can you help? Also it is repeatedly throwing the same error again. I wonder how come it is running in yours? What version is yours? Mine is 2015a and 2016 and I am running it on linux.
Can you share the model which this error occurs?
I have already shared the model-- "gyro_model1.mdl". It is available in my original post. I have tried my problem in various versions of matlab from 2015 all the way to 2017. But the problem still persists. I dont know how you were getting correct answers in your simulink.
Ok, it started working in 2017 matlab. Weird!
Anyway, keep in mind to add a Delay block if algebraic loop occurs. There are other solutions, but this is the basic one.

Sign in to comment.

Categories

Find more on Simulink in Help Center and File Exchange

Products

Asked:

on 4 Apr 2018

Commented:

on 4 Apr 2018

Community Treasure Hunt

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

Start Hunting!