LIVE Script-Practica 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 2

A continuación, se muestra el programa %% SINTONIZACIÓN DEL CONTROLADOR

elaborado con Matlab, consiste en obtener P


tres gráficas que con ayuda del comando
C1 = pidtune(tfmodel,'P',wc);
pidtune nos ayuda a sintonizar de un
TF1=feedback(C1*tfmodel,1);
controlador P, PI y PID para nuestro sistema
%Función de transferencia en lazo
tomado en cuenta los parámetros que ésta cerrado
practica solicita. [y,t]=step(TF1,Tsim); %Simulación
con el escalón unitario
LIVE Script
OSI=stepinfo(TF1).Overshoot;
clc; clear; %Sobretiro
err_f=abs(1-TF1.Numerator{1,1}
%% CONSTANTES DEL SISTEMA (end)/TF1.Denominator{1,1}(end));
%Error final
Tsim=40; % Tiempo de simulación Kp1=C1.Kp; %Constante
Ra=5; %Resistencia de la armadura proporcional
del motor
La=1; %Inductancia %Gráfica
Km=0.8; %Contante eléctrica y figure(1)
mecánica del motor plot(t,y,t,max(y)*t./t,'--');
Kf=1; %Constante para relacionar k1=['Sobretiro:',num2str(OSI),'%'
la velocidad del motor y el ];
caudal k2=['Kp=',num2str(Kp1)];
B=0.2; %Coeficiente de fricción k3=['Error
del motor final=',num2str(err_f)];
J=1.5; %Inercia title({'Respuesta al escalón
unitario del Controlador
%% CONSTRUCCIÓN DEL ESPACIO DE P';k1;k2;k3});
ESTADOS ylabel('y');
xlabel('t[s]');
A=[-Ra/La -Km/La 0;Km/J -B/J 0;0 grid on;
Kf -Kf];
B=[1/La;0;0]; %% SINTONIZACIÓN DEL CONTROLADOR
C=[0 0 1]; PI
D=0;
model=ss(A,B,C,D); C2 = pidtune(tfmodel,'PI',wc);
TF2=feedback(C2*tfmodel,1);
%% OBTENCIÓN DE LA FUNCIÓN DE %Función de transferencia en lazo
TRANSFERENCIA A LAZO ABIERTO cerrado
[y,t]=step(TF2,Tsim); %Simulación
[b, a]=ss2tf(A,B,C,D); con el escalón unitario
tfmodel=tf(b,a); OSI2=stepinfo(TF2).Overshoot;
%Sobretiro
%% PARÁMETROS DESEADOS err_f2=abs(1-TF2.Numerator{1,1}
(end)/TF2.Denominator{1,1}(end));
Tr=2.0; %Tiempo de respuesta %Error final
wc=1/Tr; %Aproximadamente para Kp2=C2.Kp; %Constante
sistemas LTI proporcional

%Gráfica
figure(2)
plot(t,y,t,max(y)*t./t,'--');
k12=['Sobretiro:',num2str(OSI2),'
%'];
k22=['Kp=',num2str(Kp2)];
k32=['Error
final=',num2str(err_f2)];
title({'Respuesta al escalón
unitario del Controlador
PI';k12;k22;k32});
ylabel('y');
xlabel('t[s]');
grid on;

%% SINTONIZACIÓN DEL CONTROLADOR


PID

C3 = pidtune(tfmodel,'PID',wc);
TF3=feedback(C3*tfmodel,1);
%Función de transferencia en lazo
cerrado
[y,t]=step(TF3,Tsim); %Simulación
con el escalón unitario
OSI3=stepinfo(TF3).Overshoot;
%Sobretiro
err_f3=abs(1-TF3.Numerator{1,1}
(end)/TF3.Denominator{1,1}(end));
%Error final
Kp3=C3.Kp; %Constante
proporcional
Ki1=C3.Ki; %Constante integral
Kd1=C3.Kd; %Constante derivativa

%Gráfica
figure(3)
plot(t,y,t,max(y)*t./t,'--');
k13=['Sobretiro:',num2str(OSI3),'
%'];
k23=['Kp=',num2str(Kp3)];
ki2=['Ki=',num2str(Ki1)];
kd2=['Kd=',num2str(Kd1)];
k33=['Error
final=',num2str(err_f3)];
title({'Respuesta al escalón
unitario del Controlador
PID';k13;k23;ki2;kd2;k33});
ylabel('y');
xlabel('t[s]');
grid on;

También podría gustarte