cTIPO 0 CON OBSERVADOR
cTIPO 0 CON OBSERVADOR
cTIPO 0 CON OBSERVADOR
DISCRETO TIPO 0
TIPO 1
Asignación de polos CON ENTRADA NULA
%DISCRETIZAR PID
C=pid(A.kp,A.ki,A.kd,A.Tf,0.01,'IFormula','BackwardEuler','DFormula','BackwardEuler')
'ForwardEuler' ,'Trapezoidal' C=c2d(A,0.01,'matched') EMPAREJAMIENTO POLOS CERO
tustin es el bilineal
%ANTI WIND
ti=(pidz.kp/pidz.ki) td=(pidz.kd/pidz.kp) Kb=1/sqrt(ti*td)
%ki=kp/ti %kd=kp*td
ESPACIO DE ESTADOS
%TIPO 0 % TIPO 1
Mo=obsv(sys) rank(Mo) Mc=ctrb(sys) Mo=obsv(sys) rank(Mo) Mc=ctrb(sys)
rank(Mc) P=[A B; -C 0]; rank(P) rank(Mc)
syms Z SO=0.20; ts=1; sys=ss(A,B,C,0); %como era observable y
[z]=solve(log(SO)==-pi*Z/sqrt(1-Z^2),Z); z=eval(z); controlable
sigma=4/ts wn=sigma/z wd=wn*sqrt(1-z^2) p3=p1*5; polos_BC=[p1,p2,p3];
sigma=sigma; wd=wd; K=acker(sys.A,sys.B,polos_BC)
p1=-sigma-wd*j p2=-sigma+wd*j p3=real(p1)*5; A_BC=sys.A-sys.B*K;
polos_BC=[p1,p2,p3] B_BC=sys.B*K(2) POSICIÓN DE LA SALIDA
A_hat=[A zeros(4,1); -C 0]; sys_BC=ss(A_BC,B_BC,sys.C,0);
B_hat=[B;0]; [y ,t ,x]= step(sys_BC) ; step(sys_BC)
K_hat=acker(A_hat,B_hat,polos_BC) stepinfo(sys_BC)
Kss=K_hat(1:4) ; Ki=-K_hat(5) ; COMPROBAR QUE CUMPLE ESPECIFICACIONE
A_BC=A_hat-B_hat*K_hat B_BC=[zeros(4,1);1] figure plot(t,y) grid ;
sys_BC=ss(A_BC,B_BC,[C 0],0); title( 'S a l i d a l ') xlabel ( 'Tiempo ( s ) ' ) ;
[y,t,x]=step(sys_BC); ylabel('angulo ( r a d i a n e s ) ' ) ; figure
COMPROBAR QUE CUMPLE ESPECIFICACIONE plot(t,x)
step(sys_BC) stepinfo(sys_BC) plot(t,x)
plot(t,u)
%OBSERVADOR
polos_obs=5*[real(p1),real(p2),p3,p3]
GG = Ghat-Hhat*Khat
%Simulamos el sistema para una velocidad de
HH=[zeros(4,1);1]
referencia v = velocidad/3.6 %de km/s a m/s
CC = Chat DD = Dhat
[yramp tramp xramp] = lsim(sysbc, v*t, t)
sysbc = ss(GG, HH, CC, DD, T)
figure %Represento la velocidad q es salida.
step(sysbc) stepinfo(sysbc)
plot(t, yramp) hold on plot(t,v*t, 'r-')
plot ( t , xramp ( : , 1 ) ) ; gr id