25 - Erros Estacionários No Modelo de Estado e Estabilidade Relativa Rastreador
25 - Erros Estacionários No Modelo de Estado e Estabilidade Relativa Rastreador
25 - Erros Estacionários No Modelo de Estado e Estabilidade Relativa Rastreador
Conceitos Básicos:
Rastreamento Controle por Realimentação de Estados.
1
Variável de rastreamento e Erro Estacionário
5 de novembro de 2024
r(t) u(t) y
Z
ẋ x +
WS +
−
B +
+
C +
Wi (s) A
Kk
2
2 Rastreando saı́da rastreável
A ideia portanto é acrescentarmos a função W (s) na forma de um integrador
de ordem n para corrigir o desempenho do erro estacionário nulo desejado da
variável de saı́da que se deseja controlar. Desta forma podemos corrigir o erro
estacionário para a entrada desejada.
O diagrama de malha fechada do sistema controlado total para garantir o
rastreamento pode ser visto no diagrama a seguir:
D
Wi (s) A
Kk
3
Colocando na forma de estado o integrador W (s) obtivemos a equação
dinâmica e a equação de saı́da de estado com os seus respectivos ganhos Ki
em função das variáveis de estado w e o diagrama completo na forma de estado
fica:
Dk
Ai A
Kk
ẋ = Ax + Bu (1)
yk = Ckx x + Ckw w + Dk u (2)
u = −Kk x − yi (3)
ẇ = Ai w + Bi ea (4)
yi = Ki w (5)
ea = r − yk (6)
4
Substituindo a equação yi = Ki w na equação u = −Kk x − yi , a lei de
controle u pode ser escrita na forma matricial:
x
u = −Kk x − Ki w = − Kk Ki = −Ke xe (11)
| {z } w
Ke | {z }
xe
0 ∗ (Bi Ckx )t
A B
ATe = Ae − Beu Ke = − Kk Ki
−Bi Ckx Ai − Bi Ckw −Bi Dk
0∗B
BTe = Ber =
Bi
CTe = Cdx − Dd Kk Cdw − Dd Ki
DTe = 0
5
O diagrama de blocos completo resultante do sistema de malha fechada com
os seus subsistemas identificados é dado por:
Wi (s) A
Kk
Tk (s)
Te (s)
STe (s)
6
3 Exemplo de rastreamento de saı́da rastreável
Dado o sistema massa-amortecedor (sem uma mola) com m=2kg e c=3Ns/m,
modelado pela seguinte equação diferencial,
mÿ = u − cẏ
cujo diagrama de blocos é dado por:
c
m
Solução:
Podemos modelar o sistema com as seguintes variáveis de estado de deslo-
camento e velocidade:
⇒ deslocamento
x 1 =
⇒ velocidade
x 2 =
ẋ1 = x2
1 c
ẋ2 = u − x2
m m
Podemos montar as matrizes A e B na forma:
ẋ1 0 1 x1 0
= c · + 1 ·u
ẋ2 0 −m x2 m
7
No MatLab temos inicialmente o modelo do sistema e os polos desejados
polosk em malha fechada devido ao controlador:
clear all;
close all;
c = 2;
m = 3;
A = [0 1; 0 -c/m];
B = [0; 1/m];
Ckx = [1 0]; % Para controlar pelo deslocamento
Ckw = [0 0 0];
Dk = 0;
polosk=[-1+j -1-j];
Para garantir erro nulo a parábola, temos que acrescentar três integradores,
i = 3, verificar a controlabilidade, se determinante diferente de zero projetar os
ganhos do controlador adotando os polos devido aos integradores mais rápidos
que os polos devidos aos ganhos de realimentação de estado, fechar a malha e
finalmente verificar o resultado, resultando nos seguintes comandos no MatLab:
Ai=[0 1 0
0 0 1
0 0 0];
Bi=[0
0
1];
Ae=[A (Bi*Ckx)’*0;
-Bi*Ckx Ai-Bi*Ckw]
Beu=[B
-Bi*Dk]
Me=ctrb(Ae,Beu);
det(Me)
poloske=[-1+j -1-j -5 -5 -5];
Ke=acker(Ae,Beu,poloske)
Cdx=Ckx;
Cdw=Ckw;
Dd=Dk;
Ate=Ae-Beu*Ke
Bte=[0*B
Bi]
% Ct=[Cdx-Dd*Ke(1:2) Cdw-Dd*Ke(3:5)]
Cte=[Cdx-Dd*Ke(1:length(polosk)) Cdw-Dd*Ke(length(polosk)+1:length(poloske))]
Dte=0
Te=ss(Ate,Bte,Cte,Dte)
tf(Te)
%observar na funç~
ao de transfer^
encia os ganhos dinamicos
%de ordem 0, 1 e 2 unitários = erro parábola nulo
8
4 Rastreando saı́da não rastreável
Se o determinante da matriz de controlabilidade do sistema expandido formada
pelas matrizes Ae e Beu , onde na parte expandida destas matrizes foram in-
cluı́dos termos Ckx , Ckw relativos a variável de saı́da yk que se deseja controlar,
for igual a zero significa que a variável de saı́da yk escolhida não é rastreável
diretamente.
Desta forma temos duas opções:
reduzir a ordem do modelo da planta (quando possı́vel).
condicionar o sinal de referência com a função S(s) para rastrear a saı́da
desejada.
mÿ = u − cẏ
projetar o pólo com módulo de 1 por realimentação de estados para controlar
a velocidade com erro nulo à parábola. Considerar os polos em malha fechada
devido aos integradores com módulo de 5.
Assumindo a modelagem do sistema com uma única variável de estado x1
sendo a velocidade, o diagrama de blocos fica na forma,
u(t) 1 ÿ(t) 1 ẏ(t)
+
m − s
9
No Matlab temos:
10
4.2 Condicionar o sinal de referência com a função S(s)
para rastrear saı́da não rastreável
Primeiro escolher qual saı́da yk será possı́vel de ser rastreada com as variáveis
de estado sendo medidas através do determinante da matriz de controlabilidade
estendida Me , depois acrescentar a função S(s) de forma a condicionar o sinal
de referência para aparentemente rastrear a saı́da desejada yd em relação a
variável realmente rastreada yk , e finalmente definir o número de integradores
i para corrigir os erros estacionários desta variável controlada. Dessa forma,
se queremos controlar uma saı́da yd que não seja uma variável de estado
de menor ordem do sistema de malha fechada, condicionamos o sinal de
referência rd com a função S(s) para ter o mesmo efeito que o sinal de referência
que se deseja aplicar ra para aparentemente rastrear yd .
Por exemplo, deseja-se uma referência degrau rd (t) para rastrear a velocidade
yd no sistema cuja variável de saı́da controlada yk é o deslocamento, o sinal
de referência que teremos que aplicar ra (t) é uma rampa, pois ela tem um
efeito semelhante já que um deslocamento crescendo constantemente implica
velocidade constante.
yk = d
rd (t) ra (t)
S Te
yd = v
Logo deve-se obter as equações que relacionam a variável que se deseja con-
trolar yd com a variável de estado sendo controlada yk .
11
Por exemplo imagine a situação em que queremos rastrear com a entrada
rd (t) a saı́da yd (t), mas a variável possı́vel de ser controlada é x1 , ou seja o
sinal de referência de entrada para rastrear x1 é ra (t), e o sistema apresenta o
seguinte diagrama de bloco:
yd (t)
g
k2
k1
yk = x1
yd = gx2
1
x1 = ẋ1
s
ẋ1 = ax2
Neste caso, imaginando que a saı́da yd (t) está rastreando rd (t), ou seja se a
entrada rd (t) é um degrau, a saı́da yd (t) também deverá ser um degrau. Como
queremos controlar yd através de yk , vamos obter como deverá ser a saı́da yk
em função da saı́da desejada yd (t) que neste caso será um degrau unitário:
yk = x1
1
yk = ẋ1
s
1
yk = ax2
s
1 yd
yk = a
s g
a1
yk = yd
gs
12
Como o sistema é linear e a variável possı́vel de ser rastreada é a saı́da yk ,
se multiplicarmos a entrada por uma função S(s), a saı́da rastreada yk também
será multiplicada por S(s), resultando portanto na função S(s) que garante
virtualmente o rastreamento da saı́da yd :
a
S(s) =
gs
a1
yk = yd
gs
a
obter o sinal de saı́da yk se multiplicarmos a saı́da yd por gs .
Desta forma se queremos a saı́da yd rastreando um degrau unitário, a saı́da
yk deverá resultar
a1 1
yk = y
d
>
g s
a
Para isso, devemos pré-multiplicar o sinal de entrada ra por gs de forma a
a
que o sinal de referência seja uma rampa gs
a1
ra =
gs
a1
yk =
gs
yk = ag t
rd (t) ra (t) = ag t
a1
g s Te
yd = v
13
4.2.1 Exemplo de condicionamento sinal de entrada para rastrear
saı́da não rastreável
Dado o sistema massa-amortecedor (sem uma mola) com m=2kg e c=3Ns/m,
modelado pela seguinte equação diferencial,
mÿ = u − cẏ
cujo diagrama de blocos é dado por:
c
m
ẋ1 = x2
1 c
ẋ2 = u − x2
m m
Podemos montar as matrizes A e B na forma:
ẋ1 0 1 x1 0
= c · + 1 ·u
ẋ2 0 −m x2 m
Como queremos rastrear a aceleração com erro nulo a parábola, temos que
verificar a controlabilidade do sistema estendido com três integradores e com a
variável de saı́da aceleração escolhida.
14
No MatLab temos:
clear all; close all; % S(s)=1, ou seja m=0 e n=3, logo i=3
c = 2; m = 3;
A = [0 1; 0 -c/m];
B = [0; 1/m];
Ckx = [0 -c/m]; Ckw = [0 0 0]; Dk = [1/m]; % Para controlar pela aceleraç~
ao
Ai=[0 1 0; 0 0 1; 0 0 0];
Bi=[0; 0; 1];
Ae=[A (Bi*Ckx)’*0; -Bi*Ckx Ai-Bi*Ckw]
Beu=[B; -Bi*Dk]
Me=ctrb(Ae,Beu);
det(Me)
Observa-se neste caso que o determinante da matriz de controlabilidade é
nula, o que significa que realimentando a aceleração para rastrear a aceleração
não é possı́vel.
Desta forma vamos então rastrear o deslocamento (Ckx=[1 0]). Precisa-
mos agora descobrir novamente o numero de integradores W (s) necessários na
variável rastreada yk para que tenhamos erro nulo a parábola da variável yd
sendo desejada. Vamos primeiro descobrir a função S(s) para condicionamento
do sinal da variável que se deseja ”virtualmente”controlar yd .
A função S pode ser obtida pela relação entre yd e yk :
1 1
yk = x1 yd = ẋ2 ẋ1 = x2 ẋ2 = sx2 => x1 =x2 x2 = ẋ2
s s
Como queremos controlar yd através de yk , vamos obter como deverá ser a
saı́da yk em função da entrada yd (t), que é a variável que se deseja controlar,
no caso yd :
yk = x1
1
yk = x2
s
11
yk = ẋ2
ss
1
yk = 2 yd
s
Então a função S fica:
1
S(s) =
s2
Desta forma observamos que temos dois integradores (m = 2) em S(s) e que
para conseguir rastrear a variável yd com erro nulo a parábola (n = 3) temos
que introduzir na verdade cinco integradores (i = m + n = 5) em W (s) .
1
W (s) =
s5
15
No MatLab temos:
clear all;
close all;
c = 2; m = 3; % S(s)=1/s^2, ou seja m=2 e n=3, logo i=5
A = [0 1; 0 -c/m];
B = [0; 1/m];
Ckx = [1 0]; Ckw=[0 0 0 0 0]; Dk = 0; % Para controlar pelo deslocamento
polosk=[-1+j -1-j];
Ai=[0 1 0 0 0; 0 0 1 0 0; 0 0 0 1 0; 0 0 0 0 1; 0 0 0 0 0];
Bi=[0; 0; 0; 0; 1];
Ae=[A (Bi*Ckx)’*0;
-Bi*Ckx Ai-Bi*Ckw]
Beu=[B
-Bi*Dk]
Me=ctrb(Ae,Beu);
det(Me)
poloske=[-1+j -1-j -5 -5 -5 -5 -5];
Ke=acker(Ae,Beu,poloske);
Kk=Ke(1:length(polosk));
Ki=Ke(length(polosk)+1:length(poloske));
Cdx=[0 -c/m]; Cdw=[0 0 0 0 0]; Dd=[1/m]; % Para ver a aceleraç~ ao
Ate=Ae-Beu*Ke
Bte=[0*B; Bi]
Cte=[Cdx-Dd*Kk Cdw-Dd*Ki]
Dte=0
Te=ss(Ate,Bte,Cte,Dte)
s=tf(’s’)
S=1/s^2;
STe=tf(S*Te)
STe=minreal(STe,1e-5) % Cancelar polos e zeros coincidentes
%Observar que a mı́nima realizaç~ ao da funç~
ao de transfer^
encia "STe(s)"
%com saı́da em aceleraç~
ao que os ganhos dinamicos de ordem 0, 1 e 2
%s~ao unitários = erro à parábola é nulo
%
%Note que a funç~ao de transfer^ encia "Te(s)" com saı́da em deslocamento
%os ganhos dinamicos de ordem 0, 1, 2, 3, 4 e 5 s~ ao unitários = erro
%à integral dupla da parábola nulo
y(t)
1.0
16
5 Estabilidade relativa do sistema rastreador RE
Seja o diagrama de blocos do sistema de malha fechada com realimentação de
estados:
Dk
Ai A
Kk
Dk
Ai A
Wi (s)
Kk
Tk (s)
17
Agora podemos calular o ganho de malha aberta L(s) para obter as margens
do sistema de malha fechada.
L=Wi*Tk;
margin(L)
18
6 Primeiro exercı́cio
Dado o sistema servo motor de corrente continua controlada pela tensão do
campo u = V com J=2kgm2, c=3Nms/rad, R=2Ω, L=3H, e Kt = 1 Nm/A
modelado pela seguinte equação diferencial,
...
LJ θ (t) + (LC + RJ)θ̈(t) + RC θ̇(t) = Kt V (t)
cujo diagrama esquemático é dado por,
R
ia
+ τ C
Kt
V ic L J θ
−
LC + RJ
LJ
RC
LJ
19
Solução:
Podemos modelar o sistema com as seguintes variáveis de estado de deslo-
camento e velocidade angulares:
⇒ deslocamento angular
x1 =
⇒ velocidade angular
x2 =
⇒ aceleração angular
x =
3
20
Desta forma vamos então rastrear o deslocamento angular(Ckx=[1 0 0]).
Precisamos agora descobrir novamente o numero de integradores W (s) necessários
na variável rastreada yk para que tenhamos erro nulo a parábola da variável yd
sendo desejada. Vamos primeiro descobrir a função S(s) para condicionamento
do sinal da variável que se deseja ”virtualmente”controlar yd .
A função S pode ser obtida pela relação entre yd e yk :
1
yk = x1 yd = x2 ẋ1 = x2 => x1 = x2
s
Como queremos controlar yd através de yk , vamos obter como deverá ser a
saı́da yk em função da entrada yd (t), que é a variável que se deseja controlar,
no caso yd :
yk = x1
1
yk = x2
s
1
yk = yd
s
Então a função S fica:
1
S(s) =
s
1
W (s) =
s4
No MatLab temos:
clear all;
close all;
C = 2; J = 3; L = 3; R = 2; Kt=1;
A = [0 1 0; 0 0 1; 0 -R*C/(L*J) -(L*C+R*J)/(L*J)];
B = [0; 0; Kt/(L*J)];
Ckx = [1 0 0]; Ckw=[0 0 0 0]; Dk = 0; % Para controlar pelo deslocamento
Ai=[0 1 0 0; 0 0 1 0 ; 0 0 0 1; 0 0 0 0];
Bi=[0; 0; 0; 1];
Ae=[A (Bi*Ckx)’*0;
-Bi*Ckx Ai-Bi*Ckw]
Beu=[B
-Bi*Dk]
Me=ctrb(Ae,Beu);
21
rank(Me)
det(Me)
% break
polosk=[-1+j -1-j -2];
polosw=[-5 -5 -5 -5];
poloske=[polosk polosw];
Ke=acker(Ae,Beu,poloske);
Kk=Ke(1:length(polosk));
Ki=Ke(length(polosk)+1:length(poloske));
Cdx=[0 1 0]; Cdw=[0 0 0 0]; Dd=[0]; % Para ver a velocidade
Ate=Ae-Beu*Ke
Bte=[0*B; Bi]
Cte=[Cdx-Dd*Kk Cdw-Dd*Ki]
Dte=0
Te=ss(Ate,Bte,Cte,Dte)
s=tf(’s’)
S=1/s;
%Verificar que os ganhos dinamicos de ordem 0,1,2,3 (m=4) da mı́nima
% realizaç~
ao de "ST(s)" (minreal(STe)) s~
ao unitários para dar erro nulo a parábola na variáv
STe=tf(S*Te)
minreal(STe)
Vamos agora calcular a estabilidade relativa. Primeiro vamos montar o mo-
delo de estado dos integradores em uma função de transferência W i(s). Depois
calcular o modelo de estado de malha fechada do sistema somente com o con-
trolador por realimentação de estado em uma função de transferência Tk (s).
Finalmente calular o ganho de malha aberta L(s) para obter as margens do
sistema de malha fechada.
Calculando estas funções no MatLab temos:
%Estabilidade relativa
Ki=Ke(length(polosk)+1:length(poloske));
Wi=tf(ss(Ai,Bi,-Ki,0));
Kk=Ke(1:length(polosk))
Atk=[A-B*Kk];
Btk=[B];
Ctk=[Ckx-Dk*Kk]; %visualizaç~
ao da variável sendo controlada
Dtk=Dk;
Tk=tf(ss(Atk,Btk,Ctk,Dtk))
L=Wi*Tk;
margin(L)
22
23
7 Primeiro exercı́cio
Para um helicóptero cujo modelo de estado é dado abaixo, projete um contro-
lador por realimentação de estado com polos localizados em −1 ± j e −2 de
forma que a velocidade linear apresente erro nulo ao degrau. Adotar os polos
em malha fechada devido aos integradores de módulo igual a 15. Calcular a
estabilidade relativa da malha fechada.
θ̇ −0.4 0 −0.01 x1 6.3
x= θ ẋ = 1 0 0 · x2 + 0 ·u
v −1.4 9.8 −0.02 x3 9.8
x1
y= 0 0 1 · x2
x3
24
8 Segundo exercı́cio
Para um helicóptero cujo modelo de estado é dado abaixo, projete um contro-
lador por realimentação de estado com pólos localizados em −1 ± j e −2 de
forma que o velocidade angular apresente erro nulo ao degrau. Adotar os polos
em malha fechada devido aos integradores de módulo igual a 15. Calcular a
estabilidade relativa da malha fechada.
θ̇ −0.4 0 −0.01 x1 6.3
x= θ ẋ = 1 0 0 · x2 + 0 ·u
v −1.4 9.8 −0.02 x3 9.8
x1
y= 0 0 1 · x2
x3
25