Você está na página 1de 45

CONTROLE ADAPTATIVO

RESOLUO DOS EXEMPLOS E PROBLEMAS


DO CAPTULO 3

ALUNO: Pedro Barata Piquia Junior - 2010310025


PROF. : Dr. Andr Maurcio Damasceno Ferreira

ABRIL
2016

EXEMPLO 3.1 MODEL-FOLLOWING COM CANCELAMENTO DE ZEROS


Dado o sistema em tempo continuo:
+ = u,
Sua funo discreta com perodo de amostragem h = 0.5 seg
1+0

0.10653 (+0.8467 )

G(z) = +1+2 =

1 (0.6065 )

O desafio sintetizar um controlador com 2 graus de liberdade cujo a funo de


transferncia desejado
()
()

0.1761

= 1.32050.496

Isso claro que os polinmios B(z) e A(z) para


()
()

0+1
+12

0.10653 (+0.8467 )
1 (0.6065 )

So co-primos. Para resolver este exemplo, iremos utilizar o algoritmo 3.1,o objetivo
cancelar o zero:
PASSO 1: fatorar B como B = B+B, onde B+ monico
B(z) = B+(z)B-(z) = (z + 0.8467)0.10653
PASSO 2 : encontrar a soluo R e S com degS>degA de
AR + B-S = A0Am
A equao de Diophantina ento
A(z)(B + z )Rp(z) + B + z (B z )S(z) = B+(z)A0(z)Am(z)
()

()

Onde o polinmio em malha fechada deve ser do grau 2n-1 = 3.


grau{A0(z)} = 0 e obtemos A0(z) = 1.
A equao reduzida de Diophantina ento
A(z)Rp(z) + B-(z)S(z) = Am(z)
(z2+a1z+a2)*1+b0(s0z+s1) = z+ am1z +am2
Ou
(z-1.607z+0.6065)Rp(z)+0.10653(s0z+s1)= z - 1.3205z 0.4966
Equacionando os coeficientes temos:

a1 + b0s0 = am1
a2+b0s1=am2
essas equaes podem ser resolvidas se b0 0. A soluo
s0 =
s1 =

11
0
22

=
=

1.3205 +1.607
0.10653
0.4966+0.6065
0.10653

= 2.6852
= 1.0321

O problema do model-following para esse caso resolvvel.


PASSO 3: computar o sinal de controle para a seguinte lei de controle:
Ru = Tuc - Sy
Os polinmios R(z), S(z) e T(z) so
1

R(z) = B+ = z +0 = z + 0.8467
S(z) = s0z + s1 = 2.6852z 1.0321
T(z) = A0Bm =

0
0

0.1761

= 0.10653 = 1.6531z

EXEMPLO 3.2 MODEL-FOLLOWING SEM CANCELAMENTO DE ZEROS


Dado o sistema em tempo continuo:
+ = u,
Sua funo discreta com perodo de amostragem h = 0.5 seg
0+1

G(z) = +1+2 =

0.10653 (+0.8467 )
1 (0.6065 )

O desafio sintetizar um controlador com 2 graus de liberdade cuja a funo de


transferncia desejada seja:
0+ 1
+ 1+ 2

()
()

(+0.8467 )

= 1.32050.496

Com
(1)

= (1) =

1+ 1+ 2
0+1

= Bmp(z)

11.3205 0.496

= 0.10653 +0.0902 = - 4.15


Cujo o ganho em regime permanente unitrio. A equao de diophantina se torna:

(z2+a1z+a2)*(b0z + r1) +(b0z+b1)(s0z + s1) = (z+ am1z +am2)(z+a0)


1

Colocando z = 0 = - 0.8467 e resolvendo para r1, obtemos:


1

r1 = 0 +

2 1+ 101+ 2 2 0 (1+00)
0( 2 1101+2 2 0)

0 20+ 2 20 1 01+ 0+ 11 1

2 1101+2 2 0
0 0.496 0.10653 + 0.6065 +0.4960(1.3205 ) 0.10653 0.0902+ 01.3205 +1.607 0.0902 2
0.0902 2 +1.6070.10653 0.09020.60650.10653

Como: grau{A0(z)} = 0 e obtemos A0(z) = 1.


O parmetro a0 teve seu valor igual a 1, sendo assim temos:
r1 =

0.496 0.10653 + 0.6065 +0.496(1.3205 ) 0.10653 0.0902+ 11.3205 +1.607 0.0902 2


0.0902 2 +1.6070.10653 0.09020.6065 0.10653

r1 = 0,975
Perceba que o denominador zero se os polinmios A(z) e B(z) tem um fator
comum, equacionando os coeficientes dos termos z e z0 na equao diophantina temos:
s0 =

1(0 12 11+ 2 1+ 210)


1101+20

s0 =
+

0( 12120 2+02)
1101+20

0.0902(1.3205 +0.6065 1.3205 1.607 +1.607 2 0.49661.607)


0.0902 1.6070.10653 0.0902 +(0.6065 0.10653 2 )

0.10653 1.3205 0.6065 1.6070.6065 0.4966 +(0.6065 ))


0.0902 1.6070.10653 0.0902 +(0.6065 0.10653 2 )

S0= 11,72
s1 =

1(12 12+0 202)


1101+20

0( 22 20 21+02 1)
1101+20

s1 =
0.0902(1.6070.6065 (1.3205 0.6065 )0.4966+0.6065) 0.10653 (0.49660.6065 0.6065 2 0.49661.607+0.6065 1.3205 )
0.0902 1.6070.10653 0.0902 +(0.6065 0.10653 2 )

s1= 1,1259
alm disso, mostrado que:
R(z) = z + r1 = z + 0.975
S(z) = s0z + s1 = 11.72z + 1.1259
T(z) = A0(z) = (z+a0) = -4.15(z+1)

0.0902 1.6070.10653 0.0902 +(0.6065 0.10653 2 )

EXEMPLO 3.3 SISTEMA EM TEMPO CONTNUO


O processo discutido nos exemplos 3.1 e 3.2 tm a seguinte funo de transferncia

G(s) =

(+)

Com a = 1 e b = 1. O desenvolvimento dado pelo algoritmo 3.1 vai ser usado para
encontrar um controlador em tempo continuo. Desde que o processo seja de segunda
ordem, o sistema em malha fechada ser de terceira ordem e o controlador de grau
mnimo de primeira ordem. O polinmio Am tem grau 2 (degAm = degA), Bm uma
constante (degBm = degB) e A0 tem grau 1 (degA0 = 2 - 0 1 = 1). Sendo assim:

A0(s) = s+a0
Sendo assim, a funo de transferncia desejada :
Bm (s)
Am (s)

s+2 s+

Usando os valores informados no exemplo 3.1:


= 1rad/s
= 0.7
ento:
Bm (s)
Am (s)

1
s+1.4s+1

A equao de diophantina se torna:


A(s)Rp(s) + B-(s)S(s) = Am(s)
s(s+a)*(s + r1) + b(s0s+s1) = (s+ 2s +)(s+a0) = ( + 1.4 + 1)(s+1)
Equacionando os coeficientes de potncias iguais obtivemos a seguinte equao:

a+r1 = 2 + a0
1+ r1 = 1.4 + 1
r1 = 1.4

ar1 + bs0 = + 2a0


r1 + s0 = 2.14

s0 = 2.4 1.4
s0 = 1

bs1 = a0
s1 = 1
As equaes acima so possveis de resolver se a varivel b 0. Alm disso, temos
B = 1, B- = b = 1, e Bm = /b = 1, logo:
+

R(s) = B+ = 1
S(s) = s0s + s1 = s + 1
T(s) = Bm(s)A0(s) =
1+ 1+ 2
0+1

s0 =
s1 =

= Bmp(z) =

11
0
22
0

=
=

(s+ a0) = s + 1

11.3205 0.496
0.10653 +0.0902

1.3205 +1.607
0.10653
0.4966+0.6065
0.10653

= - 4.15

= 2.6852
= 1.0321

EXEMPLO 3.4AUTOREGULADOR INDIRETO COM CANCELAMENTO DO


ZERO
Dado o sistema em tempo continuo utilizado no exemplo 3.1:
+ = u,

G(s) =

(+)

Sua funo discreta com perodo de amostragem h = 0.5 seg


1+0

G(z) = +1+2 =

0.10653 (+0.8467 )
1 (0.6065 )

Consideraremos o sinal de entrada ucuma onda quadrada


O parmetro da planta ser mostrado a seguir:
b0 = 0.1065
b1 = 0.0902
a1 = -1.6065
a2 = 0.6065

com os parmetros determinados no exemplo 3.1 temos


n = 1rad/s (freqncia natural)
= 0.7 (amortecimento)
O desafio sintetizar um controlador com 2 graus de liberdade cujo a funo de
transferncia desejado
()
()

0.1761

= 1.32050.496

A partir dos dados de amortecimento e freqncia natural determinados pelo exemplo


podemos obter os plos desejados da planta da seguinte maneira:
Poldes = ^(-nh+jn 1 )
-nh+jn 1 = -0.5+j0.2739
Poldes = ^(-0.5+j0.2739)
Atravs de manipulaes matemticas confirmaremos esses valores
am = z - 1.3205z + 0.496
am1 = -1.3205
am2 = 0.496
bm= 0.1761z = b0
para resolver este exemplo, utilizaremos o algoritmo 3.2
PASSO 1: a partir de agora iremos implementar o mtodo dos mnimos quadrados para
a auto regulao, os parmetros iniciais so:
fator de esquecimento () = 0.65
obs: este valor do fator de esquecimento foi definido pois os parmetros do controlador
encontrados na simulao so os mesmos dos valores reais
P(0) =

100
0

0
100

0 0
0 0

0
0

0
0

1 0
0 1

___________________________________

(0) =

0
0

0
0

0
0

0
0

0.01
0.2

0.01
0.2

0.01 0.01
0.2 0.2

____________________________________
(0)=

0
0

0
0

0 0
0 0

0
0

0
0

0 0
0 0

0
0
0
(0) = 0(0) = 0(0) = 0
0
0
0

Clculo do MQR
A sada do sistema calculada da seguinte forma
y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2);
desse modo podemos atualizar o , o erro e o ganho do estimador
(k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]'
e(k)=y(k)- (k-1)'* (k-1)
K=P* (k-1)/( + (k-1)'*P* (k-1))
Calculamos o novo vetor de estimao de parmetros
Teta(k)=Teta(k-1)+K*e(k);
A partir desses dados se atualiza a matriz de covarincia
P=(P-K* (k-1)'*P)/
A prxima etapa armazenar os parmetros atualizados
Teta(k) = [ a1atualizado a2atualizado b0atualizado

b1atualizado]

PASSO 2: aplicar o mtodo de alocao de plos e grau mnimo dado pelo algoritmo
3.1 onde os polinmios A e B so os estimadores obtidos no passo 1. Os polinmios R,S
e T do controlador ento so obtidos:

1)Clculo dos parmetros r1, s0, s1 e t0


r1 = b1atualizado/b0atualizado
s0 = (am1 a1atualizado)/ b0atualizado
s1 = (am2 a2atualizado)/b0atualizado
t0 = bm0/b0atualizado
2) Clculo dos polinmios R, S e T
1
0

+(

R=

S=
T=

1
0+1)
1

0
0

PASSO 3: calcular a varivel de controle


Ru(t) = Tuc(t) Sy(t)
u(t)=-r1*u(t-1) +t0*uc(t) -s0*y(t) -s1*y(t-1)

A seguir veremos os valores dos parametros encontrados:


a1(150)= -1.6065 (-1.6065)

a2(150) = 0.6065 (0.6065)

b0(150) = 0.1065 (0.1065)

b1(150) = 0.0902 (0.0902)

r1(150) = 0.1111(0.1111)

s0(150) = 1.6422(1.6422)

s1(150) = -0.7471(-0.7471)

t0(150) = 0.8951(0.8951)

Percebam que os valores so os mesmos dos valores reais.

EXEMPLO 3.5 AUTOREGULADOR INDIRETO SEM CANCELAMENTO DO


ZERO
Dado o sistema em tempo continuo utilizado no exemplo 3.1:
+ = u,

G(s) =

(+)

Sua funo discreta com perodo de amostragem h = 0.5 seg


1+0

G(z) = +1+2 =

0.10653 (+0.8467 )
1 (0.6065 )

Consideraremos o sinal de entrada uc uma onda quadrada


O parmetro da planta ser mostrado a seguir:
b0 = 0.1065
b1 = 0.0902
a1 = -1.6065
a2 = 0.6065
com os parmetros determinados no exemplo 3.1 temos
n = 1rad/s (freqncia natural)
= 0.7 (amortecimento)
O desafio sintetizar um controlador com 2 graus de liberdade cujo a funo de
transferncia desejado
0+ 1
+ 1+ 2

()
()

(+0.8467 )

0.1761

= 1.32050.496= 1.3205 0.496


Com

(1)

= (1) =

1+ 1+ 2
0+1

= Bmp(z) = 0.8951

A partir dos dados de amortecimento e freqncia natural determinados pelo exemplo


podemos obter os plos desejados da planta da seguinte maneira:
Poldes = ^(-nh+jn 1 )
-nh+jn 1 = -0.5+j0.2739

Poldes = ^(-0.5+j0.2739)
Atravs de manipulaes matemticas confirmaremos esses valores
am = z - 1.3205z + 0.496
am1 = -1.3205
am2 = 0.496
bm= 0.1761z = b0
desde que os parmetros amostrados da planta possam depender tanto dos parmetros
contnuos conhecidos e desconhecidos, procederemos como se todos os parmetros
fossem desconhecidos. Precisamos de um modelo de regresso linear para os
parmetros da planta
= ( b0 b1 a1 a2 )T
(t) = ( u(t 1) u(t 2) y(t 1) y(t 2) )
o PASSO 1 utilizado aqui o mesmo utilizado no exemplo 3.4, logo omitiremos
Antes de mais nada, precisamos desenvolver um controlador sem o cancelamento do processo
zero considerando B+ = 1. Usando a condio de causalidade degAc 2degA-1 = 3, sendo que o
grau de A = 2. O grau de R deve ser portanto de grau 1. O grau mnimo obtido pela escolha
dos menores graus possveis no desenvolvimento do polinmio, ento obtemos degAc = 3 e
degR = degS = 1. A equao de Diophantina para o problema

(z2 + a1z+ a2)(z+ r1) + (b0z+ b1)(s0z+ s1) = (z2 + am1z+ am2)(z + ao1)
A identificao dos coeficientes de potncias iguais para Z :
z2 : a1+ r1+ b0s0= am1+ ao1
z : a2+ a1r1+ b1s0+ b0s1= am1ao1+ am2
z0 : a2r1+ b1s1= am2ao1
1

PASSO 2: a soluo da equao linear


r1 =

0 20+ 2 20 1 01+ 0+ 11 1
2 1101+2 2 0

s0 =

1+0(1+1)

s1 =

0
0 221
1

PASSO 3: encontrados os coeficientes, possvel determinar os polinmios da equao


diophantina:
R(z) = z + r1 (R mnico de primeira ordem)

S(z) = s0z + s1 (S de primeira ordem)


Como: grau{A0(z)} = 0 e obtemos A0(z) = 1.
O parmetro a0 teve seu valor igual a 1, sendo assim temos:
T = A0(z) = (z + a0)
A seguir veremos a simulao deste exemplo:

Os valores dos parametros encontrados so:


a1(150)= -1.6065 (-1.6065)

a2(150) = 0.6065 (0.6065)

b0(150) = 0.1065 (0.1065)

b1(150) = 0.0902 (0.0902)

r1(150) = 0.1111(0.1111)

s0(150) = 1.6422(1.6422)

s1(150) = -0.7471(-0.7471)

t0(150) = 0.8951(0.8951)

Os valores dos parmetros so os mesmos dos valores reais.


Obs: nesta simulao foi utilizado um fator de esquecimento = 0.65

EXEMPLO 3.7 AUTOREGULADOR DIRETO COM d0 = 1


Consideremos o sistema no exemplo 3.1. Desde que degA = 2 e degB = 1, temos
degAm = 2 e degA0 = 1, e vamos escolher Bm = qAm(1). Usando a equao 3.29 no
algoritmo 3.3 ento temos T = qAm(1). A estrutura do controlador dada por
degR=degS = degA-1 = 1. O modelo dado pela equao 3.27 portanto se torna:
y(t) = r0uf(t-1) + r1uf(t-2) + s0yf(t-1) + s1yf(t-2)

onde
uf(t) +am1uf(t-1) + am1uf(t-2) = u(t)
yf(t) + am1yf(t-1) + am1yf(t-2) = y(t)
isso importante agora obter um auto-regulador direto pela aplicao do algoritmo 3.3.
Os modelos do parmetros dados pela equao (3.30) so portanto estimados, e o sinal
de controle computado da seguinte maneira:
0u(t) +1u(t-1) = 0uc(t) - 0y(t) - 1y(t-1)
Onde 0,1, 0, e 1so os estimadores obtidos e 0 dado pela equao 3.29, que
0= 1 + am1 + am2

Perceba que o estimador de r0 deve ser diferente de zero para o controlador ser causal.
A figura acima onde compara o sinal de entrada e de sada na simulao do algoritmo
direto e a figura seguinte mostra os parmetros estimados. O transitrio inicial depende
fortemente das condies iniciais. Em t = 150 os parmetros do controlador so:

r1/r0(150) = 0.8467(0.8467)

s0/r0(150) = 2.6852(2.6852)

s1/r0(150) = -1.0321(-1.0321)

t0/r0(150) = 1.6531(1.6531)

neste exemplo foi utilizado um fator de esquecimento = 0.65

Os parmetros do controlador so divididos por 0 para fazer uma comparao direta


com os exemplos 3.1 e 3.3. os valores corretos so dados em parnteses. O limite da lei
de controle o mesmo em ambos os casos, existe uma oscilao no sinal de controle
por causa do cancelamento do processo zero.
Num caso prtico o tempo de atraso e a ordem do processo que gostaramos de controlar
so desconhecidos. Portanto natural considerar essas variveis como parmetros
desenvolvidos que so escolhidos pelo usurio. O parmetro d0 de importncia
particular para um algoritmo direto. O prximo exemplo mostrar que a oscilao
pode ser evitado simplesmente pelo aumento do valor de d0.

EXEMPLO 3.8 AUTOREGULADOR DIRETO COM d0 = 2


Na derivao do algoritmo direto o parmetro d0 foi o plo em excesso da planta.
Assuma por um momento que no sabemos o valor de d0 e isso trataremos como um
parmetro desenvolvido no lugar. A figura abaixo mostra uma simulao do algoritmo
direto usado no exemplo 3.7 mas com d0 = 2 no lugar de d0 =1.

Todos os outros parmetros so os mesmos. Perceba que o comportamento do sistema


um pouco razovel sem qualquer oscilao no sinal de controle. A figura abaixo
mostra os parmetros estimados. Os estimadores obtidos no tempo t = 100
correspondem aos parmetros do controlador

r1/r0(150) = -0.1643(0.8467)
s1/r0(150) = -0.5987(-1.0321)

s0/r0(150) = 1.21(2.6852)
t0/r0(150) = 0.6214(1.6531)

neste exemplo foi utilizado um fator de esquecimento = 1

Nos encontramos um resultado interessante e surpreendente do cancelamento do


processo zero que pode ser evitado pelo aumento do parmetro d0.

EXEMPLO 3.9 EFEITOS DO DISTURBIO NA LEITURA

Consideremos o sistema no exemplo 3.5 que , um regulador de auto sintonizao


indireta sem cancelamento de zero. Ser feita uma simulao que idntica para o
mostrado no exemplo 3.6 exceto que o distrbio na leitura ser de v(t) = 0.5 para t 40.
O fator de esquecimento igual a 0.98 tem foi introduzido; por outro lado as condies
so as mesmas para a escolhida no exemplo 3.5. o comportamento do sistema
mostrado abaixo, comparando com outros exemplos percebemos que o efeito do
distrbio na leitura pode ser desastroso. Isso segue da discusso no exemplo 3.5 que o
valor correto de regime permanente vai sempre ser alcanado ao passo que os steps so
suficientes grandes.

Perceba que a resposta grandemente assimtrica. O motivo para isso que os


parmetros mudam rapidamente quando o sinal do controlador muda; rpidas mudanas
dos estimadores para o sinal de comando indica que a estrutura do modelo que no
correta. Os parmetros dos estimadores tambm mudam significativamente no passo do
distrbio da leitura. Quando o sinal de comando constante, os parmetros aparecem se
acomodar num valor constante so prximos dos verdadeiros parmetros.
EXEMPLO 3.10 DISTURBIO NA LEITURA: CONTROLADORES E
ESTIMADORES MODIFICADOS
Mostraremos agora as dificuldades encontradas no exemplo 3.9 podem ser evitadas pela
modificao dos estimadores e controladores. Primeiro introduzimos um controlador
que tem uma ao integral pela aplicao do desenvolvimento do projeto que foi
mostrado abaixo:

Para fazer isso, consideraremos o mesmo sistema como no exemplo 3.5 onde o
controlador foi definido como:
0

R = q + r1S = s0q + s1

opolinmio caracterstico em malha fechada Ac tem grau 3. Para obter um controlador


com ao integral, a ordem em malha fechada do sistema aumentada pela introduo
de um extra polo em malha fechada em z = -x0 = 0. Isso segue ento da equao 3.41 do
livro que
0 =

1 1
0 + 1

Desde que X = z e Y = y0, as equaes 3.39 agora fornecem:


R = z(z+r1) + y0(b0z + b1) = (z -1)(z-b1y0)
S = (s0 y0)z2 + (s1 a1y0)z a2y0
Os estimadores so baseados no modelo 3.42 do livro com Ad = z-1 para reduzir os
efeitos dos distrbios. Os distrbios na leitura reduzem rapidamente pois a ao integral
do controlador vai diminuir com a magnitude correspondente para o distrbio curto
depois de t = 40. Os parmetros estimados so mostrado abaixo, cujo indica vantagem
no uso do estimador modificado. Perceba em particular que existem uma pequena
mudana nos estimadores quando o distrbio na leitura acontece.

PROBLEMAS
3.1 uma amostra de um modelo de um processo em tempo continuo com h = 1 a
seguinte funo pulso de transferncia obtida
() =

+ 1.2
+ 0.25

A especificao do projeto de estado que os plos em malha fechada em tempo discreto


deveriam corresponder para a seguinte caracterstica polinomial:
S + 2s + 1
(a)projete um regulador auto ajustvel indireto de ordem mnima em tempo discreto. O
controlador deve ter uma ao integral e dar um sistema em malha fechada tendo um
ganho unitrio em regime permanente. Determine a equao de diophantina para
resolver o problema do projeto.

RESPOSTA
Especificaes do projeto: o sistema em malha fechada teria um plo que
corresponderia a seguinte caracterstica polinomial em tempo continuo

S + 2s + 1 = (s+1)
Isso corresponde a

Am(z) = z+am1z + am2


Com
1 = 1 + 1 = 2 1
2 = 2
A escolha de Bm seria ento:
(1)
(1)

=1

A condio de integrador d
R = R(z-1)
A partir disso temos a seguinte condies:
(1) BT = BmA0
(2) AR + BS = AmA0
Como B instvel devemos ter Bm = BBm. isso faz (1) BT = BBmA0 T = BmA0.
Escolhido Bm temos que:
(1) (1)
(1)

(1)

= 1 Bm(1) = (1)

O jeito mais simples de escolher


(1)

Bm = bm = (1) =

0.25
2.2

Alem do mais, temos


(z2 + a1z + a2)(z1)(z + r) + (b0z + b1)(s0z2 + s1z + s2)= (z2 + am1z + am2)(z2 + ao1z + ao2)

Com a1 = -1, a2 = 0.25 e a01 e a02 escolhidos de um jeito que A0 estvel.


Equacionando os coeficientes temos:
r 1 + a1 + b0s0 = ao1 + am1
r + a1(r1) + a2 + b0s1 + b1s0 = ao2 + am1ao1 + am2
ar + a2(r1) + b0s2 + b1s1 = am1ao2 + am2ao1
a2r + b1s2 = am2ao2
Agora escolhemos os estimadores
= ( b0 b1 a1 a2 )T
pela equao 3.22 do livro
(b) sugira um projeto que inclua uma estimao direta dos parmetros do controlador.
Diga porque uma regulao auto ajustvel direta bem feita mais difcil para projetar
para esse projeto do que um regulador auto ajustvel indireto.

RESPOSTA
Como H(z) no fase mnima cancelaremos B- = B entre e . Um STR indireto
dado pela equao 3.24
A0Amym = u + y
Com
= B-R, = B-S, T = BmA0.
Alm do mais temos
A0Amym = A0Bmuc = A0BBmuc = BTuc = uc
1

y = 0 u + 0 y
1

ym = 0 uc
= y ym = uf + yf - ucf

3.6 Considere a simulao do regulador de auto sintonizao indireta usado no exemplo


3.5. investigue como o comportamento do transiente do algoritmo depende do valor
inicial de teta, da matriz de covarincia e o fator de esquecimento.
RESPOSTA
Para resoluo deste problema usaremos 3 valores distintos para cada varivel
mencionada no enunciado, os valores so:
1= 1
2= 0.85
3 = 0.65
P1 = diag([200 200 2 2])
P2 = diag([100 100 1 1])
P3 = diag([50 50 0.5 0.5])
1 = [0 0 0.01 0.2]T
2 = [0 0 0.1 2]T
3 = [0 0 1 20]T
vamos agora analisar a influncia de lambda

Para lambda = 1

Para lambda = 0.85

Para lambda = 0.65


Podemos perceber que, quanto menor o fator de esquecimento a pertubao do
transitrio inicial diminui fazendo com que o sobressinal negativo diminua a medida
que o lambda diminui tambm.

vamos agora analisar a influncia da matriz de covarincia (considerando lambda = 1).

Para covariancia = diag([200 200 2 2])

Para covarincia = diag([100 100 1 1])

Para covarincia = diag([50 50 0.5 0.5])

Percebemos que quanto menor o valor o valor inicial de teta, o sistema passar a ter uma
dificuldade em acompanhar inicialmente o valor de referncia aumentando o valor do
erro de regime permanente.

vamos agora analisar a influncia de teta (considerando lambda = 1 e


cov = [100 100 1 1] ).

.
Para teta = [0 0 0.01 0.2]T

Para teta = [0 0 0.1 2]T

Para teta = [0 0 1 20]T

O valor inicial de teta deve ser o menor possvel, pois a mnima variao pode causar a
instabilidade no sistema.

3.7 considere o regulador auto sintonizador indireto no exemplo 3.5. faa uma
simulao ao longo dos perodos, e investigue como os parmetros aproximam se dos
seus valores verdadeiros. Tambm explore como a faixa de convergncia depende do
fator de esquecimento .
RESPOSTA
Utilizaremos os mesmos valores de lambda do problema 3.6
Para lambda = 1

a1(150)= -1.5854 (-1.6065)

a2(150) = 0.5851 (0.6065)

b0(150) = 0.0991 (0.1065)

b1(100) = 0.1010 (0.0902)

r1(150) = 0.1149(0.1111)

s0(150) = 1.5135(1.6422)

s1(150) = -0.6653(-0.7471)

t0(150) = 0.8799(0.8951)

Para lambda = 0.85

a1(150)= -1.6065 (-1.6065)

a2(150) = 0.6065 (0.6065)

b0(150) = 0.1065 (0.1065)

b1(100) = 0.0902 (0.0902)

r1(150) = 0.1111(0.1111)

s0(150) = 1.6422(1.6422)

s1(150) = -0.7471(-0.7471)

t0(150) = 0.8951(0.8951)

Para lambda = 0.65

a1(150)= -1.6065 (-1.6065)

a2(150) = 0.6065 (0.6065)

b0(150) = 0.1065 (0.1065)

b1(100) = 0.0902 (0.0902)

r1(150) = 0.1111(0.1111)

s0(150) = 1.6422(1.6422)

s1(150) = -0.7471(-0.7471)

t0(150) = 0.8951(0.8951)

Podemos perceber que com a diminuio dos valores do fator de esquecimento a


convergncia dos parmetros alcana os valores verdadeiros mais rpidos

3.9 considere o regulador auto ajustvel no exemplo 3.5. modifique mude as


especificaes do sistema em malha fechada, e investigue como o comportamento do
sistema muda.

RESPOSTA
Foi considerado a seguinte funo em malha fechada:
y(t)= -a1y(t-2)-a2y(t-3)+b0u(t-1)+b1u(t-2)
foi adicionado um delay a mais nas variveis de sada do sistema (destacado de
vermelho) os parmetros da entrada no foi alterado

Podemos analisar que na prtica se a planta por algum motivo falhasse em fornecer a
informao do sistema isso poderia acarretar em srios problemas, pois pode-se
observar que um simples delay na sada da planta j o suficiente para levar a
instabilidade do sistema.
3.11 aplique o regulador auto ajustvel indireto do exemplo 3.5 para o processo com a
funo de transferncia
() =

1
( + 1)

Estude e explique o comportamento do erro quando o sinal de referncia uma onda


quadrada.
RESPOSTA
Primeiro veremos como o comportamento do sistema para a seguinte funo de
transferncia :
() =

1
+ 2

Agora veremos o comportamento do sistema para a funo de transferncia sugerida


pelo enunciado:

Comparando as duas situaes, podemos ver que o deslocamento do plo no eixo zero
para a esquerda tem um efeito percebvel na sada do sistema:
Nos momentos iniciais o sobressinal reduzido consideravelmente em relao a funo
de transferncia original, isso se deve ao fato do plo ter sido deslocado do eixo zero
para a esquerda, por outro lado, repare que o sinal de controle mantm um esforo
maior para tentar minimizar o erro, a partir de t =25 o erro em regime permanente
igual em ambos os casos.

ANEXOS
/////////////////EXEMPLO 3.4///////////////////////////////
%% STR indireto usando
% Astrom & Wittenmark,
% Prof. Andr Ferreira
% MODIFICADO POR PEDRO
clear all
close all
clc

MQR e MDPP
Exemplo 3.4, p.104
- 29/01/2014
JUNIOR

%% Definio da planta
planta=tf(1,[1 1 0]); % Planta analgica
Ts=0.5; % Intervalo de amostragem
planta_discretizada=c2d(planta,Ts); % Planta discretizada
% Parmetros da planta
[numd,dend]=tfdata(planta_discretizada,'v');
b0=numd(2);
b1=numd(3);
a1=dend(2);
a2=dend(3);
%% Sistema em MF desejado
csi=0.7;
freq_nat=1;
% Plos discretos desejados
pol_des=exp(-csi*freq_nat*Ts + j*freq_nat*sqrt(1-csi^2)*Ts);
Pol_des=[pol_des conj(pol_des)];
% FT desejada em MF
Am=poly([pol_des conj(pol_des)]);
Bm=[polyval(Am,1) 0]; % Escolhido para ter ganho DC unitrio
func_desej_disc=tf(Bm,Am,Ts);
% Parmetros da planta desejada em MF
[nummd,denmd]=tfdata(func_desej_disc,'v');
bm0=nummd(2);
am1=denmd(2);
am2=denmd(3);
%% Vetor de Entrada
uc = [];
neg=-1*ones(1,25);
pos=ones(1,25);

- Onda Quadrada (u)

for i = 1:3
uc = [uc pos neg];
end
%% Condies iniciais necessrios para o MQR
N = length(uc); % Nmero de realizaes (medidas)
lambda = 0.65;
%pulo do gato - valor escolhido por tentativa e erro

covP0 = diag([100 100 1 1]); % Inicializar a matriz de covarincia


*****
Theta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parmetros Teta
estimado *****
fi0=[0 0 0 0]';
yest=[0 0 0]';
diagP=diag(covP0)';
Theta=[Theta0 Theta0 Theta0];
fi=[fi0 fi0 fi0];
diagP=[diagP; diagP; diagP];
P=covP0;
cont=0*Theta;
y=0*yest;
u=0*yest;
erro=0*yest;
for k = 4:N
%% MQR
% ----- Calcula a sada atual
y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Sada da
planta
% ----- Atualiza Fi
fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]';
% ----- Calcula o erro de estimao
erro(k)=y(k)-fi(:,k-1)'*Theta(:,k-1);
% ----- Calcula o vetor de ganhos
K=P*fi(:,k-1)/(lambda+fi(:,k-1)'*P*fi(:,k-1));
% ----- Calcula o novo vetor de estimao de parmetros
Theta(:,k)=Theta(:,k-1)+K*erro(k);
% ----- Atualiza a matriz de covarincia
P=(P-K*fi(:,k-1)'*P)/lambda;
diagP=[diagP; diag(P)'];
% ----- Armazena parmetros
a1est = Theta(1,k);
a2est = Theta(2,k);
b0est = Theta(3,k);
b1est = Theta(4,k);
%% PASSO 2 - valores dos polinmios R, S e T
r1 = b1est/b0est;
s0 = (am1-a1est)/b0est;
s1 = (am2-a2est)/b0est;
t0 = bm0/b0est;
cont(:,k)=[r1 s0 s1 t0]';
%Polinmios R, S e T:
R= tf([1 b1est/b0est],1,0.5);
S=tf([s0 s1],1,0.5);
%t0= beta*1;
%t1= beta*a0;
T= tf([(bm0/b0est) 0],1,0.5);
cont(:,k)=[r1 s0 s1 t0]';

%tf([1 r1],1,0.5);

%tf([t0 t1],1,0.5);

%% PASSO 3 - clculo da lei de controle


u(k)=-r1*u(k-1) +t0*uc(k) -s0*y(k) -s1*y(k-1); % Sinal de controle
% Limite do sinal de controle
if u(k)>=4,
u(k)=4;
elseif u(k)<=-4,
u(k)=-4;
end
end
subplot(221)
hold on
plot(uc,'r--')
plot(y,'b')
legend('uc','y')
xlabel('Amostras')
title('Sada e Referncia');
subplot(223)
stairs(u,'b')
legend('u')
xlabel('Amostras')
title('Sinal de Controle');
subplot(224)
stairs(cont')
legend('r1','s0','s1','t0')
xlabel('Amostras')
title('Parmetros do Controlador');
subplot(222)
stairs(Theta')
legend('a1','a2','b0','b1')
xlabel('Amostras')
title('Parmetros Estimados');
hold off

///////////////////////////////////////////////////////////
////////EXEMPLO 3.5////////////////////////////////////////
%% STR indireto usando MQR e MDPP
% Astrom & Wittenmark, Exemplo 3.4, p.104
% Prof. Andr Ferreira - 29/01/2014
%MODIFICADO POR PEDRO JUNIOR
clear all
close all
clc
%% Definio da planta
g=tf(1,[1 1 0]); % Planta analgica
Ts=0.5; % Intervalo de amostragem
gd=c2d(g,Ts); % Planta discretizada

% Parmetros da planta
[numd,dend]=tfdata(gd,'v');
b0=numd(2);
b1=numd(3);
a1=dend(2);
a2=dend(3);
%% Sistema em MF desejado
csi=0.7;
Wn=1;
% Plos discretos desejados
pdes=exp(-csi*Wn*Ts + j*Wn*sqrt(1-csi^2)*Ts);
Pdes=[pdes conj(pdes)];
% FT desejada em MF
Am=poly([pdes conj(pdes)]);
Bm=[polyval(Am,1) 0]; % Escolhido para ter ganho DC unitrio
gmd=tf(Bm,Am,Ts);
% Parmetros da planta desejada em MF
[nummd,denmd]=tfdata(gmd,'v');
bm0=nummd(2);
am1=denmd(2);
am2=denmd(3);
%Polinmio A0:
a0=0; %Este parmetro sugerido no prprio livro
A0=tf([1 a0],[1],0.5);
%% Vetor de Entrada
uc = [];
neg=-1*ones(1,25);
pos=ones(1,25);

- Onda Quadrada (u)

for i = 1:3
uc = [uc pos neg];
end
%% Condies iniciais necessrios para o MQR
N = length(uc); % Nmero de realizaes (medidas)
lambda = 0.65;
%pulo do gato (^-^)
P0 = diag([100 100 1 1]); % Inicializar a matriz de covarincia *****
Teta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parmetros Teta
estimado *****
fi0=[0 0 0 0]';
yest=[0 0 0]';
diagP=diag(P0)';
Teta=[Teta0 Teta0 Teta0];
fi=[fi0 fi0 fi0];
diagP=[diagP; diagP; diagP];
P=P0;
cont=0*Teta;

y=0*yest;
u=0*yest;
erro=0*yest;
for k = 4:N
%% MQR
% ----- Calcula a sada atual
y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Sada da
planta
% ----- Atualiza Fi
fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]';
% ----- Calcula o erro de estimao
erro(k)=y(k)-fi(:,k-1)'*Teta(:,k-1);
% ----- Calcula o vetor de ganhos
K=P*fi(:,k-1)/(lambda+fi(:,k-1)'*P*fi(:,k-1));
% ----- Calcula o novo vetor de estimao de parmetros
Teta(:,k)=Teta(:,k-1)+K*erro(k);
% ----- Atualiza a matriz de covarincia
P=(P-K*fi(:,k-1)'*P)/lambda;
diagP=[diagP; diag(P)'];
% ----- Armazena parmetros
a1est = Teta(1,k);
a2est = Teta(2,k);
b0est = Teta(3,k);
b1est = Teta(4,k);

%Operador de Transferncia:
%am1=Amq(2);
%am2=Amq(3);
beta=((1+am1+am2)/(b0est+b1est));
bm0=beta*b0est;
bm1=beta*b1est;
Hmq=tf([bm0 bm1],[1 am1 am2],0.5);
%% PASSO 2 - valores dos polinmios R, S e T
%
%
%
%
%

r1 = b1est/b0est;
s0 = (am1-a1est)/b0est;
s1 = (am2-a2est)/b0est;
t0 = bm0/b0est;
cont(:,k)=[r1 s0 s1 t0]';

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%Coeficientes r1, s1 e s0:
r1=((a0*am2*(b0est*b0est))+((a2est-am2-a0*am1)*(b1est*b0))+((a0+am1a1est)*(b1est*b1est)))/((b1est*b1est)(b1est*b0est*a1est)+(a2est*(b0est*b0est)));
s1=((a0*am2)-(a2est*r1))/(b1est);
s0=((am1+a0)-(r1+a1est))/(b0est);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Polinmios R, S e T:
R=tf([1 r1],1,0.5);
S=tf([s0 s1],1,0.5);
t0= beta*1;
t1= beta*a0;
T=tf([t0 t1],1,0.5);

cont(:,k)=[r1 s0 s1 t0]';
%
%Polinmios R, S e T:
%R= tf([1 b1/b0],1,0.5); %tf([1 r1],1,0.5);
%S=tf([s0 s1],1,0.5);
%t0= beta*1;
%t1= beta*a0;
%T= tf([(bm0/b0) 0],1,0.5); %tf([t0 t1],1,0.5);

%% PASSO 3 - clculo da lei de controle


u(k)=-r1*u(k-1) +t0*uc(k) -s0*y(k) -s1*y(k-1); % Sinal de controle
% Limite do sinal de controle
if u(k)>=4,
u(k)=4;
elseif u(k)<=-4,
u(k)=-4;
end
end
subplot(221)
hold on
plot(uc,'r--')
plot(y,'b')
legend('uc','y')
xlabel('Amostras')
title('Sada e Referncia');
subplot(223)
stairs(u,'b')
legend('u')
xlabel('Amostras')
title('Sinal de Controle');
subplot(224)
stairs(cont')
legend('r1','s0','s1','t0')
xlabel('Amostras')
title('Parmetros do Controlador');
subplot(222)
stairs(Teta')
legend('a1','a2','b0','b1')
xlabel('Amostras')
title('Parmetros Estimados');
hold off

///////////////////////////////////////////////////////////
///////////EXEMPLO 3.7 & 3.8//////////////////////////////
%Aluno:PEDRO JUNIOR
%Exemplo 3.7 E 3.8
clear all
close all
clc

%% Funo de transferencia
G=tf(1,[1 1 0]);
%Tempo de amostragem
h=0.5;
%Funo de transferencia discretizada
Gd=c2d(G,h);
%Parametros da planta
[Bd,Ad]=tfdata(Gd,'v');
b0=Bd(2);
b1=Bd(3);
a1=Ad(2);
a2=Ad(3);
%% Sistema desejado em malha fechada
%Dados para o sistema em malha fechada
csi=0.7;
Wn=1;
% Plos discretos desejados
pdes=exp(-csi*Wn*h + j*Wn*sqrt(1-csi^2)*h);
P=[pdes conj(pdes)];
% FT desejada em MF
Am=poly([pdes conj(pdes)]);
Bm=[polyval(Am,1) 0];
Gmd=tf(Bm,Am,h);
% Parmetros da planta desejada em malha fechada
[Bmd,Amd]=tfdata(Gmd,'v');
bm0=Bmd(2);
am1=Amd(2);
am2=Amd(3);
%% Vetor de Entrada para a Onda Quadrada (uc);
N=input(' Entre com o numero de Interaes?:');
%% Sinal de entrada Onda Quadrada;
j=0;
while j<N
for j=j+1:j+25
uc(j)=1;
end
for j=j+1:j+25
uc(j)=-1;
end
end
%% Condies iniciais necessrios para o MQR
N = length(uc); % Nmero de realizaes (medidas)
lambda = 1;
P0 = 100*eye(4); % Inicializar a matriz de covarincia *****
Teta0 = [0.1 0 0 0]'; % Inicializar o vetor de parmetros Teta
estimado *****
fi0=[0 0 0 0]';

yest=[0 0 0]';
diagP=diag(P0)';
Teta=[Teta0 Teta0 Teta0];
fi=[fi0 fi0 fi0];
diagP=[diagP; diagP; diagP];
P=P0;
cont=0*Teta;
y=0*yest;
u=0*yest;
yf=0*yest;
uf=0*yest;
erro=0*yest;
%d0=1; % Atraso do sistema exemplo 3.7
d0=2; % Atraso do sistema exemplo 3.8
for k = 4:N
%% MQR
% ----- Calcula a sada atual
y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Sada da
planta
% ----- Atualiza Fi
fi(:,k-d0)=[uf(k-d0) uf(k-d0-1) yf(k-d0) yf(k-d0-1)]';
% ----- Calcula o erro de estimao
erro(k)=y(k)-fi(:,k-d0)'*Teta(:,k-1);
% ----- Calcula o vetor de ganhos
K=P*fi(:,k-d0)/(lambda+fi(:,k-d0)'*P*fi(:,k-d0));
% ----- Calcula o novo vetor de estimao de parmetros
Teta(:,k)=Teta(:,k-1)+K*erro(k);
% ----- Atualiza a matriz de covarincia
P=(P-K*fi(:,k-d0)'*P)/lambda;
diagP=[diagP; diag(P)'];
% ----- Armazena parmetros
r0 = Teta(1,k);
r1 = Teta(2,k);
s0 = Teta(3,k);
s1 = Teta(4,k);
t0 = 1 + am1 + am2; % constante
%% PASSO 2 - Guarda parmetros normalizados por ro
cont(:,k)=[r1/r0 s0/r0 s1/r0 t0/r0];
%% PASSO 3 - clculo da lei de controle e da entrada e sada filtradas
u(k)=(t0*uc(k)-s0*y(k)-s1*y(k-1)-r1*u(k-1))/r0; % Sinal de
controle
uf(k) = u(k) - am1*uf(k-1) - am2*uf(k-2);
yf(k) = y(k) - am1*yf(k-1) - am2*yf(k-2);
% Limite do sinal de controle
if u(k)>=4,
u(k)=4;

elseif u(k)<=-4,
u(k)=-4;
end
end
%% Sinais de Entrada e Saida do Processo;
figure(1)
subplot(211)
grid on
hold on
plot(uc,'k--')
%Subplot(312)
plot(y,'b')
legend('Sinal de referncia (uc)','Sinal de sada (y)')
xlabel('Amostras')
title('Sada e Referncia');
%xlim([0 100])
%% Sinal de Controle;
subplot(212)
stairs(u,'r')
grid on
legend('Sinal de controle (u)')
xlabel('Amostras')
title('Sinal de Controle');
%xlim([0 100])
%% Parmetros a1 e a2 do Processo real e estimados;
figure(2)
subplot(221)
hold on
grid on
stairs(cont(1,:),'c','LineWidth',2)
r1=0.8467*ones(1,N);
plot(r1,'k-.')
legend('r1/r0 estimado','r1/r0 real')
xlabel('Amostras')
title('Parmetro r1/r0 estimado');
subplot(222)
hold on
grid on
stairs(cont(2,:),'r','LineWidth',2)
a2=2.6852*ones(1,N);
plot(a2,'k-.')
legend('s0/r0 estimado','s0/r0 real')
xlabel('Amostras')
title('Parmetro s0/r0 estimado');
subplot(223)
hold on
grid on
stairs(cont(3,:),'b','LineWidth',2)
a3=-1.0321*ones(1,N);
plot(a3,'k-.')
legend('s1/r0 estimado','s1/r0 real')
xlabel('Amostras')
title('Parmetro s1/r0 estimado');
subplot(224)
hold on
grid on
stairs(cont(4,:),'g','LineWidth',2)
a4=1.6531*ones(1,N);

%grid on
plot(a4,'k-.')
legend('t0/r0 estimado','t0/r0 real')
xlabel('Amostras')
title('Parmetro t0/r0 estimado');
//////////////////////////////////////////////////////////////////////
//////////////////////EXEMPLO 3.10////////////////////////////////////
%Aluno:PEDRO JUNIOR
%Exerccio 3.9
clear all
close all
clc
%% Funo de transferencia
G=tf(1,[1 1 0]);
%Tempo de amostragem
h=0.5;
%Funo de transferencia discretizada
Gd=c2d(G,h);
%Parametros da planta discretizada em forma de vetor
[Bd,Ad]=tfdata(Gd,'v');
%% Dados para o sistema em malha fechada
%Parametros usados para o sistema desejado em malha fechada
csi=0.5; %coeficiente de amortecimento
Wn=1.5; %frequencia natural
% Plos discretos desejados
pdes=exp(-csi*Wn*h + j*Wn*sqrt(1-csi^2)*h);
P=[pdes conj(pdes)];
% Funo de transferencia em malha fechada
Am=poly([pdes conj(pdes)]);
Bm1=[polyval(Am,1) 0];
% Sistema desejado em malha fechada discretizado
Gmd1=tf(Bm1,Am,h);
% Parmetros da planta desejada em malha fechada em forma de vetor
[Bmd,Amd]=tfdata(Gmd1,'v');
%% Parametros para o encontrar o controlador
b0=Bd(2);
b1=Bd(3);
a1=Ad(2);
a2=Ad(3);
bm0=Bmd(2);
am1=Amd(2);
am2=Amd(3);
a0=0;
%% Beta
beta=(1+am1+am2)/(b0+b1);
%% Minha nova FT desejada em MF
Am=poly([pdes conj(pdes)]);

Bm2=[beta*b0 beta*b1];
Gmd2=tf(Bm2,Am,h);
[Bmd2,Amd2]=tfdata(Gmd2,'v');
%% Valor de Entrada para a Onda Quadrada (uc);
N=input(' Entre com o numero de Interaes?:');
%% Sinal de entrada Onda Quadrada;
j=0;
while j<N
for j=j+1:j+25
uc(j)=1;
end
for j=j+1:j+25
uc(j)=-1;
end
end
%% Condies iniciais necessrios para o MQR
% Nmero de realizaes
N = length(uc);
lambda = 0.98;%Fator de esquecimento
P0 = diag([100 100 1 1]); % Inicializar a matriz de covarincia
Teta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parmetros Teta
estimado
fi0=[0 0 0 0]';
yest=[0 0 0]';
diagP=diag(P0)';
%Nmero de parametros a serem estimados
Teta=[Teta0 Teta0 Teta0];
fi=[fi0 fi0 fi0];
%Comportamento da matriz de covariancia
diagP=[diagP; diagP; diagP];
P=P0;
cont=0*Teta;
y=0*yest;
u=0*yest;
erro=0*yest;
for k = 3:N
%% MQR
%Calcula a sada atual
y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Sada da planta
%Atualiza fi
fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]';
%Calcula o erro de estimao
erro(k)=y(k)-fi(:,k-1)'*Teta(:,k-1);
%Calcula o vetor de ganhos
K=P*fi(:,k-1)/(lambda+fi(:,k-1)'*P*fi(:,k-1));
%Calcula o novo vetor de estimao de parmetros
Teta(:,k)=Teta(:,k-1)+K*erro(k);
%Atualiza a matriz de covarincia
P=(P-K*fi(:,k-1)'*P)/lambda;
diagP=[diagP; diag(P)'];
%Armazena parmetros
a1est = Teta(1,k);
a2est = Teta(2,k);

b0est = Teta(3,k);
b1est = Teta(4,k);
%% Valores dos polinmios R, S e T
r1=((a0*am2)*(b0est^2)+(a2est-am2-a0*am1)*(b1est*b0est)+(a0+am1a1est)*(b1est^2))/(b1est^2-b1est*b0est*a1est+a2est*(b0est^2));
s0=((b1est*(a0*am1-a2est-am1*a1est+(a1est^2)+am2a1est*a0))/((b1est^2)b1est*b0est*a1est+a2est*(b0est^2)))+((b0est*(am1*a2est-a1est*a2esta0*am2+a0*a2est))/((b1est^2)-b1est*b0est*a1est+a2est*(b0est^2)));
s1=((b1est*(a1est*a2est-am1*a2est+a0*am2-a0*a2est))/((b1est^2)b1est*b0est*a1est+a2est*(b0est^2)))+((b0est*(a2est*am2-(a2est^2)a0*am2*a1est+a0*a2est*am1))/((b1est^2)b1est*b0est*a1est+a2est*(b0est^2)));
t0 = (1+am1+am2)/(b0est+b1est);
% Armazena parmetros do controlador
cont(:,k)=[r1 s0 s1 t0]';
%% Clculo da lei de controle
% Sinal de controle
u(k)=-r1*u(k-1)+t0*uc(k)-s0*y(k)-s1*y(k-1);
% Limite do sinal de controle
if u(k)>=4,
u(k)=4;
elseif u(k)<=-4,
u(k)=-4;
end
end
%% Sinais de Entrada e Saida do Processo;
figure(1)
subplot(211)
grid on
hold on
plot(uc,'k--')
%Subplot(312)
plot(y,'b')
legend('Sinal de referncia (uc)','Sinal de sada (y)')
xlabel('Amostras')
title('Sada e Referncia');
%xlim([0 100])
%% Sinal de Controle;
subplot(212)
stairs(u,'r')
grid on
legend('Sinal de controle (u)')
xlabel('Amostras')
title('Sinal de Controle');
%xlim([0 100])
%% Parmetros a1 e a2 do Processo real e estimados;
figure(2)
subplot(211)
hold on
stairs(Teta(1,:),'c')
a1=-1.6065*ones(1,N);
plot(a1,'k-.')
stairs(Teta(2,:),'b')

a2=0.6065*ones(1,N);
grid on
plot(a2,'k--')
legend('a1 estimado','a1 real','a2 estimado','a2 real')
xlabel('Amostras')
ylabel('Amplitude')
title('Parmetros a1 e a2 estimados');
%xlim([0 100])
%% Parmetros b0 e b1 do Processo real e estimados;
subplot(212)
hold on
stairs(Teta(3,:),'g')
b0=0.1065*ones(1,N);
plot(b0,'k-.')
stairs(Teta(4,:),'r')
b1=0.0902*ones(1,N);
grid on
plot(b1,'k--')
legend('b0 estimado','b0 real','b1 estimado','b1 real')
xlabel('Amostras')
ylabel('Amplitude')
title('Parmetros b0 e b1 estimados');
%xlim([0 100])
%% Parmetros do controlador r1, s0, s1 e t0
figure(3)
subplot(221)
hold on
stairs(cont(1,:),'y','LineWidth',2)
r1=0.1111*ones(1,N);
grid on
plot(r1,'k-.')
legend('r1 estimado','r1 real')
xlabel('Amostras')
title('Parmetro r1 do controlador');
subplot(222)
hold on
stairs(cont(2,:),'r','LineWidth',2)
a2=1.6422*ones(1,N);
grid on
plot(a2,'k-.')
legend('s0 estimado','s0 real')
xlabel('Amostras')
title('Parmetro s0 do controlador');
subplot(223)
hold on
stairs(cont(3,:),'b','LineWidth',2)
a3=-0.7471*ones(1,N);
grid on
plot(a3,'k-.')
legend('s1 estimado','s1 real')
xlabel('Amostras')
title('Parmetro s1 do controlador');
subplot(224)
hold on
stairs(cont(4,:),'g','LineWidth',2)
a4=0.8951*ones(1,N);
grid on
plot(a4,'k-.')
legend('t0 estimado','t0 real')

xlabel('Amostras')
title('Parmetro t0 do controlador');
//////////////////////////////////////////////////////////////////////
//////////////////////PROBLEMAS: 3.6/ 3.7/ 3.9/ 3.11//////////////////
%% STR indireto usando MQR e MDPP
% Astrom & Wittenmark, Exemplo 3.4, p.104
% Prof. Andr Ferreira - 29/01/2014
%MODIFICADO POR PEDRO JUNIOR
clear all
close all
clc
%% Definio da planta
%g=tf(1,[1 1 0]); % Planta analgica
g=tf(1,[1 2 1]); % Planta analgica do problema 3.11
Ts=0.5; % Intervalo de amostragem
gd=c2d(g,Ts); % Planta discretizada
% Parmetros da planta
[numd,dend]=tfdata(gd,'v');
b0=numd(2);
b1=numd(3);
a1=dend(2);
a2=dend(3);
%% Sistema em MF desejado
csi=0.7;
Wn=1;
% Plos discretos desejados
pdes=exp(-csi*Wn*Ts + j*Wn*sqrt(1-csi^2)*Ts);
Pdes=[pdes conj(pdes)];
% FT desejada em MF
Am=poly([pdes conj(pdes)]);
Bm=[polyval(Am,1) 0]; % Escolhido para ter ganho DC unitrio
gmd=tf(Bm,Am,Ts);
% Parmetros da planta desejada em MF
[nummd,denmd]=tfdata(gmd,'v');
bm0=nummd(2);
am1=denmd(2);
am2=denmd(3);
%Polinmio A0:
a0=0; %Este parmetro sugerido no prprio livro
A0=tf([1 a0],[1],0.5);
%% Vetor de Entrada
uc = [];
neg=-1*ones(1,25);
pos=ones(1,25);
for i = 1:3

- Onda Quadrada (u)

uc = [uc pos neg];


end
%% Condies iniciais necessrios para o MQR
N = length(uc); % Nmero de realizaes (medidas)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
%lambda = 1;
%lambda = 0.85;
lambda = 0.65;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
%P0 = diag([200 200 2 2]); % Inicializar a matriz de covarincia *****
P0 = diag([100 100 1 1]); % Inicializar a matriz de covarincia *****
%P0 = diag([50 50 0.5 0.5]); % Inicializar a matriz de covarincia
*****
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
Teta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parmetros Teta
estimado *****
%Teta0 = [0 0 0.1 2]'; % Inicializar o vetor de parmetros Teta
estimado *****
%Teta0 = [0 0 1 20]'; % Inicializar o vetor de parmetros Teta
estimado *****
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
fi0=[0 0 0 0]';
yest=[0 0 0]';
diagP=diag(P0)';
Teta=[Teta0 Teta0 Teta0];
fi=[fi0 fi0 fi0];
diagP=[diagP; diagP; diagP];
P=P0;
cont=0*Teta;
y=0*yest;
u=0*yest;
erro=0*yest;
for k = 4:N
%% MQR
% ----- Calcula a sada atual
y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Sada da
planta
% y(k)= -a1*y(k-2)-a2*y(k-3)+b0*u(k-1)+b1*u(k-2);
% ----- Atualiza Fi
fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]';
% ----- Calcula o erro de estimao
erro(k)=y(k)-fi(:,k-1)'*Teta(:,k-1);
% ----- Calcula o vetor de ganhos
K=P*fi(:,k-1)/(lambda+fi(:,k-1)'*P*fi(:,k-1));
% ----- Calcula o novo vetor de estimao de parmetros
Teta(:,k)=Teta(:,k-1)+K*erro(k);
% ----- Atualiza a matriz de covarincia
P=(P-K*fi(:,k-1)'*P)/lambda;

diagP=[diagP; diag(P)'];
% ----- Armazena parmetros
a1est = Teta(1,k);
a2est = Teta(2,k);
b0est = Teta(3,k);
b1est = Teta(4,k);

%Operador de Transferncia:
%am1=Amq(2);
%am2=Amq(3);
beta=((1+am1+am2)/(b0est+b1est));
bm0=beta*b0est;
bm1=beta*b1est;
Hmq=tf([bm0 bm1],[1 am1 am2],0.5);
%% PASSO 2 - valores dos polinmios R, S e T
%
%
%
%
%

r1 = b1est/b0est;
s0 = (am1-a1est)/b0est;
s1 = (am2-a2est)/b0est;
t0 = bm0/b0est;
cont(:,k)=[r1 s0 s1 t0]';

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%Coeficientes r1, s1 e s0:
r1=((a0*am2*(b0est*b0est))+((a2est-am2-a0*am1)*(b1est*b0))+((a0+am1a1est)*(b1est*b1est)))/((b1est*b1est)(b1est*b0est*a1est)+(a2est*(b0est*b0est)));
s1=((a0*am2)-(a2est*r1))/(b1est);
s0=((am1+a0)-(r1+a1est))/(b0est);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Polinmios R, S e T:
R=tf([1 r1],1,0.5);
S=tf([s0 s1],1,0.5);
t0= beta*1;
t1= beta*a0;
T=tf([t0 t1],1,0.5);
cont(:,k)=[r1 s0 s1 t0]';
%
%Polinmios R, S e T:
%R= tf([1 b1/b0],1,0.5); %tf([1 r1],1,0.5);
%S=tf([s0 s1],1,0.5);
%t0= beta*1;
%t1= beta*a0;
%T= tf([(bm0/b0) 0],1,0.5); %tf([t0 t1],1,0.5);

%% PASSO 3 - clculo da lei de controle


u(k)=-r1*u(k-1) +t0*uc(k) -s0*y(k) -s1*y(k-1); % Sinal de controle
% Limite do sinal de controle
if u(k)>=4,
u(k)=4;
elseif u(k)<=-4,

u(k)=-4;
end
end
subplot(221)
hold on
plot(uc,'r--')
plot(y,'b')
legend('uc','y')
xlabel('Amostras')
title('Sada e Referncia');
subplot(223)
stairs(u,'b')
legend('u')
xlabel('Amostras')
title('Sinal de Controle');
subplot(224)
stairs(cont')
legend('r1','s0','s1','t0')
xlabel('Amostras')
title('Parmetros do Controlador');
subplot(222)
stairs(Teta')
legend('a1','a2','b0','b1')
xlabel('Amostras')
title('Parmetros Estimados');
hold off

Você também pode gostar