Hola Controleros y Controleras, hoy vamos a aprender como funciona un Control RST Incremental (acción integral dentro del lazo de control). Recordando que el control RST es un método elegante de como usar una colocación de polos.
Antes de comenzar, podrías darle un vistazo al:
CURSO GRATUITO DE CONTROL DE PROCESOS AVANZADOS
Control RST Incremental
El control RST Incremental es basicamente el mismo control RST posicional visto anteriormente, solo que presenta una pequeña modificación en el lazo de control que altera la ley de control y altera la identidad polinomial de la siguiente manera.
Por eso será importante que veas esa entrada anterior, donde explicamos en detalle que es un RST y mostramos algunos aspectos teoricos del controlador.
A continuación vamos a ver la modificación (adición de una acción integradora) en el modelo de la planta del proceso y en la acción de control:
Planta:
A(z^{-1})\Delta y(t)=z^{-d}B(z^{-1})\Delta u(t)Donde:
\Delta=1-z^{-1}\rightarrow \Delta u(t)-u(t-1)Ley de Control
R(z^{-1})\Delta u(t)=T(z^{-1})y_i(t)-S(z^{-1})y(t)Con esto, el diagrama de bloques del sistema en lazo cerrado queda de la siguiente manera:

Notese que en el Lazo de control se adiciono un Integrador que acompaña al polinomio R y es denotado como Δ, este termino garantiza que el sistema siga la referencia y también que pueda sobrellevar perturbaciones del sistema como el do(t) que esta ingresando a la salida de la planta.
Identidad:
La identidad polinomial con el ingreso del termino integrador en el controlador RST (Reference Signal Tracking) o simplemente Seguidor de Referencia viene dado por:
A(z^{-1})\Delta R(z^{-1})+z^{-d}B(z^{-1})S(z^{-1})=P_{MF}Tamaño del Polinomio R
N_R=N_B+d-1
Tamaño del Polinomio S
N_S=N_A
Tamaño del Polinomio B Numerador
Tamaño del Polinomio A Denominador

Como Hacer un Control PID de Temperatura con Arduino

Enmascarar control RST en control PID

Control por Realimentación de Estados con Integrador tipo Servo
Proyecto de Control RST Incremental
Acomodando la ley de control con el modelo estimado de la planta se obtiene:
y(t)=\dfrac{z^{-d}BT}{A\Delta R+z^{-d}BS}Y_i(t)=\dfrac{z^{-d}BT}{P_{MF}(z^{-1})}Para garantizar el seguimiento del set point el polinomio T debe ser igual a la suma de todos los coeficientes del polinomio S
T(1)=S(1)
Para un sistema de Segudo Orden por ejemplo, la identidad polinomial quedaria de la siguiente manera:
Gm(z)=\dfrac{b_0+b_1z^{-1}}{1+a_1z^{-1}+a_2z^{-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=2\rightarrow (S_0+S_1z^{-1}+S_2z^{-2})(1+a_1z^{-1}+a_2z^{-2})(1-z^{-1})(R_0+R_1z^{-1})+z^{-1}(b_0+b_1z^{-1})(S_0+S_1z^{-1}+S_2z^{-2})=(1+p_1z^{-1}+p_2z^{-2})P1 y P2 son los polos asignados.
Si multiplicamos los terminos del denominador (A) con el integrador (Δ) tenemos:
\bar{A}=A(z^{-1})\Delta=1+\bar{a_1}z^{-1}+\bar{a_2}z^{-2}\bar{A}=A(z^{-1})\Delta=(1+a_1z^{-1}+a_2z^{-2})(1-z^{-1})\bar{A}=A(z^{-1})\Delta=1+(a_1-1)z^{-1}+(a_2-a_1)z^{-2}-a_2z^{-3}\begin{bmatrix}
1 &b_0 &0 &0 \\
\bar{a_1} &b_1 &b_0 &0 \\
\bar{a_2} &0 &b_1 &b_0 \\
\bar{a_3} &0 &0 &b_1
\end{bmatrix}\begin{bmatrix}
R_1\\
S_0\\
S_1\\
S_2
\end{bmatrix}=\begin{bmatrix}
p_1-\bar{a_1}\\
p_2-\bar{a_2}\\
-\bar{a_3}\\
0
\end{bmatrix}T=S_0+S_1+S_2
Recordar que ![]()
Ley de Control
R(z^{-1})\Delta u(t)=T(z^{-1})y_i(t)-S(z^{-1})y(t)(1+R_1)(1-z^{-1})u(t)=TY_i(t)-(S_0+S_1z^{-1}+S_2z^{-2})y(t)Despejando U y aplicando transformada inversa Z
u(k)=TY_i(k)-S_0y(k)-S_1y(k-1)-S_2y(k-2)-(R_1-1)u(k-1)-R_1u(k-2)
Ejemplo Control RST Incremental
Ejemplo 1
Usando el ejemplo numero 2 visto en la entrada anterior, se hace el mismo tratamiento para un RST incremental usando las ecuaciones anteriormente descritas que son para un sistema de segundo orden. Se presenta entonces el codigo en matlab.
clc
clear all
close all
%% Simulacion
% Condições iniciais
clear all; clc; close all;
nit = 400; umin = 0; umax = 4.9; ts = 0.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) = 3; r(301:nit) = 3;
%% Planta
T=0.1; %Tempo da Amostragem
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
nb=length(B); %Ordem do numerador
na=length(A)-1; %Ordem do Denominador
nr=nb-1; %Ordem do polinomio R
ns=na; %Ordem do Polinomio S
gpz=filt(B,A,T,'name','Planta'); %Funcao de transferenca discreta
%% PMF
%Alocaçao de polos por condições de disenho.
Ts=1; %Tempo de estabelecimento desejado
ep=0.6; %Epsilon
wn=4/(ep*Ts); %
%Polos conjugados
za=exp(-ep*wn*T);
th=57.3*wn*T*sqrt(1-ep^2);
polos=za*[cosd(th)+i*sind(th),cosd(th)-i*sind(th)];
% Polinomio desejado, com polo insignificante igual a zero
Am=poly([polos 0 0]);
%Delata A. Multiplica por integrador
DA=conv(A,[1 -1]);
%Resolução de Equações metodo matricial
M=[1 B(2) 0 0; DA(2) B(3) B(2) 0; DA(3) 0 B(3) B(2);DA(4) 0 0 B(3)];
q=[Am(2)-DA(2); Am(3)-DA(3);Am(4)-DA(4);Am(5)];
X=inv(M)*q;
R=[1 X(1)]; %Polinomio R
S=X(2:end)'; %Polinomio S
%Polinomio T
Tz=sum(S);
%Ingresa la perturbacion en el instante 300
d0(1:300)=0;
d0(301:nit)=0.05;
for k = 5:nit
%Salida de la Planta
y(k)=B(2)*u(k-1)+B(3)*u(k-2)-A(2)*y(k-1)-A(3)*y(k-2)+d0(k);
%Ley de Control
u(k)=Tz*r(k)-S(1)*y(k)-S(2)*y(k-1)-S(3)*y(k-2)-(R(2)-1)*u(k-1)+R(2)*u(k-2);
% Saturação
if u(k) >= umax
u(k) = umax;
elseif u(k) <= umin
u(k) = umin;
end
end
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('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;
Notese que a los 30 segundos ingresa una perturbación al sistema, y el controlador RST incremental es capaz de reaccionar para volver a llevar la variable al punto de referencia, cosa que no sucedía con el control RST Posicional.
Ejemplo 2
Considere que el sistema térmico del laboratorio de temperatura vista en otra entrada viene representada por la siguiente función de transferencia:
G(s)=\dfrac{1.04}{160s+1}e^{-10s}Cuya representación discreta con
viene dada por:
G(z)=\dfrac{b_0 + b_1z^{-1}}{1 - a_1z^{-1}}z^{-d}=\dfrac{0.03828 + 0.01244z^{-1}}{1 - 0.9512z^{-1}}z^{-2}El polinomio R viene dado por:
n_r=n_b+d-1=1+2-1=2
R_0+R_1z^{-1}+R_2z^{-2}El polinomio S viene dado por:
n_s=n_a=1
S_0+S_1z^{-1}El polinomio ![]()
(1+a_1z^{-1})(1-z^{-1})=1+(a_1-1)z^{-1}-a_1z^{-2}=1+\bar{a_1}z^{-1}+\bar{a_2}z^{-2}Resolviendo la parte izquierda de la identidad polinomial del control RST:
A(z^{-1})\Delta R(z^{-1})+z^{-d}B(z^{-1})S(z^{-1})(1+\bar{a_1}z^{-1}+\bar{a_2}z^{-2})(R_0+R_1z^{-1}+R_2z^{-2})+z^{-2}(b_0 + b_1z^{-1})(S_0+S_1z^{-1})Ecuación E2.1
R_0+(R_1+\bar{a_1}R_0)z^{-1}+(\bar{a_1}R_1+R_2+b_0S_0+\bar{a_2}R_0)z^{-2}+(\bar{a_1}R_2+\bar{a_2}R_1+b_0S_1+b_1S_0)z^{-3}+(b_1S_1+\bar{a_2}R_2)z^{-4}Se establece por medio del método de asignación de polos que el sistema tenga el comportamiento dominante de un sistema subamortiguado. En este caso se debe establecer un polinomio deseado de cuarto orden, se establece un tiempo de establecimiento deseado de
y un máximo pico de 5% para los dos polos dominantes y se completa con 2 polos insignificantes (rápidos).
M_p=100e^{\dfrac{-\pi \zeta}{\sqrt{1-\zeta^2}}}5=100e^{\dfrac{-\pi \zeta}{\sqrt{1-\zeta^2}}}\zeta=0.6901
\omega_n=\dfrac{4}{\zeta T_{ss}}=0.0263Ecuación de los polos:
s_{1,2}=-\zeta\omega_n\pm j\omega_n\sqrt{1-\zeta^2}Los polos deseados son (los dos primeros son los polos dominantes dados por la ecuación anterior, y los dos últimos son los polos rápidos):
S_d=[-0.0182 \pm j0.0191, -10.0000, -12.0000]
En tiempo discreto viene dado por:
Z_d=e^{S_dTs}Z_d=[0.8546 \pm j0.1314,0,0]
Cuyo polinomio deseado es (Ecuación E2.2):
P_{MF}=1 -1.7092z^{-1}+ 0.7476z^{-2}+0z^{-3}+0z^{-4}=1 +\alpha_1z^{-1}+ \alpha_2z^{-2}+\alpha_3z^{-3}+\alpha_4z^{-4}Igualando la Ecuación E2.1 con la Ecuación E2.2 y expresandolo en forma matricial (matriz sylvester), tenemos que:
\begin{bmatrix}
1 & 0&0&0 &0 \\
\bar{a_1} &1&0&0 &0 \\
\bar{a_2} &\bar{a_1}&1&b_1 &0 \\
0 &\bar{a_2}&\bar{a_1}&b_2 &b_1\\
0 &0&\bar{a_2}&0 &b_2
\end{bmatrix}\begin{bmatrix}
R_0\\
R_1\\
R_2\\
S_0\\
S_1
\end{bmatrix}=\begin{bmatrix}
1\\
\alpha_1\\
\alpha_2\\
\alpha_3\\
\alpha_4
\end{bmatrix}El polinomio T (precompensador estático)
T=S_0+S_1
La ley de control viene dado por:
u(k)=TY_i(k)-S_0y(k)-S_1y(k-1)-(R_1-R_0)u(k-1)-(R_2-R_1)u(k-2)+R_2u(k-3)
Código en Matlab:
%% Control RST (Reference Signal Tracking)
% By: Sergio Andres Castaño Giraldo
% https://controlautomaticoeducacion.com/
clc
clear
close all
Ts=8; %Periodo de Muestreo
%% Modelo del Proceso
k=1.04;tau=160;theta1=10;
theta = theta1 + Ts/2;
%Función de Transferencia
num = k;
den = [tau 1];
G=tf(num,den);
G.iodelay = theta1;
%Discretización
ftz=c2d(G,Ts); %Planta Discreta
[B,A]=tfdata(ftz,'v'); %Divide Numerador em B e denominador em A
d=ftz.iodelay; %Retardo Discreto
nb=length(B)-1; %Orden del numerador
na=length(A)-1; %Orden del Denominador
nr=nb+d-1; %Orden del polinomio R
ns=na; %Ordem del Polinomio S
%% Especificaciones de Diseño
Mp=5; %Maximo Pico
ep=sqrt(((log(Mp/100))^2)/(pi^2+((log(Mp/100))^2))); %Fator de amortiguamiento
Tlc=220;
if ep<1
Wn=4/(ep*Tlc)
else if ep==1
Wn=5.8335/Tlc;
end
end
Sd=[-ep*Wn+1i*Wn*sqrt(1-ep^2), -ep*Wn-1i*Wn*sqrt(1-ep^2), -10, -12]; %Alocação de Polos
Zd = exp(Sd*Ts);
Am = poly(Zd);
%Delata A. Multiplica por integrador
DA=conv(A,[1 -1])';
%Resolução de Equações metodo matricial
M=sylvester_RST(B,A,d,1);
P=Am';
% P(2:length(DA)) = P(2:length(DA))- DA(2:end);
X=inv(M)*P;
R=X(1:nr+1); %Polinomio R
S=X(nr+2:end); %Polinomio S
%Polinomio T
Tz=sum(S);
%% inicializa parametros de Simulacion
T0 = 25; %Temperatura Ambiente
nit=120; %Numero de interacciones
u(1:nit) = 0;
ym(1:nit) = 0;
r(1:nit) = T0;
% Referência
r(10:80) = 45; r(81:nit) = 30;
for k=4:nit
%Planta
%ym(k)=B(1)*u(k-d)+B(2)*u(k-1-d)-A(2)*ym(k-1);
t = 0:Ts:(k-1)*Ts;
ym=lsim(G,u(:,1:k),t,'zoh')+T0;
%Ley de Control
u(k)=Tz*r(k)-S(1)*ym(k)-S(2)*ym(k-1)-(R(2)-R(1))*u(k-1)-(R(3)-R(2))*u(k-2)+R(3)*u(k-3);
if u(k) > 100
u(k) = 100;
else if u(k)<0
u(k) = 0;
end
end
end
t = 0:Ts:(nit-1)*Ts;
figure
subplot(2,1,1)
stairs(t,r,'--k','Linewidth',2),hold on
stairs(t,ym,'-r','Linewidth',2)
xlabel('Tiempo (s)');
ylabel('Temperatura (C)');
legend('r','y','Location','SouthEast')
grid on;
hold
subplot(2,1,2)
stairs(t,u,'b','Linewidth',2)
xlabel('Tiempo (s)');
ylabel('Heater (%)');
legend('u')
grid on;
Función para el cálculo de la matriz de Sylvester (Guardar en la misma carpeta del código principal)
function M = sylvester_RST(B,A,d,i)
% Sylvester matrix for RST Control:
% M = sylvester_RST(B,A,d,i)
% M = Sylvester matrix
% B = transfer function numerator (discrete)
% A = transfer function denominator (discrete)
% d = discrete time delay
% i = 1 for incremental form, 0 for positional form
%
% By: Sergio Andres Castaño Giraldo
% https://controlautomaticoeducacion.com/
%
nb=length(B)-1; %Ordem do numerador
na=length(A)-1; %Ordem do Denominador
nr=nb+d; %Ordem do polinomio R
%Delata A. Multiplica por integrador
if i==1
DA=conv(A,[1 -1]);
ns=na+1; %Ordem do Polinomio S
else
DA=A;
ns=na; %Ordem do Polinomio S
end
nda=length(DA);
LM=nr+ns; %Cumprimento da matriz
M=zeros(LM,LM);
M(1:nda,1)=DA';
M(1+d:length(B)+d,nr+1)=B';
%Polinomio R
for k=2:nr
M(k:end,k)=M(1:end-k+1,1); % Forma o polinomio R
end
%Polinomio S
for k=1:ns-1
M(k+1:end,nr+1+k)=M(1:end-k,nr+1); % Forma o polinomio S
end
end
La respuesta del sistema viene dado por:

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.
Citar este Artículo
¡Hola! Soy Sergio Andrés Castaño Giraldo. Bienvenidos a Control Automático Educación, un espacio dedicado a una de mis grandes pasiones: la Ingeniería de Control y la Automatización.
Mi objetivo aquí es tender un puente entre la teoría académica y la práctica profesional. Como profesor e investigador, he tenido la oportunidad de trabajar en proyectos complejos —desde sistemas de compresión en plataformas offshore hasta modelos de control avanzado— y todo ese aprendizaje lo vuelco en este sitio.
Aquí encontrarás material que crece constantemente: desde fundamentos de instrumentación hasta estrategias de control avanzado y programación profesional. Mi meta es que la información que comparto te sea de utilidad real en tu carrera o formación.
Te invito a que te suscribas, te unas a nuestro canal de YouTube y formemos una comunidad de aprendizaje continuo. ¡Gracias por estar aquí!

