Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El control de una variable de proceso requiere de una estructura que incluye cuatro
elementos (Proceso, Sensor, Controlador, Elemento de Control Final) conectados de
tal manera que se establece un flujo de informacin que si es recirculada se describe
como un lazo de control retroalimentado (Feedback). Si el controlador desarrolla su
accin sin alimentarse de la informacin que se observa en la variable de proceso, se
dice que es un control anticipatorio (Feedforward)
El controlador detecta la seal de error, que por lo general est en un nivel muy bajo,
y la amplifica a un nivel lo suficientemente alto. La salida del controlador
automtico se alimenta a un elemento de control final como un motor hidrulico o
elctrico o una vlvula neumtica. Este elemento de control final es un dispositivo
de potencia que produce la entrada al proceso de acuerdo con la seal de control, a
fin de que la seal de salida se aproxime a la seal de entrada de referencia.
controlador para que ejecute su accin, a travs del elemento de control final, quien
modifica la variable manipulada para mantener estable la variable de proceso.
Las acciones que realiza un controlador son las decisiones que se requieren para
compensar las perturbaciones observadas en la variable de proceso y que son
transmitidas al elemento de control final para que las ejecute. A continuacin se
estudian las acciones de los controladores PID, adems de la accin de dos
posiciones.
Para una accin de control proporcional, la relacin entre la salida del controlador,
m(t) y la seal de error, e(t) es:
m (t ) = K c e (t ) (11.1)
243
M (s)
= Kc (11.2)
E (s)
Lo anterior quiere decir que en la respuesta del control proporcional hay un error en
estado estable o desplazamiento (offset) para una entrada con un cambio paso. Este
desplazamiento se elimina si se incluye la accin de control integral en el
controlador.
dm(t )
= K c e(t ) (11.3)
dt
O bien,
t
m (t ) = K c e (t ) dt (11.4)
0
M (s) Kc
= (11.5)
E(s) s
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)
Kc t
m (t ) = K c e (t ) +
I e(t )dt
0
(11.6)
246
M ( s) 1
= K c 1 + (11.7)
E ( s) Is
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.
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
de (t )
m (t ) = K c e(t ) + K c d (11.8)
dt
M ( s)
= Kc (1 + d s ) (11.9)
E ( s)
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.
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
Kc t de(t )
m(t ) = K c e(t ) +
I e(t )dt + K c d
0 dt
(11.10)
251
M ( s) 1
= K c 1 + + d s (11.11)
E ( s) Is
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.
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.
11.4 SIMULINK
Bloque Relay
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
I
P + + Ds
s
Comando subplot
Subplot(m,n,p)
Comando fprintf
%-6.2f
Comando feedback
H = feedback(h1, h2,Signo)
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
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