Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ley de control
1
uk = ( rk +1 − ayk ) (1.2)
b
Sistema con retardo:
yk +2 = ayk +1 + buk (1.3)
yk +2 = ayk +1 + buk
yk +1 = ayk + buk −1 (1.4)
1
uk =
b
( rk + 2 − a 2 yk − abuk −1 ) (1.6)
donde
A = 1 + a 1 z -1 + a 2 z -2 +… + a n z -n
( b0 + b1 z )
(1.8)
B = z B′ = z
-d -d -1 -2
+ b 2 z +… + b m z -m
se puede reescribir:
y k+d = G y k + F B ′ u k (1.9)
con
F = 1 + f 1 z -1 + f 2 z -2 +… + f d -1 z -d+1
(1.11)
-1 -2 -n+1
G = g 0 + g 1 z + g 2 z +… + g n-1 z
Demostración:
F A y = F B u = z -d F B ′ u
(1 - z -d G ) y = z -d F B′ u (1.13)
z y = G y + F B′ u
d
F (q) B(q)
H p (q) = (1.16)
1− q G (q)
−d
A = 1 - 1, 5q −1 + 0,7 q −2
(1 - 0, 8q )
(1.18)
−3 −1
B= q
F y G deberán cumplir
1= ( 1 + f 1 q −1 + f 2q −2 )( 1 - 1, 5q −1 + 0,7 q −2 ) + q −3 ( g 0 + g 1q −1 )
= 1 + ( f 1 - 1, 5 ) q −1 + ( 0,7 - 1, 5 f 1 + f 2 ) q −2 (1.19)
+ ( 0,7 f 1 − 1, 5 f 2 + g 0 ) q −3 + ( 0,7 f 2 + g 1 ) q −4
resultando
f1 = 1, 5 = - a1 f0
f2 = 1, 5 f 1 - 0,7 = 1,55 = - a 2 f 0 - a 1 f1
(1.20)
g 0 = 1, 5 f 2 - 0,7 f 1 = 1.275 = - a 2 f 1 - a 1 f2
g1 = - 0,7 f 2 = - 1,085 = - a2 f2
1.5
0.5
0
0 5 10 15 20 25
dk
rk + d εk 1 uk q B′
-d yk
F B′ A
ε k = ykM q d − G yk
q−d q − d B′ (1.23)
yk = εk + dk
FA A
FAq d yk = ykM q d - G yk + B′Fd k
( F A + Gq ) q
−d d
yk = ykM q d + B′Fd k (1.24)
yk = ykM + B′Fd k − d
Clase 11 Control Predictivo.doc 9
ε
u=
F B′
G z -d FA
ε=y z -M d
ε = y M zd (1.25)
FA F A + G z -d
A M
u = -d y
z B′
u es estable si B' lo es.
Otra forma de interpretar este control es el encontrar una ley para u de modo
que minimice el siguiente funcional:
1 2
M
J k+d = y k+d - y k+d
2 (1.26)
∆J |uk = 0
Resolviendo esta ecuación se llega a la misma conclusión anterior.
Este control es muy sencillo e intuitivo pero tiene dos problemas:
• se requieren grandes esfuerzos en u
• es demasiado estricto en cuanto a B'.
Se verá a continuación cómo se pueden resolver estos dos problemas.
[ F B′ b0 + λ ] u k = b0 y k+d
M
- G y k (1.29)
+
- FB′b0 + λ A
P = 1 + p 1 z -1
(1.35)
−1
∆ = 1− z
uk = − p1uk −1 + uk − uk −1 (1.36)
1 2 λ
J k+d = G y k + F B u k - y k+d + [ − p1uk −1 + uk − uk −1 ] (1.38)
2
′ M
2 2
∂ J k+d
= G y k + F B′ u k - y k+d b0 + λ [ − p1uk −1 + uk − uk −1 ] = 0
M
(1.39)
∂u k
( )
b0 y k+d - G y k + λ p1 u k -1 − ( F B′ b0 − b0 ) z − λ u k -1
M 2
uk = (1.42)
b0 + λ
2
o sea
1
− ( f ′b1b0 − λ ) u k -1 − f ′b 2b0 − + λ p 1 u k -1]
M
uk = 2 [b0 y k+d - b0 g 0 y k - b0 g 1 y k -1 − (1.43)
b0 + λ
Si se lo expresa en forma de bloques resulta la ¡Error! No se encuentra el
origen de la referencia.. Igual que antes se puede analizar la forma de la salida y
la estabilidad de la variable de control. Es conveniente hacer previamente una mo-
dificación de los bloques para facilitar el estudio. De la figura se puede inferir:
rk + d εk 1 uk
z B′
-d yk
b0
FB′b0P + λ∆ A
∆ −1
b0ε k + λ p1 z uk
b0 ε k + λ p1uk −1 P
uk = = (1.44)
F B′ b 0 + λ∆ F B′ b 0 + λ ∆
∆ −1
( F B′ b0 + λ∆ ) uk − λ p1 z uk = b0ε k (1.45)
P
( F B′P b 0 + λ P∆ − λ p1 z −1∆ ) uk = Pb0ε k (1.46)
rk + d uk yk
b0 P z B′
-d
+
- FB′b 0P + λ∆ A
Versión Simplificada
Ahora si, se analizará la relación entre la referencia y la salida. El error es:
ε k = y kM z d - G y k (1.49)
yk B′ P b 0
= (1.53)
y k B′ P b0 + λ A∆
M
G z -d B′
ε=y z -
M d
u
A
u b0 A P
=
y
M
B′ P b0 + λ A∆
Nótese que ahora los grados de libertad que se tienen para hacer estable u son
mayores.
Las tres figuras siguientes muestran al sistema del primer ejemplo controlado
por los tres tipos de reguladores vistos. Primero, por un regulador predictivo sin
ponderación, luego se incluye el factor λ y por último se introducen los polinomios
de ponderación.
0.5
-0.5
-1
-1.5
0 50 100 150 200 250
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150 200 250
0.5
-0.5
-1
-1.5
0 50 100 150 200 250
bm b0
donde los ci son los diferentes ceros del sistema
Además se supone b0 pequeño y despreciable. El regulador con este nuevo po-
linomio será:
B ′ = ε z + b0 + … + b m z -m = ε z + B n′
(1.57)
B n′ = B ′ - ε z
O sea que el regulador no estaría ajustado exactamente y la nueva función de
transferencia se calculará como sigue:
y kM - G z -d y k ( B n′ + ε z ) = A F B n′ y k
y k ( B n′ + ε z ) = y k ( B n′ + z -d+1 ε G )
M
Ahora el último paréntesis es el que debe ser estable. Es útil esto para analizar
la robustez del sistema (partiendo de Bn' estable).
1.6.2. Sensibilidad Frente a Variaciones de Parámetros
Sea el sistema real como el de la ecuación:
A y = z -d B u (1.59)
∂M z -i B n′ - B n′ z -d G z -i z
= =
-i
(1 - z -d G )
∂bi B n′
2
B n′
∂M - z -i F B n′ B n′ -i
= = - z F (1.61)
∂a i B n′
2
No dice mucho. Si
C = 1 - z -1 c 1
∂C (1.62)
= - z -1 ?
∂c1
donde
Aˆ = 1 + aˆ 1 z -1 + aˆ 2 z -2 +… + aˆ n z -n
(1.64)
Bˆ ′ = bˆ0 + bˆ1 z -1 + bˆ 2 z -2 +… + bˆ m z -m
Estos polinomios se usarán en el cálculo del regulador. En el caso de conoci-
miento absoluto teníamos el predictor
y k+d = G y k + F B ′ u k (1.65)
x k = [ y k … y k-n+1 u k … u k-m-d+1]
T
(1.66)
y k+d = x Tk p
La ley de control ideal será:
T M
x k p = y k+d (1.67)
u k = x k p′
T
(1.72)
donde
g0 g n-1 f b′ 1 1
p′ =
T
… …
f
0 ′
b f ′
b 0 f ′
b 0 f ′
b 0 (1.73)
donde
x ′k = - y k … - y k -n+1 - u k-1 … - u k -m-d+1 y k+d
T M
(1.75)
pˆ ′k = pˆ ′k-1 - P k x k-d x pˆ ′k-1 - u k-d
T
k-d
= y k - y k + εˆ k
M
e k = ε k + εˆ k (1.77)
b0 M
uk = y k+d − G y k − ( F ′B − b0 ) u k (1.79)
b0 + λ
2
donde:
T b0 b0 g 0 b0 g n-1 b0 f b′ 1 b0 f b′ m+d -1
p = 2 … 2 … 2
b0 + λ b0 + λ b0 + λ b0 + λ b0 + λ (1.81)
2 2
F ′B u k = y k+d - G y k (1.83)
b0 u k = y k+d - G y k - (F ′B - 1) u k (1.84)
2
b0 b0
u k = [ y k+d - G y k - (F ′B - 1) u k ] (1.85)
b0 + λ b0 + λ
2 2
b0 λ
uk = 2 y k+d + u k − G y k − ( F B − b0 ) u k (1.86)
′
b0 + λ b0
Ahora la nueva expresión vectorial de la planta es:
T
uk = xk p (1.87)
donde
donde
x k = yk +d - y k … - y k-n+1 - u k-1 … u k-1 …
T M
T b0 b0 g 0 f b′ 1b0 + λ r 1 λ p1 λ p 2 (1.91)
p = 2 , 2 … … 2 …
b0 + λ b0 + λ 2
b0 + λ b0 + λ 2
b0 + λ
Aquí también se requiere alguna consideración para utilizar la versión directa
del controlador. Se expresará al sistema del siguiente modo:
b0 u k = y k+d - G y k − ( F ′B − b0 ) u k (1.93)
(b 2
0 + λ ) u k = b0 y k+d - b0G y k - b0(F ′B - b0 )u k + λ u k (1.94)
donde
T λ
= y
x k +d
k + uk , - y k … - y -
k-n+1 u k-1 … …
u k-1
b0
(1.98)
T b0 b0 g 0 f b′ 1b0 + λ r 1 λ p1 λ p 2
p = 2 , 2 … … 2 …
b0 + λ b0 + λ b0
2
+ λ b0 + λ 2
b0 + λ
2 2
1.5 1.5
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
-2 -2
0 50 100 150 0 50 100 150
1.5 1.5
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
-2 -2
0 50 100 150 0 50 100 150
2 2
1.5 1.5
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
-2 -2
0 50 100 150 0 50 100 150
-1
-2
-3
0 50 100 150
yk
yk + 2 as1as2 as12 + as2 yk −1 as1bs1 + as2bd1 as1bs2 + as2bd 2 uk bs1 bs2 uk +1
y = + +
ad1bs2 + ad 2bd 2 uk −1 bd1 bd 2 uk
k + 2 ad1ad 2 ad1 + ad 2 yk ad1bs1 + ad 2bd1
2
y
k −1
(1.103)
yk
y
yk + 2 k −1 uk +1
y = R yk + M u (1.104)
k +2 y k
k −1
uk −1
La ley de control es
predictor
T2 T2 T2 T2 T2 T2
yk + 2 = 2 yk +1 − yk + k uk +1 + k uk = 2 2 yk − yk −1 + k uk + k uk −1 − yk + k uk +1 + k uk =
2 2 2 2 2 2
T2 T2
= 3 yk − 2 yk −1 + k uk +1 + 3k uk + kT 2uk −1
2 2
(1.110)
vk +2 = vk +1 + kTuk +1 =
(1.111)
= vk + kTuk + kTuk +1
vk + 2 = vk + kTuk + kTuk +1
cálculo de la actuación
T2 T2
k uk +1 + 3k uk = yk +2 − 3 yk + 2 yk −1 − kT 2 uk −1
2 2 (1.113)
kTuk +1 + kTuk = vk +2 − vk
−1
T2 T2 r 3 yk − 2 yk −1 + kT 2 uk −1
uk +1 k 3k
u = 2 2
−
0 vk
(1.114)
k kT kT
la uk
1 1
uk = 2 ( r − 3 yk + 2 yk −1 − kT uk −1 ) +
2
vk (1.115)
kT kT
El regulador predictivo clásico para la posición sería
2
2 (
ucpk = r − 2 yk + yk −1 − ucpk −1 ) (1.116)
kT
quedando finalmente,
1 r − yk
uk = ucpk − − v k (1.119)
kT T
es como tener dos controladores predictivos clásicos, uno dependiente de la
posición y otro de la velocidad con una velocidad de referencia igual a la que debe-
ría tener el sistema para llegar en forma recta a la referencia de posición en una
muestra.
Otra alternativa sería calcular la velocidad como diferencia entre muestras con-
secutivas, pero esto introduce una imprecisión en la velocidad que degrada el con-
trol. Se analiza el efecto en la simulación.
Clase 11 Control Predictivo.doc 43
- Algoritmo:
%Sistema continuo
ganancia = 1;
num= ganancia ;
den=poly([0, 0]);
syscont = tf( num,den);
%Sistema en variables de estado
Pss = ss(syscont);
[a,b,c,d] = ssdata(Pss);
% y su respuesta al escalón ...
t = 0:0.01:10;
u = ones(size(t));
y = lsim(syscont,u,t);
yy = lsim(Pss,u,t);
T=.1;
kp = .5;
Tfin = 3;
precision= T/100;
t = 0:precision:T;
ref = 1;
yaux = zeros(size(t));
ly = length(t);
x0= zeros(2,2);
yy = 0;
uu = 0;
ref = 1;
n = 530;
A=[1 -2 1];
%A=[1 -.5];
y = zeros(n,1);
yd = zeros(n,1);
u = zeros(n,1);
UU = zeros(n,2);
%predictivo clásico
y = zeros(n,1);
yd = zeros(n,1);
u = zeros(n,1);
x0= zeros(2,2);
yaux = zeros(size(t));
uaux = zeros(size(t));
yy = 0;
uu = 0;
for i = 3:Tfin/T
% Sistema Discreto
yd(i)=-A(2:length(A))*flipud(yd(i-length(A)+1:i-1))+B*flipud(u(i-length(B)+1:i));
% Sistema Continuo
[yaux, tt, x0] = lsim(Pss,uaux,t,x0(length(x0),:));
yy = [yy ; yaux];
uu = [uu ; uaux'];
% Regulador
y(i)= yaux(ly);
u(i)=(2/T^2)*(ref-2*y(i)+y(i-1))-u(i-1);
% bloqueador de orden cero
nivelu=u(i);
1.6 1.4
1.4
1.2
1.2
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
0 500 1000 1500 2000 2500 3000
0 5 10 15 20 25 30
stairs([u(1:Tfin/T)]);grid
300
200
100
-100
-200
-300
-400
0 5 10 15 20 25 30
u(i)=(1/T^2)*(ref-3*y(i)+2*y(i-1))-u(i-1)+1/T*vy(i);
% ó esta alternativa: u(i)=(2/T^2)*(ref-2*y(i)+y(i-1))-u(i-1)-1/T*((ref-y(i))/T-
vy(i));
1.5 1.4
1.2
1
1
0.8
0.6
0.5
0.4
0.2
0
0
0 500 1000 1500 2000 2500 3000
0 5 10 15 20 25 30
stairs([u(1:Tfin/T)]);grid
80
60
40
20
-20
-40
-60
-80
0 5 10 15 20 25 30
u(i)=(1/T^2)*(ref-3*y(i)+2*y(i-1))-u(i-1)+1/T*vy(i);
% ó esta alternativa: u(i)=(2/T^2)*(ref-2*y(i)+y(i-1))-u(i-1)-1/T*((ref-y(i))/T-
vy(i));
1.4
1.2
0.8
0.6
0.4
0.2
0
0 500 1000 1500 2000 2500 3000
plot([y(1:Tfin/T)]);grid
1.2
0.8
0.6
0.4
0.2
0
0 5 10 15 20 25 30
stairs([u(1:Tfin/T)]);grid
50
-50
-100
-150
0 5 10 15 20 25 30
for i = 7:n
u(i)=1;
yo(i)=1.5*yo(i-1)-.7*yo(i-2)+u(i-3)-.8*u(i-4);
yp(i)=1.275*yp(i-3)-1.085*yp(i-4)+u(i-3)+.7*u(i-4)+.35*u(i-5)-1.24*u(i-6);
end;
stairs([yo(6:n) yp(6:n)]);grid
1.5
0.5
0
0 5 10 15 20 25
cambioref = 50;
ciclos = 5;
n = cambioref * ciclos;
e = 0.0*randn(n,1);
y = zeros(n,1);
Ap = [1 -1.74 .77];
Bp = 2 * [1.1 .9];
A = Ap;
B = Bp;
na = length(Ap);
nb = length(Bp);
C = [1.0000 -2.0000 1.2900 -0.2700 0 0 0 0];
nc = 4;
nk = 2;
ref = ones(cambioref,1);
for i = 1:ciclos-1, ref = [ref; (-1)^i*ones(cambioref,1)]; end;
u = zeros(n,1);
uf = zeros(n,1);
lambda = 10;
P=[1 -0.9 0 0];
R=[1 -0.8 0 0];
P=[1 -1.3981 0.4976 0];
R=[1 -0.9473 0.1205 0];
for i = nk+nb+5 : n
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;
% Regulador
% cálculo de la uf filtrada: uf = (R/P)u
uf(i-1)=0;
for j = 1:length(R)
uf(i-1) = uf(i-1) + u(i-j)*R(j);
end;
for j = 2:length(P)
uf(i-1) = uf(i-1) - uf(i-j)*P(j);
end;
% cálculo del vector de valores para el control predictivo
ValReg = zeros(na+nb+nk-3+length(P),1);
ValReg(1) = ref(i);
ValReg(2:na) = -flipud(y(i-na+2:i));
ValReg(na+1:na+nb+nk-2) = -flipud(u(i-nb-nk+2:i-1));
ValReg(na+nb+nk-1:na+nb+nk+length(P)-3) = -flipud(uf(i-length(P)+1:i-1));
% actuación
u(i) = ValReg' * ParReg;
end
0.5
-0.5
-1
-1.5
0 50 100 150 200 250
0.5
-0.5
-1
-1.5
0 50 100 150 200 250
M=poly([.5 .5 .5 .5]);
A=[1 -1.74 .77];
B=[2.2 1.8];
ans =
0.5001
0.5000 + 0.0001i
0.5000 - 0.0001i
0.4999
cambioref = 30;
ciclos = 5;
n = cambioref * ciclos;
e = 0.02*randn(n,1);
y = zeros(n,1);
Ap = [1 -1.74 .77];
Bp = 2 * [1.1 .9];
A = Ap;
B = Bp;
%A = [1 -1.7995 .8120];
%B = 1e-3 * [.8344 .5749];
na = length(Ap);
nb = length(Bp);
C = [1.0000 -2.0000 1.2900 -0.2700 0 0 0 0];
nc = 4;
nk = 2;
ref = ones(cambioref,1);
for i = 1:ciclos-1, ref = [ref; (-1)^i*ones(cambioref,1)]; end;
u = zeros(n,1);
uf = zeros(n,1);
lambda = 10;
P=[1 -1.3981 0.4976 0];
% inicialización identificación
np=na+nb+nk+length(P)-1-2;
Aest = ones(n,np);
lam=.99;
p=10000*eye(np);
th=eps*ones(np,1);
for i = nk+nb+5 : n
% Sistema
y(i) = 0;
for j = 2:na
y(i) = y(i) - A(j)*y(i-j+1);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;
% Regulador
% cálculo de la uf filtrada: uf = (R/P)u
uf(i-1)=0;
for j = 1:length(R)
uf(i-1) = uf(i-1) + u(i-j)*R(j);
end;
for j = 2:length(P)
uf(i-1) = uf(i-1) - uf(i-j)*P(j);
end;
% actuación
u(i) = Aest(i-1,1:np) * ValReg(1:np);
% Cálculo del vector X para el identificador
x = zeros(np,1);
x(1)=y(i)+lambda/Bp(1)*uf(i-nk);
x(2:na)=-flipud(y(i-na+2-nk:i-nk));
x(na+1:na+nb+nk-2) = -flipud(u(i-nb-nk+2-nk:i-1-nk));
x(na+nb+nk-1:na+nb+nk+length(P)-3) = -flipud(uf(i-length(P)+1-nk:i-1-nk));
% Identificación
yh=x'*Aest(i-1,1:np)';
epsi=u(i-nk)-yh;
K=p*x/(lam + x'*p*x);
p=(p-K*x'*p)/lam;
Aest(i,1:np)=(Aest(i-1,1:np)'+K*epsi)';
epsilon=u(i)-Aest(i,1:np)*x;
end
plot(y);grid; hold on; stairs(u,'r'); hold off
axis([0 n -2 2])
plot(Aest);grid;