Saltar al contenido

Controlador por Asignación de Polos – RST Posicional

El controlador RST (Reference Signal Tracking en sus siglas en inglés) o también conocido como Seguidor de Referencia en español, es un método de control que usa de una forma más elegante el clasico método de Asignación de Polos. Y en esta entrada vas a aprender a hacerlo!!

Antes de empezar, te hago la invitación de que veas:

CURSO GRATUITO DE CONTROL DE PROCESOS AVANZADOS

RST – Introducción

Existen aplicaciones donde las estrategias de control no son efectivas debido a diversos factores tales como:

  • Pueden producirse oscilaciones en la malla de control.
  • Pueden presentarse condiciones diversas en los procesos (perturbaciones)

Para esto se debe pensar en realizar técnicas de control mas sofisticadas, con el objetivo de garantizar las especificaciones de desempeño del proyecto de control.

Controlador por Asignación de Polos

Para realizar un controlador por asignación de polos, debe conocerse a priori el modelo matemático que representa la dinámica de la planta (Funcion de Transferencia). Para posteriormente poder manipular la ubicación de esos polos en el lazo cerrado de control y poderlos ubicar asi, en el lugar deseado, para obtener una respuesta especificada.

El comportamiento dinámico del lazo cerrado es especificado por el usuario, utilizando la siguente representación en el dominio discreto:

A(z^{-1}) y(t) = z^{-d} B(z^{-1}) u(t)

Donde:
A(z^{-1}): Son los Polos de Malla Abierta
y(t): Salida del sistema
d: Retardo en tiempo discreto
B(z^{-1}): Son los ceros de malla abierta
u(t): Acción de Control

La ley de control en la asignación de polos que obedece a una estructura RST se puede expresar de la siguiente forma:

R(z^{-1})u(t) = T(z^{-1}) w(t)- S(z^{-1}) y(t)

donde el diagrama de bloques del control RST aplicando los conceptos del Álgebra de Bloques viene dado por:

Control RST

De la representación anterior se puede observar que el controlador tiene una estructura de dos grados de libertad. El controlador RST se compone de tres polinomios: R, S y T que son generalmente sintonizado por el método de colocación de polos.

SI es un sistema con dos grados de libertad. El filtro T filtra la referencia y sirve para atenuar sobreimpulsos, el S filtra la salida, que junto con el filtro R actuan en la regulación (rechazo de perturbación) y en la dinámica Servo (seguimiento de referencia)

Sin embargo, como veremos más adelante, esta configuración es conocida como un control RST posicional, quiere decir, que no posee una acción integradora dentro del lazo de control para el rechazo de perturbaciones y por lo tanto va a poseer un error en estado estacionario cuando el disturbio es un escalón, tal y como lo explicamos en la entrada del modelo interno.

Diseño del Control RST Posicional

Calculando la función de transferencia en lazo cerrado del controlador se obtiene la siguiente ecuación.

y(t) = \dfrac{z^{-d} B(z^{-1}) T(z^{-1}) w(t)}{A(z^{-1}) R(z^{-1}) + z^{-d} B(z^{-1}) S(z^{-1})}

A partir de la funcion caracteristica A(z^{-1}) R(z^{-1}) + z^{-d} B(z^{-1}) S(z^{-1}) se derivan los coeficientes de los polinomios R,S, en base a la dinamica del lazo cerrado especificado o dado por el diseñador  P_{MF}(z^{-1}).

A(z^{-1}) R(z^{-1}) + z^{-d} B(z^{-1}) S(z^{-1}) = P_{MF}(z^{-1})

Donde:
 P_{MF}(z^{-1}): Es atribuido por el usuario.

R,S = \begin{cases} & n_R =n_B + d -1 \\ & n_S=n_A – 1 \end{cases}

nR,nS,nA,nB son el grado de los polinomios.

Ahora se tiene que:

y(t) = \dfrac{z^{-d} B(z^{-1}) T(z^{-1}) w(t)}{P_{MF}(z^{-1})}

Cuando el sistema llega a estado estable, quiere decir que la salida alcanza el Set-Point y(t) = w(t)

Aplicando teorema de valor final, donde todas las z de los polinomios se colocan en 1

\dfrac{B(1) T(1)}{P_{MF}(1)}=1

Obtenemos el polinomio T

T(1) = \dfrac{P_{MF}(1)}{B(1)}

Ahora debe abordarse la manera de diseñar el polinomio deseado en lazo cerrado  P_{MF}(z^{-1}).

Dinámica de primer orden.

P_{MF}(S)=\tau S+1
P_{MF}(z^{-1}) = 1 – p_{1} z^{-1}

 p_{1}: Asignación del polo deseado.

p_{1}=e^ {-T/\tau}

T: Periodo de Muestreo.

Para seleccionar el polo deseado puede optarse por establecerlo en el siguiente rango 0.6<p_{1}<0.9. Si el polo esta más cerca del 1, el controlador va a ser mas conservador, y la respuesta va a ser lenta. Si el polo esta mas cerca del cero el controlador va a ser agresivo dando una dinámica mas rápida.

Dinámica de segundo orden.

P_{MF}(S)=s^{2}+2\zeta \omega_{n}s+\omega_{n}^{2}
P_{MF}(z^{-1}) =1+p_{1}z^{-1}+p_{2}z^{-2}
p_{1}=-2 e^{-\zeta \omega_n T }\cos (\omega_n T\sqrt{1-\zeta^{2}}) \ \ (angulo\ en\ radianes)
p_{2}=e^{-2 \zeta \omega_n T }

Comentarios del RST Posicional

  1. El controlador por asignación de polos RST posicional es capaz de controlar procesos lentos, oscilatorios o inestables en lazo abierto, siempre y cuando en el proyecto no exista ninguna restricción sobre la naturaleza física de la planta.
  2. La técnica de asignación de polos puede ser empleada en la sintonia de diferentes algoritmos de control discreto (PID, modelo inverso, mínima varianza, control predictivo)
  3. Esta técnica se hace en base al conocimiento previo de la función de transferencia del proceso, si no se conoce, se deben aplicar técnicas de identificación recursivas o no recursivas.
  4. Por ser un control RST posicional, el sistema presentará un error en estado estacionario cuando se ingresa una perturbación al sistema, para solucionar eso, se debe agregar una dinámica integradora, la cual es tratada en el RST Incremental.

Ejemplos de Implementación de un Control RST

Vamos a ver dos ejemplos de implementación del controlador RST posicional usando la tecnica de la asignación o colocación de polos y mostraremos su código en MATLAB para que lo puedas reproducir tu mismo.

RST Sistema de Primer Orden

Diseñar un controlador por asignación de polos para el siguiente proceso de primer orden. La acción de control debe estar limitada en un rango de 0v – 5v.

Gp(s)=\dfrac{1}{10s + 1}

Solución

Se procede discretizando la función de transferencia con un tiempo de muestreo T=1.

Gp(z)=z^{-1}\dfrac{0.095}{1-0.905z^{-1}}
n_a=1;n_b=0;d=1
n_r=n_b+d-1=0+1-1=0 (R_0)
n_s=n_a-1=1-1=0(S_0)

Segun el calculo anterior solo vamos a tener un termino en el polinomio R y un termino en el polinomio S

Procedemos ahora al calculo del polo que vamos a asignar.

P_{MF}(z^{-1}) = 1 – p_{1} z^{-1}
p_{1}=e^ {\dfrac{T}{\tau}}
p_{1}=e^ {\dfrac{1}{10}}=0.9048
PMF=AR+z^{-d}BS
(1-0.9048z^{-1})=(1-0.905z^{-1})R_0+z^{-1}(0.0952)S_0
(1-0.9048z^{-1})=R_0-0.905R_0z^{-1}+0.0952S_0z^{-1}=R_0+(0.0952S_0-0.905R_0)z^{-1}

Igualo termino a termino para obtener un sistema de ecuaciones

0.0952S_0-0.905R_0=-0.9048\ (1)
R_0=1\ (2)

Resolviendo se obtiene

R_0=1 ; S_0=0

Por ultimo se calcula la ganancia T (Coloco las Z=1)

T(1) = \dfrac{P_{MF}(1)}{B(1)}=\dfrac{1-0.9048}{0.095}=1

La ley de control para este sistema queda de la siguiente manera

R(z^{-1})u(t) = T(z^{-1}) w(t)- S(z^{-1}) y(t)
u(t)=1w(t)-0y(t)

El codigo en Matlab es el siguiente:

clc
clear all
close all
%Condiciones iniciales para realizar el ciclo de control
nit = 400; umin = 0; umax = 4.9; ts = 1;
u(1:10) = 0; erro(1:10) = 0; y(1:10) = 0;
% Referência
r(1:100) = 1; r(101:200) = 4; r(201:300) = 2; r(301:nit) = 3;
%% Planta
                          
num=1;                          %Numerador Continuo
den=[10 1];                     %Denominador Continuo
gp=tf(num,den);                 %Funcion de transferencia
ftz=c2d(gp,ts);                 %Planta Discreta
[B,A]=tfdata(ftz,'v');          %Divide Numerador em B e denominador em A


%PMF (Polo asignado)
p1=exp(-ts/den(1));
pmf=[1 -p1];

%Solucion de ecuaciones por metodo matricial
M=[1 0; A(2) B(2)];
q=[1; pmf(2)];
X=inv(M)*q;

R=X(1);                 %Polinomio R
S=X(2:end)';            %Polinomio S
%Polinomio T
T=sum(pmf)/sum(B);

%Loop de Control
for k = 4:nit
   
    y(k)=B(2)*u(k-1)-A(2)*y(k-1);       %Salida del sistema
    u(k)=(T*r(k)-S*y(k))/R;             %Ley de control
    %     Saturacion para la ley de control min=0 y max=5
    if u(k) >= umax 
     u(k) = umax;
     elseif u(k) <= umin
     u(k) = umin;
    end
end

%Codigo para graficar la respuesta transitoria y la accion de control
t = 0:ts:(nit-1)*ts;

figure
subplot(2,1,1),plot(t,r,'--k',t,y,'-r','Linewidth',2.5)
xlabel('Tempo (s)');
ylabel('Velocidade');
legend('W_t','Y_t','Location','SouthEast')
grid on;
hold
subplot(2,1,2),plot(t,u,'--b','Linewidth',3)
xlabel('Tempo (s)');
ylabel('Controle (volts)');
legend('U_t')
grid on;
Respuesta del Control por AP 1

La respuesta del sistema se presenta a continuación, donde se observa que la variable y(t) sigue la referencia w(t) y la acción de control u(t) se mantiene dentro del rango de 0v-5v.

RST Sistema de Segundo Orden

Diseñe un controlador por asignación de polos para el siguiente proceso teniendo encuenta la misma restricción del ejemplo anterior. Usando los conceptos de diseño de un sistema de segundo orden sobreamortiguado.

Gm(s)=\dfrac{1}{0.1s^{2}+1.1s+1}

Con un tiempo de muestreo T=0.1

Solución

Se discretiza la planta.

Gm(z)=\dfrac{0.0355+0.0247z^{-1}}{1-1.273z^{-1}+0.332z^{-2}}z^{-1}
n_a=2;n_b=1;d=1
n_r=n_b+d-1=1+1-1=1\rightarrow (R_0+R_1z^{-1})
n_s=n_a-1=2-1=1\rightarrow (S_0+S_1z^{-1})

Se realiza el calculo de los polos deseados, según criterio del diseñador. Para este caso yo quiero que mi sistema tenga un tiempo de establecimiento en lazo cerrado de 1 segundo (Tss=1) seg y tenga un coeficiente de amortiguamiento de 0.6 (ζ=0.6).

Con estos dos criterios se puede encontrar la frecuencia natural del sistema ωn

\omega _n=\dfrac{4}{\zeta *Tss}=\dfrac{4}{0.6*1}=6.667
p_{1}=-2 e^{-0.6* 6.6667*1 }\cos (6.6667*1*\sqrt{1-0.6^{2}}) = -1.1544
p_{2}=e^{-2* 0.6*6.6667*1 } =0.4493
PMF=1-1.1544z^{-1}+0.4493z^{-2}
PMF=AR+z^{-d}BS
1-1.1544z^{-1}+0.4493z^{-2}=(1-1.272z^{-1}+0.332z^{-2})(R_0+R_1z^{-1})+z^{-1}(0.0355z^{-1}+0.0247z^{-2})(S_0+S_1z^{-1})

solucionando la ecuación anterior puede agruparse cada termino del lado derecho con los terminos del lado izquierdo para formar un sistema de ecuaciones

R_0=1
R_1+0.0355S_0=-1.1544+1.272R_0
-1.272R_1+0.0247S_0+0.0355S_1=0.4493-0.332R_0
0.332R_1+0.0247S_1=0

en otros términos el sistema de ecuaciones anterior puede expresarse de manera matricial. A continuacion se muestra el método matricial con literales.

\begin{bmatrix} R_1\\ S_1\\ S_0\\ \end {bmatrix}= \begin{bmatrix} 1 & 0& B_1& \\ A_1 & B_1 & B_2 \\ A_2 & B_2 & 0 \end{bmatrix}^{-1}\begin{bmatrix} Pmf_1-A_1\\ Pmf_2-A_2\\ 0 \end{bmatrix}

\begin{bmatrix} R_1\\ S_1\\ S_0\\ \end {bmatrix}= \begin{bmatrix} 1 & 0& 0.0355& \\ -1.272 & 0.0355 & 0.0247 \\ 0.332 & 0.0247 & 0 \end{bmatrix}^{-1}\begin{bmatrix} 0.1183\\ 0.1165\\ 0 \end{bmatrix}

\begin{bmatrix} R_1\\ S_1\\ S_0\\ \end {bmatrix}=\begin{bmatrix} -0.0140\\ 0.1894\\ 3.7267 \end{bmatrix}

Por ultimo se calcula la ganancia T

T(1) = \dfrac{P_{MF}(1)}{B(1)}=\dfrac{1.0000-1.1544+0.4493}{0.0355+0.0247}=4.9021

La ley de control para este sistema queda de la siguiente manera

R(z^{-1})u(t) = T(z^{-1}) w(t)- S(z^{-1}) y(t)
(R_0+R_1z^{-1})u(t) = T(z^{-1}) w(t)- (S_0+S_1z^{-1}) y(t)
u(t)=Tw(t)-S_0y(t)-S_1y(t-1)-R_1u(t-1)
u(t)=4.9021w(t)-3.7267y(t)-0.1894y(t-1)-0.0140u(t-1)

El codigo en Matlab es el siguiente:

clc
clear all
close all
nit = 400; umin = 0; umax = 4.9; 
u(1:10) = 0; erro(1:10) = 0; y(1:10) = 0;
% Referência
r(1:100) = 1; r(101:200) = 4; r(201:300) = 2; r(301:nit) = 3;
%% Planta
T=0.1;                          %Tempo de muestreo
num=1;                          %Numerador Continuo
den=[0.1 1.1 1];                %Denominador Continuo
gp=tf(num,den);                 %Função de transferencia
ftz=c2d(gp,T);                  %Planta Discreta
[B,A]=tfdata(ftz,'v');          %Divide Numerador em B e denominador em A

gpz=filt(B,A,T,'name','Planta');      %Funcao de transferenca discreta

%% PMF
%Asignacion de Polos
Ts=1;                      %Tempo de estabelecimento deseado lazo cerrado
ep=0.6;                     %Epsilon (Coeficiente de amortiguamiento)
wn=4/(ep*Ts);               %Frecuencia natural del sistema

%Polos conjugados
p1=-2*exp(-ep*wn*T)*cos(wn*T*sqrt(1-ep^2));
p2=exp(-2*ep*wn*T);

% Polinomio deseado con un polo insignificante igual a zero
Am=[1 p1 p2 0];

%Resolução de Equações metodo matricial
M=[1 0 B(2); A(2) B(2) B(3); A(3) B(3) 0];
q=[Am(2)-A(2); Am(3)-A(3);Am(4)];
X=inv(M)*q;

R=[1 X(1)];             %Polinomio R
S=[X(3) X(2)];            %Polinomio S
%Polinomio T
Tz=sum(Am)/sum(B);

for k = 4:nit
   
    y(k)=B(2)*u(k-1)+B(3)*u(k-2)-A(2)*y(k-1)-A(3)*y(k-2);
    u(k)=Tz*r(k)-S(1)*y(k)-S(2)*y(k-1)-R(2)*u(k-1);
    %     Saturação
    if u(k) >= umax 
     u(k) = umax;
     elseif u(k) <= umin
     u(k) = umin;
    end
end

t = 0:T:(nit-1)*T;

figure
subplot(2,1,1),plot(t,r,'--k',t,y,'-r','Linewidth',2.5)
xlabel('Tempo (s)');
ylabel('Velocidade');
legend('y_r','y','Location','SouthEast')
grid on;
hold
subplot(2,1,2),plot(t,u,'--b','Linewidth',3)
xlabel('Tempo (s)');
ylabel('Controle (volts)');
legend('u')
grid on;

La respuesta del sistema de control se muestra a continuación, donde la salida sigue en todo momento la referencia y la acción de control se mantiene dentro de los limites establecidos de 0v y 5v.

Si se desea una respuesta mas conservadora, se pueden modificar los polos asignados para lograr una acción mas suave de control, pero se tendría que sacrificar tiempo de respuesta. Es decir la salida alcanzaría la referencia en un mayor tiempo (Lento).

Control RST

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (10)

Hola, tendrás un ejemplo del caso particular de asignación de polos – modelo de seguimiento?

Responder

buenas días como esta?
una pregunta usted a usado los metodos de evaluacion de rendimiento a los controladores

Responder

Hay un error en la ecuación del controlador, se presenta esta expresión:

(R0+R1(z−1))u(t)=T(z−1)w(t)−(S0+S1(z−1))y(t),

pero al pasarla al otro lado de la igualdad, el término R1(z−1))u(t) debe de pasar negativo y no positivo.
u(t)=Tw(t)-S0y(t)-S1y(t-1)-R1u(t-1)

Responder

Hola Diego, tienes razón,muchas gracias por la observación, ya lo he corregido. Saludos!

Responder

como seria el diagrama de simulink

Responder

Hola me podria explicar paso a paso como obtuvo la funcion de transferencia en lazo cerrado, gracias

Responder

Hola Maria, en esta entrada no estamos usando ninguna función de transferencia en lazo cerrado. Para el diseño del control RST solo basta con conocer la dinámica de tu proceso Real, el cual lo vamos a representar por funciones de transferencia de lazo abierto. Aqui hay dos ejemplos, en ambos la función de transferencia fue dado en el enunciado del problema. Sin embargo una función de transferencia viene de la representación del sistema real en ecuaciones diferenciales utilizando la transformada de laplace. Aqui hemos explicado bastante eso, junto con el canal de YouTube. Puedes darle un vistazo a todas las entradas del curso de Analisis de Sistemas (Click aqui)

Responder

Como discretizo en el ejercicio 1 (por que metodo)

Responder

Hola Maria, en el código de MATLAB está como fue discretizado. Si lo haces manualmente utiliza la transformada Z con retenedor de orden cero (ZOH) saludos!

Responder

[…] 1. Controlador por Asignación de Polos (RST Posicional) […]

Responder