Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Basic As Control
1 Basic As Control
240
241
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.
242
m (t ) = K c e (t )
(11.1)
243
M (s)
= Kc
E (s)
(11.2)
244
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 )
dt
(11.3)
O bien,
t
m (t ) = K c e (t ) dt
0
(11.4)
M (s) Kc
=
E(s)
s
(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
m (t ) = K c e (t ) +
Kc
e(t )dt
0
(11.6)
246
1
M ( s)
= K c 1 +
E ( s)
Is
(11.7)
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.
248
m (t ) = K c e(t ) + K c d
M ( s)
= Kc (1 + d s )
E ( s)
de (t )
dt
(11.8)
(11.9)
249
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
m(t ) = K c e(t ) +
Kc
e(t )dt + K c d
0
de(t )
dt
(11.10)
251
1
M ( s)
= K c 1 +
+ d s
E ( s)
Is
(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.
252
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 M1 y
M2, 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
253
P +
I
+ Ds
s
254
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
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
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),
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),
ylabel('Respuesta','FontSize',14)
xlabel('Tiempo','FontSize',14),
xlabel('Tiempo','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
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