Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

45
CONTROLE ADAPTATIVO RESOLUÇÃO DOS EXEMPLOS E PROBLEMAS DO CAPÍTULO 3 ALUNO: Pedro Barata Piquia Junior - 2010310025 PROF. : Dr. André Maurício Damasceno Ferreira ABRIL 2016

Transcript of Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Page 1: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

CONTROLE ADAPTATIVO

RESOLUÇÃO DOS EXEMPLOS E PROBLEMAS

DO CAPÍTULO 3

ALUNO: Pedro Barata Piquia Junior - 2010310025

PROF. : Dr. André Maurício Damasceno Ferreira

ABRIL 2016

Page 2: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

EXEMPLO 3.1 MODEL-FOLLOWING COM CANCELAMENTO DE ZEROS

Dado o sistema em tempo continuo:

𝑦 +𝑦 = u,

Sua função discreta com período de amostragem h = 0.5 seg é

G(z) = 𝑏1𝑧+𝑏0

𝑧²+𝑎1𝑧+𝑎2 =

0.10653 (𝑧+0.8467)

𝑧−1 (𝑧−0.6065)

O desafio é sintetizar um controlador com 2 graus de liberdade cujo a função de

transferência desejado é

𝐵𝑚(𝑧)

𝐴𝑚 (𝑧) =

0.1761𝑧

𝑧²−1.3205𝑧−0.496

Isso é claro que os polinômios B(z) e A(z) para

𝐵(𝑧)

𝐴(𝑧) =

𝑏0𝑧+𝑏1

𝑧²+𝑎1𝑧−𝑎2 =

0.10653 (𝑧+0.8467)

𝑧−1 (𝑧−0.6065)

São 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 solução R’ e S com degS>degA de

AR’ + B-S = A0Am

A equação de Diophantina é então

A(z)(B + z )Rp(z) 𝑅(𝑧)

+ B + z (B − z ) 𝐵(𝑧)

S(z) = B+(z)A0(z)Am(z)

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

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

A equação reduzida de Diophantina é então

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:

Page 3: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

a1 + b0s0 = am1

a2+b0s1=am2

essas equações podem ser resolvidas se b0 ≠ 0. A solução é

s0 = 𝑎𝑚1−𝑎1

𝑏0 =

−1.3205 +1.607

0.10653 = 2.6852

s1 = 𝑎𝑚2−𝑎2

𝑏0 =

−0.4966+0.6065

0.10653 = 1.0321

O problema do model-following para esse caso é resolvível.

PASSO 3: computar o sinal de controle para a seguinte lei de controle:

Ru = Tuc - Sy

Os polinômios R(z), S(z) e T(z) são

R(z) = B+ = z +

𝑏1

𝑏0 = z + 0.8467

S(z) = s0z + s1 = 2.6852z – 1.0321

T(z) = A0B’m = 𝑏𝑚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 função discreta com período de amostragem h = 0.5 seg é

G(z) = 𝑏0𝑧+𝑏1

𝑧²+𝑎1𝑧+𝑎2 =

0.10653 (𝑧+0.8467)

𝑧−1 (𝑧−0.6065)

O desafio é sintetizar um controlador com 2 graus de liberdade cuja a função de

transferência desejada seja:

𝑏𝑚0𝑧+𝑏𝑚1

𝑧²+𝑎𝑚1𝑧+𝑎𝑚2=

𝐵𝑚 (𝑧)

𝐴𝑚 (𝑧) =

𝛽(𝑧+0.8467)

𝑧²−1.3205𝑧−0.496

Com

β =𝐴𝑚 (1)

𝐵𝑚 (1) =

1+𝑎𝑚1+𝑎𝑚2

𝑏0+𝑏1= Bmp(z)

β =1−1.3205−0.496

0.10653 +0.0902 = - 4.15

Cujo o ganho em regime permanente é unitário. A equação de diophantina se torna:

Page 4: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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

Colocando z =−𝑏1

𝑏0= - 0.8467 e resolvendo para r1, obtemos:

r1 = 𝑏1

𝑏0 +

𝑏21+𝑎𝑚1𝑏0𝑏1+𝑎𝑚2𝑏20 (−𝑏1+𝑎0𝑏0)

𝑏0(𝑏21−𝑎1𝑏0𝑏1+𝑎2𝑏20)=

𝑎0𝑎𝑚2𝑏²0+ 𝑎2−𝑎𝑚2−𝑎0𝑎𝑚1 𝑏0𝑏1+ 𝑎0+𝑎𝑚1−𝑎1 ∗𝑏²1

𝑏21−𝑎1𝑏0𝑏1+𝑎2𝑏20 =

𝑎0 −0.496 ∗0.10653 ²+ −0.6065+0.496−𝑎0∗(−1.3205 ) ∗0.10653∗0.0902+ 𝑎0−1.3205 +1.607 ∗0.09022

0.09022+1.607∗0.10653∗0.0902−0.6065∗0.10653 ²

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

O parâmetro 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+ 1−1.3205 +1.607 ∗0.09022

0.09022+1.607∗0.10653∗0.0902−0.6065∗0.10653 ²

r1 = 0,975

Perceba que o denominador é zero se os polinômios A(z) e B(z) tem um fator

comum, equacionando os coeficientes dos termos z² e z0 na equação diophantina temos:

s0= 𝑏1(𝑎0𝑎𝑚1−𝑎2−𝑎𝑚1𝑎1+𝑎21+𝑎𝑚2−𝑎1𝑎0)

𝑏²1−𝑎1𝑏0𝑏1+𝑎2𝑏²0 +

𝑏0(𝑎𝑚1𝑎2−𝑎1𝑎2−𝑎0𝑎𝑚2+𝑎0𝑎2)

𝑏²1−𝑎1𝑏0𝑏1+𝑎2𝑏²0

s0= 0.0902∗(−1.3205+0.6065− −1.3205∗1.607 +1.6072−0.4966−1.607)

0.0902²− −1.607∗0.10653∗0.0902 +(−0.6065∗0.10653 2)

+ 0.10653∗ −1.3205∗ −0.6065 − 1.607∗0.6065 − −0.4966 +(−0.6065 ))

0.0902²− −1.607∗0.10653∗0.0902 +(−0.6065∗0.10653 2)

S0= 11,72

s1= 𝑏1(𝑎1𝑎2−𝑎𝑚1𝑎2+𝑎0𝑎𝑚2−𝑎0𝑎2)

𝑏²1−𝑎1𝑏0𝑏1+𝑎2𝑏²0 +

𝑏0(𝑎𝑚2𝑎2− 𝑎²2−𝑎0𝑎𝑚2𝑎1+𝑎0𝑎2𝑎𝑚1)

𝑏²1−𝑎1𝑏0𝑏1+𝑎2𝑏²0

s1 =

0.0902∗(1.607∗0.6065−(1.3205∗0.6065)−0.4966+0.6065)

0.0902²− −1.607∗0.10653∗0.0902 +(−0.6065∗0.10653 2)

0.10653∗(0.4966∗0.6065−0.6065 2−0.4966∗1.607+0.6065∗1.3205)

0.0902²− −1.607∗0.10653∗0.0902 +(−0.6065∗0.10653 2)

s1= 1,1259

além 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)

Page 5: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

EXEMPLO 3.3 SISTEMA EM TEMPO CONTÍNUO

O processo discutido nos exemplos 3.1 e 3.2 têm a seguinte função de transferência

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

mínimo é de primeira ordem. O polinômio 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 função de transferência desejada é:

Bm (s)

Am (s) =

ω²

s²+2ζωs+ω

Usando os valores informados no exemplo 3.1:

ω = 1rad/s

ζ = 0.7

então:

Bm (s)

Am (s) =

1

s²+1.4s+1

A equação de diophantina se torna:

A(s)Rp(s) + B-(s)S(s) = Am(s)

s(s+a)*(s + r1) + b(s0s+s1) = (s²+ 2ζωs +ω²)(s+a0) = (𝑠² + 1.4𝑠 + 1)(s+1)

Equacionando os coeficientes de potências iguais obtivemos a seguinte equação:

a+r1 = 2ζω + a0

1+ r1 = 1.4 + 1

r1 = 1.4

ar1 + bs0 = ω² + 2ζωa0

r1 + s0 = 2.14

Page 6: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

s0 = 2.4 – 1.4

s0 = 1

bs1 = ω²a0

s1 = 1

As equações acima são possíveis de resolver se a variável b ≠ 0. Além disso, temos

B+ = 1, B

- = b = 1, e B’m = ω²/b = 1, logo:

R(s) = B+

= 1

S(s) = s0s + s1 = s + 1

T(s) = B’m(s)A0(s) = ω²

𝑏(s+ a0) = s + 1

1+𝑎𝑚1+𝑎𝑚2

𝑏0+𝑏1= Bmp(z) =

1−1.3205−0.496

0.10653 +0.0902 = - 4.15

s0 = 𝑎𝑚1−𝑎1

𝑏0 =

−1.3205 +1.607

0.10653 = 2.6852

s1 = 𝑎𝑚2−𝑎2

𝑏0 =

−0.4966+0.6065

0.10653 = 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 função discreta com período de amostragem h = 0.5 seg é

G(z) = 𝑏1𝑧+𝑏0

𝑧²+𝑎1𝑧+𝑎2 =

0.10653 (𝑧+0.8467)

𝑧−1 (𝑧−0.6065)

Consideraremos o sinal de entrada ucéuma onda quadrada

O parâmetro da planta será mostrado a seguir:

b0 = 0.1065

b1 = 0.0902

a1 = -1.6065

a2 = 0.6065

Page 7: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

com os parâmetros determinados no exemplo 3.1 temos

ωn = 1rad/s (freqüência natural)

ζ = 0.7 (amortecimento)

O desafio é sintetizar um controlador com 2 graus de liberdade cujo a função de

transferência desejado é

𝐵𝑚(𝑧)

𝐴𝑚 (𝑧) =

0.1761𝑧

𝑧²−1.3205𝑧−0.496

A partir dos dados de amortecimento e freqüência natural determinados pelo exemplo

podemos obter os pólos desejados da planta da seguinte maneira:

Poldes = 𝑒^(-ζωnh+jωn 1 − ζ ∗ ℎ)

-ζωnh+jωn 1 − ζ ∗ ℎ = -0.5+j0.2739

Poldes = 𝑒^(-0.5+j0.2739)

Através de manipulações matemáticas 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 método dos mínimos quadrados para

a auto regulação, os parâmetros iniciais são:

fator de esquecimento (λ) = 0.65

obs: este valor do fator de esquecimento foi definido pois os parâmetros do controlador

encontrados na simulação são os mesmos dos valores reais

P(0) = 100 0 0

0 100 0 0 0

0 0 1 0 0 0

01

___________________________________

Page 8: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

θ(0) = 0 0 0 0 0 0

0 0

0.01 0.01 0.010.2 0.2 0.2

0.010.2

____________________________________

φ(0)= 0 0 00 0 0

00

0 0 00 0 0

00

𝑦 (0) = 000𝑦(0) =

000𝑢(0) =

000

Cálculo do MQR

A saída 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 estimação de parâmetros

Teta(k)=Teta(k-1)+K*e(k);

A partir desses dados se atualiza a matriz de covariância

P=(P-K* φ (k-1)'*P)/λ

A próxima etapa é armazenar os parâmetros atualizados

Teta(k) = [ a1atualizado a2atualizado b0atualizado b1atualizado]’

PASSO 2: aplicar o método de alocação de pólos e grau mínimo dado pelo algoritmo

3.1 onde os polinômios A e B são os estimadores obtidos no passo 1. Os polinômios R,S

e T do controlador então são obtidos:

Page 9: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

1)Cálculo dos parâmetros r1, s0, s1 e t0

r1 = b1atualizado/b0atualizado

s0 = (am1 – a1atualizado)/ b0atualizado

s1 = (am2 – a2atualizado)/b0atualizado

t0 = bm0/b0atualizado

2) Cálculo dos polinômios R, S e T

R = 𝑧+(

𝑏1𝑎𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑑𝑜

𝑏0𝑎𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑑𝑜)

1

S = 𝑠0𝑧+𝑠1)

1

T = (

𝑏𝑚 0

𝑏0𝑎𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑑𝑜)𝑧

1

PASSO 3: calcular a variável 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 são os mesmos dos valores reais.

Page 10: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

EXEMPLO 3.5 AUTOREGULADOR INDIRETO SEM CANCELAMENTO DO

ZERO

Dado o sistema em tempo continuo utilizado no exemplo 3.1:

𝑦 +𝑦 = u,

G(s) = 𝑏

𝑠(𝑠+𝑎)

Sua função discreta com período de amostragem h = 0.5 seg é

G(z) = 𝑏1𝑧+𝑏0

𝑧²+𝑎1𝑧+𝑎2 =

0.10653 (𝑧+0.8467)

𝑧−1 (𝑧−0.6065)

Consideraremos o sinal de entrada ucé uma onda quadrada

O parâmetro da planta será mostrado a seguir:

b0 = 0.1065

b1 = 0.0902

a1 = -1.6065

a2 = 0.6065

com os parâmetros determinados no exemplo 3.1 temos

ωn = 1rad/s (freqüência natural)

ζ = 0.7 (amortecimento)

O desafio é sintetizar um controlador com 2 graus de liberdade cujo a função de

transferência desejado é

𝑏𝑚 0𝑧+𝑏𝑚1

𝑧²+𝑎𝑚1𝑧+𝑎𝑚2=

𝐵𝑚 (𝑧)

𝐴𝑚 (𝑧) =

𝛽(𝑧+0.8467)

𝑧²−1.3205𝑧−0.496=

0.1761𝑧

𝑧²−1.3205𝑧−0.496

Com

β =𝐴𝑚 (1)

𝐵𝑚 (1) =

1+𝑎𝑚1+𝑎𝑚2

𝑏0+𝑏1= Bmp(z) = 0.8951

A partir dos dados de amortecimento e freqüência natural determinados pelo exemplo

podemos obter os pólos desejados da planta da seguinte maneira:

Poldes = 𝑒^(-ζωnh+jωn 1 − ζ ∗ ℎ)

-ζωnh+jωn 1 − ζ ∗ ℎ = -0.5+j0.2739

Page 11: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Poldes = 𝑒^(-0.5+j0.2739)

Através de manipulações matemáticas confirmaremos esses valores

am = z² - 1.3205z + 0.496

am1 = -1.3205

am2 = 0.496

bm= 0.1761z = b0

desde que os parâmetros amostrados da planta possam depender tanto dos parâmetros

contínuos conhecidos e desconhecidos, procederemos como se todos os parâmetros

fossem desconhecidos. Precisamos de um modelo de regressão linear para os

parâmetros 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 condição 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 mínimo é obtido pela escolha

dos menores graus possíveis no desenvolvimento do polinômio, então obtemos degAc = 3 e

degR = degS = 1. A equação de Diophantina para o problema é

(z2 + a1z+ a2)(z+ r1) + (b0z+ b1)(s0z+ s1) = (z

2 + am1z+ am2)(z + ao1)

A identificação dos coeficientes de potências iguais para Z é:

z2 : a1+ r1+ b0s0= am1+ ao1

z1 : a2+ a1r1+ b1s0+ b0s1= am1ao1+ am2

z0 : a2r1+ b1s1= am2ao1

PASSO 2: a solução da equação linear é

r1 = 𝑎0𝑎𝑚2𝑏²0+ 𝑎2−𝑎𝑚2−𝑎0𝑎𝑚1 𝑏0𝑏1+ 𝑎0+𝑎𝑚1−𝑎1 ∗𝑏²1

𝑏21−𝑎1𝑏0𝑏1+𝑎2𝑏20

s0 = 𝑎𝑚1+𝑎0−(𝑟1+𝑎1)

𝑏0

s1 = 𝑎0𝑎𝑚2−𝑎2𝑟1

𝑏1

PASSO 3: encontrados os coeficientes, é possível determinar os polinômios da equação

diophantina:

R(z) = z + r1 (R é mônico de primeira ordem)

Page 12: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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

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

O parâmetro a0 teve seu valor igual a 1, sendo assim temos:

T = βA0(z) = β(z + a0)

A seguir veremos a simulação deste exemplo:

Os valores dos parametros encontrados são:

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 parâmetros são os mesmos dos valores reais.

Obs: nesta simulação 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 equação 3.29 no

algoritmo 3.3 então temos T = qAm(1). A estrutura do controlador é dada por

degR=degS = degA-1 = 1. O modelo dado pela equação 3.27 portanto se torna:

y(t) = r0uf(t-1) + r1uf(t-2) + s0yf(t-1) + s1yf(t-2)

Page 13: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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 aplicação do algoritmo 3.3.

Os modelos do parâmetros dados pela equação (3.30) são 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 𝑠 1são os estimadores obtidos e 𝑡 0 é dado pela equação 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 saída na simulação do algoritmo

direto e a figura seguinte mostra os parâmetros estimados. O transitório inicial depende

fortemente das condições iniciais. Em t = 150 os parâmetros do controlador são:

Page 14: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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 parâmetros do controlador são divididos por 𝑟 0 para fazer uma comparação direta

com os exemplos 3.1 e 3.3. os valores corretos são dados em parênteses. O limite da lei

de controle é o mesmo em ambos os casos, existe uma “oscilação” no sinal de controle

por causa do cancelamento do processo zero.

Num caso prático o tempo de atraso e a ordem do processo que gostaríamos de controlar

são desconhecidos. Portanto é natural considerar essas variáveis como parâmetros

desenvolvidos que são escolhidos pelo usuário. O parâmetro d0 é de importância

particular para um algoritmo direto. O próximo exemplo mostrará que a “oscilação”

pode ser evitado simplesmente pelo aumento do valor de d0.

EXEMPLO 3.8 AUTOREGULADOR DIRETO COM d0 = 2

Na derivação do algoritmo direto o parâmetro d0 foi o pólo em excesso da planta.

Assuma por um momento que não sabemos o valor de d0 e isso trataremos como um

parâmetro desenvolvido no lugar. A figura abaixo mostra uma simulação do algoritmo

direto usado no exemplo 3.7 mas com d0 = 2 no lugar de d0 =1.

Todos os outros parâmetros são os mesmos. Perceba que o comportamento do sistema é

um pouco razoável sem qualquer “oscilação” no sinal de controle. A figura abaixo

mostra os parâmetros estimados. Os estimadores obtidos no tempo t = 100

correspondem aos parâmetros do controlador

Page 15: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

r1/r0(150) = -0.1643(0.8467) s0/r0(150) = 1.21(2.6852)

s1/r0(150) = -0.5987(-1.0321) 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 parâmetro d0.

EXEMPLO 3.9 EFEITOS DO DISTURBIO NA LEITURA

Consideremos o sistema no exemplo 3.5 que é, um regulador de auto sintonização

indireta sem cancelamento de zero. Será feita uma simulação que é idêntica para o

mostrado no exemplo 3.6 exceto que o distúrbio 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 condições

são as mesmas para a escolhida no exemplo 3.5. o comportamento do sistema é

mostrado abaixo, comparando com outros exemplos percebemos que o efeito do

distúrbio na leitura pode ser desastroso. Isso segue da discussão no exemplo 3.5 que o

valor correto de regime permanente vai sempre ser alcançado ao passo que os steps são

suficientes grandes.

Page 16: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Perceba que a resposta é grandemente assimétrica. O motivo para isso é que os

parâmetros mudam rapidamente quando o sinal do controlador muda; rápidas mudanças

dos estimadores para o sinal de comando indica que a estrutura do modelo que não é

correta. Os parâmetros dos estimadores também mudam significativamente no passo do

distúrbio da leitura. Quando o sinal de comando é constante, os parâmetros aparecem se

acomodar num valor constante são próximos dos verdadeiros parâmetros.

EXEMPLO 3.10 DISTURBIO NA LEITURA: CONTROLADORES E

ESTIMADORES MODIFICADOS

Mostraremos agora as dificuldades encontradas no exemplo 3.9 podem ser evitadas pela

modificação dos estimadores e controladores. Primeiro introduzimos um controlador

que tem uma ação integral pela aplicação do desenvolvimento do projeto que foi

mostrado abaixo:

Page 17: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Para fazer isso, consideraremos o mesmo sistema como no exemplo 3.5 onde o

controlador foi definido como:

R0= q + r1S

0= s0q + s1

opolinômio característico em malha fechada Ac tem grau 3. Para obter um controlador

com ação integral, a ordem em malha fechada do sistema é aumentada pela introdução

de um extra polo em malha fechada em z = -x0 = 0. Isso segue então da equação 3.41 do

livro que

𝑦0 = −1 − 𝑟1

𝑏0 + 𝑏1

Desde que X = z e Y = y0, as equações 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 são baseados no modelo 3.42 do livro com Ad = z-1 para reduzir os

efeitos dos distúrbios. Os distúrbios na leitura reduzem rapidamente pois a ação integral

do controlador vai diminuir com a magnitude correspondente para o distúrbio curto

depois de t = 40. Os parâmetros estimados são mostrado abaixo, cujo indica vantagem

no uso do estimador modificado. Perceba em particular que existem uma pequena

mudança nos estimadores quando o distúrbio na leitura acontece.

Page 18: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

PROBLEMAS

3.1 uma amostra de um modelo de um processo em tempo continuo com h = 1 a

seguinte função pulso de transferência é obtida

𝐻(𝑧) =𝑧 + 1.2

𝑧² − 𝑧 + 0.25

A especificação do projeto de estado que os pólos em malha fechada em tempo discreto

deveriam corresponder para a seguinte característica polinomial:

S² + 2s + 1

(a)projete um regulador auto ajustável indireto de ordem mínima em tempo discreto. O

controlador deve ter uma ação integral e dar um sistema em malha fechada tendo um

ganho unitário em regime permanente. Determine a equação de diophantina para

resolver o problema do projeto.

RESPOSTA

Especificações do projeto: o sistema em malha fechada teria um pólo que

corresponderia a seguinte característica polinomial em tempo continuo

S² + 2s + 1 = (s+1)²

Isso corresponde a

Page 19: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Am(z) = z²+am1z + am2

Com

𝑎𝑚1 = − 𝑒−1 + 𝑒−1 = −2𝑒−1

𝑎𝑚2 = 𝑒−2

A escolha de Bm seria então: 𝐵𝑚(1)

𝐴𝑚 (1) = 1

A condição de integrador dá

R = R(z-1)

A partir disso temos a seguinte condições:

(1) BT = BmA0

(2) AR + BS = AmA0

Como B é instável devemos ter Bm = BB’m. isso faz (1) ↔ BT = BB’mA0 ↔ T = BmA0.

Escolhido Bm temos que:

𝐵(1)𝐵𝑚(1)

𝐴(1) = 1 → B’m(1) =

𝐴(1)

𝐵(1)

O jeito mais simples de escolher é

B’m = b’m = 𝐴(1)

𝐵(1) =

0.25

2.2

Alem do mais, temos

(z2

+ a1z + a2)(z−1)(z + r) + (b0z + b1)(s0z2 + s1z + s2)= (z

2 + am1z + am2)(z

2 + ao1z + ao2)

Com a1 = -1, a2 = 0.25 e a01 e a02 escolhidos de um jeito que A0 é estável.

Equacionando os coeficientes temos:

r −1 + a1 + b0s0 = ao1 + am1

−r + a1(r−1) + a2 + b0s1 + b1s0 = ao2 + am1ao1 + am2

−ar + a2(r−1) + b0s2 + b1s1 = am1ao2 + am2ao1

−a2r + b1s2 = am2ao2

Agora escolhemos os estimadores

θ = ( b0 b1 a1 a2 )T

pela equação 3.22 do livro

(b) sugira um projeto que inclua uma estimação direta dos parâmetros do controlador.

Diga porque uma regulação auto ajustável direta bem feita é mais difícil para projetar

para esse projeto do que um regulador auto ajustável indireto.

Page 20: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

RESPOSTA

Como H(z) não é fase mínima cancelaremos B- = B entre 𝑅 e 𝑆 . Um STR indireto é

dado pela equação 3.24

A0Amym = 𝑅 u + 𝑆 y

Com

𝑅 = B-R, 𝑆 = B

-S, T = B’mA0.

Além do mais temos

A0Amym = A0Bmuc = A0BB’muc = BTuc = 𝑇 uc

y = 𝑅 1

𝐴0𝐴𝑚u + 𝑆

1

𝐴0𝐴𝑚y

ym = 𝑇 1

𝐴0𝐴𝑚uc

Ɛ = y – ym = 𝑅 uf + 𝑆 yf - 𝑇 ucf

3.6 Considere a simulação do regulador de auto sintonização indireta usado no exemplo

3.5. investigue como o comportamento do transiente do algoritmo depende do valor

inicial de teta, da matriz de covariância e o fator de esquecimento.

RESPOSTA

Para resolução deste problema usaremos 3 valores distintos para cada variável

mencionada no enunciado, os valores são:

λ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 influência de lambda

Page 21: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Para lambda = 1

Para lambda = 0.85

Para lambda = 0.65

Podemos perceber que, quanto menor o fator de esquecimento a pertubação do

transitório inicial diminui fazendo com que o sobressinal negativo diminua a medida

que o lambda diminui também.

Page 22: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

vamos agora analisar a influência da matriz de covariância (considerando lambda = 1).

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

Para covariância = diag([100 100 1 1])

Para covariância = 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 referência aumentando o valor do

erro de regime permanente.

Page 23: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

vamos agora analisar a influência 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 possível, pois a mínima variação pode causar a

instabilidade no sistema.

Page 24: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

3.7 considere o regulador auto sintonizador indireto no exemplo 3.5. faça uma

simulação ao longo dos períodos, e investigue como os parâmetros aproximam se dos

seus valores verdadeiros. Também explore como a faixa de convergência 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)

Page 25: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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)

Page 26: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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 diminuição dos valores do fator de esquecimento a

convergência dos parâmetros alcança os valores verdadeiros mais rápidos

3.9 considere o regulador auto ajustável no exemplo 3.5. modifique mude as

especificações do sistema em malha fechada, e investigue como o comportamento do

sistema muda.

Page 27: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

RESPOSTA

Foi considerado a seguinte função em malha fechada:

y(t)= -a1y(t-2)-a2y(t-3)+b0u(t-1)+b1u(t-2)

foi adicionado um delay a mais nas variáveis de saída do sistema (destacado de

vermelho) os parâmetros da entrada não foi alterado

Podemos analisar que na prática se a planta por algum motivo falhasse em fornecer a

informação do sistema isso poderia acarretar em sérios problemas, pois pode-se

observar que um simples delay na saída da planta já é o suficiente para levar a

instabilidade do sistema.

3.11 aplique o regulador auto ajustável indireto do exemplo 3.5 para o processo com a

função de transferência

𝐺(𝑠) =1

(𝑠 + 1)²

Estude e explique o comportamento do erro quando o sinal de referência é uma onda

quadrada.

RESPOSTA

Primeiro veremos como é o comportamento do sistema para a seguinte função de

transferência :

𝐺(𝑠) =1

𝑠² + 2𝑠

Page 28: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

Agora veremos o comportamento do sistema para a função de transferência sugerida

pelo enunciado:

Comparando as duas situações, podemos ver que o deslocamento do pólo no eixo zero

para a esquerda tem um efeito percebível na saída do sistema:

Nos momentos iniciais o sobressinal é reduzido consideravelmente em relação a função

de transferência original, isso se deve ao fato do pólo ter sido deslocado do eixo zero

para a esquerda, por outro lado, repare que o sinal de controle mantém um “esforço”

maior para tentar minimizar o erro, a partir de t =25 o erro em regime permanente é

igual em ambos os casos.

Page 29: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

ANEXOS

/////////////////EXEMPLO 3.4/////////////////////////////// %% 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

%% Definição da planta planta=tf(1,[1 1 0]); % Planta analógica

Ts=0.5; % Intervalo de amostragem planta_discretizada=c2d(planta,Ts); % Planta discretizada

% Parâmetros 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;

% Pólos 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 unitário

func_desej_disc=tf(Bm,Am,Ts);

% Parâmetros da planta desejada em MF [nummd,denmd]=tfdata(func_desej_disc,'v'); bm0=nummd(2); am1=denmd(2); am2=denmd(3);

%% Vetor de Entrada - Onda Quadrada (u) uc = []; neg=-1*ones(1,25); pos=ones(1,25);

for i = 1:3 uc = [uc pos neg]; end

%% Condições iniciais necessários para o MQR

N = length(uc); % Número de realizações (medidas) lambda = 0.65; %pulo do gato - valor escolhido por tentativa e erro

Page 30: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

covP0 = diag([100 100 1 1]); % Inicializar a matriz de covariância

***** Theta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parâmetros 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 saída atual y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Saída da

planta % ----- Atualiza Fi fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]'; % ----- Calcula o erro de estimação 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 estimação de parâmetros Theta(:,k)=Theta(:,k-1)+K*erro(k); % ----- Atualiza a matriz de covariância P=(P-K*fi(:,k-1)'*P)/lambda; diagP=[diagP; diag(P)']; % ----- Armazena parâmetros a1est = Theta(1,k); a2est = Theta(2,k); b0est = Theta(3,k); b1est = Theta(4,k);

%% PASSO 2 - valores dos polinômios R, S e T

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

%Polinômios R, S e T: R= tf([1 b1est/b0est],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/b0est) 0],1,0.5); %tf([t0 t1],1,0.5);

cont(:,k)=[r1 s0 s1 t0]';

Page 31: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

%% PASSO 3 - cálculo 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('Saída e Referência');

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('Parâmetros do Controlador');

subplot(222) stairs(Theta') legend('a1','a2','b0','b1') xlabel('Amostras') title('Parâmetros 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

%% Definição da planta g=tf(1,[1 1 0]); % Planta analógica

Ts=0.5; % Intervalo de amostragem gd=c2d(g,Ts); % Planta discretizada

Page 32: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

% Parâmetros 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;

% Pólos 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 unitário

gmd=tf(Bm,Am,Ts);

% Parâmetros da planta desejada em MF [nummd,denmd]=tfdata(gmd,'v'); bm0=nummd(2); am1=denmd(2); am2=denmd(3);

%Polinômio A0: a0=0; %Este parâmetro é sugerido no próprio livro A0=tf([1 a0],[1],0.5);

%% Vetor de Entrada - Onda Quadrada (u) uc = []; neg=-1*ones(1,25); pos=ones(1,25);

for i = 1:3 uc = [uc pos neg]; end

%% Condições iniciais necessários para o MQR

N = length(uc); % Número de realizações (medidas) lambda = 0.65; %pulo do gato (^-^) P0 = diag([100 100 1 1]); % Inicializar a matriz de covariância ***** Teta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parâmetros 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;

Page 33: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

y=0*yest; u=0*yest; erro=0*yest;

for k = 4:N

%% MQR

% ----- Calcula a saída atual y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Saída da

planta % ----- Atualiza Fi fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]'; % ----- Calcula o erro de estimação 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 estimação de parâmetros Teta(:,k)=Teta(:,k-1)+K*erro(k); % ----- Atualiza a matriz de covariância P=(P-K*fi(:,k-1)'*P)/lambda; diagP=[diagP; diag(P)']; % ----- Armazena parâmetros a1est = Teta(1,k); a2est = Teta(2,k); b0est = Teta(3,k); b1est = Teta(4,k);

%Operador de Transferência: %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 polinômios 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+am1-

a1est)*(b1est*b1est)))/((b1est*b1est)-

(b1est*b0est*a1est)+(a2est*(b0est*b0est))); s1=((a0*am2)-(a2est*r1))/(b1est); s0=((am1+a0)-(r1+a1est))/(b0est); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Polinômios 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);

Page 34: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

cont(:,k)=[r1 s0 s1 t0]'; % %Polinômios 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 - cálculo 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('Saída e Referência');

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('Parâmetros do Controlador');

subplot(222) stairs(Teta') legend('a1','a2','b0','b1') xlabel('Amostras') title('Parâmetros Estimados'); hold off

///////////////////////////////////////////////////////////

///////////EXEMPLO 3.7 & 3.8//////////////////////////////

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

Page 35: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

%% Função de transferencia G=tf(1,[1 1 0]);

%Tempo de amostragem h=0.5;

%Função 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;

% Pólos 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);

% Parâmetros 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 Interações?:'); %% 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

%% Condições iniciais necessários para o MQR

N = length(uc); % Número de realizações (medidas) lambda = 1; P0 = 100*eye(4); % Inicializar a matriz de covariância ***** Teta0 = [0.1 0 0 0]'; % Inicializar o vetor de parâmetros Teta

estimado ***** fi0=[0 0 0 0]';

Page 36: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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 saída atual y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Saída 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 estimação 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 estimação de parâmetros Teta(:,k)=Teta(:,k-1)+K*erro(k); % ----- Atualiza a matriz de covariância P=(P-K*fi(:,k-d0)'*P)/lambda; diagP=[diagP; diag(P)']; % ----- Armazena parâmetros r0 = Teta(1,k); r1 = Teta(2,k); s0 = Teta(3,k); s1 = Teta(4,k); t0 = 1 + am1 + am2; % constante

%% PASSO 2 - Guarda parâmetros normalizados por ro

cont(:,k)=[r1/r0 s0/r0 s1/r0 t0/r0];

%% PASSO 3 - cálculo da lei de controle e da entrada e saída 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;

Page 37: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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 referência (uc)','Sinal de saída (y)') xlabel('Amostras') title('Saída e Referência'); %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])

%% Parâmetros 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('Parâmetro 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('Parâmetro 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('Parâmetro s1/r0 estimado'); subplot(224) hold on grid on stairs(cont(4,:),'g','LineWidth',2) a4=1.6531*ones(1,N);

Page 38: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

%grid on plot(a4,'k-.') legend('t0/r0 estimado','t0/r0 real') xlabel('Amostras') title('Parâmetro t0/r0 estimado');

//////////////////////////////////////////////////////////////////////

//////////////////////EXEMPLO 3.10////////////////////////////////////

%Aluno:PEDRO JUNIOR %Exercício 3.9

clear all close all clc %% Função de transferencia G=tf(1,[1 1 0]);

%Tempo de amostragem h=0.5;

%Função 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

% Pólos discretos desejados pdes=exp(-csi*Wn*h + j*Wn*sqrt(1-csi^2)*h); P=[pdes conj(pdes)];

% Função 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);

% Parâmetros 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)]);

Page 39: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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 Interações?:'); %% 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 %% Condições iniciais necessários para o MQR % Número de realizações N = length(uc); lambda = 0.98;%Fator de esquecimento P0 = diag([100 100 1 1]); % Inicializar a matriz de covariância Teta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parâmetros Teta

estimado fi0=[0 0 0 0]';

yest=[0 0 0]'; diagP=diag(P0)'; %Número 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 saída atual y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Saída da planta %Atualiza fi fi(:,k-1)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]'; %Calcula o erro de estimação 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 estimação de parâmetros Teta(:,k)=Teta(:,k-1)+K*erro(k); %Atualiza a matriz de covariância P=(P-K*fi(:,k-1)'*P)/lambda; diagP=[diagP; diag(P)']; %Armazena parâmetros a1est = Teta(1,k); a2est = Teta(2,k);

Page 40: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

b0est = Teta(3,k); b1est = Teta(4,k);

%% Valores dos polinômios R, S e T r1=((a0*am2)*(b0est^2)+(a2est-am2-a0*am1)*(b1est*b0est)+(a0+am1-

a1est)*(b1est^2))/(b1est^2-b1est*b0est*a1est+a2est*(b0est^2)); s0=((b1est*(a0*am1-a2est-am1*a1est+(a1est^2)+am2-

a1est*a0))/((b1est^2)-

b1est*b0est*a1est+a2est*(b0est^2)))+((b0est*(am1*a2est-a1est*a2est-

a0*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 parâmetros do controlador cont(:,k)=[r1 s0 s1 t0]';

%% Cálculo 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 referência (uc)','Sinal de saída (y)') xlabel('Amostras') title('Saída e Referência'); %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])

%% Parâmetros 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')

Page 41: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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('Parâmetros a1 e a2 estimados'); %xlim([0 100])

%% Parâmetros 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('Parâmetros b0 e b1 estimados'); %xlim([0 100])

%% Parâmetros 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('Parâmetro 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('Parâmetro 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('Parâmetro 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')

Page 42: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

xlabel('Amostras') title('Parâmetro 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

%% Definição da planta %g=tf(1,[1 1 0]); % Planta analógica g=tf(1,[1 2 1]); % Planta analógica do problema 3.11

Ts=0.5; % Intervalo de amostragem gd=c2d(g,Ts); % Planta discretizada

% Parâmetros 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;

% Pólos 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 unitário

gmd=tf(Bm,Am,Ts);

% Parâmetros da planta desejada em MF [nummd,denmd]=tfdata(gmd,'v'); bm0=nummd(2); am1=denmd(2); am2=denmd(3);

%Polinômio A0: a0=0; %Este parâmetro é sugerido no próprio livro A0=tf([1 a0],[1],0.5);

%% Vetor de Entrada - Onda Quadrada (u) uc = []; neg=-1*ones(1,25); pos=ones(1,25);

for i = 1:3

Page 43: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

uc = [uc pos neg]; end

%% Condições iniciais necessários para o MQR

N = length(uc); % Número de realizações (medidas) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% %lambda = 1; %lambda = 0.85; lambda = 0.65; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% %P0 = diag([200 200 2 2]); % Inicializar a matriz de covariância ***** P0 = diag([100 100 1 1]); % Inicializar a matriz de covariância ***** %P0 = diag([50 50 0.5 0.5]); % Inicializar a matriz de covariância

***** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% Teta0 = [0 0 0.01 0.2]'; % Inicializar o vetor de parâmetros Teta

estimado ***** %Teta0 = [0 0 0.1 2]'; % Inicializar o vetor de parâmetros Teta

estimado ***** %Teta0 = [0 0 1 20]'; % Inicializar o vetor de parâmetros 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 saída atual y(k)=-a1*y(k-1)-a2*y(k-2)+b0*u(k-1)+b1*u(k-2); % Saída 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 estimação 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 estimação de parâmetros Teta(:,k)=Teta(:,k-1)+K*erro(k); % ----- Atualiza a matriz de covariância P=(P-K*fi(:,k-1)'*P)/lambda;

Page 44: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

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

%Operador de Transferência: %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 polinômios 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+am1-

a1est)*(b1est*b1est)))/((b1est*b1est)-

(b1est*b0est*a1est)+(a2est*(b0est*b0est))); s1=((a0*am2)-(a2est*r1))/(b1est); s0=((am1+a0)-(r1+a1est))/(b0est); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Polinômios 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]'; % %Polinômios 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 - cálculo 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,

Page 45: Reguladores Auto-ajustáveis (SELF-TUNING REGULATORS)

u(k)=-4; end

end

subplot(221) hold on plot(uc,'r--') plot(y,'b') legend('uc','y') xlabel('Amostras') title('Saída e Referência');

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('Parâmetros do Controlador');

subplot(222) stairs(Teta') legend('a1','a2','b0','b1') xlabel('Amostras') title('Parâmetros Estimados'); hold off