Universidade Federal do ABC
Universidade Federal do ABC
Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas ESTO004 Instrumentação e Controle
2o quadrimestre de 2017
Laboratório 3:
Introdução à Modelagem com Matlab 1 Objetivos
Esta prática tem como objetivo apresentar o uso de Matlab®para encontrar a resposta de um sistema dinâmico.
2 Base teórica
2.1 Matlab
®O Matlab® (de MATrix LABoratory) é um pacote matemático capaz de tratar matrizes, vetores e outras estruturas, com números reais ou complexos. O Matlab®também possui recursos de programação que permitem implementação de procedimentos complexos, além de visualização gráca de sinais.
2.2 Operações básicas
Ao iniciarmos o Matlab a tela na Figura 1 aparece em conjunto com o símbolo indicando que o software está pronto para receber comandos. Este é o prompt do Matlab.
Figura 1: Tela inicial do Matlab® Ao digitarmos a expressão abaixo seguida da tecla <enter>:
2/10+5*32
Teremos como resposta:
ans = 45.200
2.2.1 Matrizes e vetores
Podemos armazenar valores em variáveis no Matlab®. O Matlab® considera todas as variáveis como matrizes.
Assim, as operações + , - , * , / e são designadas como operações matriciais. Se o desejo for realizar operações
elemento a elemento das matrizes, devem ser utilizados os símbolos precedidos de um ponto. Quando o arranjo é um número pode-se usar um ou outro símbolo indistintamente.
Para exemplicar, vamos primeiro denir duas matrizes A =
1 2 4 7
e B =
2 4 3 10
. Para isso, escrevemos os elementos de cada linha. Ao nal da linha, coloca-se um ponto e vírgula e então os elementos da outra linha:
A = [1 2;4 7]
A =1 2 4 7
B = [2 4;3 10]
B =2 4 3 10
Para fazer a operação matricialAB, deve-se escrever:
A*Bans = 8 2429 86
Para fazer a multiplicação elemento a elemento
1∗2 2∗4 4∗3 7∗10
, deve-se escrever:
A.*Bans = 2 812 70
Para evitar que o resultado de uma operação apareça na tela, basta terminá-lo com um ponto e vírgula:
b = [4;10;-34];
Nesta operação o vetor colunab foi criado sem que seu resultado fosse mostrado.
Note que ao digitarmos o nome da variável, o símbolo = e o seu valor o Matlab® armazena a variável e a apresenta na tela.
Também é possível criar vetores grandes. Por exemplo, para criar um vetortcujo primeiro elemento é 0, o último elemento é 10 e o intervalo entre os valores é 0.01, deve-se digitar:
t = [0:0.01:10];
O resultado é um vetor com 1001 elementost= [0 0.01 0.02 0.03 . . . 9.99 10].
Para acessar um elemento de uma matriz é necessária a especicação de dois índices (linha e coluna). O primeiro número é a linha e o segundo é a coluna. Por exemplo, para acessar o elemento da segunda linha e da primeira coluna da matrizA, escreve-se:
A(2,1) ans = 4
O Matlab® também opera facilmente com números complexos. Por exemplo, com o seguinte comando (o comando sqrt calcula a raiz quadrada do número), chega-se a um número complexo:
f = -2+sqrt(-9)
f = -2 + 3i
No Matlab®, tanto a variável i quanto j podem ser utilizadas para simbolizar a unidade imaginária. Por exemplo, para entrar com o número g = -6+j4, deve-se escrever:
g = -6+4*j g = -6 + 4i
Assim como i e j, existem outras variáveis especiais, com valores especicados. Algumas destas variáveis estão descritas na Tabela 1.
Tabela 1: Variáveis especiais
i e j √
−1
pi 3.1416
eps Menor número que somado a 1, cria um número maior do que 1
inf Innito
realmin menor número real positivo realmax maior número real positivo NaN Não número
Também é possível extrair características de matrizes. Na Tabela 2 são mostrados algums comandos para lidar com matrizes.
Tabela 2: Comandos para matrizes eig calcula os autovalores da matriz
rank calcula o posto da matriz
trace calcula o traço da matriz (soma dos elementos da diagonal) transpose Calcula a matriz transposta
Por exemplo, para calcular os autovalores da matriz B, basta utilizar o seguinte comando:
eig(B) ans = 0.70850 11.29150
Vetores e matrizes podem também ser facilmente criados a partir de outros vetores e matrizes. Por exemplo, o comando abaixo calcula o cosseno de cada valor do vetor t criado acima:
y = cos(t);
O vetor y criado tem o mesmo número de elementos de t, sendo que cada um de seus valores corresponde a cosseno de um dos elementos do vetor t.
Algumas outras funções que atuam da mesma forma estão na Tabela 3.
Tabela 3: Comandos para matrizes
sin(x) calcula o seno de cada elemento do vetor x (x em radianos) cos(x) calcula o cosseno de cada elemento do vetor x (x em radianos) exp(x) calcula a exponencial de cada elemento do vetor x
tan(x) Calcula a tangente de cada elemento do vetor x (x em radianos) log(x) Calcula o logaritmo natural (base e) de cada elemento do vetor x log10(x) Calcula o logaritmo na base 10 de cada elemento do vetor x sqrt(x) Calcula a raiz quadrada de cada elemento de x
Um outro comando muito útil é o comando help. Ao digitar no prompt help nome-do-comando , exibe-se uma pequena explicação sobre a função do comando e sua sintaxe.
2.3 Grácos
Pode-se gerar grácos a partir de vetores, por exemplo, com o comando plot:
plot(t, y)
O comando acima irá fazer um gráco que a abscissa contém os valores contidos no primeiro vetor (t) e a ordenada contém os valores do segundo vetor (ver Figura 2).
Figura 2: Gráco resultante do comando plot(t,y)
2.4 Estruturas de Controle
Como qualquer linguagem de programação, o Matlab® tem as estruturas tradicionais de controle, como condicionais e laços. Abaixo é mostrada a estrutura do if.
if condição1 comandos1 elseif condição2;
comandos2 elsecomandos3 end
Na estrutura acima os comandos1 são executados caso a condição1 seja satisfeita. Se a condição1 não for satisfeita, mas a condição2 for, os comandos2 serão executados. Caso contrário os comandos3 serão executados.
As estrutura if pode ser feita sem o else e o elseif, se desejado.
Abaixo é mostrada a estrutura do laço for.
for x=vetor comandos end
No laço acima, os comandos dentro do laço serão executados uma quantidade igual ao número de elementos do vetor. Em cada uma das execuções, o valor de x assume o valor de um dos elementos do vetor.
Para escrever as condições das estruturas condicionais (como o if), deve-se utilizar os operadores relacionais e lógicos, descritos na Tabela 4.
Tabela 4: Operadores relacionais e lógicos
< menor que
<= menor ou igual a
> maior que
>= maior ou igual a
== igual a
= diferente de
& e
| ou
2.5 Scripts do Matlab
®Os comandos podem ser escritos em um arquivo de texto, conhecidos como arquivo de script do Matlab, e salvo com extensão .m . Os comandos no script são executados sequencialmente, como se estivessem sendo inseridos no prompt. Os arquivos de script podem ser executados no prompt digitando o nome do arquivo de script. Por exemplo, os comandos da Figura 3 salvo em um arquivo chamado gracos.m são executados como:
graficos
1 c l e a r a l l;
2 c l c; % limpa a t e l a
3 T = 0 : 0 .1 : 1 0 ; % d e f i n e o vetor tempo
4 X1 = T. ^ 2 ;
5 X2 = exp(T) ;
6 p l o t(T, X1 , ' r . ', T, X2 , ' bo ') ; % desenha os g r á f i c o s
7 a x i s( [ 0 5 0 1 0 0 ] ) ;
8 legend(' t ^2 ', ' e^{ t } ') ;
9 x l a b e l('Tempo [ s ] ') ;
10 y l a b e l(' Resposta ') ;
Figura 3: Exemplo de script
O caractere % insere um comentário, que é ignorado na execução. O Matlab possui um editor de texto integrado (M-le Editor), que pode executar o script apertando a tecla <F5>.
2.6 Resposta de sistemas dinâmicos obtida numericamente
A descrição de um sistema dinâmico no formato de espaço de estados é muito apropriada para encontrar a resposta de um sistema dinâmico de forma numérica. Para fazer esta integração numérica, começamos pela equação de estados:
˙
x(t) =f(x(t), u(t), d(t)) (1)
em queué o sinal de entrada de controle do sistema edé um distúrbio do sistema.
Para chegarmos em uma expressão dex(t), basta integrarx(t)˙ : x(t) =
Z t
0
˙
x(t)dt= Z t
0
f(x(t), u(t), d(t))dt (2)
Para fazer isto numericamente, temos que discretizar a integral. Uma integral nada mais é do que uma soma. Então, a equação acima vira:
x(n) =x(0) +
n
Xf(x(n), u(n), d(n)) ∆t (3)
em que∆t é o passo de integração,n=∆tt ex(0)são as condições iniciais do sistema.
Começando de n= 1, as operações feitas são:
x(1) =x(0) +f(x(1), u(1), d(1))∆t
x(2) =x(0) +f(x(1), u(1), d(1))∆t+f(x(2), u(2)d(2))∆t=x(1) +f(x(2), u(2), d(2))∆t ... ...
x(n) =x(n−1) +f(x(n−1), u(n−1), d(n−1))∆t
(4)
Para obter o sinal de saída, basta utilizar a equação de saída da representação no espaço de estados.
y(t) =h(x(t), u(t), d(t)) (5)
Por exemplo, o sistema massa-mola-amortecedor da Figura 4 tem o seu comportamento descrito pela equação:
Figura 4: Sistema massa-mola-amortecedor
d2y(t) dt2 =−b
m dy dt − k
my(t) + 1
mf(t) (6)
Considerando a entrada comou(t) =f(t)e as variáveis de estado:
x1=y(t) (7)
x2=dy
dt (8)
Com isto as equações de estado e de saída cam:
˙
x1=x2 (9)
˙ x2=−b
mx2− k mx1+ 1
mu(t) (10)
y(t) =x1 (11)
Com isto, é possível colocar as equações acima no formato matricial:
x˙1
˙ x2
=
0 1
−mk −mb x1
x2
+
0
1 m
u(t) (12)
y=
1 0 x1
x2
(13) Na Figura 5 é mostrado o script utilizado para encontrar a resposta do sistema com m= 1,5 kg,b = 0,9 Ns/,k= 60N/m, a forçaf sendo um degrau de 1 N, comx1(0) = 0,05m ex2(0) =−0 m/s.
1 c l o s e a l l % fecha todas as j a n e l a s de f i g u r a s
2 c l e a r a l l % apaga todas as v a r i á v e i s
3 c l c
4
5 m = 1 . 5 ; % [ kg ] massa
6 b = 0 . 9 ; % [ Ns/m] amortecimento v i s c o s o
7 k = 60 ; % [N/m] constante da mola
8
9 A = [ 0 1;−k/m −b/m] ; % matriz A
10 B = [ 0 ; 1 /m] ; % matriz B
11 C = [ 1 0 ] ; % matriz C
12
13 Tf = 2 0; %[ s ] Duração t o t a l da simulação
14 dt = 0 . 0 0 1 ; %[ s ] Passo de i n t e g r a ç ã o
15 t = 0 : dt : Tf ; %[ s ] Cria o vetor de tempo
16
17 x = [ 0 . 0 5 ; 0 ] ; %[m;m/ s ] Condições i n i c i a i s
18
19 f = 1 ; % [N] Força a p l i c a d a na massa
20
21 u = f ;
22
23 f o r n = 1 :length( t )
24 dxdt = A*x + B*u ; %Equação de estados
25 x = x + dt *dxdt ; % i n t e g r a ç ã o
26 y (n) = C*x ; %equação de saída
27 end
28
29 p l o t( t , y )
30 x l a b e l(' t ( s ) ')
31 y l a b e l(' y (m) ')
Figura 5: Script para encontrar solução numérica do sistema massa-mola-amortecedor
3 Lista de material
Itens por grupo:
1. 1 computador
2. 1 licença do software Matlab®
4 Prática
No laboratório:
1) Execute o script da Figura 5 e plote o resultado.
(a) Modique o script para que as condições iniciais sejax1(0) = 0 m ex2(0) = 0,1m/s. Execute o script modicado e plote o resultado.
(b) Calcule os autovalores da matriz A utilizando o comando eig.
2) Escolha um destes modelos vistos em aula: Pêndulo invertido, Linha de Montagem ou Satélite.
(a) Utilize os seguintes valores para o modelo escolhido:
Pêndulo invertido:
m= 70kg,hb= 0,85m,g= 9,81m/s2, θ(0) = 0.1rad, dθdt
t=0= 0rad/s
Linha de montagem:
K= 0.71/dia,S(0) = 0 carros,P(0) = 100carros
Satélite:
J= 500 kg.m2,d= 1.5m,θ(0) = 0 rad, dθ
= 0,01rad/s
(b) Calcule os autovalores da matriz A utilizando o comando eig.
(c) Escreva um script de Matlab®para encontrar a resposta do sistema escolhido para as seguintes entradas (gere um gráco para cada uma das situações):
Pêndulo invertido:
1)Ta(t) = 0.H(t)N.m, 2)Ta(t) =−1.H(t)N.m e 3)Ta(t) =−10H(t)N.m
Linha de montagem:
1)o(t) = 0.H(t)carros/dia, ed(t) = 0carros/dia, 2)o(t) = 10.H(t)carros/dia e ed(t) = 0carros/dia e 3)o(t) = 20.H(t)carros/dia e ed(t) = 20.H(t)carros/dia
Satélite:
1)F(t) = 0N, 2)F(t) = 10.H(t)N, 3)F(t) =−10.H(t)N
3) Modique a representação em espaço de estados do modelo do motor DC apresentado em aula para que a saída do sistema possa ser a posição ângular θ. Lembre-se de queω(t) = dθdt. Utilize os seguintes valores para os parâmetros do motor:
J = 1.13.10−2 kg.m2, b = 0.028 N.m.s/rad, Ra = 0.45Ω , La = 0.1 H, K = 0.067 N.m/A e Kb = 0.067 V.s/rad.
(a) Calcule os autovalores da matriz A utilizando o comando eig.
(b) Escreva um script de Matlab®para encontrar a resposta do motor DC para as entradas abaixo. Utilize condições iniciais nulas. Para cada entrada, faça uma simulação em que a saída sejaθ e outra em que a saída sejaω. Gere um gráco para cada situação.
1)ea(t) = 5H(t)V 2)ea(t) =t.H(t)V 3)ea(t) =−10H(t)V
Para o relatório:
Para cada um dos três itens feitos, relate o seguinte:
1. Coloque o script utilizado. Descreva o que cada linha do script faz.
2. Coloque todos os grácos obtidos. Interprete os sinais obtidos de acordo com o sistema em análise. A característica das curvas obtidas estão de acordo com os autovalores da matriz A do modelo?