• Nenhum resultado encontrado

PDF Laboratório 3: Introdução à Modelagem com Matlab 2 Base teórica

N/A
N/A
Protected

Academic year: 2023

Share "PDF Laboratório 3: Introdução à Modelagem com Matlab 2 Base teórica"

Copied!
8
0
0

Texto

(1)

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

(2)

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)

(3)

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.

(4)

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

(5)

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)

(6)

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:

1

˙ x2

=

0 1

mkmb 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.

(7)

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, 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,

= 0,01rad/s

(8)

(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) = 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?

Referências

Documentos relacionados

FORMULAIRE DE CANDIDATURE – PARTENAIRE PROXIMUS Chère Madame,Cher Monsieur, Nous vous remercions de l’intérêt que vous avez manifesté pour devenir Partenaire de Proximus.. Notre