Você está na página 1de 41

Mecatron Projetos e Consultoria Jnior

Soluo de problemas
usando Matlab
Daniel Augusto Pereira
Alysson Fernandes Mazoni
2006
1
Sumrio
Sistemas lineares.................................................................................................................................. 3
Problema exemplo........................................................................................................................... 3
Espao de estados............................................................................................................................ 4
Funo de transferncia................................................................................................................... 8
Converso de formas de representao............................................................................................8
Plos, zeros, freqncia natural e fator de amortecimento............................................................. 9
Reposta a entradas padronizadas................................................................................................... 10
Resposta em freqncia................................................................................................................. 13
A ferramenta LTIview................................................................................................................... 16
Controle linear bsico.................................................................................................................... 17
Controle proporcional............................................................................................................... 18
Outras configuraes de controle..............................................................................................22
Ferramenta SISOtool (SISO Single input single output)............................................................22
Simulao de sistemas de controle no Simulink................................................................................ 25
Otimizao..........................................................................................................................................34
Problema exemplo ........................................................................................................................ 35
Otimizao multiobjetivo.............................................................................................................. 36
Problema exemplo.....................................................................................................................37
Computao simblica....................................................................................................................... 39
Exemplo: sistemas lineares............................................................................................................ 40
Exemplo: equaes diferenciais.....................................................................................................41
2
Sistemas lineares
Ao chamar um sistema fsico de linear estamos impondo sobre ele a hiptese da validade do
princpio da superposio, ou seja, para uma combinao linear das entradas, a sada uma
combinao linear das sadas para cada entrada individualmente. Matematicamente, um sistema
linear se suas equaes de evoluo dinmica (ao longo do tempo) so difenrenciais lineares e
ordinrias.
Um sem nmero de sistemas de importncia na engenharia so tratados como lineares. A
exemplo: circuitos analgicos, motores de corrente contnua, sistema de troca de calor e estruturas
flexveis (metlica); outros so considerados lineares por trechos, comportam-se como lineares em
uma faixa restrita de operao, como estruturas no lineares, atuadores hidrulicos, entre outros.
Problema exemplo
Para utilizar as funes do Matlab apropriadas para simulao e controle de sistemas
lineares, utilizaremos o exemplo bastante comum de controle de um motor de corrente contnua. A
representao utilizada aqui a usual de um conjunto de equaes diferenciais com o tempo como
varivel dependente, o que configura o que se chama de sistema dinmico em tempo contnuo.
Um esquema da interao entre as partes eltrica e mecnica do motor mostrado na figura
abaixo:
Para esse modelo so escritas as equaes diferenciais:
J o+coK i
a
=0
L

i
a
+( R
a
+R
s
)i
a
+K o=V

0=o
em que 0 a posio angular do rotor, o , a velocidade; J a inrcia associada; K, a constante
eletromecnica; L, a indutncia da armadura,
R
a
, a resistncia de armadura;
R
s
, resistncia
em srie com a armadura; e
i
a
a corrente de armadura.
Os valores medidos para um motor em particular so mostrados na tabela:
3
Parmetro Valor
J 3,4E-4 Kg.m
2
L 5,03E-3 H
K 1,3E-2 N.m/A
c 6,7E-5 N.s/m
R
a
4,03 D
R
s 1 D
Espao de estados
Como discutido em cursos de introduo a sistemas lineares e modelagem, um sistema
como esse admite a converso para forma de espao de estados, o que corresponde a escrev-lo na
forma de um conjunto de equaes diferenciais de primeira ordem. Para um sistema linear, isso
leva, em notao vetorial, a
x=A x+Bu
y=C x+Du
em que x representa um vetor com as funes no tempo que so solues do sistema de equaes
diferenciais e chamado vetor de estado. y o vetor com as funes do tempo que se deseja
observar: as sadas. u, o vetor com sinais impostos ao sistema descrito ao longo do tempo de
observao, o vetor de entradas. As matrizes A, B, C e D contm a representao do sistema
dinmico.
Um resultado elementar da teoria de sistemas lineares o de que existem infinitas matrizes
dessa forma que representam a mesma relao entre entrada e sada (o mesmo sistema), bastando
escolher vetores de estado diferentes, ajustados entre um e outro por transformaes lineares.
No caso particular em que o vetor de estados constitudo de variveis fsicas, diz-se que se
possui um modelo fsico nas matrizes citadas.
Para o caso do motor de corrente contnua citado um modelo fsico pode ser escrito como:
[

i
a
o

0
]
=
[
( R
a
+R
s
)
L
K
L
0
K
J
c
J
0
0 1 0
]
[
i
a
o
0
]
+
[
1
L
0
0
]
V
y=[ 0 1 0]
[
i
a
o
0
]
+[ 0] V
Dessa forma tem-se a entrada representada por V, a sada pela velocidade angular e o vetor
de estados dados pela seqncia corrente, velocidade e posio. A sada observada, a velocidade
angular, definida pela forma como foi escrita a matriz C.
No Matlab, sugere-se declarar o modelo como:
4
>> J = 3.4e-4;
>> c = 6.7e-5;
>> K = 1.3e-2;
>> L = 5.03e-3;
>> R = 5.03;
>> A = [-R/L -K/L 0; K/J -c/J 0; 0 1 0];
>> B = [1/L; 0; 0];
>> C = [0 1 0];
>> D =[0];
Como j dito, h outras formas possveis de representar a mesma relao matemtica entre a
entrada e a sada do sistema, porm com interpretaes diferentes para os estados. Qualquer uma
dessas representaes pode ser usada para calcular, a cada instante de tempo desejado, a evoluo
dos estados no tempo usando os mtodo usuais de integrao direta. Dadas as matrizes, isso seria
conseguido definindo uma funo e usando um mtodo como o ode45. Para tanto, necessrio
tambm definir uma entrada, por exemplo senoidal.
function u=entrada(t)
u=sin(t);
function z = f_motor(t,x);
global A B
u = entrada(t);
z = A*x+B*u;
>> tin = 0; % tempo inicial
>> tfin = 10; % tempo final
>> x0 = [0;0;0]; % condio inicial
>> global A B
>> [t,y] = ode45('f_motor',[tin tfin],x0);
Note que as matrizes, usadas recorrentemente dentro e fora da funo, foram definidas como
variveis globais. A figura abaixo mostra as respostas temporais do sistema, ou seja, mostra a
evoluo no tempo da corrente de armadura, da velocidade angular e da posio angular. Observa-
se que foi calculada a evoluo temporal de todos os estados.
>> u = entrada(t);
>> figure, plot(t,y,t,u);
>> legend('Corrente de armadura [A]' , 'Velocidade Angular [rad/s]' , 'Posio angular [rad]' ,
'Tenso de alimentao [V]');
5
O Matlab contm estruturas de dados especficas para lidar com sistemas lineares
representados nesse padro. Um sistema linear declarado numa estrutura de Matlab que mantm a
representao em espao de estados com o comando:
>> p = ss(A,B,C,D)
em que p passa a ser uma varivel representando um sistema linear.
A partir dessa estrutura de dados, existem comandos no Matlab especficos para o clculo da
resposta temporal de um sistema. No caso da estrutura p definida o seguinte cdigo pode ser
utlizado:
>> t = 0:0.1:10;
>> u = sin(t);
>> x0 = [0;0;0];
>> figure, lsim(p,u,t,x0)
Nota-se que visualizada apenas a sada selecionada pela matriz C do modelo no espao de
estados. Caso seja de interesse calcular a evoluo temporal de todos os estados, bastaria redefinir a
matriz C, criar sua nova representao no espao de estados e ento utilizar novamente o comando
lsim.
>> C2=[1 0 0;0 1 0;0 0 1]; % Clculo de todas as possveis sadas
>> p2 = ss(A,B,C2,D);
>> figure, lsim(p2,u,t,x0)
Verifica-se a nova resposta na figura com as trs sadas. Assim, fica evidente a importncia
do conhecimento da posio de cada estado dentro do vetor de variveis de estado para a correta
observao da sada desejada.
6
0 1 2 3 4 5 6 7 8 9 1 0
- 1 0
- 5
0
5
1 0
1 5
2 0
2 5
3 0


C o r r e n t e d e a r m a d u r a [ A ]
V e l o c i d a d e A n g u l a r [ r a d / s ]
P o s i o a n g u l a r [ r a d ]
T e n s o d e a l i m e n t a o [ V ]
7
0 1 2 3 4 5 6 7 8 9 1 0
- 8
- 6
- 4
- 2
0
2
4
6
8
1 0
1 2
L i n e a r S i m u l a t i o n R e s u l t s
T i m e ( s e c )
A
m
p
l
i
t
u
d
e
- 1
- 0 . 5
0
0 . 5
1
T
o
:

O
u
t
(
1
)
- 1 0
- 5
0
5
1 0
1 5
2 0
T
o
:

O
u
t
(
2
)
0 1 2 3 4 5 6 7 8 9 1 0
- 2 0
- 1 0
0
1 0
2 0
3 0
4 0
T
o
:

O
u
t
(
3
)
L i n e a r S i m u l a t i o n R e s u l t s
T i m e ( s e c )
A
m
p
l
it
u
d
e
Os grficos gerados a partir do comando lsim podem ser editados clicando-se o boto direito
do mouse e selecionando as opes desejadas.
Caso o interesse seja armazenar os valores no tempo da sada em um vetor, ao invs de
traar um grfico, basta fazer o seguinte:
>> y = lsim(p,u,t,x0);
Funo de transferncia
Outra maneira de representar um sistema linear atravs de funes de transferncia. A
funo de transferncia definida como a razo entre a transformada de Laplace da funo de sada
sobre a transformada de Laplace da funo da entrada. Conforme estudado no cursos elementares
de equaes diferenciais, essa razo, para condies iniciais nulas, pode ser facilmente obtida das
equaes diferenciais do sistema dinmico representado. H uma funo de transferncia para cada
par de entrada e sada do sistema.
Para o sistema do motor de corrente contnua a funo de transferncia entre a alimentao e
a velocidade escrita como
o( s)
V ( s)
=
K /( JL)
s+
(
( R
a
+R
s
)
L
+
c
J
)
s+
c( R
a
+R
s
)
JL
+
K
2
JL
.
A transformada de Laplace de um sistema linear e invariante no tempo sempre uma razo
de polinmios na varivel de Laplace (s). Desse modo, funes de transferncia so especificadas
atravs dos coeficientes dos polinmios do numerador e do denominador. A funo de transferncia
uma maneira unvoca de representar o sistema. Em cdigo de Matlab:
>> np = [K/(J*L)];
>> dp =[1 ((Ra+Rs)/L+c/J) c*(Ra+Rs)/(J*L)+K^2/(J*L)];
>> H = tf(np,dp)
Alternativamente, pode ser definida da seguinte forma:
>> s = tf('s');
>> H = (K/(J*L))/(s^2 + ((Ra+Rs)/L+c/J)*s + c*(Ra+Rs)/(J*L) + K^2/(J*L))
A varivel criada (H) tambm um sistema linear, porm representado na forma de funo
de transferncia. Os comandos de manipulao, caracterizao e simulao de sistemas lineares
que sero vistos a seguir aplicam-se tanto a uma quanto a outra forma de representao.
Converso de formas de representao
As formas de representao definidas pelos comandos ss e tf podem ser convertidas de uma
para a outra:
>> [a,b,c,d] = tf2ss(np,dp);
>> sys_mat = ss(a,b,c,d);
8
>> sys_fisico = ss(A,B,C,D);
>> [num,den]=ss2tf(a,b,c,d);
>> H=tf(num,den)
>> [num,den]=ss2tf(A,B,C,D);
>> H=tf(num,den)
importante observar que as matrizes a, b, c e d fornecidas pelo comando tf2ss no so
iguais quelas deduzidas a partir do modelo fsico (A, B, C e D). Isso ocorre porque a
respresentao de um sistema no espao de estados no nica e a representao padro do Matlab
no , e nem poderia ser, igual representao baseada no modelo fsico (intuitivamente mais
bvia). possvel checar que os sistemas descritos pelas difenentes matrizes no espao de estados
so os mesmos. Para isso, basta verificar que os autovalores da matriz A (e consequentemente os
plos do sistema) so os mesmos para ambas as representaes:
>> eig(A)
>> eig(a)
Plos, zeros, freqncia natural e fator de amortecimento
Os plos e zeros de um sistema linear podem ser obtidos diretamente a partir da funo de
transferncia do mesmo, calculando-se as razes dos polinmios do denominador e do numerador,
respectivamente:
>> polos = roots(dp)
>> zeros = roots(np)
Os plos podem ser obtidos atravs da matriz A do sistema no espao de estados pois so
iguais aos autovalores dessa matriz:
>> polos = eig(A)
Existe ainda um comando especfico para verificar os plos de um sistema:
>> pole(H)
>> pole(sys_mat)
Graficamente possvel verificar a posio dos plos e zeros no plano complexo:
>> pzmap(H)
>> pzmap(sys_mat)
9
Conhecidos os plos e os zeros de um dado sistema, alm de seu ganho esttico (ganho em
regime permanente, ou seja, s = 0 na funo de transferncia), pode-se definir um outra forma de
representao de sistemas lineares:
>> k=dcgain(H);
>> z=roots(np);
>> p=roots(dp);
>> zp = zpk (z,p,k)
Para um sistema definido em uma varivel de uma certa estrutura (funo de transferncia
ou espao de estados) possvel calcular a freqncia natural e o fator de amortecimento associados
a cada um dos plos:
>> damp(H)
>> damp(sys_fisico)
>> [wn,z,polos]=damp(H)
Reposta a entradas padronizadas
Uma vez com o sistema definido em uma varivel, as repostas a entradas notveis da teoria
de sistemas lineares, usadas para caracterizar o compostamento do sistema, so obtidas
imediatamente. Por exemplo, a resposta ao degrau:
>> step(p)
10
- 1 0 0 0 - 9 0 0 - 8 0 0 - 7 0 0 - 6 0 0 - 5 0 0 - 4 0 0 - 3 0 0 - 2 0 0 - 1 0 0 0
- 1
- 0 . 8
- 0 . 6
- 0 . 4
- 0 . 2
0
0 . 2
0 . 4
0 . 6
0 . 8
1
P o l e - Z e r o M a p
R e a l A x i s
I
m
a
g
i
n
a
r
y

A
x
i
s
>> step(H)
Com esse comando traado o grfico da resposta ao degrau do sistema. Uma das vantagens
da utilizao da funo step a possibilidade de avaliar diretamente no grfico os parmetros da
resposta ao degrau (sobressinal, tempo de estabilizao, tempo de subida e valor de regime). Para
isso, basta pressionar o boto direito do mouse, selecionar a opo characteristics e em seguida
selecionar os parmetros desejados (Peak Response, Settling Time, Rise Rime, Steady State).
Ou ainda, pode-se desejar obter os valores no tempo da resposta e no traar o grfico:
>> [y,t] = step(p);
>> [y,t] = step(H);
Assim possvel armazernar os valores desejados para clculos futuros ou para traar
grficos de forma mais conveniente. Outro exemplo clsssico a resposta ao impulso:
>> impulse(p)
>> impulse(s)
>> [y,t] = impulse(p);
>> [y,t] = impulse(s);
O grfico gerado pela funo impulse tambm pode ser editado clicando-se o boto direito
do mouse.
11
12
S t e p R e s p o n s e
T i m e ( s e c )
A
m
p
l
i
t
u
d
e
0 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 0
0
5
1 0
1 5
2 0
2 5
3 0
S y s t e m : H
F i n a l V a l u e : 2 5 . 7
S y s t e m : H
S e t t l i n g T i m e ( s e c ) : 1 3 . 2
S y s t e m : H
R i s e T i m e ( s e c ) : 7 . 4 3
I m p u l s e R e s p o n s e
T i m e ( s e c )
A
m
p
l
i
t
u
d
e
0 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 0
0
1
2
3
4
5
6
7
8
S y s t e m : H
P e a k a m p l i t u d e : 7 . 5 2
A t t i m e ( s e c ) : 0 . 0 3 7 3
S y s t e m : H
S e t t l i n g T i m e ( s e c ) : 1 3 . 3
Resposta em freqncia
O termo resposta em freqncia significa a resposta em regime permanente de um sistema a
uma entrada senoidal. Nos mtodos de resposta em freqncia varia-se a freqncia do sinal de
entrada dentro de um certo intervalo e estuda-se a resposta resultante. Uma das vantagens dos
mtodos de resposta em freqncia a possibilidade de se utilizar os dados obtidos diretamente a
partir das medies em um certo sistema fsico sem necessitar recorrer a modelos matemticos.
Os mtodos de resposta em freqncia foram desenvolvidos no perodo entre 1930 e 1940
por Nyquist, Bode, Nichols e muitos outros. Esses mtodos so dos mais poderosos na teoria de
controle convencional.
As respostas em regime permanente s entradas senoidais podem ser obtidas diretamente a
partir da substituio de s por na j funo de transferncia, onde a freqncia. Dessa forma, a
resposta em regime permanente dada por:
H( j o)=Me
j
onde M o mdulo da funo de transferncia senoidal (ou relao de amplitude entre a entrada e a
sada) e a defasagem (ou diferena de fase entre a entrada e a sada). Ressalta-se que qualquer
nmero complexo pode ser escrito em funo um mdulo e uma fase.
O diagrama de Bode constitudo de dois grficos: um o grfico do mdulo em dB (20 log
|H(j)|) de uma funo de transferncia senoidal; o outro o grfico do ngulo de fase (em graus).
Ambos so traados em relao freqncia em escala logartmica. Ou seja, os grficos so
traados a partir do cmputo dos valores do mdulo e da fase para toda uma faixa de freqncias.
A principal vantagem de se utilizar o diagrama de Bode que a multiplicao dos mdulos
pode ser convertida em soma. Alm disso, as curvas podem ser traadas a partir de aproximaes
assintticas simples. A expanso da faixa de baixas freqncias pelo uso da escala logartmica de
freqncia muito vantajosa, visto que as caractersticas dos sistemas em baixas freqncias, na
prtica, so as mais importantes.
muito simples obter o diagrama de Bode no Matlab. O cdigo em Matlab a seguir mostra
duas formas de se obter graficamente o diagrama utilizando a funo bode.
>> figure, bode(H)

>> w = 0:0.01:10e4;
>> [mag,phase] = bode(H,w);
>> magdb = zeros(1,length(mag)); % ajuste de dimenso
>> phase_mod = zeros(1,length(phase)); % ajuste de dimenso
>> magdb(1,:) = 20*log10(mag(1,1,:));
>> phase_mod(1,:) = phase(1,1,:);

>> figure, subplot(2,1,1), semilogx(w,magdb), axis([0 10e4 -150 50])
>> subplot(2,1,2), semilogx(w,phase_mod)
13
14
- 1 5 0
- 1 0 0
- 5 0
0
5 0
M
a
g
n
i
t
u
d
e

(
d
B
)
1 0
- 2
1 0
- 1
1 0
0
1 0
1
1 0
2
1 0
3
1 0
4
1 0
5
- 1 8 0
- 1 3 5
- 9 0
- 4 5
0
P
h
a
s
e

(
d
e
g
)
B o d e D i a g r a m
F r e q u e n c y ( r a d / s e c )
Para analisar a estabilidade de um sistema linear pode ser utilizado o diagrama de Nyquist,
que o lugar geomtrico de H(j) no plano complexo medida que varia de - a +. o
grfico possvel perceber a marcao do ponto -1 no eixo real. Esse ponto fundamental para a
anlise da estabilidade do sistema. Sem entrar em detalhes, nesse caso percebe-se que o sistema
estvel porque o ponto -1+j0 no envolvido pela curva fechada que representa o lugar geomtrico
de H(j).
15
1 0
- 2
1 0
0
1 0
2
1 0
4
- 1 5 0
- 1 0 0
- 5 0
0
5 0
1 0
- 2
1 0
0
1 0
2
1 0
4
1 0
6
- 2 0 0
- 1 5 0
- 1 0 0
- 5 0
0
A ferramenta LTIview
As funcionalidades de anlise de sistemas LIT (lineares invariantes no tempo) so
centralizadas na ferramenta LTIview, que permite acessar diversos tipos de grficos j vistos, como
dagrama de Bode, de Nyquist, resposta ao degrau, diagrama de lugar das razes e outras como carta
de Nichols e diagrama de valor singular. Nada pode ser alterado no sistema, esse apenas um
gerenciador grfico para as diversas abordagens de visualizar um sistema LIT.
acessada por:
>> ltiview
Usando o menu Edit Plot configurations escolhe-se quatro grficos por janela e as opes
de resposta seguintes na ordem: resposta ao degrau, resposta ao impulso, diagrama de bode em
magnitude e diagrama de Nyquist. A configurao e as respostas obtidas so mostradas nas duas
figuras abaixo.
16
- 5 0 5 1 0 1 5 2 0 2 5 3 0
- 1 5
- 1 0
- 5
0
5
1 0
1 5
N y q u i s t D i a g r a m
R e a l A x i s
I
m
a
g
in
a
r
y

A
x
i
s
Controle linear bsico
Um dos objetivos de se obter um modelo de um sistema linear projetar um controlador ou
compensador para que se obtenham algumas caractersticas particulares na sua resposta. O caso
mais comum de objetivo de controle o regulador: um sistema que tem o objetivo de levar a
resposta do sistema a zero em um tempo finito diante de qualquer entrada, ou to prximo disso
quanto possvel. J o controlador chamado rastreador tem a funo de fazer a sada do sistema
acompanhar a sua entrada, da forma mais prxima possvel, para qualquer entrada.
comum denominar o sistema a ser controlado de planta e a configurao com planta e
controlador de malha fechada.
A teoria de controle de sistemas lineares extensa e ainda em desenvolvimento, porm,
pode-se dizer que a configurao de controle mais comum, ou seja, a conexo lgica e fsica entre
um sistema e o seu controlador mais recorrente, a seguinte:
17
Essa configurao corresponde ao controle em realimentao de sada. O controlador um
sistema linear que dispe da informao da sada da planta. A entrada da planta com o controlador
passa a ser a diferena entre a entrada original e o sinal de controle.
H uma infinidade de outras configuraes possveis, por exemplo:
em que o controlador recebe o sinal de erro, ou seja, a diferena entre a entrada e a sada da planta.
Controle proporcional
O primeiro controlador possvel o controlador proporcional, representado por uma
constante multiplicativa na segunda configurao mostrada acima. Isto , regula-se o controle como
um mltiplo do sinal de erro.
Para ajustar o sinal o comportamento do sistema controlado pelos plos que ele possui pode-
se usar o diagrama no lugar das razes. Esse diagrama traa a localizao dos plos do sistema
quando h um controlador proporcional. Variando-se o ganho desse controlador, os plos variam; o
grfico resultante o citado diagrama. Ou seja, o ganha proporcional altera a localizao dos plos
no plano complexo.
Para o sistema do motor de corrente contnua que usamos como exemplo, o diagrama de
lugar das razes produzido pode ser usado para ajustar um ganho de 32,9 levando a plos de malha
fechada complexos e de parte real -500 e imaginria 15,8. Esse valor foi escolhido ao acaso apenas
para ilustrao, levando-se em conta obviamente que o ganho deve levar a plos de malha fechada
que mantenham o sistema estvel (plos no semiplano esquerdo do plano complexo).
>> rlocus(p)
18
Planta
Controlador
Sada Entrada
Planta Controlador Sada Entrada
Para se obter a malha fechada como varivel usa-se o comando:
>> mf = feedback(p,32.9)
Nesse caso, a varivel recm criada um sistema linear que representa o motor original com
o controlador proporcional. Nota-se que esse controlador est inserido no ramo da realimentao
(conforme a primeira figura dos diagramas de controle). Podem ser traados sua resposta ao
impulso e mapa de plos e zeros para verificar as caractersticas do novo sistema com a incluso do
controlador projetado.
>> step(mf)
>> pzmap(mf)
19
A posio atingida ao final das variaes prxima de 0,03, distante do valor do degrau (1).
Esse erro pode ser corrigido multiplicando a entrada do sistema por um valor de ajuste.
No mapa de plos e zeros, plos so representados por X e zeros por crculos. So
visualizados para esse caso, trs plos (um na origem e um par complexo conjugado com parte real
-500 e imaginria 16,9) e um zero na origem.
Verificou-se que h uma difenrena na parte imaginria, que foi definida anteriormente
como sendo 15,8. Isso surgiu devido forma do diagrama, que possui uma mudana abrupta nessa
20
regio, ou seja, apenas uma erro devido forma como feita a interpolao dos pontos do grfico.
Uma outra abordagem seria utilizar o modelo com a sada em posio e no em velocidade.
O diagrama para esse caso, depois de aproximado por zoom:
Usando o ganho de 11,8 o sistema obtido possui o seguinte comportamento de resposta ao
degrau.
21
A figura mostra um sistema de elevada freqncia natural (com oscilaes rpidas)
comparativamente com o primeiro caso.
Usando o clique direito pode-se marcar caractersticas padro da resposta do sistema, como
o tempo de estabilizao ou o valor de regime permanente.
Outras configuraes de controle
Outros tipos de controlador e configuraes so usadas. O primeiro passo nesse sentido
supor um controlador que no esttico (um ganho) mas um sistema tambm dinmico. Os mais
comuns so os controladores PID e avano-atraso. Seus mdotos de projeto podem ser executados
em Matlab usando os comandos citados e testando a resposta.
Ferramenta SISOtool (SISO Single input single output)
O projeto de sistemas de controle pode fazer uso da janela de funes acessada por:
>> sisotool
Acessa-se o menu File Import para obter a varivel com os dados do sistema. Ou, j
informando o sistema a ser analisado:
>> sisotool(H)
22
Na janela que se abre na parte superior direita h um diagrama de blocos indicando qual a
estrutura de controle usada. Clicando sobre o boto FS as posies dos blocos so alteradas. Nota-se
que so considerados os seguintes tipos de bloco: a planta (G), o sensor (H caso precise ser levado
em conta no modelo), um pr-filtro da entrada (F) e o controlador (C).
A funo do sensor tem o objetivo de modelar a dinmica do transdutor utilizado para medir
a sada do sistema quando da modelagem de uma planta real. O pr-filtro simula a caracterstica de
limitao em banda de freqncia do sinal que se pode impor planta e ao controlador. No caso
aqui apresentado supe-se que o sensor mede perfeitamente, sem atraso e sem ganho a sada e que a
entrada no possuir componentes em freqncia que no possam ser realmente impostas planta e
ao controlador. Ou seja, F = H = 1.
esquerda mostra-se a forma do controlador a ser ajustada (current compensator). Abaixo,
os trs grficos padro so o diagrama do lugar das razes e os dois grficos do diagrama de Bode.
O SISOtool se aplica apenas a sistemas com uma entrada e uma sada (como diz o nome em
ingls). Sua operao consiste em escolher uma forma no domnio de Laplace para o controlador e
ajustar seus parmetros variando caractersticas requeridas nos grficos de resposta mostrados.
Usando o modelo do motor com sada em velocidade e a configurao de controle fornecida
pela janela inicial, clica-se sobre a caixa de edio do controlador.
Al pode-se escolher a funo de transferncia desejada acrescentado ou retirando plos e
zeros. Para adicionar plos ou zeros reais ou imaginrios basta clicar no boto correspondente e
digitar o valor inicial desejado. Para excluir, marca-se a opo delete.
23
Sugere-se incluir um plo e um zero reais e negativos. Essa configurao corresponde aos
controladores em avano ou em atraso. Ou seja, um controlador com a seguinte funo de
transferncia:
C( s)=K
s+z
s+p
.
Escolhida a estrutura do controlador (clicando em OK), a ferramenta permite alterar
qualquer desses trs parmetros dinamicamente. Nos grficos de resposta mostrados basta clicar e
arrastar os elementos que se deseja alterar e observar ar mudanas correspondentes nos outros
grficos.
Plos de malha fechada so representados por quadrados. Plos do controlador por X e zeros
do controlador por crculos. Todos esses elementos pode ser arrastados com o mouse e as alteraes
correspondentes sero efetuadas. A curva de resposta do diagrama de Bode direita pode ser
arrastada para cima ou para baixo, mudando a banda de passagem e o ganho do controlador.
Um exemplo de teste assim com o sistema exemplo pode levar ao grfico mostrado abaixo:
24
Os plos e zeros do controlador podem ser acrescntados ou retirados tambm usando o
clique direito sobre um dos grficos e add pole/zero ou delete pole/zero. Os casos de derivador
(differentiator) ou integrador (integrator) presentes por exemplo em um controlador PID podem ser
acrescentador diretamente.
Outros grficos podem ser mostrados na janela do SISOtool usando o menu View e
escolhendo o grfico ou dado a ser mostrado. No menu Analysis pode-se acessar a resposta do
sistema em malha fechada invocando o LTIview, por exemplo, a resposta ao degrau obtida em
uma nova janela em Analysis Rejection of step disturbance.
Simulao de sistemas de controle no Simulink
Os sistemas de controle trabalhados anteriormente podem ser simulados atravs do
Simulink. Nota-se que os controladores devem ser previamente projetados porque o Simulink uma
ferramenta de simulao e de suporte anlise.
O primeiro caso de simulao a ser abordado o controle proporcional da velocidade
angular do mesmo motor de corrente contnua que vem sendo utilizado. Nesse caso, h duas
diferentes maneiras de se posicionar o controlador: no ramo direto (amplificando o sinal de erro que
entra na planta) ou no ramo inverso (amplificando o sinal de sada enviado para realimentao). As
25
duas hipteses foram simuladas. Para tanto, utilizou-se o mesmo ganho proporcional (Kp) projetado
anteriormente, ou seja, um ganho de 32,9.
A figura a seguir mostra os dois esquemas de controle proporcional utilizados para
simulao.
Para a simulao, utilizada como entrada uma funo do tipo degrau unitrio. Esse tipo de
entrada gerada a partir do bloco Step disponvel na opo Sources da biblioteca de blocos. Ao ser
inserido na rea de criao, o bloco pode ser editado clicando-se duas vezes sobre o mesmo. Aqui o
valor do degrau mantido unitrio, mas caso fosse necessrio poderia ser escolhido uma
amplitude diferente de 1 e tambm poderia ser alterado o instante no qual o degrau aplicado.
26
O sistema sob controle (motor CC) definido a partir de seu modelo de estados (matrizes A,
B, C e D) utilizando-se o bloco State-Space encontrado na opo Continuous. necessrio duplo
clique sobre a caixa inserida para que se defina as matrizes de estado desejadas. Pode-se digitar as
matrizes diretamente nos espaos disponveis ou apenas digitar nos espaos adequados as variveis
j calculadas e disponveis na rea de comando do Matlab, conforme mostra a figura a seguir.
O ganho proporcional Kp representado pelo bloco Gain encontrado na opo Commonly
Used Blocks. Para alterar o ganho basta clicar no bloco e fazer a alterao.
A visualizao da resposta feita atravs do bloco Scope retirado da opo Sinks. Clicando-
se no bloco aparece uma janela com um grfico bidimensional. Salienta-se que padro do Matla
mostrar apenas os ltimos 5000 pontos calculados, o que pode ser alterado clicando-se no segundo
cone no canto superior esquerdo (parameters) da janela grfica, conforme mostra a figura abaixo.
27
A simulao das duas configuraes de controle proporcional, Kp no ramo direto e Kp no
ramo inverso, so mostradas, respectivamente, nas duas figuras a seguir. Observa-se que os
resultados so os mesmos obtidos nas simulaes anteriores, quando no foi utilizado o Simulink.
28
Para realizar o controle de posio, o procedimento o mesmo adotado para o controle de
velocidade. Para tanto, basta alterar a matriz C do sistema no espao de estados para [0 0 1], o que
pode ser feito diretamente na rea de trabalho ou no prprio bloco State-Space. Utiliza-se o mesmo
ganho proporcional projetado anteriormente, ou seja Kp = 11,8. Novamente so utilizadas as
configuraes com Kp no ramo direto e Kp no ramo inverso. Os diagramas so mostrados nas
figuras a seguir.
29
A simulao dos dois sistemas de controle pode ser vista nas duas figuras a seguir. A
primeira figura resultado da aplicao de Kp no ramo direto e a segunda da aplicao de Kp no
ramo inverso.
Outro tipo de controlador projetado anteriormente, com o auxlio da ferramenta SISOtool,
foi um controlador em avano (ou em atraso) de fase. Para inserir um controlador desse tipo, basta
escolher a estrutura Zero-Pole encontrada na opo Continuous, e ento definir os plos, os zeros e
o ganho desejados para realizar o controle em avano (ou atraso). A figura a seguir mostra o
esquema desse tipo de controlador.
A figura a seguir mostra a resposta ao degrau visualizada no bloco Scope.
Uma considerao importante a se fazer: possvel alterar o mtodo (solver) utilizado pelo
Simulink para calcular as respostas temporais que so mostradas nos blocos Scope. Por exemplo,
pode-se mudar de passo fixo para passo varivel, o que evita problemas quando h singularidades.
Para isso, necessrio clicar na opo Simulation na barra de ferramentas superior e escolher a
opo Configuration Parameters... e ento aparecer a janela mostrada a seguir, onde possvel
fazer todas as alteraes desejadas.
30
Tambm possvel definir o sistema a ser simulado diretamente a partir de sua funo de
transferncia. Para isso basta definir seu diagrama de blocos, o qual pode ser facilmente construdo
no Simulink, conforme mostrado na figura abaixo. Nesse caso no so mostrados os valores dos
ganhos, os quais so tirados diretamente da funo de transferncia entre alimentao e velocidade
(motor CC).
31
Nota-se novamente a existncia de um bloco somador, Sum, o qual est disponvel na opo
Commonly Used Blocks. Esse bloco pode ser editado conforme os demais. Assim, possvel alterar
o nmero de entradas e os sinais das mesmas.
H ainda blocos integradores, que so os responsaveis por integrar a derivada da posio
para fornecer a posio. Esses blocos esto disponveis na opo Continuous com o nome
Integrator.
possvel criar subsistemas selecionando certos blocos, clicando-se o boto direito e
selecionando a opo Create Subsystem. Selecionando todo o subsistema correspondente ao motor
de corrente contnua, ser criado um subsistema conforme mostrado na figura a seguir.
32
Tambm possvel fazer um controle proporcional conforme os anteriores, bastando para
isso utlizar o subsistema gerado a partir do diagrama de blocos, os ganhos e o somador para a
realimentao. Um controlador proporcional (para a velocidade) inserido no ramo direto, com o
mesmo Kp j projetado ( Kp = 32,9).
A figura com o resultado da simulao pode ser observada abaixo. Percebe-se que os
33
resultados so os mesmos j obtidos quando o sistema foi definido com o bloco State-Space.
Otimizao
O problema matemtico da otimizao o de encontrar, para uma dada funo, seu valor
mnimo (ou mximo) e o ponto ou intervalo em que ele ocorre. Isso pode ser escrito como:
min
x
f ( x)
ou
max
x
f ( x) .
Determinar x para o qual f(x) mnimo ou mximo. x potencialmente uma varivel
vetorial, ou seja, f pode depender de vrias variveis. Para o caso de valor mnimo tem-se um
problema de minimizao; maximizao para o caso contrrio. As funes da Matlab e outros
programas e pacotes em geral so escritas de modo a contemplar apenas um dos dois problemas
(geralmente o de minimizao). Isso porque eles so intercambiveis: maximizar f(x) o mesmo
que minimizar -f(x). A funo f chamada funo objetivo.
Essa descrio a de um problema de otimizao irrestrita, ou seja, a varivel x pode
assumir qualquer valor. O conjunto de problemas mais complexo o da otimizao restrita, dado
por:
min
x
f ( x)
sujeito a
g( x)0
h( x)=0
.
O que quer dizer que a varivel (chamada em teoria de otimizao de varivel de deciso)
deve pertencer a um conjunto delimitado por funes na forma de igualdades e desigualdades (f e g
so funes vetoriais, podendo haver vrias igualdades e vrias desigualdades, que podem ser
estritas ou no). Para o caso de desigualdades no sentido positivo, basta mutilplic-las por -1, pois
g(x) < 0 o mesmo que -g(x) > 0.
Esses dois problemas representam a primeira diviso na otimizao, h mtodos especficos
para problemas irrestritos e para problemas restritos (muito mais complicados).
Outros casos que representam divisores de guas na otimizao so:
34
funo objetivo linear e restries lineares problema de programao linear, resolvido
usando o algoritmo simplex ou um mtodo de ponto interior (para muitas variveis,
centenas);
funo objetivo quadrtica e restries lineares algoritmo de programao quadrtica;
funo objetivo no linear e restries no lineares programao quadrtica seqncial,
mtodo da penalidade, lagrangiano aumentado, mtodos de ponto interior;
funo objetivo no linear, sem restries mtodo de Newton;
funo objetivo descontnua ou caixa preta (sem informao das derivadas nem
aproximaes) mtodo de Nelder-Mead (busca), algoritmo genticos;
varivel de deciso restrita a ser um nmero inteiro programao inteira; no caso de a
varivel alm de inteira ser binria tem-se a programao inteira binria.
O Matlab possui implementaes para todas essas classes de problemas, em alguns casos, as
funes identificam a ordem de grandeza do problema e trocam de algoritmo ou modo de operao
dependendo do tamanho do problema.
Um problema historicamente anterior ao de otimizao porm que pode ser tratado por
algoritmos semelhantes o de resolver um sistema de equaes no lineares, ou seja, encontrar x tal
que h(x) = 0. Por essa razo so includos no mesmo pacote de otimizao no Matlab.
A funes apropriadas para lidar com esses problemas so mostradas na tabela abaixo.
Todavia, no esgotam o universo de funes de otimizao do Matlab:
Classe de problema Funo(es)
Minimizao escalar (uma funo e uma
varivel)
fminbnd
Minimizao irrestrita
fminunc,
fminsearch
Programao linear
linprog
Prograo quadrtica
quadprog
Minimizao restrita
fmincon
Programao inteira binria
bintprog
Soluo de equao no linear
fzero
Soluo de sistema no linear
fsolve
As funes de otimizao exigem que sejam passadas a funo objetivo e as funes da
restries. Isso pode ser feito de duas formas, definindo cada funo na forma de um arquivo de
Matlab (.m), definindo um funo inline ou uma funo annima.
Problema exemplo
Como exemplo prope-se o seguinte problema de otimizao restrita:
min f ( x)=e
x
1
(4x
1
2
+2x
2
2
+4x
1
x
2
+2x
2
+1)
sujeito a
x
1
x
2
x
1
x
2
+1,5<0
x
1
x
2
10
.
Convertendo a segunda restrio para a forma menor do que zero, podem-se definir duas
funes no Matlab para representar a funo objetivo e as restries.
35
A funo das restries, pelo padro da mtodo a ser usado (fmincon) deve fornecer
tambm restries de igualdade como matriz vazia caso no existam.
function [c, ceq] = confun(x)
% Restries de desigualdade.
c = [1.5 + x(1)*x(2) - x(1) - x(2);
-x(1)*x(2) - 10];
% Restries de igualdade.
Ceq = [];
function z = fobj(x);
% Funo objetivo.
Z = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
Esse um problema de duas variveis. Uma chamada possvel para a funo fmincon,
supondo um ponto inicial de busca da soluo [-1, 1]
x0 = [-1,1];
options = optimset('LargeScale','off');
[x, fval] = ...
fmincon(@fobj,x0,[],[],[],[],[],[],@confun,options)
A varivel options usada para determinar parmetros que controlam a execuo do
algorimo. Quase todas as funes do pacote de otimizao admitem a estrutura com tais parmetros.
Essa estrutura pode ser criada pela funo optimset informando nome e valor dos parmetros
que se deseja fazer diferentes dos padres. Neste caso, escolheu-se usar a forma padro do
algoritmo e desativar o modo de problemas de grande porte, que inicializidado por padro e pode
inclusive ser trocado automaticamente caso isso seja decidido pela funo de otimizao chamada.
O valor timo da funo obtido armazenado em fval e a varivel de deciso tima em x.
x =
-9.5474 1.0474
fval =
0.0236
A restries foram quase exatamente satisfeitas (quase nulas), como pode ser verificado
avaliando-as:
>> [c,ceq] = confun(x)
c =
1.0e-007 *
-0.9032
0.9032
ceq =
[]
Otimizao multiobjetivo
Todos esses problemas envolvem uma funo objetivo escalar, ou seja, apenas um objetivo
de otimizao. Uma extenso da otimizao est em imaginar que vrias funes devem ser
otimizadas simultaneamente. Nesse ponto entra a otimizao multiobjetivo. A abordagem mais
36
comum a de definir uma funo que combina de forma monotnica todas as funes envolvidas e
minimizar essa funo definida. Outra abordagem a de obter computacionalmente o que se chama
se superfcie de Pareto: o conjunto dos pontos para os quais h pelo menos uma das funes
objetivos otimizada sem que se possa melhorar outra funo sem piorar alguma que j timo.
O Matlab no implementa, at a presente verso, mtodos de otimizao que produzem
automaticamente superfcies de Pareto, isso precisaria ser programado pelo usurio. No entanto, a
primeira maneira citada de lidar com o problema pode ser usada.
Problema exemplo
O problema exemplo de minimizao multiobjetivo consiste de encontrar valores timos
para um controlador PID para otimizar o erro na resposta no controle de um sistema afetado por no
linearidades de atuao.
Considere o sistema descrito pela funo de transferncia:
H ( s)=
1,5
50s
3
+43s
2
+3s+1
,
em cuja entrada existam duas no linearidades: um limite de saturao e um limite no slew rate, que
o tempo mnimo para uma rampa de 1 V.
Coloca-se um controlador PID na entrada com parmetros iniciais provisrios inicializados
no espao de trabalho e constri-se o modelo no Simulink.
Coloca-se um degrau como entrada no sistema e o sinal de erro entre referncia e sada
alimentado no controlador. Dentro do bloco do controlador colocam-se variveis como valores dos
parmetros: Kp, Kd e Ki.
O diagrama em Simulink ser ento usado para simular repetidamente e obter a resposta do
sistema variando os valores dos parmtros do controlador at atingir valores timos no sentido de
minimizar a soma dos quadrados dos erros entre a entrada em degrau e a sada. Aqui entra o
conceito de multiobjetivo, pois a idia minimizar todos os erros simultaneamente, o critrio
adotador o de minimizar a soma dos quadrados de todos eles.
Basta definir em Matlab uma funo que invoca o diagrama e o simula dados os parmetros
37
do controlador. A sugesto aqui a de usar uma funo que produzir os parmetros timos pela
seqncia: inicializao e chamada da funo de minimizao de quadrados.
Sugere-se tambm, por organizao, definir a funo que produz o sinal de erro a ser
minimiado dentro da funo geral.
function [Kp,Ki,Kd] = otimizaPID
% Otimizao de parmetros de um PID por mnimos quadrados.

pid0 = [0.63 0.0504 1.9688]; % valores iniciais
% Opes do algoritmo de otimizao.
options = optimset('LargeScale','off','Display','iter',...
'TolX',0.001,'TolFun',0.001);
% minimizao do erro usando a fun definida abaixo
pid = lsqnonlin(@erro, pid0, [], [], options);
Kp = pid(1); Ki = pid(2); Kd = pid(3);

function F = erro(pid)
% Produz o sinal de erro entre a sada e o degrau unitrio.

Kp = pid(1);
Ki = pid(2);
Kd = pid(3);
% Parmetros de simulao
simopt = simset('solver','ode5','SrcWorkspace','Current');
% Simulao
[tout,xout,yout] = sim('optsim',[0 100],simopt);
% Erro entre sada e degrau
F = yout-1;

end
end
O resultado obtido ao se invocar [Kp,Ki,Kd] = otimizaPID
>> Kp
Kp =
0.6300
>> Kd
Kd =
1.9688
>> Ki
Ki =
0.0504
38
Computao simblica
A manipulao matemtica de smbolos representando variveis chamada computao
simblica. uma rea da matemtica ainda de desenvolvimento e cheia de problemas ainda no
resolvidos, por exemplo, no h algoritmo definitivo ou mesmo robusto para simplificao de
expresses matemticas que opere para um conjunto amplo de tipos de expresses. Teoricamente,
os programas de computao simblica usam de estruturas de rvores para armazenam e manipular
as expresses.
O Matlab implementa algumas tcnicas de manipulao simblica atravs do Symbolic
Toolbox. bastante conhecido que esse o ponto fraco do programa e h pacotes mais adaptados
para manipulao simblica no mercado, como o Mathematica. No entanto a presena desse pacote
atende a um requisito de completude do programa.
Define-se uma varivel simblica atravs de um nome de varivel (como em outros casos) e
uma string que a representao escrita na tela desta varivel. Para definir uma varivel chamada
var escrita na tela como x,
>> var = sym('x')
Para definir uma varivel simblica representada por uma string lexicamente idntica ao seu
nome pode-se usar o atalho (varivel x escrita como x)
>> syms x
A utilizada da primeira verso do comando consiste em usar representaes simblicas
familiares mesmo quando as letras usadas coincidem com nomes de outras variveis em um
programa longo.
As funes so baseadas em analogias com operaes realizadas quando se realiza
manipulao de expresses manualmente. Isto , h funes para fatorar um termo, expandir
produtos notveis, entre outras na tabela abaixo:
Operao Funo
Agrupar termos comuns
collect
Expanso de polinmios
expand
Fatorar
factor
Separar numerador e
denominador
numden
Procurar forma mais curta de
escrever
simple
Simplificao
simplify
Reescrever em termo de sub-
expresses
subexpr
Ainda, muitas funes numricas so sobrecarregadas no pacote simblico, pode ser
aplicadas com a mesma chamada sobre variveis numricas ou simblicas, outras so exclusivar do
pacote, algumas mais comuns:
39
Operao Funo
Derivada
diff
Integral
int
Matriz jacobiana
jacobian
Limite
limit
Expresso para uma srie
symsum
Srie de Taylor
taylor
Determinante
det
Autovalores e autovetores
eig
Matriz inversa
inv
Tringularizao superior de
matrizes
triu
Tringularizao inferior de
matrizes
tril
Valores singulares
svd
Exponencial matricial
expm
Composio de funes
compose
Soluo de equaes
solve
Funo inversa
finverse
Soluo de equao diferencial
dsolve
Grfico de funo simblica
ezplot
Ainda, todos os operadores do Matlab matm sua validade para variveis simblicas, tais
como /, *, .*, ./, \,.
Exemplo: sistemas lineares
Definindo as variveis simblicas e o sistema:
>> syms a b c d r s
>> A = [a b; c d];
>> y = [r; s];
>> x = A\y
x =

-(b*s-r*d)/(a*d-c*b)
(a*s-c*r)/(a*d-c*b)
40
Exemplo: equaes diferenciais
Para esse caso h um comando particular no pacote simblico: dsolve. O operador de
derivada denotado por uma letra D seguida de um nmero representando a ordem da derivada.
Para esta funo, os argumentos so strings no havendo a necessidade de definir variveis, porm,
o resultado produzido uma estrutura contento variveis simblicas.
>> resp = dsolve('2*Dy+3*y-x=5','Dx+x+(1/2)*y=0','y(0)=0','x(0)=0');
>> resp.x

ans =

-5/7+1/2*exp(-5/4*t)*(50/21*sin(1/4*3^(1/2)*t)*3^(1/2)+10/7*cos(1/4*3^(1/2)*t))


>> resp.y

ans =

10/7+exp(-5/4*t)*(20/21*sin(1/4*3^(1/2)*t)*3^(1/2)-10/7*cos(1/4*3^(1/2)*t))
Argumentos opcionais so as condies iniciais e a varivel independente. Quando no
informadas as respostas produzidas dependem de constantes padronizadas C1, C2, etc, e da varivel
t. Ou seja, outra maneira de chamar esta funo seria:
>> resp = dsolve('2*Dy+3*y-x=5','Dx+x+(1/2)*y=0','x');
O que produziria respostas em funo das constantes e com x como varivel independente.
41

Você também pode gostar