01 Guia 01 Control Crucero.
01 Guia 01 Control Crucero.
01 Guia 01 Control Crucero.
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
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.
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:
ẋ=[ 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;
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);
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
P_cruise =
1
-----------
1000 s + 50
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)
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)
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:
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.
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.
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.
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)
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
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.
DIAGRAMA DE BODE:
El diagrama de Bode lo muestra por separado y está dividido en gráfica de Magnitud y gráfica de Fase:
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)
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.
Kp = 1;
Ki = 1;
Kd = 1;
s = tf ( 's' );
C = Kp + Ki / s + Kd * s
C =
s ^ 2 + s + 1
-----------
s
C =
1
Kp + Ki * --- + Kd * s
s
con Kp = 1, Ki = 1, Kd = 1
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
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.
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)
Kp = 600;
Ki = 1;
C = pid (Kp, Ki);
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);
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
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)
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
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.
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);
( 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.
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
COMPARATIVA
SOFTWARE MATLAB LABVIEW
GRÁFICA DE
LUGAR DE RAÍCES
RESPUESTA AL
ESCALÓN
COMENTARIO