Vous êtes sur la page 1sur 6

CONTROLADOR EN RETRASO DE FASE

Los datos en el archivo PlantaMotorDC_Generador.xlsx proporcionan la siguiente respuesta:

Luego se leen los datos en las siguientes variables que serán utilizadas en el Toolbox Ident de Matlab, por
medio del siguiente script
%--------------------------------------------------------------------------
% Programa: IdentificacionPlanta01
% Autor: Ing. Ítalo Mogrovejo P.
% Creación: 16-Dic-2017
% Revisión: 16-Dic-2017
%--------------------------------------------------------------------------
clear all; % borra las variables del workspace
close all; % cierra todas las figuras (gráficos)
clc; % borra la pantalla del command window
%--------------------------------------------------------------------------

iDataInput=xlsread('PlantaMotorDC_Generador.xlsx','Datos','C2:C906');
iDataOutput=xlsread('PlantaMotorDC_Generador.xlsx','Datos','B2:B906');
Ts=0.001;

En el Ident de Matlab, importar los datos como se muestra en las gráficas siguientes, considerando el
tiempo de muestreo Ts, las variables, los canales, el tiempo de inicio, etc.
Ahora se procede a estimar los siguientes modelos:

Modelo en tiempo continuo 1 polo 0 ceros


Modelo en tiempo continuo 2 polos 0 ceros
Modelo en tiempo discreto 1 polo 0 cero Ts=0.001seg.
Modelo en tiempo discreto 2 polos 0 cero Ts=0.001seg.
Modelo del proceso con tiempo muerto y 1 polo
De las respuestas se aprecia que todas tiene similar precisión, por tanto se escogen tf4 y tf3 que son los
modelos discretos de segundo y primer orden respectivamente:

tf4 =

From input "iDataInput" to output "iDataOutput":


0.01194 (+/- 0.002747)
--------------------------------------------------------
1 - 0.07383 (+/- 0.4436) z^-1 - 0.9015 (+/- 0.4379) z^-2

Name: tf4
Sample time: 0.001 seconds
Discrete-time identified transfer function.

Parameterization:
Number of poles: 2 Number of zeros: 0
Number of free coefficients: 3
Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:
Termination condition: Near (local) minimum, (norm(g) < tol).
Number of iterations: 4, Number of function evaluations: 12

Estimated using TFEST on time domain data "iData".


Fit to estimation data: 88.7% (simulation focus)
FPE: 0.002825, MSE: 0.002797
More information in model's "Report" property.

tf3 =

From input "iDataInput" to output "iDataOutput":


0.006281 (+/- 2.839e-05)
------------------------------
1 - 0.987 (+/- 6.296e-05) z^-1

Name: tf3
Sample time: 0.001 seconds
Discrete-time identified transfer function.

Parameterization:
Number of poles: 1 Number of zeros: 0
Number of free coefficients: 2
Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:
Termination condition: Near (local) minimum, (norm(g) < tol).
Number of iterations: 2, Number of function evaluations: 5

Estimated using TFEST on time domain data "iData".


Fit to estimation data: 88.68% (simulation focus)
FPE: 0.002827, MSE: 0.002808
More information in model's "Report" property.

Ahora con:

Se puede demostrar que para que exista cruce por 0dB de la señal de magnitud, es decir que exista margen
de fase finito, entonces
Por lo que inicialmente planteamos:

y K determinamos con un %ess dado, por ejemplo en nuestro caso suponemos un de donde se
obtiene que Kp≥19 y K≥39,32 por lo que se escoge K=39,8025792071 para que el producto K*b=0,25

Y luego con el siguiente script se obtiene la estabilidad relativa del sistema:

%--------------------------------------------------------------------------
% Programa: RetardoFaseMotorDC
% Autor: Ing. Ítalo Mogrovejo P.
% Creación: 18-Dic-2017
% Revisión: 18-Dic-2017
%--------------------------------------------------------------------------
clear all; % borra las variables del workspace
close all; % cierra todas las figuras (gráficos)
clc; % borra la pantalla del command window
%--------------------------------------------------------------------------

% Planta en tiempo discreto


s=tf('s');
K=39.8025792071;
b=0.006281;
a=0.987;
Ts=0.001;
Gp=(K*b*(1+s))/((1+a)*s+(1-a));
figure(1);
margin(Gp);
grid on;

Bode Diagram
Gm = Inf , Pm = 100 deg (at 0.127 rad/s)
30

20
Magnitude (dB)

10

-10

-20
0
Phase (deg)

-45

-90
-4 -3 -2 -1 0 1 2
10 10 10 10 10 10 10
Frequency (rad/s)

Como se tiene un Mf = 100º, entonces únicamente damos un margen 5º adicionales puesto que el margen
de fase del sistema original, es bastante bueno, por tanto, se observa que a debe atenuar 12.9dB en
0.0278rad/seg.
Bode Diagram
Gm = Inf , Pm = 100 deg (at 0.127 rad/s)
30

20

Magnitude (dB)
10
System: G
Frequency (rad/s): 0.0277
0 Magnitude (dB): 12.9

-10

-20
0
Phase (deg)

-45

System: G
-90
-4 -3 -2 Frequency
-1 (rad/s): 0.0278
0 1 2
10 10 10 10(deg): -75 10
Phase 10 10
Frequency (rad/s)

De lo anterior, se tiene a=0,2265; o =0,00278rad/seg.; =1588,133 con lo cual:

Luego con:
Gc=(1+359.71*s)/(1+1588.13*s);
G=series(Gc,Gp);
figure(2);
margin(G);
grid on;

Bode Diagram
Gm = Inf , Pm = 100 deg (at 0.0279 rad/s)
40

20
Magnitude (dB)

-20

-40
0
Phase (deg)

-45

-90
-5 -4 -3 -2 -1 0 1 2
10 10 10 10 10 10 10 10
Frequency (rad/s)
Y finalmente se obtiene lo siguiente:
z=tf('z',Ts);
G1=(b*K)/(1-a*z^-1)
figure(3)
M1=feedback(G1,1)
step(M1);
grid on;
hold on;
alfa=0.2265;
Tao=1588.13;
Gc=((1+alfa*Tao)+(1-alfa*Tao)*z^-1)/((1+Tao)+(1-Tao)*z^-1)
G2=series(G1,Gc)
M2=feedback(G2,1)
step(M2,'r');

Step Response
1

0.9 System: M1 System: M2


Settling time (seconds): 0.0166 Settling time (seconds): 0.339
System: M1
System: M2
Rise time (seconds): 0.00929
0.8 Rise time (seconds): 0.058

0.7

0.6
Amplitude

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6
Time (seconds)

Vous aimerez peut-être aussi