Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Basic As Control
1 Basic As Control
=
t
c
dt t e K t m
0
) ( ) (
(11.4)
En donde K
c
, es una constante ajustable. La funcin de transferencia del controlador
integral es
s
K
s E
s M
c
=
) (
) (
(11.5)
A partir de la ecuacin (11.3) de deduce que si, por ejemplo, se duplica el valor de
e(t), el valor de m(t) vara dos veces ms rpido y a partir de la ecuacin (11.4) se
explica que cuando el error se hace igual a cero, el valor de m(t) permanece
constante. En ocasiones, la accin de control integral se denomina Control de
Reajuste (Reset)
La ilustracin grfica de la accin integral se muestra en la Figura 11.5 construida
con el archivo integ.m. Se asigna una ganancia de 0.5 al controlador integral y se
considera tanto a la vlvula como el sensor como sistemas de ganancia pura con
valor de 1. El sistema utilizado es de segundo orden con ganancia de 1/8 y dos polos
con valores de -1/2 y -1/4 y la variable de entrada se perturba con un cambio paso
unitario
245
La Figura 11.5 muestra que en un controlador de accin integral, con parmetros
apropiados, el error que se alimenta alcanza un valor de cero y la respuesta
correspondiente del controlador se mantiene constante. Observe que el valor de la
seal de salida del controlador en un instante cualquiera es el rea debajo de la curva
de error, es decir, la integral o sumatoria de errores hasta el instante en
consideracin. La variable de proceso se estabiliza en un valor sin diferencia con
respecto al valor de la variable deseada del proceso, es decir, sin error en estado
estacionario. La accin de control integral ha eliminado el error observado en la
respuesta del controlador proporcional pero puede conducir a una respuesta
oscilatoria de amplitud decreciente lenta o, incluso, de amplitud creciente y ambos
casos, por lo general, se consideran inconvenientes
Figura 11.5 Accin Integral en un Controlador
11.3.4 Accin de control Proporcional Integral, PI
La accin de control proporcional integral, PI, se define mediante la ecuacin,
+ =
t
I
c
c
dt t e
K
t e K t m
0
) ( ) ( ) (
(11.6)
246
O la funcin de transferencia del controlador es
+ =
s
K
s E
s M
I
c
1
1
) (
) (
(11.7)
Siendo K
c
la ganancia proporcional y
I
el denominado tiempo integral. Tanto K
c
como
I
son ajustables.
Significado del tiempo integral
El tiempo integral ajusta la accin de control integral, mientras que un cambio en el
valor de K
c
afecta las partes integral y proporcional de la accin de control. El
inverso del tiempo integral se denomina velocidad de reajuste. La velocidad de
reajuste es la cantidad de veces por minuto que se duplica la parte proporcional de la
accin de control. La velocidad de reajuste se mide en trminos de las repeticiones
por minuto. La Figura 11.6 muestra los perfiles de las acciones proporcional y
proporcional-integral de un controlador para un cambio paso unitario en el error de
entrada.
Figura 11.6 Acciones Proporcional y Proporcional Integral
247
Se deduce que la accin proporcional hace una amplificacin constante del error
alimentado de acuerdo a su ganancia (2). Para el controlador proporcional e integral,
la respuesta inicial es igual a la ganancia proporcional y esta respuesta se repite
sumada para perodos de tiempo igual al tiempo integral (1). La Figura 11. 6 es
construida con el archivo accpropinteg.m.
Error y Respuesta en una accin proporcional - integral
La ilustracin grfica de la accin proporcional e integral dentro de un lazo de
control se muestra en las Figuras 11.7 y 11.8 construidas con el archivo propinteg.m.
Figura 11.7. Error y Respuesta de un controlador proporcional e integral
Se utiliza el mismo sistema empleado para los casos anteriores y se asigna un valor
de 2 para la ganancia del controlador y un tiempo integral de 1. Con acciones de
control proporcional e integral no hay error en estado estable (offset) y la respuesta
del controlador es estable y diferente de cero.
En la Figura 11.8 se muestran las respuestas del lazo de control con accin solo
proporcional y con acciones proporcional e integral. Nuevamente, se observa que la
accin de control integral ha eliminado el error en estado estable que resulta en la
respuesta del controlador proporcional pero condujo a una respuesta oscilatoria de
amplitud decreciente lenta, lo que puede resultar inconveniente.
248
Figura 11.8 Respuesta de un controlador proporcional e integral
11.3.5 Accin de control proporcional derivativa, PD
La accin de control proporcional derivativa, PD, se define mediante la ecuacin,
dt
t de
K t e K t m
d c c
) (
) ( ) ( + = (11.8)
( ) s K
s E
s M
d c
+ = 1
) (
) (
(11.9)
Siendo K
c
la ganancia proporcional y
d
una constante denominada tiempo
derivativo. Ambos parmetros son ajustables.
Significado del tiempo derivativo
La accin de control derivativa, en ocasiones denominada control de velocidad,
ocurre donde la magnitud de la salida del controlador es proporcional a la velocidad
de cambio de la seal de error. El tiempo derivativo es el intervalo de tiempo
durante el cual la accin de la velocidad hace avanzar el efecto de la accin de
control proporcional.
249
Si la seal de error es una funcin rampa unitaria, la salida del controlador se
convierte en la que se muestra en la Figura 11.9. La accin de control derivativa
tiene un carcter de previsin. Sin embargo, es obvio que una accin de control
derivativa nunca prev una accin que nunca ha ocurrido.
Figura 11.9. Accin Proporcional y Proporcional Derivativa
Cuando una accin de control derivativa se agrega a un controlador proporcional,
aporta un medio de obtener un control con alta sensibilidad. Una ventaja de usar una
accin de control derivativa es que responde a la velocidad del cambio del error y
produce una correccin significativa antes de que la magnitud del error se vuelva
demasiado grande. Por tanto, el control derivativo prev el error, inicia una accin
oportuna y tiende a aumentar la estabilidad del sistema.
Aunque el control derivativo no afecta en forma directa el error en estado estable,
aade amortiguamiento al sistema y, por tanto, permite el uso de un valor ms
grande en la ganancia, lo cual provoca una mejora en la precisin en estado estable.
Debido a que el control derivativo opera sobre la velocidad de cambio del error, y no
sobre el error mismo, este modo nunca se usa solo. Siempre se emplea junto con una
accin de control proporcional o proporcional integral.
La Figura 11.10 muestra las respuestas de los controladores proporcional,
proporcional-integral y proporcional derivativo para el proceso utilizado en los casos
250
anteriores con vlvula y sensor con ganancias de uno. Se asigna la misma ganancia
de 2 para cada una de las acciones y tiempo integral de 2 y tiempo derivativo de 10
Figura 11.10 Acciones de Control P, PI y PD
Las respuestas observadas en la Figura 11.10 se obtienen con el archivo propder.m.
Se sugiere al estudiante modificar dicho archivo de tal manera que permita la
asignacin de una ganancia diferente para la accin proporcional-derivativa y notar
que la accin derivativa controla la variable de proceso alcanzando un valor con un
error en estado estacionario y la ganancia puede tomar valores mayores
11.3.6 Accin de control proporcional integral derivativa, PID
La combinacin de una accin de control proporcional, una accin de control
integral y una accin de control derivativa se denomina accin de control
proporcional integral derivativo o PID. Esta accin combinada tiene las ventajas
de cada una de las tres acciones de control individuales. La ecuacin de un
controlador con esta accin combinada se obtiene mediante
dt
t de
K dt t e
K
t e K t m
d c
t
I
c
c
) (
) ( ) ( ) (
0
+ + =
(11.10)
251
+ + = s
s
K
s E
s M
d
I
c
1
1
) (
) (
(11.11)
La Figura 11.11 muestra la respuesta rampa unitaria que compara las acciones
proporcionales, proporcional-derivativas y proporcional-integral-derivativa, con los
siguientes parmetros: ganancia es de 2 el tiempo integral de 2 y el tiempo
derivativo es de 3 y la pendiente de la rampa es 2.
Figura 11.11 Accin Proporcional-Integral-Derivativa
Si la seal de error es una funcin rampa unitaria, la salida del controlador PID es
una combinacin de amplificacin, reajuste y anticipacin, propios de las acciones
proporcional, integral y derivativa.
En la Figura 11.12 se muestra la respuesta del control proporcional-integral-
derivativo a una variacin paso unitario en su variable de entrada para el proceso
estudiado en los casos anteriores. Se asigna un valor de 200 para la ganancia un
tiempo integral de 0.5 y un tiempo derivativo de 0.5. No hay error estable y la
respuesta presenta una anticipacin con respecto a una accin proporcional
integral, mostrada en una grfica mas amortiguada
252
Figura 11.12. Accin de control proporcional integral derivativo
11.4 SIMULINK
Las acciones de control se pueden estudiar utilizando las herramientas disponibles
en Simulink y construyendo los diagramas de bloques de cada uno de los lazos
retroalimentados. Para este propsito, es posible, el empleo de bloques como el
Relay que cumple la operacin de un control de dos posiciones y el PID
Controller para especificar las acciones proporcional o integral o derivativa en un
controlador
Bloque Relay
El bloque Relay que se encuentra en la librera Discontinuities del mostrario de
Simulink simula a un controlador de dos posiciones dentro del diagrama de bloques
que represente a un sistema. Requiere de las especificaciones de los valores de M
1
y
M
2
, que se introducen en la ventana de propiedades en los cuadros titulados Output
when on y Output when off. La Figura 11.3 muestra un diagrama sencillo con el
cual se puede observar la accin de un controlador de dos posiciones
Bloque PID Controller
El bloque PID Controller se encuentra en la librera Simulink Extras, dentro del
subconjunto Additional Linear.
253
Figura 11.13. Controlador de dos posiciones
La Figura 11.14 muestra la ventana de propiedades del bloque PID Controller para
especificar los parmetros dentro de los cuadros Proportional, Integral y
Derivative
Figura 11.14 Especificaciones de un controlador PID
Se observa en el cuadro que describe al bloque que la funcin de transferencia que
maneja el bloque se escribe en la siguiente forma:
Ds
s
I
P + +
En los cuadros Proporcional y Derivative se especifican la ganancia
proporcional y el tiempo derivativo pero en el cuadro Integral se introduce el
inverso del tiempo integral. En caso de accin solo proporcional los cuadros Integral
y Derivative se especifican con cero.
254
11.5 MATLAB: COMANDOS UTILIZADOS
En los programas incluidos a continuacin se utilizan los comandos subplot,
fprintf y feedback. Una descripcin de ellos se resume a continuacn
Comando subplot
Mediante este comando se divide la ventana donde se despliegan grficas de Matlab
para que se observen matrices de grficas que se posicionan de acuerdo a la
localizacin que se especifique en los argumentos del comando. La sintaxis es:
Subplot(m,n,p)
Siendo m, el nmero de filas de la matriz, n el nmero de la columna y p el
nmero de la fila donde se posiciona la grfica donde se posiciona la grfica
columna columnas de la matriz de grficas y p, las filas, c
Comando fprintf
Este comando escribe datos formateados a un archivo. La sintaxis es la siguiente:
fprintf(Archivo, Formato, Datos)
El Archivo y el Formato se escriben entre comillas simples. Si el archivo es el
mismo en el cual se inserta el comando, el primer argumento se omite. La escritura
del formato numrico se inicia con un signo de porcentaje seguido de una letra que
indica el carcter de conversin o representacin del nmero. Entre ellos son
opcionales la escritura de alguna informacin como la siguiente:
%-6.2f
Despus del signo de porcentaje se puede incluir un control para la alineacin de la
salida con un signo menos o un signo mas o un cero. El signo menos hace una
justificacin a la izquierda, el signo mas despliega el signo positivo o negativo y el
cero coloca ceros en vez de espacios. El nmero seis escrito a continuacin
255
especifica el nmero mnimo de dgitos a imprimir. El nmero dos escrito a
continuacin del punto indica el nmero de cifras decimales y la letra efe indica el
carcter de conversin, en este caso que los nmeros se despliegan en formato de
punto fijo. Otros formatos como el notacin decimal con signo, el exponencial con e
minscula y uno mas compacto utilizan como caracteres las letras d, e y g,
respectivamente.
El formato numrico suele seguirse de un signo\ y de un carcter de escape que
indique si el cursor retrocede (b), se posiciona para una nueva lnea abajo (n), se
desplaza en forma tabular (t), etc. Se pueden escribir leyendas antes y despus de los
formatos numricos, pero incluidas dentro de las comillas simples.
Comando feedback
Este comando determina la funcin de transferencia resultante de dos en paralelo
retroalimentadas negativamente. La sintaxis es:
H = feedback(h1, h2,Signo)
Las funciones de transferencia en paralelo son h1 y h2. Si la retroalimentacin es
negativa sobrentiende el signo, en caso contrario es necesario colocar el signo
positivo
11.6 MATLAB: PROGRAMAS CODIFICADOS
Archivo onoff.m
function y = onoff(x)
global A w M1 M2
A = input('Amplitud de la onda sinusoidal = ');
w = input('Frecuencia angular de la onda sinusoidal = ');
M1 = input('Valor superior o Valor de encendido = ');
M2 = input('Valor inferior o Valor de apagado = ');
tmin = input('Limite inferior del periodo de tiempo = ');
tmax = input('Limite superior del periodo de tiempo = ');
dt = input('Incremento en el tiempo = ');
t = [tmin:dt:tmax];
N = (tmax - tmin)/dt;
for i = 1:(N + 1)
256
y(i) = A*sin(w*t(i));
end
subplot(2,1,1), plot(t,y);
axis([0 tmax -(A + 1) (A + 1)])
legend('Entrada Sinusoidal',4), xlabel('Tiempo','FontSize',14),
ylabel('Entrada','FontSize',14)
grid
for i = 1:(N + 1)
if y(i) >= 0;
y1(i) = M1;
elseif y(i) <= 0;
y1(i) = M2;
elseif y(i) == -0;
y1(i) = M2;
else
end
end
subplot(2,1,2), plot(t,y1);
axis([0 tmax -(A + 1) (A + 1)])
legend('Control Encendido/Apagado',4), xlabel('Tiempo','FontSize',14),
ylabel('Respuesta','FontSize',14)
grid
Archivo prop.m
function f = prop(t,y)
Kc = input('Ganancia del Controlador = ');
Kv = input('Ganancia de la Valvula = ');
Ks = input('Ganancia del Sensor = ');
K = input('Ganancia del sistema = ');
dX = input('Cambio paso en la variable de entrada = ');
to = input('Tiempo de Simulacion = ');
n = input('Numero de polos en la funcion de transferencia del sistema = ');
m = input('Numero de zeros en la funcion de transferencia del sistema = ');
for i = 1:n
fprintf('Polo Numero %1.0f \n',i);
p(i) = input('Valor = ');
if i < m +1
fprintf('Zero Numero %1.0f \n',i);
z(i) = input('Valor = ');
elseif m == 0
257
z = [];
end
end
Gp = zpk(z,p,K);
G = [1 0 Ks; Kc -1 0; 0 Kv*Gp -1];
B = [1; 0; 0];
R = (inv(G))*B*dX;
[y,t] = step(R,to);
plot(t,y(:,1),'k',t,y(:,2),'r',t,y(:,3),'b')
title('Accion Proporcional en un Controlador', 'FontSize',14);
xlabel('Tiempo', 'FontSize',14);
ylabel('Error y Respuesta', 'FontSize',14);
Archivo integ.m
function f = integ(t,y)
Kc = input('Ganancia del Controlador = ');
Kv = input('Ganancia de la Valvula = ');
Ks = input('Ganancia del Sensor = ');
K = input('Ganancia del sistema = ');
dX = input('Cambio paso en la variable de entrada = ');
to = input('Tiempo de Simulacion = ');
n = input('Numero de polos en la funcion de transferencia del sistema = ');
m = input('Numero de zeros en la funcion de transferencia del sistema = ');
for i = 1:n
fprintf('Polo Numero %1.0f \n',i);
p(i) = input('Valor = ');
if i < m +1
fprintf('Zero Numero %1.0f \n',i);
z(i) = input('Valor = ');
elseif m == 0
z = [];
end
end
Gp = zpk(z,p,K);
Gc = tf([Kc],[1 0]);
G = [1 0 Ks; Gc -1 0; 0 Kv*Gp -1];
B = [1; 0; 0];
R = (inv(G))*B*dX;
[y,t] = step(R,to);
plot(t,y(:,1),'k',t,y(:,2),'r',t,y(:,3),'b')
title('Accion Integral en un Controlador', 'FontSize',14);
258
xlabel('Tiempo', 'FontSize',14);
ylabel('Error y Respuesta', 'FontSize',14);
Archivo accpropinteg.m
function f = accpropinteg(t,y)
Kc = input('Ganancia del Controlador = ');
taui = input('Tiempo Integral = ');
to = input('Tiempo de Simulacion = ');
for i = 1:2
if i == 1
Gc(i) = tf([Kc],[0 1]);
else
tau(i) = taui;
Gc(i) = tf([Kc*tau(i) Kc],[tau(i) 0]);
end
[y,t] = step(Gc(i),to);
if i == 1
plot(t,y,'b')
hold on
axis([0 5 0 10])
grid
else
plot(t,y,'r')
end
end
title('Accion Proporcional-Integral en un Controlador', 'FontSize',14);
xlabel('Tiempo', 'FontSize',14);
ylabel('Respuesta', 'FontSize',14);ylabel('Respuesta', 'FontSize',14);
Archivo propinteg.m
function f = propinteg(t,y)
Kc = input('Ganancia del Controlador = ');
taui = input('Tiempo Integral = ');
Kv = input('Ganancia de la Valvula = ');
Ks = input('Ganancia del Sensor = ');
K = input('Ganancia del sistema = ');
dX = input('Cambio paso en la variable de entrada = ');
to = input('Tiempo de Simulacion = ');
n = input('Numero de polos en la funcion de transferencia del sistema = ');
259
m = input('Numero de zeros en la funcion de transferencia del sistema = ');
for i = 1:n
fprintf('Polo Numero %1.0f \n',i);
p(i) = input('Valor = ');
if i < m +1
fprintf('Zero Numero %1.0f \n',i);
z(i) = input('Valor = ');
elseif m == 0
z = [];
end
end
Gp = zpk(z,p,K);
B = [1; 0; 0];
for i = 1:2
if i == 1
tau(i) = 0;
Gc(i) = tf([Kc],[0 1]);
else
tau(i) = taui;
Gc(i) = tf([Kc Kc*tau(i)],[tau(i) 0]);
end
G = [1 0 Ks; Gc(i) -1 0; 0 Kv*Gp -1];
R = (inv(G))*B*dX;
[y,t] = step(R,to);
if i == 1
plot(t,y(:,3),'k')
hold on
else
plot(t,y(:,3),'r')
end
end
title('Accion Proporcional-Integral en un Controlador', 'FontSize',14);
xlabel('Tiempo', 'FontSize',14);
ylabel('Error y Respuesta', 'FontSize',14)
Archivo propder.m
function f = propder(t,y)
Kc = input('Ganancia del Controlador = ');
taui = input('Tiempo Integral = ');
taud = input('Tiempo Derivativa = ');
Kv = input('Ganancia de la Valvula = ');
260
Ks = input('Ganancia del Sensor = ');
K = input('Ganancia del Proceso = ');
n = input('Numero de Polos = ');
for i = 1:n
fprintf('Polo Numero %1.0f\n',i)
p(i) = input('Valor del Polo = ');
end
to = input('Tiempo de Simulacion = ');
z = [];
G = zpk(z,p,K);
G1 = series(G,Kv);
Gp = tf([Kc],[0 1]);
Gi = tf([Kc*taui Kc],[taui 0]);
Gd = tf([K*taud K],[0 1]);
FP = series(G1,Gp);
CP = feedback(FP,Ks);
[y,t] = step(CP,to);
plot(t,y,'b')
hold on
FI = series(G1,Gi);
CI = feedback(FI,Ks);
[y,t] = step(CI,to);
plot(t,y,'k')
FD = series(G1,Gd);
CD = feedback(FD,Ks);
[y,t] = step(CD,to);
plot(t,y,'r')
title('Acciones de Control','FontSize',14), xlabel('Tiempo','FontSize',14),
ylabel('Respuesta','FontSize',14)