segunda-feira, 24 de novembro de 2014

Sistemas de Controle - Scripts dos controladores

Senhores alunos:

Abaixo apresento os scripts Scilab para projeto de controladores PID pelo Método Analítico e dos controladores em avanço ou atraso de fase pelo Lugar das raízes.

Até amanhã.

Script PID:

s=%s;
ng = input("Entre com o numerador da FTMA da planta - polinômio em s: ")
dg = input("Entre com o denominador da FTMA da planta - polinômio em s:")
wg = input("Entre com a frequencia de cruzamento de ganho: ")
pm = input("Entre com a margem de fase: ")
ki = input("Entre com Ki: ")
ngc=horner(ng,%i*wg); dgc=horner(dg,%i*wg); g=ngc/dgc;
thetar=(pm-180)*3.141592/180;
ejtheta=cos(thetar)+%i*sin(thetar);
sol=(ejtheta/g)+%i*(ki/wg)
x=imag(sol);
r=real(sol);
kp=r;
kd=x/wg;
if ki~=0
    dk=s;
    nk=kd*s^2+ kp*s+ ki;
else dk=1; 
     nk=kd*s + kp;
end;
GC=syslin('c',nk,dk);

print(%io(2),GC,"Compensador");

Script Avanço ou atraso - Root Locus:

s=%s;
z = input("Entre com o amortecimento desejado : ")
wn = input("Entre com a frequencia natural desejada:")
ng = input("Entre com o numerador de G- polinomio em s: ")
dg = input("Entre com denominador de G - polinomio em s: ")
H = input("Entre com H: ")
KC=input("Entre com o ganho KC: ")
s1 = -z*wn + %i*wn*sqrt(1-z^2);
ms=abs(s1);
ts=atan(imag(s1),real(s1));
ns1=horner(ng*H,s1); ds1=horner(dg,s1); g=ns1/ds1;
mg=abs(g);
tg=atan(imag(g),real(g));
tauz=(sin(ts)-KC*mg*sin(tg-ts))/(KC*mg*ms*sin(tg));
taup=-(KC*mg*sin(ts)+sin(tg+ts))/(ms*sin(tg));
nk=KC*(tauz*s+1);
dk=taup*s+1;
GC=syslin('c',nk,dk);
print(%io(2),s1,"s1");
print(%io(2),ms,"modulo de s1");
print(%io(2),ts*180/%pi,"fase de s1");
print(%io(2),mg,"modulo de G");
print(%io(2),tg*180/%pi,"fase de G");
print(%io(2),GC,"Compensador")
print(%io(2),tauz,"tauz");
print(%io(2),taup,"tauz");
print(%io(2),GC,"Compensador");
G=syslin('c',ng,dg);
G1=G*GC;
FTMF = G1/.H;
t=linspace(0,0.005,1000);
y=csim('step',t,FTMF);
plot2d(t,2.5*y);
xgrid();


Nenhum comentário:

Postar um comentário