Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
yk + 2 = ayk +1 + buk
yk +1 = ayk + buk −1 (1.4)
yk + 2 = a ( ayk + buk −1 ) + buk
uk =
1
b
( rk + 2 − a 2 yk − abuk −1 ) (1.6)
donde
1 = F A + z -d G (1.10)
con
F = 1 + f 1 z-1 + f 2 z -2 + K + f d -1 z-d+1
(1.11)
G = g0 + g1 z -1 + g 2 z-2 + K + g n-1 z-n+1
Demostración:
Premultiplicando la ecuación del sistema por F resulta:
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
De modo que esta forma permite predecir la salida luego del retardo sin necesidad de
conocer las salidas intermedias entre el momento de su ocurrencia y el actual.
q −dB ′ ( q )
H ( q) = (1.14)
A ( q)
el predictor es
F ( q ) B( q)
H p ( q) = (1.16)
1 − z −d G ( q )
A= 1 - 1, 5 z -1 + 0,7 z-2
B = z -3 (1 - 0, 8 z -1)
(1.18)
F y G deberán cumplir
resultando
f1 = 1, 5 = - a1 f0
f2 = 1, 5 f 1 - 0,7 = 1,5 5 = - a 2 f 0 - a1 f1
(1.20)
g 0 = 1, 5 f 2 - 0,7 f 1 = 1.275 = - a 2 f 1 - a1 f2
g1 = - 0,7 f 2 = - 1,085 = - a2 f2
2.5
1.5
0.5
0
0 5 10 15 20 25
F B′ uk = y k +d - G y k
M
(1.22)
r k+d u yk
1 z-dB'
+ FB' A
-
z
-d (1.23)
y= ε
F A
M
F A z d y= y zd - G y
( F A - G z -d ) z d y= y M zd (1.24)
M
y= y
O sea que la salida es igual a la referencia en todo instante. Ahora se analizará la
estabilidad de la variable de control.
ε
u=
F B′
G z -d
ε = y zd - ε
M
FA
(1.25)
FA
ε = y zd
M
F A + G z -d
A M
u = -d y
z B′
También se observa que u es estable si B' lo es. Es decir el sistema debe ser de fase
mínima.
Otra forma de interpretar este control es el encontrar una ley para u de modo que
minimice el siguiente funcional:
1 2
J k+d = y k+d - y k+d
M
2 (1.26)
∆J |uk = 0
J k +d =
1
2
[ 2
]λ
G y k + F B ′ uk - ykM+d + u 2k
2
∂ J k +d
∂ uk
[ ]
= G yk + F B′ uk - y Mk+d b0 + λ u k = 0 (1.28)
[F B′ b0 + λ ] uk = b0 [y Mk +d - G y k ]
[ F B′ b0 + λ ] u k = b0 y k+d
M
- G y k (1.29)
z B′ b0
-d (1.30)
yk = εk
A ( F B′ b 0 + λ )
A ( F B′ b 0 + λ ) M
+G y k = y zd
z B′ b0
-d
(1.31)
yk B′b0
M =
yk B ′ b0 + λ A
Por lo tanto, variando λ se puede hacer estable el polinomio b0 B '+ λ A lo que implica
la posibilidad de estabizar u. Ahora se ha ampliado el margen del diseño. Con esto se
consigue reducir considerablemente los esfuerzos de control. Pero aún subsisten dos
inconvenientes:
• No todo sistema puede hacerse estable variando λ.
• No tiene suficientes grados de libertad.
Para intentar solucionar esto se elegirá una nueva especificación del control.
J k +d =
1
2
[ M 2 λ 2
y k+d - y k+d + uk
2
]
P u= R u (1.33)
-1 -p
P = 1 + p1 z + ___ + p p z
R = 1 + r1 z-1 + ___ + rr z-r
Haciendo similar trabajo algebraico se llega a la ley de control.
1
J k+d =
2
[ 2 λ 2
G y k + F B′ uk - y Mk +d + uk
2
]
1
2
[ M 2 λ
2
]
J k +d = G yk + F B′ u k - y k+d + [(1 - P ) uk + R uk ]
2
∂ J k +d
∂ uk
[ ]
= G y k + F B′ uk - y k +d b0 + λ [(1 - P ) uk + R uk ]= 0
M
(1.34)
[ ]
b0 G y k - y k+d + λ (1 - P ) uk + [F B′ b0 + λ R ] u k = 0
M
[ ]
b0 G yk - yk +d + λ (1 - P ) u k + (b0 + λ ) uk +
M 2
(F B′ b0 - b20 ) z uk -1 + (λ R - λ ) z u k -1 = 0
09-Control Predictivo.doc 8/44
Cabe notar que la forma que tienen los polinomios es la siguiente:
uk =
M
[ ]
b0 y k +d - G y k - λ (1 - P ) z uk -1 - (F B ′ b0 - b0 + λ R - λ ) z uk -1
2
(1.36)
b0 + λ
2
o sea
1
uk =
M
[b0 y k+d - b 0g 0 y k - b 0 g 1 y k-1 - L
b +λ
2
0 (1.37)
- ( f b′ 1b0 + λ r1 ) uk-1 - ( f b′ 2b 0 + λ r2 ) uk - 2 − L+ λ p1 u k-1 + λ p2 u k-2L]
R
l(P-1)
P
+
r + u y
1 z-dB'
b0
+ - - FB'b0+Rl A
uk =
P
F B ′ P b0 + λ R
( M
b0 y k+d - G yk )
O sea que se puede modificar la Ilustración 1-4 y lograr la Ilustración 1-5 .
ε k = yk z - G yk
M d
z B′ P b0
-d
yk = εk (1.39)
A ( F B′ P b 0 + λ R )
( F B′ P b0 + λ R ) M
A + G y k = z d y k
z B′ P b 0
-d
por lo tanto la relación entre y e yM tiene la siguiente forma:
[ A F B′ P b + λ A R + z
0 G B′ P b0 ] y k = B′ P b0 yk
-d M
yk B ′ P b0 (1.40)
M =
yk B′ P b 0 + λ A R
G z -d B′
ε = y zd -
M
u
A
(1.41)
b 0 P G z B′
-d
b0 P z
d
M
u 1 + = y
A ( F B ′ P b0 + λ R ) F B′ P b0 + λ R
u A F B′ P b0 + λ A R + b0 P G B ′ z -d = b0 A P y z d
M
u b0 A P
M =
y B′ P b 0 + λ A R
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 visto. Primero, por un regulador predictivo sin ponderación,
luego se incluye el factor λ y por último se introducen los polinomios de ponderación.
1.5
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
B′ = b0 + K + bm z -m
bm = c1 c 2K c m b 0 (1.42)
bm ? b 0
B′ = ε z + b0 + K + b m z -m = ε z + B n′
(1.43)
Bn′ = B′ - ε z
O sea que el regulador no estaría ajustado exactamente y la nueva función de
transferencia se calculará como sigue:
1 = A F + z -d G
B′
-d
y k+d
M
- G y k z = yk
A F B n′
y kM - G z -d y k B ′ = A F B n′ y k (1.44)
y Mk - 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
'
robustéz del sistema (partiendo de Bn estable).
A y = z-d B u (1.45)
1 = An F + z -d G
-d
B′
y Mk+d - G y k z
A F B = yk
n′
yk B′
M = =M (1.47)
yk A F B n′ + z -d G B ′
∂M z -i B n′ - B n′ z -d G z-i z (1 - z G )
-i -d
= =
∂ bi B n′
2
B n′
∂M - z F B n′ B n′
-i
= = - z -i F
∂ ai
2
B n′
No dice mucho. Si
Aˆ y = z-d Bˆ ′ u (1.49)
donde
yk +d = G y k + F B ′ uk (1.51)
p = [ g 0 K f b′ 0 f b′ 1 K]
T
xk = [ y k K y k-n+1 u k K u k-m-d+1]
T
(1.52)
T
y k+d = x p k
uk =
1 M
pˆ n
[ ]
yk +d - pˆ 0 yk - K - pˆ n -1 yk -n+1 - pˆ n uk -1 - K - pˆ n+m+d uk -m -d +1 (1.55)
pˆ k = pˆ k -1 - P k xk -d [xTk -d pˆ k -1 - y k ] (1.56)
yk +d = xTk p
(1.57)
u k = x k p′
T
donde
g g f b′ 1 1
p′ = 0 K n-1 K
T
f b′ 0 f b′ 0 f b′ 0 f b′ 0 (1.58)
uk = x′k pˆ ′k
T
(1.59)
donde
(1.60)
pˆ ′k = pˆ ′k-1 - Pk xk-d x k-d pˆ ′k-1 - u k-d
T
En esta forma, el estimador ya no calcula los parámetros del sistema sino los del
regulador. Un comentario sobre el error considerado en el estimador:
ek = pˆ k-1n+m+d ε k + εˆk
(F (
B′ b0 + λ ) u k = b0 y Mk+d - G y k ) (1.62)
y k+d - G y k - ( F B
′ - 1) uk
b0 M
uk = (1.63)
b +λ
2
0
donde:
b b0 g 0 b g b f b′ b f b′
p = 2 0 K 20 n-1 02 1 K 0 2 m+d-1
T
b0 + λ b0 + λ b0 + λ b0 + λ b0 + λ
2
(1.65)
x = y
T
k
M
k+d
- y k K - y k-n+1 - u k-1 K - u k-m-d+1
Si se quiere usar la forma directa del algoritmo se debe introducir una modificación
en el vector x de medidas o muestras. La ecuación siguiente presenta el cambio en la forma
de expresar uk .
′ uk
y k+d = G y k + F B
′ u k = y k+d - G y k
FB
′ - 1) u k
b0 u k = y k+d - G y k - (FB (1.66)
2
b 0
uk = 2
b0
[ y k+d - G y k - (FB′ - 1) u k ]
b +λ b0 + λ
2
0
b0 λ
uk = ′ - 1) u k
( y k+d + u k ) - G y k - (FB
b +λ
2
0 b0
Ahora la nueva expresión vectorial de u es:
T
uk = xk p (1.67)
donde
λ
x k = y k+d + u k , - y k K - y k-n+1 - u k-1 K - u k-m-d+1
T
b0
(1.68)
b b0 g 0 b g b f b′ b f b′
T
p = 2 0 K 20 n-1 02 1 K 0 2 m+d-1
b0 + λ b0 + λ b0 + λ b0 + λ b0 + λ
2
1
uk = b0 y k+d − b0 g 0 y k − L − ( f ′b1b0 + λ r1 ) uk −1 + L + λ p1uk-1 + λ p2u k - 2 K (1.69)
M
b
2
+ λ
0
uk = xTk p (1.70)
donde
(1.71)
b b g f b′ b + λ r1 λp λp
p = 2 0 , 20 0 K 1 2 0 K 2 1 2 2 K
T
b0 + λ b0 + λ b0 + λ b0 + λ b0 + λ
Aquí también se requiere alguna consideración para utilizar la versión directa del
controlador. Se expresará al sistema del siguiente modo:
y k+d = G y k + F ′B u k (1.72)
b0 u k = y k+d - G y k − ( F ′B − b0 ) u k (1.73)
(b 2
0 + λ ) u k = b0 y k+d - b0G y k - b0( F′B - b0 ) u k + λ u k (1.74)
reemplazando,
1 λ
uk = b0 y k+d + u k - b0G y k - ( f b′ 1b0 + λ r1 ) uk-1 K + λ p1u k-1 (1.76)
b +λ b0
2
0
por lo tanto:
T
uk = x p (1.77)
donde
b0
(1.78)
b b0 g f b′ b + λ r1 λp λp
p = 2 0 , 2 0 K 1 20 K 2 1 2 2 K
T
b0 + λ b0 + λ b0 + λ b0 + λ b0 + λ
con lo que queda expresada u de igual forma que antes con la excepción de la
aparición en su cálculo de la variable filtrada.
En las figuras siguientes se aprecian diferentes casos de reguladores predictivos
adaptativos. En todas, la planta original es la del ejemplo primero y se produce un cambio
en la ganancia de la planta en la muestra 50: se reduce a la mitad, es decir los coeficientes
de B' pasan a ser .5 y -.4. Las tres primeras gráficas corresponden respectivamente a un
regulador predictivo, predictivo ponderado y ponderado con polinomios. En las tres
restantes la diferencia es la introducción de un ruido filtrado con un polinomio c de
coeficientes 1, -.5, .2 y .1. Todos los reguladores ponderados tienen un λ=.5. El método de
identificación es por mínimos cuadrados con un factor de olvido de .1 en todos los casos.
Por último en la 0se aprecia la convergencia de los parámetros del controlador. Se
advierte que a pesar de haber un cambio en la planta en la muestra 50, la modificación de
los parámetros no se produce hasta el próximo cambio en la referencia (muestra 80) que es
cuando el sistema tiene una excitación suficiente como para advertir la nueva dinámica.
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
Ilustración 1-14 Reg. Pred. con Pol. Adap. Planta con ruido
-1
-2
-3
0 50 100 150
yk
yk +1 as1 as2 0 0 yk −1 bs1 bs2 uk
+
y& = 0 ad 2 y& k bd1 bd 2 uk −1
(1.79)
k +1 0 ad1
&
yk −1
yk +1
yk + 2 as1 as2 0 0 yk bs1 bs2 uk +1
+
y& = 0 ad 2 y& k +1 bd1 bd 2 uk
= (1.80)
k+2 0 ad1
&
yk
yk
yk + 2 asas as + as 2 yk −1
2
= +
1 2 1
y&
k + 2 ad1ad 2 ad1 + ad 2 y& k
2
& (1.82)
yk −1
asbs + as2bd1 as1bs2 + as2bd 2 uk bs1 bs2 uk +1
+ 1 1 +
ad1bs1 + ad 2bd1 ad1bs2 + ad 2bd 2 uk −1 bd1 bd 2 uk
yk
yk + 2 asas as + as 2 yk −1
2
y& = +
1 2 1
& (1.83)
yk −1
asbs + as2bd1 as1bs2 + as2bd 2 uk bs1 bs2 uk +1
+ 1 1 +
ad1bs1 + ad 2bd1 ad1bs2 + ad 2bd 2 uk −1 bd1 bd 2 uk
yk
y
yk + 2 k−1 uk + 1
y& = R y& k + M
(1.84)
k +2 & uk
y
k−1
uk −1
La ley de control es
yk
y
uk +1 r k −1
−1 y k + 2
u = M − R y& k (1.85)
k r
k +2
y& &
yk −1
uk −1
d 2y
= ku (1.86)
dt 2
dv
= ku (1.87)
dt
T2 T2
yk +1 = 2 yk − yk −1 + k u k + k uk −1 (1.88)
2 2
vk +1 = vk + kTuk (1.89)
predictor
T2 T2
yk + 2 = 2 yk +1 − yk + k uk +1 + k uk
2 2
T2 T2 T2 T2
= 2 2 yk − yk −1 + k uk + k uk −1 − yk + k uk +1 + k uk = (1.90)
2 2 2 2
T2 T2
= 3 yk − 2 yk −1 + k uk +1 + 3k u k + kT 2uk −1
2 2
vk + 2 = v k +1 + kTuk +1 =
(1.91)
= vk + kTuk + kTuk +1
T2 T2
yk + 2 = 3 yk − 2 yk −1 + k uk +1 + 3k u k + kT 2uk −1
2 2 (1.92)
vk + 2 = vk + kTuk + kTuk +1
cálculo de la actuación
T2 T2
k uk +1 + 3k uk = yk + 2 − 3 yk + 2 y k −1 − kT 2uk −1
2 2 (1.93)
kTuk +1 + kTuk = vk + 2 − vk
−1
T2 T2
uk +1 k 3k r 3 yk − 2 yk −1 + kT 2uk −1
u = 2 2
− (1.94)
k kT kT 0 vk
la uk
2 (
r − 3 yk + 2 y k −1 − kT 2uk −1 ) +
1 1
uk = vk (1.95)
kT kT
2
ucpk = ( r − 2 y k + yk −1 − ucpk −1 ) (1.96)
kT 2
y para la velocidad
1
uvck = ( rv − vk ) (1.97)
kT
reescribiendo el compensado
2 (
r − 3 yk + 2 y k −1 − kT 2uk −1 ) +
1 1
uk = vk =
kT kT
2
= 2 ( r − 2 y k + yk −1 ) − uk −1 − (1.98)
kT
− 2 ( yk − yk −1 ) − uk −1 − 2 ( r − 3 yk + 2 y k −1 − kT 2uk −1 ) +
2 1 1
vk
kT kT kT
quedando finalmente,
1 r − yk
uk = ucpk − − vk (1.99)
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 deberí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
consecutivas, pero esto introduce una imprecisión en la velocidad que degrada el control.
Se analiza el efecto en la simulación.
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;
ref = 1;
n = 530;
A=[1 -2 1];
%A=[1 -.5];
k=1;
B=k*T^2/2*[0 1 1];
M=[B(2) -A(2)*B(2);B(2) -A(2)*B(2)-B(2)];
IM=inv(M);
AB=[(-A(2))^2-A(3) -A(2)*A(3) 0 0 0;0 0 (-A(2))^2-A(3) -A(3) A(2)*B(2)];
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);
uaux = nivelu * ones(size(t));
end;
plot([yy]);grid
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
300
200
100
-100
-200
-300
-400
0 5 10 15 20 25 30
y = zeros(n,1);
yd = zeros(n,1);
vy = zeros(n,1);
u = zeros(n,1);
x0= zeros(2,2);
yaux = zeros(size(t));
uaux = zeros(size(t));
yy = 0;
uu = 0;
M=[ganancia*T^2/2 3*ganancia*T^2/2; ganancia*T ganancia*T];
IM=inv(M);
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);
vy(i)= (yaux(ly)-yaux(ly-1))/precision;
1.5
0.5
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
80
60
40
20
-20
-40
-60
-80
0 5 10 15 20 25 30
y = zeros(n,1);
yd = zeros(n,1);
vy = zeros(n,1);
u = zeros(n,1);
x0= zeros(2,2);
yaux = zeros(size(t));
uaux = zeros(size(t));
yy = 0;
uu = 0;
M=[ganancia*T^2/2 3*ganancia*T^2/2; ganancia*T ganancia*T];
IM=inv(M);
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)=(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
1.11. Simulaciones
n = 30;
yo = zeros(n,1);
yp = zeros(n,1);
u = zeros(n,1);
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);
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;
% y(i)=fliplr(B(1:length(B)))*u(i-length(B):i-1)-
%fliplr(A(2:length(A)))*y(i-length(A)+1:i-1);
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
0.5
-0.5
-1
-1.5
0 50 100 150 200 250
1.5
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];
lambda=10;
MM=[B(1)^2 0 lambda 0;
B(1)*B(2) B(1)^2 lambda*A(2) lambda;
0 B(1)*B(2) lambda*A(3) lambda*A(2);
0 0 0 lambda*A(3)];
ind= M(2:length(M))'*(B(1)^2+lambda)-[B(1)*B(2)+lambda*A(2);
lambda*A(3); 0;0];
%ind= M(2:length(M))'-[B(1)*B(2)+lambda*A(2); lambda*A(3); 0;0];
pp=inv(MM)*ind;
P=[1 pp(1:2)' 0];
R=[1 pp(3:4)' 0];
roots([conv(B,P)*B(1) 0]+lambda*conv(A,R))
ans =
0
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);
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];
R=[1 -0.9473 0.1205 0];
u = zeros(n,1);
% 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])
1.12. Referencias
1. Goodwin, G. Sin: Adaptive Filtering, Prediction and Control, Prentice Hall – 1984.
Compensación de Velocidad: p 128/168