Está en la página 1de 24

MODELAMIENTO DE UN MOTOR DC, AQUISICIN DE DATOS,

DISCRETIZACIN Y CONTROL PID DEL SISTEMA


1. OBJETIVO

Obtener la funcin de transferencia en el plano desde una data experimental.


Analizar la performance de la respuesta transitoria de la data experimental.
Disear un sistema de control, diseo por polos.

2. ANALIZANDO EL ALGORITMO EN LA FRECUENCIA

2.1. Modelos de los Datos de Respuesta Transitoria


Para obtener los modelos de la data transitoria asumiremos la respuesta al escaln (step). Si la
respuesta transitoria es una simple combinacin de los elementos transitorios, entonces es
razonable pensar en estimar un modelo de bajo orden. Por ejemplo una respuesta (monotnica y
suave) tpica de un sistema de bajo orden es como se muestra en la Figura 1.

Figura 1: Curva caracterstica de un proceso de bajo orden.

Asumiremos que esta curva est dada por una suma exponencial:
y (t )= y ( ) + B ep 1 t +C ep 2 t
A= y ()

2.2. Respuesta al Escaln para Sistemas de Segundo Orden


Considere el sistema de segundo orden:

G ( s )=

Y (s)
K
=
(1)
U (s ) (s+ p 1)(s+ p2 )

p2 / p 1 3 , podemos considerar que sta ltima restriccin, no

Y supongamos que

necesariamente se cumple para todos los sistemas (a pesar que existan infinitas curvas para un
mismo sistema), por ejemplo el servomotor DC que tiene polos muy separados entre s. Por
ejemplo, considerando la respuesta al escaln del sistema (1) obtenemos:

Y ( s )=G ( s ) U ( s )=

G( s)
K
A
B
C
=
= +
+
(2)
s
(s+ p1 )(s + p 2) s (s + p 1) (s + p2)

Donde:
A= sY ( s)|s=0=

K
K
( s+ p2 )|s=0=
p1 p2
( s+ p1 )

B=( s+ p1 ) Y ( s )|s= p =
1

K
s (s + p2)

s=p1

K
p1 ( p1 p 2)

K
K
=
s (s + p 1) s=p p2 ( p2 p1 )

C=( s+ p2 ) Y ( s )|s= p =
1

Considerando a la ecuacin (2) en el tiempo anlogo:


p1 t

y (t )=( A+ B e

Observamos que

p2 t

+C e

B< 0,C >0 yB . Ahora consideramos la descomposicin de

funciones de la Figura 2 que representan a la respuesta total y(t).

Figura 2: Descomposicin de la respuesta a un escaln.

Definimos las funciones parciales:

y 1 ( t )= A+ B e p t
1

p2 t

y 2 ( t )=C e
Dado que

p1

es ms de tres veces mayor que

p2

, para una t grande se puede

realizar la siguiente aproximacin:


y 1 ( t )= A+ B e p t , y ( t ) y 1 ( t ) (3)
1

A continuacin definimos la funcin

z ( t ) desde (3).

z ( t )= A y (t )=B e p tC ep t (4)
1

Observamos que la funcin z(t) es simplemente el negativo de y(t) cuando el valor en


estado permanente A es eliminado. Para un tiempo t grande, tenemos:
z ( t ) B e p t= z1 ( t ) (5)
1

Podemos observar que


logaritmo natural a

z ( t ) >0(B<0) . Esto es crucial, puesto que tomaremos el

z (t )

desde (5), y por consiguiente se debe tener una funcin que

sea positiva para todo t > 0.


Entonces:
z 1 (t)
B e p t
ln
d
ln =
dt
d

dt
1

d
[ ln (B ) + ln ( ep t ) ]
dt
1

p 1
La estrategia para encontrar

p1

, es trazar la curva de

pendiente con t grande. Esa pendiente ser

p1

lnz(t)

y determinar la

, tal como se muestra en la Figura 3.

Figura 3: Curva de

Despus de encontrar

p1

lnz(t)

, ahora determinamos

versus t.

p2

y posteriormente K (en ese

orden). Existen varias formas de obtenerlos, una de ellas es volver a la Figura 2 y


observar que con t grande obtenemos:
y 1 ( t )= A+ B e p t
1

Puesto que en este punto conocemos A (calculado como un valor final en el estado
estacionario) y p1, si escogemos un valor especfico de t cerca del punto donde y(t)
alcanza su valor en estado permanente, entonces podemos resolver B de acuerdo con la
siguiente ecuacin:
B=

y ( t ) A
(6)
p t
e
1

Si se repite este clculo con valores crecientes de t, se alcanzar el punto donde B


permanece casi constante. Al hacer esto, no slo se encontrar B sino se entender algo
sobre el tamao de p2. Una vez que se encuentra B, se puede encontrar C en t = 0 desde
la Figura 2, siendo:
C=( A+ B ) (7)
Y con C determinada, encontramos p2 teniendo en cuenta que se cumple la siguiente
ecuacin en el estado estacionario ( y ( )= A) tenemos:
B e p t=C ep t , p2 =
1

B
p (8)
C 1

Finalmente una vez que determinamos p2, podemos hallar la ganancia K desde (2)
cuando A= sY ( s)|s=0 luego obtenemos:
K= A p1 p 2 (9)

MTODO GRFICO ALTERNATIVO


Un segundo mtodo grfico consiste, en que una vez encontrado B y luego C se puede
determinar grficamente de acuerdo con la ecuacin (9) lo siguiente:
y 1 ( t )= A+ B e p t (10)
1

Con valores pequeos de t. Una vez que se tiene esta aproximacin tambin se puede
hallar grficamente:
y 2 ( t )= y ( t ) y 1 ( t )=C ep t (11)
2

Como se muestra en la Figura 2. Ahora se prosigue como antes trazando primero una
curva de y2(t) y luego se halla p2 con la pendiente de la curva con t grande En lo
sucesivo es cuestin de repetir el anlisis precedente. Este segundo mtodo se utiliza
para verificar los resultados obtenidos en el primer mtodo.
2.3. Algoritmo Descriptivo en Forma Grfica

El objetivo de la experiencia de laboratorio es obtener la DATA experimental desde las


tarjetas de adquisicin de datos NIDAQ PCI 6221 o desde la NIDAQ USB 6008/6009.
La DATA debe ser procesada y posteriormente evaluada usando las herramientas del
software de simulacin de LabVIEW o de Matlab, para as determinar la funcin de
transferencia del sistema usando el mtodo de identificacin el Ajuste de la Curva por
Interpolacin Lineal que es dado en el dominio de la frecuencia. En la Figura 4 se
observa el conexin de las salidas analgicas para que interacte la planta fsica con la
tarjeta de adquisicin de datos.

Figura 4: Esquema de conexin de la planta fsica con la NIDAQ.

MOTOR CON ENCODER


Es un motor DC que lleva acoplado a un extremo del rotor un sistema ptico o
magntico que proporciona pulsos digitales en funcin de la velocidad. La seal de
salida es una onda cuadrada con una frecuencia variable mxima de 2KHz. Esta seal
cuadrada se puede utilizar para medir la velocidad del motor, posicin, aceleracin o
inclusive sentido de giro; por tanto es ideal para utilizarla como realimentacin en un
sistema de control.

Figura 5: Motor con Encoder

ANLISIS DEL PROYECTO CON EL IDENT DE MATLAB


APROXIMACIN DE LA FUNCIN DE TRANSFERENCIA TEORICA
USANDO EL TOOL BOX SYSTEM IDENTIFICATION DE MATLAB (IDENT)
Con la Nidaq en LabView en un VI adquirimos y transferimos a un archivo la respuesta
a escaln (1000 muestras por segundo) obtenida de nuestro motor. Dicho archivo se
procesa para utilizarlo en MatLab y se guarda con nombre DataMotorOrig.lvm. A
continuacin cargamos la data en MatLab y la ploteamos:

clear all; clc; clf;


data=load('DataMotorOrig.lvm');
t=data(:,1);
y=data(:,2);
plot(t,y)
4.5
4
3.5
3
2.5
2
1.5
1
0.5
0

10

Figura 6. Data Original.

Escojemos la porcion de data que sea ms conveniente para hallar la funcin de


transferencia, dicha porcion de data se guarda con el nombre DataMotor.lvm. En
nuestro caso escojemos la primera subida y asentamiento que se aprecia en el ploteo,
adems corregimos desplazamientos de la data:
clear all; clc;
data=load('DataMotor.lvm');
t=data(425:2001,1);
offset=min(t);
t=t-offset;
y=data(425:2001,2);
offset=min(y);
y=y-offset;
plot(t,y,'b');

4
3.5
3
2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

Figura 7. Data Recortada.

Haciendo uso del Tool Box System Identification de MatLab obtenemos, con una
aproximacin de 98.6%, la funcin de transferencia terica de nuestro motor:

Figura 8. Ingresamos ident en Command Window de


Matlab

Figura 9. Ventanas del System Identification Tool y las ventanas


subsiguientes

clear all; clc;


data=load('DataMotor.lvm');
t=data(425:2001,1);
offset=min(t);
t=t-offset;
y=data(425:2001,2);
offset=min(y);
y=y-offset;
plot(t,y,'b');
% Con el Tool Box System Identification se obtiene
num=0.9967;
den=conv([0.22571 1],[0.012479 1]);
G=tf(num,den)
% Transfer function:
%
0.9967
% --------------------------% 0.002817 s^2 + 0.2382 s + 1
u=4*ones(size(y));
[y t x]=lsim(G,u,t);
hold on;
plot(t,y,'r');

G s

0.9967
0.002817 s 2 0.2382s 1

Procedemos a plotear nuestra data y la respuesta a escaln de nuestra funcin de


transferencia terica:
4
3.5
3
2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

Figura 10. Data y Respuesta a Escaln de G(s).

Se puede observar que la funcin de transferencia terica obtenida G(s) se superpone


casi exactamente sobre la data obtenida de nuestro motor en tiempo real, por lo tanto
podemos utilizar nuestra G(s) para diseo, simulacin y anlisis de controladores para el
motor DC en estudio.

Gd=c2d(G,0.01,'zoh')
% Transfer function:
% 0.01357 z + 0.01025
% ---------------------% z^2 - 1.405 z + 0.4293
step(Gd,G)
Step Response

4
3.5
3

Amplitude

2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

Time (sec)

Figura 11: Ploteo de la funcin de transferencia experimental


frente a una entrada escaln

1.4

DISEO, SIMULACIN Y ANLISIS DE CONTROL PID


Los controladores PID son controladores realimentados, se implementan en lazo
cerrado. Estos obtienen como entrada el error y proporcionan como salida la seal de
control que ingresa a la planta.

r(t)

e(t)

e(kt) Controlador PIDm(kt)


Digital
T=1

Retenedor de
Orden cero
Gh(s)

Planta
Gp(s)

Figura 11. Planta con Controlador PID.


Diseo de PID Analgico por Mtodo de Mxima Pendiente
Dado que la respuesta a escaln tiene forma de S se puede usar este mtodo, para lo cual
es necesario construir la recta de mxima pendiente para nuestra respuesta a escaln y
hallar los parmetros L, T:
Los clculos de la mxima pendiente se realizan con MatLab (ver archivo
MotorEncoder.m) de donde obtenemos los siguientes valores para los parmetros:
L 0.0690

T 0.2683

De acuerdo a las sugerencias de Ziegler-Nicholson obtenemos:


Kp 4.6689 Ti = 0.1379

Td = 0.0345

%% PID Analogico
clc; clf;
num=[0 0 0.9967]
den=conv([0.22571 1],[0.012479 1])
kp=50.7348; ki=0.1062; kd=2.3551;
numc=[(kp*kd) kp (kp*ki)]
denc=[0 1 0]
numg=conv(num,numc)
deng=conv(den,denc)
deng=numg+deng
Gpid=tf(numg,deng)
step(Gpid)
%% PID Discreto
Gd=c2d(G,0.01,'zoh')
num=[0 0.01357 0.01025];
den=[1 -1.405 0.4293];
kp=0.5; ki=0.05; kd=0.05;
numc=[kp+ki+kd -(kp+2*kd) kd];
denc=[1 -1 0];
numg=conv(num,numc)
deng=conv([1 -1.405 0.4293],[1 -1 0])
for k=1:4
deng(1,k)=numg(1,k)+deng(1,k);
end
deng(1,5)=numg(1,5);
r=4*ones(size(y));
c=filter(numg,deng,r);
t=linspace(0,max(t),length(r));
plot(t,c,'k');
hold off;
legend('Motor Encoder','Simulacion','PID Discreto');

4.5
Motor Encoder

4
3.5
3
2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

Figura 12: Planta controlada

RESPUESTA EN LABVIEW CON CONTROLADOR PID

1.4

1.6

Figura 13: Simulacin en Labview

ANLISIS DEL PROYECTO CON LA IDENTIFICACIN DE PARMETROS


I.

ADQUISICIN DE DATOS CON LA DAQ

CODIGO EN MATLAB:
LECTURA DE LA DATA
clear all; close all; clc;
load datamotor3.lvm
size(datamotor3)
figure
plot(datamotor3(:,1))

10
9
8
7
6
5
4
3
2
1
0

1000

2000

3000

4000

5000

6000

7000

8000

9000 10000

Figura 1.1: Numero de muestras vs.


el tiempo
clear all; close all; clc;
load datamotor3.lvm
size(datamotor3)
figure
plot(datamotor3(:,2))
4.5
4
3.5
3
2.5
2
1.5
1
0.5
0

1000

2000

3000

4000

5000

6000

7000

8000

9000 10000

Figura 1.2: Respuesta a una entrada escaln


de la planta fsica
clear all; close all; clc;
load datamotor3.lvm
size(datamotor3)
figure
for i=1:2
subplot(4,4,i)
plot(datamotor3(:,i))
end

10

5
0

5000 10000

5000 10000

Figura 1.3: Ploteo del tiempo, respuesta y entrada

II.

IDENTIFICACIN DE PARMETROS - ALGORITMO ACIL

%Acondicionamiento de la data
close all; clear all; clc
load datamotor3.lvm
t=datamotor3(:,1);
y=datamotor3(:,2);
plot(t,y)
4.5
4
3.5
3
2.5
2
1.5
1
0.5
0

Figura 2.1: Ploteo de la data experimental vs.


el tiempo
close all; clear all; clc
load datamotor3.lvm
t=datamotor3(4789:6187,1)-4.788;
y=datamotor3(4789:6187,2)-0.01162;
plot(t,y)
axis([0 1.4 0 4.25])

10

4
3.5
3
2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

1.4

Figura 2.2: Parte de la data experimental


%% Ploteo de Grafico ln(A - y(t)) vs t
A=max(y)
xa=t;
ya=log(A-y);
figure
plot(xa,ya)
2
1
0
-1
-2
-3
-4
-5
-6
-7

0.2

0.4

0.6

0.8

1.2

Figura 2.3: Ploteo en escala semilogartmica


%% interpolacion
xi=0.1056:0.001:0.6847;
yi=interp1(xa',ya',xi,'linear');
figure
plot(xi,yi,'r*')
hold
plot(xa,ya,'b')

1.4

2
1
0
-1
-2
-3
-4
-5
-6
-7

0.2

0.4

0.6

0.8

1.2

1.4

Figura 2.4: Intervalo para aproximar la mejor recta

0.5

-0.5

-1

-1.5

0.1

0.2

0.3

0.4

0.5

Figura 2.5: Acercamiento de la figura anterior


%% calculando la pendiente
p1=(0.9803+1.5092)/(-0.1059+0.6712);
B=(y-A)./exp(-p1*t);
figure
plot(t,B)

0.6

-1

-2

-3

-4

-5

-6

0.2

0.4

0.6

0.8

1.2

1.4

Figura 2.6: Calculando B(t) = (y(t) - A) / exp(-p1*t)


%% calculando la pendiente
p1=(0.9803+1.5092)/(-0.1059+0.6712);
B=(y-A)./exp(-p1*t);
figure
plot(t,B)
hold
plot([0.2955 0.4735],[median(B(296:474)) median(B(296:474))],'-r')
B=median(B(296:474));
0

-1

-2

-3

-4

-5

-6

0.2

0.4

0.6

0.8

1.2

Figura 2.7: Zona ms recta para el clculo de B

1.4

-4
-4.05
-4.1
-4.15
-4.2
-4.25
-4.3
-4.35
-4.4
-4.45
-4.5
0.3

0.35

0.4

0.45

Figura 2.8: Acercamiento de la figura anterior.


%% calculando de C, p2 y K
C=-(A+B);
p2=-(B/C)*p1
k=A*p1*p2
%% funcion de transferencia
Gexp=tf(k,conv([1 p1],[1 p2]))
Gexp=zpk(Gexp)
figure
step(Gexp)
hold
plot(t,y,'r')
Step Response

4
3.5
3

Amplitude

2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

Time (sec)

Figura 2.9: Ploteo de la funcin de transferencia experimental

1.4

frente a una entrada escaln

También podría gustarte