Está en la página 1de 41

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

FACULTAD DE CIENCIAS E INGENIERÍAS FÍSICAS Y FORMALES


ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

AUTOMATIZACIÓN INDUSTRIAL
PRACTICA 01
CONTROL DE CRUCERO
Obtener los resultados en el software LabVIEW de cada parte y
Completar los cuadros comparativos de simulaciones Matlab vs LabVIEW

1. MODELADO DEL SISTEMA:


Contenido
 Configuración física
 Ecuaciones del sistema
 Parámetros del sistema
 Modelo de espacio de estados
 Modelo de función de transferencia
Configuración física
El propósito del sistema de control de crucero es mantener una velocidad constante del vehículo a pesar
de las perturbaciones externas, como cambios en el viento o la pendiente de la carretera. Esto se logra
midiendo la velocidad del vehículo, comparándola con la velocidad deseada o de referencia y ajustando
automáticamente el acelerador de acuerdo con una ley de control.

Consideramos aquí un modelo simple de la dinámica del vehículo, que se muestra en el diagrama de
cuerpo libre (FBD) anterior. El vehículo, de masa m, es accionado por una fuerza de control, u. La fuerza
u representa la fuerza generada en la interfaz carretera / neumático. Para este modelo simplificado
asumiremos que podemos controlar esta fuerza directamente y descuidaremos la dinámica del tren
motriz, neumáticos, etc., que intervienen en la generación de la fuerza. Se supone que las fuerzas
resistivas, bv, debidas a la resistencia a la rodadura y al arrastre del viento, varían linealmente con la
velocidad del vehículo, v, y actúan en la dirección opuesta al movimiento del vehículo.

Ecuaciones del sistema


Con estos supuestos nos quedamos con un sistema de amortiguación de masa de primer orden . Sumando
fuerzas en la dirección xy aplicando la segunda ley de Newton, llegamos a la siguiente ecuación del
sistema:

m v̇ +bv=u (1)

Dado que estamos interesados en controlar la velocidad del vehículo, la ecuación de salida se elige de la
siguiente manera
y=v (2)
Parámetros del sistema
Para este ejemplo, supongamos que los parámetros del sistema son:

(m) masa del vehículo 1000 kg

(b) coeficiente de amortiguación 50 Ns / m

Modelo de espacio de estados


Los sistemas de primer orden tienen un solo modo de almacenamiento de energía, en este caso la energía
cinética del automóvil y, por lo tanto, solo se necesita una variable de estado, la velocidad. Por tanto, la
representación en el espacio de estados es:

ẋ=[ v̇ ] =
[ ] [ ]
−b
m
[ v ] + 1 [ u ] (3)
m

y= [ 1 ] [ v ] (4)

Ingresamos este modelo de espacio de estado en MATLAB usando los siguientes comandos:

m = 1000;
b = 50;

A = -b / m;
B = 1 / m;
C = 1;
D = 0;

cruise_ss = ss (A, B, C, D);

Modelo de función de transferencia


Tomando la transformada de Laplace de la ecuación diferencial gobernante y asumiendo condiciones
iniciales cero, encontramos que la función de transferencia del sistema de control de crucero es:

P ( s )=
V (s)
=
1 m/ s
U ( s) ms+ b N
(5)
[ ]
Ingresamos el modelo de la función de transferencia en MATLAB usando los siguientes comandos:
s = tf ( 's' );
P_crucero = 1 / (m * s + b);

1.1. DESARROLLO DEL MODELAMIENTO EN MATLAB:

1.1.1. FUNCIÓN DE TRANSFERENCIA Y ESPACIO DE ESTADOS:


En el prompt de Matlab se ingresa los siguientes comandos:

Comandos:
%PROGRAMA QUE MUESTRA LA FT DEL CONTROL CRUCERO
m = 1000;
b = 50;

A = -b/m;
B = 1/m;
C = 1;
D = 0;
cruise_ss = ss(A,B,C,D);
s = tf('s');
P_cruise = 1/(m*s+b)

Resultado:
cruise_ss =

A=
x1
x1 -0.05

B=
u1
x1 0.001

C=
x1
y1 1

D=
u1
y1 0

Continuous-time state-space model.

P_cruise =

1
-----------
1000 s + 50

Continuous-time transfer function.

RESULTADOS:
Los resultados rescatados de Matlab son:
FUNCIÓN DE TRANSFERENCIA:
Extraemos del resultado de Matlab:
1
FT =
1000 s+50

ESPACIO DE ESTADOS:
Extraemos los coeficientes de los resultados que ofrece Matlab y armamos el espacio de
estados:

dx
=[−0.05 ] x ( t ) + [ 1 ] u (t)
dt
y (t)=[ 0.001 ] x ( t ) + [ 0 ] u (t)

1.2. DESARROLLO DEL MODELAMIENTO EN LABVIEW:


1.2.1. ESQUEMA DE SIMULACIÓN.
A continuación, se muestra el desarrollo de la simulación en el software Labview:

Figura 1.2.1. Esquema de simulación de modelamiento en Labview

1.2.2. RESULTADOS EN EL SOFTWARE LABVIEW:


1.3. CUADRO COMPARATIVO DE LA SIMULACIÓN MATLAB VS LABVIEW

COMPARATIVA
SOFTWARE MATLAB LABVIEW

FUNCIÓN DE
TRANSFERENCIA

ESPACIO DE ESTADOS

COMENTARIO
2. LUGAR DE RAICES
Contenido
 Modelo de sistema
 Parámetros del sistema
 Especificaciones de rendimiento
 Control proporcional
 Controlador de retraso

Modelo de sistema
El modelo de función de transferencia para el problema del control de crucero se muestra a
continuación. Consulte la página Control de crucero: Modelado del sistema para obtener
información sobre la derivación.

P ( s )=
V ( s)
=
1
[ ]
m/ s
U ( s) ms+ b N
(1)

Parámetros del sistema


Para este ejemplo, supongamos que los parámetros del sistema son
(m) masa del vehículo 1000 kg
(b) coeficiente de amortiguación 50 Ns / m
(r) velocidad de referencia 10 m / s
y el diagrama de bloques de un sistema típico de retroalimentación unitaria se muestra a
continuación.

Especificaciones de rendimiento
 Tiempo de subida <5 seg.
 Rebasamiento <10%
 Error de estado estable <2%

Control proporcional
Recuerde de la página Introducción: Diseño del controlador del lugar de las raíces, el gráfico
del lugar de las raíces muestra las ubicaciones de todos los posibles polos de bucle cerrado
cuando una sola ganancia varía de cero a infinito. Por lo tanto, solo se considerará un
controlador proporcional,  para resolver este problema. La función de transferencia de
bucle cerrado se convierte en:
Y (s ) Kp
= (2)
R (s ) ms+(b+ K p)

Además, de la página Introducción: Diseño del controlador del lugar de las raíces , sabemos
que el comando sgrid de MATLAB se puede utilizar para mostrar una región aceptable del
gráfico del lugar de las raíces. Para usar la cuadrícula , primero se deben determinar tanto la
relación de amortiguación $ \ zeta $, como la frecuencia natural $ \ omega_n $. Las siguientes
dos ecuaciones se utilizarán para encontrar la relación de amortiguamiento y la frecuencia
natural:
1.8
ωn ≥ (3)
Tr


2
ln ( M p )
ς≥ 2 2
(4 )
π +ln ( M p )

Donde:

  = Frecuencia natural [rad \ s]


  = Relación de amortiguación
  = Tiempo de subida [s]
  = Sobreimpulso máximo

Uno de nuestros criterios de diseño es tener un tiempo de subida de menos de 5 segundos. De la


primera ecuación, vemos que la frecuencia natural debe ser mayor que 0.36. También usando la
segunda ecuación, vemos que la relación de amortiguamiento debe ser mayor que 0.6, ya que el
sobreimpulso máximo debe ser menor al 10%.

Ahora, estamos listos para generar una gráfica del lugar de las raíces y usar sgrid para encontrar una
región aceptable en el lugar de las raíces. Cree un nuevo archivo-m e ingrese los siguientes
comandos.

2.1. DESARROLLO DE SIMULACIÓN DE LUGAR DE RAÍCES EN MATLAB

m = 1000;
b = 50;
r = 10;

s = tf('s');
P_cruise = 1/(m*s+b);

rlocus(P_cruise)
axis([-0.6 0 -0.6 0.6]);
sgrid(0.6, 0.36)

Las dos líneas de puntos en un ángulo indican las ubicaciones de la relación de amortiguación
constante ( ς = 0,6); la relación de amortiguación es superior a 0,6 entre estas líneas y menos de 0,6
fuera de las líneas. La semielipse indica las ubicaciones de frecuencia natural constante ( ω n= 0,36);
la frecuencia natural es mayor que 0,36 fuera de la semielipse y menor que 0,36 dentro.

Luego podemos encontrar una ganancia para colocar los polos de circuito cerrado en la región
deseada empleando el comando rlocfind . Agrega el código [Kp, poles] = rlocfind (P_cruise) al final
de tu archivo-m para ayudarte a elegir una ganancia de bucle específica. Después de ejecutar en la
ventana de comandos, debería ver un mensaje pidiéndole que elija un punto en la gráfica del lugar de
las raíces. Como desea seleccionar un punto entre las líneas punteadas ( ς > 0,6) y fuera de la
semielipse ( ω n> 0,36), haga clic en el eje real justo fuera de la semielipse (alrededor de -0,4) como
lo indica la marca de cruz en la siguiente figura.
Después de hacer esto, debería ver el siguiente resultado en la ventana de comandos de MATLAB.
Seleccione un punto en la ventana gráfica
selected_point =

-0.4002 + 0.0019i

Kp =

350.2419

poles =

-0.4002
Tenga en cuenta que el valor devuelto por la ventana de comandos de MATLAB puede no ser
exactamente el mismo, pero al menos debería tener el mismo orden de magnitud. Este valor devuelto
se puede utilizar como ganancia para el compensador y la respuesta de paso de bucle cerrado se
puede generar de la siguiente manera.
Kp = 350.2419;
sys_cl = feedback(Kp*P_cruise,1);
t = 0:0.1:20;
step(r*sys_cl,t)
Con la ganancia Kp que acaba de elegir, se han cumplido el tiempo de subida y los criterios
de sobreimpulso; sin embargo, permanece un error de estado estable de más del 10%.
Controlador de retraso
Para reducir el error de estado estable, se agregará un controlador de retardo al sistema. La
función de transferencia del controlador de retraso es:

s+ z o
C ( s) = (5)
s+ p o
La función de transferencia de bucle cerrado (sin incluir Kp) ahora se convierte en:

Y (s ) K p s+ K p z o
= 2 (7)
U (s ) m s + ( b+m p 0 + K p ) s +(b p 0+ K p z o )

Si lee la sección " Compensador de retraso o de retraso de fase usando el lugar geométrico de la raíz"
en la página de Diseño del compensador de avance y retraso, el polo y el cero de un controlador de
retraso deben colocarse juntos. Además, establece que el error de estado estable se reducirá en un
factor de z o / po . Por estas razones, sea z oigual a 0.3 e po igual a 0.03.

Cree un nuevo archivo-m e ingrese los siguientes comandos.


zo = 0.3;
po = 0.03;

s = tf('s');
C_lag = (s+zo)/(s+po);

rlocus(C_lag*P_cruise);
axis([-0.6 0 -0.4 0.4])
sgrid(0.6,0.36);
Usando el comando rlocfind nuevamente, podemos elegir una nueva ganancia de bucle Kp.
Introduzca el código [Kp, polos] = rlocfind (C_lag * P_cruise) en la ventana de comandos y haga clic
en el eje real alrededor de -0,4 como se muestra en la siguiente figura.

2.2. SIMULACIÓN DE LUGAR DE RAÍCES EN LABVIEW


2.2.1. ESQUEMA DE SIMULACIÓN

Figura 2.2.1. Esquema de simulación del lugar de raíces en Labview

2.2.2. RESULTADOS DE LA SIMULACIÓN


2.3. CUADRO COMPARATIVO DE RESULTADOS MATLAB VS LABVIEW
COMPARATIVA
SOFTWARE MATLAB LABVIEW

GRÁFICA DE
LUGAR DE RAÍCES

RAÍCES EN
FORMA
NUMÉRICA

COMENTARIO
3. ANÁLISIS EN FRECUENCIA

Contenido
 Modelo de sistema
 Parámetros del sistema
 Especificaciones de rendimiento
 Diagrama de Bode y respuesta de bucle abierto
 Controlador proporcional
 Compensador de retraso
Modelo de sistema
El modelo de función de transferencia para el problema del control de crucero se muestra a
continuación. Consulte la página Control de crucero: Modelado del sistema para obtener
información sobre la derivación.
P ( s )=
V ( s)
=
1
[ ]m/ s
U ( s) ms+ b N
(1)

Parámetros del sistema


Para este ejemplo, supongamos que los parámetros del sistema son
(m) masa del vehículo 1000 kg
(b) coeficiente de amortiguación 50 Ns / m
(r) velocidad de referencia 10 m / s
(u) fuerza de control nominal 500 N
y el diagrama de bloques de un sistema típico de retroalimentación unitaria se muestra a
continuación.
Especificaciones de rendimiento
 Tiempo de subida <5 seg.
 Rebasamiento <10%
 Error de estado estable <2%
Diagrama de Bode y respuesta de bucle abierto
El primer paso para resolver este problema usando la respuesta de frecuencia es determinar
qué función de transferencia de lazo abierto usar. Al igual que para el método de diseño del
lugar de las raíces, solo usaremos un controlador proporcional para resolver el problema. El
diagrama de bloques y la función de transferencia de bucle abierto se muestran a
continuación.

Y ( s) Kp
= (2)
E( s) ms+ b
Para utilizar un diagrama de Bode, la respuesta de bucle abierto debe ser estable. Sea  igual
a 1 por ahora y vea cómo se ve la respuesta de bucle abierto. Cree un nuevo archivo-m e
ingrese los siguientes comandos.
3.1. DESARROLLO DE LA RESPUESTA EN FRECUENCIA EN SOFTWARE
MATLAB
m = 1000;
b = 50;
u = 500;

Kp = 1;
s = tf('s');
P_cruise = 1/(m*s+b);
C = Kp;
step(u*C*P_cruise)
Como puede ver, el sistema de circuito abierto es estable; por lo tanto, podemos seguir
adelante y generar el diagrama de Bode. Cambie el archivo-m anterior eliminando
el comando de paso y agregando el siguiente comando.
bode (C * P_cruise);
Controlador proporcional
Consulte la página Introducción: Métodos de dominio de frecuencia para el diseño de
controladores y veamos qué características del sistema podemos determinar a partir del
diagrama de Bode anterior.
El error de estado estable se puede encontrar a partir de la siguiente ecuación:

1
ss error = 100 %(3)
1+ M ω →0
Para este sistema, la ganancia de baja frecuencia es -34dB = 0.02; por lo tanto, el error de
estado estable debe ser del 98%. Podemos confirmar esto generando una respuesta de paso de
circuito cerrado de la siguiente manera.
r = 10;
sys_cl = feedback(C*P_cruise,1);
step(r*sys_cl);

Necesitamos aumentar la ganancia de baja frecuencia para mejorar el error de estado estable.
Específicamente, el error debe ser <2%; por lo tanto, 1 / (1+ M ω →0 ) <0.02 → M ω→ 0> 49 =
33.8 dB. Dado que la ganancia de baja frecuencia es -34 dB y el límite de error de estado
estable necesita que tengamos una ganancia de baja frecuencia de 33,8 dB, para alcanzar el
error de estado estable deseado utilizando solo el control proporcional, se requiere un Kp >
(34 dB + 33,8 dB) = 67,8 dB = 2455. Veamos el diagrama de Bode del sistema de bucle
abierto compensado.
Kp = 2500;
C = Kp;

bode (C * P_cruise);
Como puede ver en el diagrama de Bode anterior, la magnitud de baja frecuencia es ahora, 34
dB. Ahora simulemos la respuesta al escalón del sistema de lazo cerrado con esta ganancia.

sys_cl = feedback(C*P_cruise,1);
step(r*sys_cl);
Compensador de retraso

Si echa un vistazo a la sección " Compensador de retraso o de retraso de fase usando


respuesta de frecuencia" de la página de diseño del compensador de adelanto y retraso, el
compensador de retraso agrega ganancia en las frecuencias bajas mientras mantiene la
frecuencia de ancho de banda en el mismo lugar. Esto es realmente lo que necesitamos:
mayor ganancia de baja frecuencia para reducir el error de estado estable y mantener la
misma frecuencia de ancho de banda para mantener el tiempo de subida deseado. La función
de transferencia del controlador de retraso es:
s + z0
C lag ( s )=
s + p0

Si lee la sección " Compensador de retraso o de retraso de fase usando el lugar geométrico de


la raíz" en la página de Diseño del compensador de adelanto y retraso, el polo y el cero de un
controlador de retraso deben colocarse juntos. Además, establece que el error de estado
estable se reducirá en un factor de  . Por estas razones, sea  igual a 0,1 e  igual a
0,02. La ganancia proporcional,  = 1000 se eligió mediante ensayo y error.
Kp = 1000;
zo = 0,1;
po = 0,02;

C_lag = (s + zo) / (s + po);


bode (Kp * C_lag * P_cruise);
Confirmemos el rendimiento generando una respuesta de paso de circuito cerrado.
sys_cl = retroalimentación (Kp * C_lag * P_cruise, 1);
t = 0: 0,1: 20;
paso (r * sys_cl, t);

Como puede ver, hay un sobreimpulso muy leve, el error de estado estable es cercano a cero
y el tiempo de subida es inferior a 5 segundos. El sistema ahora ha cumplido con todos los
requisitos de diseño. No se necesita más iteración.

3.2. DESARROLLO DE LA SIMULACIÓN EN SOFTWARE LABVIEW


3.2.1. ESQUEMA DE SIMULACIÓN:

Figura 3.2.1. Esquema de simulación de respuesta en Frecuencia

3.2.2. RESULTADOS DE SIMULACIÓN

Para correr la simulación, se deben completar los siguientes datos:

Figura 3.2.2.2. Ingreso de la función de transferencia

DIAGRAMA DE BODE:
El diagrama de Bode lo muestra por separado y está dividido en gráfica de Magnitud y gráfica de Fase:

Figura 3.2.2.3. Gráfica de Magnitud de Bode

Figura 3.2.2.4. Gráfica de Fase de Bode

GRÁFICA DE LA RESPUESTA DEL SISTEMA FRENTE A EL ESCALÓN UNITARIO:


3.3. CUADRO COMPARATIVO:
COMPARATIVA
SOFTWARE MATLAB LABVIEW

DIAGRAMA DE
BODE

RESPUESTA
AL ESCALÓN
UNITARIO

COMENTARIO
4. CONTROLADOR PID
Contenido
 Modelo y parámetros del sistema
 Especificaciones de rendimiento
 Resumen de PID
 Control proporcional
 Control PI
 Control PID
Modelo y parámetros del sistema
El modelo de función de transferencia para el problema del control de crucero se muestra a
continuación. Consulte la página Control de crucero: Modelado del sistema para obtener
información sobre la derivación.
P ( s )=
V ( s)
=
1
[ ]
m/ s
U ( s) ms+ b N
(1)

Los parámetros utilizados en este ejemplo son los siguientes:


(m) masa del vehículo 1000 kg
(b) coeficiente de amortiguación 50 Ns / m
(r) velocidad de referencia 10 m / s

Especificaciones de rendimiento
 Tiempo de subida <5 s
 Rebasamiento <10%
 Error de estado estable <2%
Resumen de PID
El diagrama de bloques de un sistema típico de retroalimentación unitaria se muestra a
continuación.

Recuerde de la página Introducción: Diseño de controlador PID , la función de transferencia de un


controlador PID es:
2
Ki K d s + K p s+ K i
C ( s ) =K p + + K d s= (2)
s s

Podemos definir un controlador PID en MATLAB usando la función de transferencia directamente:

Kp = 1;
Ki = 1;
Kd = 1;

s = tf ( 's' );
C = Kp + Ki / s + Kd * s

C =

s ^ 2 + s + 1
-----------
s

Función de transferencia en tiempo continuo.

Alternativamente, podemos usar el objeto controlador pid de MATLAB para generar un


controlador de tiempo continuo equivalente de la siguiente manera:
C = pid (Kp, Ki, Kd)

C =

1
Kp + Ki * --- + Kd * s
s

con Kp = 1, Ki = 1, Kd = 1

Controlador PID de tiempo continuo en forma paralela.

4.1. SIMULACIÓN DE CONTROLADOR PID EN MATLAB:

Control proporcional
Lo primero que debe hacer en este problema es encontrar una función de transferencia de
bucle cerrado con un control proporcional (  ) agregado.
Al reducir el diagrama de bloques de retroalimentación unitaria, la función de transferencia
de bucle cerrado con un controlador proporcional se convierte en:

Y (s) P(s) C( s) Kp
T ( s) = = =
R (s) 1+ P( s)C ( s) ms+ b+ Kp
Recuerde de la página Introducción: Diseño del controlador PID , un controlador
proporcional  , disminuye el tiempo de subida, lo cual es deseable en este caso.
Por ahora, use  igual a 100 y una velocidad de referencia de 10 m / s. Cree un
nuevo archivo-m e ingrese los siguientes comandos.

m = 1000;
b = 50;
r = 10;

s = tf('s');
P_cruise = 1/(m*s + b);

Kp = 100;
C = pid(Kp);
T = feedback(C*P_cruise,1)

t = 0:0.1:20;
step(r*T,t)
axis([0 20 0 10])

T =

100
------------
1000 s + 150

Continuous-time transfer function.

Tenga en cuenta que hemos utilizado el comando de retroalimentación de MATLAB para


simplificar la reducción del diagrama de bloques del sistema de circuito cerrado. Verifique
usted mismo que el resultado concuerda con la función de transferencia de circuito cerrado,
T, derivada anteriormente.

Ejecutar el archivo m en MATLAB debería darle la respuesta al paso anterior. Como puede
ver en el gráfico, ni el error de estado estable ni el tiempo de subida satisfacen nuestros
criterios de diseño.

Puede aumentar la ganancia proporcional Kp , para reducir el tiempo de subida y el error


de estado estable. Cambie el archivo-m existente para que sea Kp igual a 5000 y vuelva a
ejecutarlo en la ventana de comandos de MATLAB. Debería ver la siguiente gráfica.
Kp = 5000;
C = pid(Kp);
T = feedback(C*P_cruise,1);

step(r*T,t)
axis([0 20 0 10])
El error de estado estable es ahora esencialmente cero y el tiempo de subida se ha reducido
sustancialmente. Sin embargo, esta respuesta no es realista porque un sistema de control de crucero
real generalmente no puede cambiar la velocidad del vehículo de 0 a 10 m / s en menos de 0,5
segundos debido a las limitaciones de potencia del motor y la transmisión.

Las limitaciones del actuador se encuentran con mucha frecuencia en la práctica en la ingeniería de
sistemas de control y, en consecuencia, siempre se debe considerar la acción de control requerida al
proponer un nuevo controlador. Discutiremos este tema mucho más en tutoriales posteriores.

La solución a este problema en este caso es elegir una ganancia proporcional más baja $ K_p $, que
dará un tiempo de aumento razonable, y agregar un controlador integral para eliminar el error de
estado estable.

Control PI
La función de transferencia de circuito cerrado de este sistema de control de crucero con un
controlador PI (  ) es:

(4)

Recuerde de la página Introducción: Diseño del controlador PID , una adición de un


controlador integral al sistema elimina el error de estado estable. Por ahora, sea  igual a
600 e  igual a 1 y vea qué sucede con la respuesta. Cambie su archivo-m por el siguiente.

Kp = 600;
Ki = 1;
C = pid (Kp, Ki);

T = retroalimentación (C * P_cruise, 1);

paso (r * T, t)
eje ([0 20 0 10])

Ahora ajuste tanto la ganancia proporcional  , y la ganancia integral  , para obtener la respuesta
deseada. Cuando ajuste la ganancia integral  , le sugerimos que comience con un valor pequeño, ya
que uno grande  puede desestabilizar la respuesta. Cuando  es igual a 800 y  es igual a 40, la
respuesta al escalón se verá así:
Kp = 800;
Ki = 40;
C = pid(Kp,Ki);

T = feedback(C*P_cruise,1);

step(r*T,t)
axis([0 20 0 10])
Control PID
Para este ejemplo en particular, no se necesitó la implementación de un controlador derivado
para obtener la salida requerida. Sin embargo, es posible que desee ver cómo trabajar con un
control PID para referencia futura. La función de transferencia de circuito cerrado para este
sistema de control de crucero con un controlador PID (  ) es:

(5)

Sea  igual a 1,  igual a 1 e  igual a 1 e ingrese los siguientes comandos en un nuevo
archivo-m.

Kp = 1;
Ki = 1;
Kd = 1;
C = pid (Kp, Ki, Kd);

T = retroalimentación (C * P_cruise, 1);

Trazar la respuesta de paso y ajustar todos  ,  y  hasta que obtenga resultados


satisfactorios. Dejaremos esto como un ejercicio para que trabajes.
Sugerencia: Por lo general, la elección de las ganancias adecuadas requiere un proceso de
prueba y error. La mejor manera de atacar este proceso tedioso es ajustar una variable ( 
,  o  ) a la vez y observar cómo cambiar una variable influye en la salida del sistema. Las
características de  ,  y  se resumen en la página Introducción: Diseño del controlador
PID .

4.2. SIMULACIÓN DEL CONTROL PID EN LABVIEW


4.2.1. ESQUEMA DE SIMULACIÓN:

Figura 4.2.1. Esquema de simulación del control PID

4.2.2. INGRESO DE VALORES Y RESULTADOS:

Primero se ingresó la forma normal del controlador PID, para luego ingresar las
variables que se nos da como información.
Figura 4.2.2.1. Coeficientes a ingresar para la simulación

RESPUESTA AL ESCALÓN UNITARIO:

FUNCIÓN GENERAL CON EL CONTROLADOR PID:


4.3. CUADRO COMPARATIVO CONTROLADOR P, PI , PID:
COMPARATIVA
SOFTWARE MATLAB LABVIEW

CONTROLADOR
P

CONTROLADOR
PI

CONTROLADOR
PID

COMENTARIO
5. DISEÑO DE CONTROLADOR DIGITAL
Contenido
 Modelo de sistema
 Parámetros del sistema
 Especificaciones de rendimiento
 Función de transferencia en tiempo discreto
 Lugar de las raíces en el plano z
 Compensación mediante un controlador digital

Modelo de sistema
El modelo de la función de transferencia para el problema del control de crucero se muestra a
continuación. Consulte la página Control de crucero: Modelado del sistema para obtener
información sobre la derivación.

P ( s )=
V ( s)
=
1
[ ]
m/ s
U (s) ms+ b N
(1)

Parámetros del sistema


Para este ejemplo, supongamos que los parámetros del sistema son
(m) masa del vehículo 1000 kg
(b) coeficiente de amortiguación 50 Ns / m
(r) velocidad de referencia 10 m / s
(u) fuerza de control nominal 500 N
Especificaciones de rendimiento
Necesitamos diseñar un controlador que cumpla con los siguientes criterios de diseño para
este problema:
 Tiempo de subida <5 s
 Rebasamiento <10%
 Error de estado estable <2%
Función de transferencia en tiempo discreto
El primer paso para realizar un análisis discreto de un sistema es encontrar la función de
transferencia equivalente en tiempo discreto de la porción continua. Convertiremos la función
de transferencia anterior (Y (s) / U (s)) en una función de transferencia de tiempo discreto
utilizando la función c2d de MATLAB . Para utilizar esta función, debe especificar tres
argumentos: sistema, tiempo de muestreo ( Ts ) y el 'método' . El tiempo de muestreo ( Ts ),
en unidades de seg / muestra, debe ser menor que  , donde  es la frecuencia de
ancho de banda de bucle cerrado. Para el método, usaremos la retención de orden cero
( 'zoh' ).
Deje que el tiempo de muestreo sea igual a 1/50 seg; esto es suficientemente rápido
asumiendo que la frecuencia del ancho de banda es 1 rad / seg. Ahora ingrese los siguientes
comandos en un archivo m y ejecútelo en la ventana de comandos.

5.1. DESARROLLO EN MATLAB


m = 1000;
b = 50;
u = 500;

s = tf('s');
P_cruise = 1/(m*s+b);

Ts = 1/50;

dP_cruise = c2d(P_cruise,Ts,'zoh')

dP_cruise =

1.999e-05
---------
z - 0.999

Sample time: 0.02 seconds


Discrete-time transfer function.
Lugar de las raíces en el plano z
Recuerde de la página Tutorial de control digital , la función zgrid de MATLAB se puede
utilizar para encontrar una región aceptable del lugar de raíces discretas que proporcione la
ganancia deseada (  ). El comando zgrid requiere dos argumentos: frecuencia natural (  ) y
relación de amortiguación (  ). Estos dos argumentos se pueden encontrar a partir del tiempo
de subida y los requisitos de sobreimpulso y las dos ecuaciones siguientes.

1.8
ωn ≥ (2)
Tr

−ln ⁡(Mp)
ζ= (3)
√ Π 2 + ln2( Mp )
dónde,
  = Relación de amortiguación
  = Frecuencia natural (rad / seg)
  = Tiempo de subida
  = Sobreimpulso máximo
Dado que nuestros requisitos de tiempo de subida y sobreimpulso son 5 segundos y 10%,
respectivamente, podemos determinar que la frecuencia natural (  ) debe ser superior a 0,36
rad / seg y la relación de amortiguación (  ) debe ser superior a 0,6.
Generemos el lugar de las raíces y usemos el comando zgrid para encontrar la región
aceptable del lugar de las raíces. Pero antes de hacer eso, si consulta el Tutorial de control
digital , el argumento de frecuencia natural para zgrid debe estar en unidades de rad /
muestra, así que sea  = 0.36  = 0.0072 rad / muestra. Ahora agregue los siguientes
comandos al archivo-m anterior y vuelva a ejecutarlo. Debería obtener la siguiente trama.

Wn = 0,0072;
zeta = 0,6;
rlocus (dP_cruise)
zgrid (zeta, Wn)
eje ([-1 1 -1 1])

La región del plano complejo que nos interesa es la que se encuentra cerca del punto (1,0),
por lo que conviene hacer zoom sobre este punto. Vuelva a ejecutar usando el siguiente
comando de eje y su figura ahora debería aparecer como se muestra a continuación.
eje ([0.95 1 -.1 .1])
La línea de puntos a la derecha indica las ubicaciones de frecuencia natural constante (  ) y
la frecuencia natural es mayor que 0,0072 fuera de la línea. La otra línea de puntos indica las
ubicaciones de la relación de amortiguación constante (  ) y la relación de amortiguación es
mayor que 0,6 dentro de la línea. La línea vertical dentada es una parte del círculo unitario
que se calcula a baja resolución (de ahí la irregularidad).
En el gráfico anterior, puede ver que parte del lugar de las raíces está dentro de la región
deseada. Busquemos una ganancia específica (  ) usando la función rlocfind de MATLAB y
luego obtengamos la respuesta al escalón correspondiente. La ejecución del comando [K,
poles] = rlocfind (dP_cruise) en la ventana de comandos de MATLAB generará un mensaje
que le indicará que seleccione un punto en el lugar de las raíces. Recuerde que si elige un
poste que está demasiado dentro del círculo unitario, la respuesta al escalón será demasiado
rápida, lo que indica una aceleración físicamente irrazonable. Por lo tanto, debe elegir el polo
que esté cerca de la intersección de la frecuencia natural constante y el eje real. Seleccione el
punto cercano a 0,99 como se muestra con la cruz en el siguiente gráfico del lugar de las
raíces.

Después de seleccionar un punto, debería ver el siguiente resultado en la ventana de


comandos de MATLAB que indica el punto que eligió, el punto en el lugar de la raíz
más cercano a ese punto (el polo) y la ganancia  que coloca el polo de circuito cerrado
en esa ubicación. .

Select a point in the graphics window


selected_point =
0.9900 - 0.0003i

K =

451.1104

poles =
0.9900
Luego, para ver la respuesta del paso de ciclo cerrado, agregue el siguiente código a su
archivo-m.

K = 451.1104;
sys_cl = feedback(K*dP_cruise,1);
r = 10;
figure
step(r*sys_cl,10);

Esta respuesta satisface los requisitos de tiempo de subida y sobreimpulso. Pero el error de


estado estable es de alrededor del 11%. Para obtener el error de estado estable deseado,
modificaremos el controlador digital.

Compensación mediante un controlador digital


Recuerde de la página Control de crucero continuo : ubicación raíz , se agregó un
compensador de retraso al sistema para obtener la respuesta deseada. En esta versión de
control digital del problema del control de crucero, modificaremos el controlador digital
existente agregando compensación de retraso adicional de la forma que se muestra a
continuación.

( z− zo)
C log ( z )=Kd (4)
( z −zp)

Existe una guía para el diseño de compensadores de adelanto y retraso digitales y una guía
para el diseño de compensadores de adelanto y retraso de tiempo continuo . El método de
diseño discreto descrito dice que el cero del compensador de retardo debe elegirse para
cancelar (aproximadamente) uno de los polos de la planta, siempre que sea estable. Por lo
tanto, elegimos que el cero esté en  = 0.999.
Para reducir el error de estado estable, observamos que la ganancia de baja frecuencia del
sistema de control de tiempo discreto con un compensador de retraso aumenta en un factor
de  . Para reducir el error de estado estable en un factor de 5, elegimos  =
0,9998. Para tener una ganancia de 1 a frecuencia cero, el numerador se multiplica
por  = 0.2 antes de usar el lugar de las raíces. Tenga en cuenta que todo
el compensador se multiplica por la ganancia de bucle determinada a partir del lugar de las
raíces.
Ahora tenemos la función de transferencia del compensador de tiempo discreto. Generemos
el lugar de las raíces y obtengamos la respuesta al escalón. Primero cree un nuevo archivo-m
e ingrese los siguientes comandos.

m = 1000;
b = 50;
u = 500;

s = tf('s');
P_cruise = 1/(m*s+b);
Ts = 1/50;
dP_cruise = c2d(P_cruise,Ts,'zoh');

z = tf('z',Ts);
C = 0.2*(z - 0.999)/(z - 0.9998);

Wn = 0.0072;
zeta = 0.6;

rlocus(C*dP_cruise)
zgrid(zeta, Wn)
axis([0.98 1 -0.01 0.01])
Select a point in the graphics window

selected_point =

0.9900 - 0.0000i

K =

2.4454e+03

poles =

0.9900
0.9900

Finalmente, para ver la respuesta del paso de ciclo cerrado, agregue el siguiente código a
su archivo-m.

K = 2.4454e+03;
sys_cl = feedback(K*C*dP_cruise,1);
r = 10;
step(r*sys_cl,10);

Esta respuesta aumenta tan rápido como antes, pero el error de estado estable se ha
reducido al 2%. Este sistema satisface todos los requisitos de diseño al tiempo que
requiere una cantidad razonable de esfuerzo de control.

Nota: Un problema de diseño no tiene necesariamente una respuesta única. Para


practicar, puede probar otros compensadores para obtener una mejor respuesta que la
que se muestra arriba.
5.2. SIMULACIÓN DIGITAL EN LABVIEW

5.2.1. FUNCIÓN DE TRANSFERENCIA DISCRETA:

5.2.1.1. ESQUEMA DE SIMULACIÓN:

Figura 5.2.1.1. Esquema de Simulación

5.2.1.2. RESULTADOS DE LA SIMULACIÓN

Figura 5.2.1.2. Ingreso de valores y simulación


Figura 5.2.1.3. Lugar de raíces del sistema discreto

5.2.2. RESPUESTA AL ESCALÓN CON CONTROLADOR DISCRETO

Para obtener la respuesta del escalón, se ingresa la función que calcula Matlab
en el Prompt, muestreado a 0.02.

r*sys_c =

0.1955
----------
z - 0.9794

Sample time: 0.02 seconds


Discrete-time transfer function.

Figura 5.2.2.1. Ingreso de valores a evaluar

RESPUESTA AL ESCALÓN DEL SISTEMA CON CONTROLADOR DISCRETO:


5.3. CUADRO COMPARATIVO DE SIMULACIONES MATLAB VS LABVIEW

COMPARATIVA
SOFTWARE MATLAB LABVIEW

GRÁFICA DE
LUGAR DE RAÍCES

RESPUESTA AL
ESCALÓN

COMENTARIO

También podría gustarte