Buscar

Introdução ao Matlab e Simulink

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução aoMatlab e Simulink
Leandro Baroni
Sistemas de controle I
Junho
2018
SUMÁRIO
I Matlab 3
1 Introdução 4
1.1 Comandos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Vetores e matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Gráficos 10
3 Script doMatlab 13
4 Funções 13
5 Controle de execução 14
5.1 Declarações de controle condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1.1 Declaração if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1.2 Declaração switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2 Declarações de controle de loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.1 Declaração for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.2 Declaração while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.3 Declaração continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2.4 Declaração break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6 Solução de equações diferenciais 18
6.1 Equações diferenciais ordinárias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.1 Exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7 Sistemas de controle 21
7.1 Espaço de estados noMatlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1
7.2 Funções de transferência noMatlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.3 Respostas de um sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.3.1 Exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.3.2 Exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
II Simulink 26
8 Introdução 27
9 Início 27
9.1 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.2 Configurações da simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10 Interação do Simulink com oMatlab 30
11 Alguns blocos de comando 30
12 Exemplos 31
12.1 Exemplo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
12.2 Exemplo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2
Parte I
Matlab
3
1. INTRODUÇÃO
OMatlab é um softwarematemático otimizado para a resolução de problemas científicos e de enge-
nharia. A linguagem doMatlab é baseada no tratamento de matrizes e possui recursos de programa-
ção estruturada que permitem a implementação de códigos mais complexos, visualização gráfica e
simulação de sistemas dinâmicos entre outras características.
Este texto introdutório foi escrito para o Matlab R2014b. A interface doMatlab está bastante consoli-
dada, de modo que outras versões não devem apresentar alterações significativas.
A referênciaMatlat®Prime é um texto introdutório produzido pelaMathWorks para oMatlab R2018a
e de onde alguns exemplos foram tirados.
1.1 Comandos básicos
Ao iniciar o Matlab a tela da Figura 1.1 aparece em conjunto com o símbolo >>, indicando que o
software está pronto para receber comandos. Este é o prompt doMatlab. Ao digitar a expressão abaixo
seguida da tecla <enter>:
>> 12/2+3*(2^4)
Tem-se a resposta:
ans =
54
Pode-se armazenar valores em variáveis noMatlab, no qual todas as variáveis constituem-se emma-
trizes. Assim, as operações +, -, *, / e ^ são designadas como operações matriciais, enquanto que
operações com escalares podem ser utilizados os símbolos .+, .-, .*, ./ e .^. Quando o arranjo é
um número pode-se usar um ou outro símbolo indistintamente.
As variáveis devem ter um nome único, começando com uma letra e podem conter dígitos ou o sím-
bolo _ (underline). O Matlab distingue letras maiúsculas de minúsculas.
>> distancia = 100
distancia =
100
>> tempo = 3
tempo =
3
4
Figura 1.1: Tela de comando doMatlab
>> velocidade_media = distancia / tempo
velocidade_media =
33.3333
Note que ao digitar o nome da variável, o símbolo = e o seu valor, o Matlab armazena a variável
e a apresenta na tela. Para suprimir a exibição da variável adiciona-se um ponto-e-vírgula ao final
do comando. Quando uma expressão é criada e não armazenada em uma variável, o Matlab a salva
automaticamente na variável ans.
O comando whomostra todas as variáveis armazenadas durante uma sessão do Matlab. O comando
whos tem amesma função de who, porém exibindo mais detalhes.
>> who
Your variables are:
ans tempo distancia velocidade_media
O comando clear limpa uma oumais variáveis.
5
>> clear tempo
Para apagar TODAS as variáveis da sessão:
>> clear all
A Tabela 1.1 mostra algumas variáveis especiais. A Tabela 1.2 mostra algumas funções especiais.
Tabela 1.1: Variáveis especiais
ans Nome de variável padrão usado para resultados
pi 3.1416
eps Menor número que somado a 1, cria um número maior do que 1
inf Infinito
NaN Não número
i e j
p−1
realmin menor número real positivo
realmax maior número real positivo
Tabela 1.2: Funções matemáticas elementares
abs(x) Valor absoluto
sqrt(x) Raiz quadrada
sin(x) Seno
cos(x) Cosseno
tan(x) Tangente
asin(x) Arco seno
acos(x) Arco cosseno
atan(x) Arco tangente
exp(x) Exponencial (ex)
log(x) Logaritmo natural (base e)
log10(x) Logaritmo na base 10
sind(x) Seno (x em graus)
cosd(x) Cosseno (x em graus)
tand(x) Tangente (x em graus)
1.2 Vetores ematrizes
NoMatlab, um vetor é definido como:
>> A = [0 1 2 3 4 5]
A =
0 1 2 3 4 5
6
>> X = [0 0.2*pi 0.4*pi 0.6*pi 0.8*pi pi]
X =
0 0.6283 1.2566 1.8850 2.5133 3.1416
Outra forma de se criar um vetor (o primeiro valor é o valor inicial, o segundo o passo e o terceiro o
valor final):
>> A = 1 : 1 : 5
A =
1 2 3 4 5
>> X = 0 : pi/5 : pi
X =
0 0.6283 1.2566 1.8850 2.5133 3.1416
A função linspace gera um vetor linearmente espaçado a partir de um valor inicial, um valor final e
um número de elementos:
>> X = linspace(0, pi, 6)
X =
0 0.6283 1.2566 1.8850 2.5133 3.1416
De forma semelhante, a função logspace gera um vetor logaritmicamente espaçado a partir de uma
potência inicial, uma potência final e um número de valores.
>> V = logspace(0, 2, 5)
V =
1.0000 3.1623 10.0000 31.6228 100.0000
Matrizes são criadas da seguinte forma:
>> M = [1 0 -1 ; 2 3 4 ; -7 1 3]
M =
1 0 -1
2 3 4
-7 1 3
7
Esta é uma matriz 3× 3. Note que os elementos da linha são separados por espaço em branco e as
linhas são separadas por ponto-e-vírgula. Note também que um vetor é uma matriz com uma linha
(ou uma coluna). As operações commatrizes ou vetores são feitas usando os operadores básicos:
>> B = 2 * A
B =
2 4 6 8 10
>> Y = sin(X)
Y =
0 0.5878 0.9511 0.9511 0.5878 0.0000
>> Z = A.^2
Z =
1 4 9 16 25
Os operadores *, / e ^ devem ser precedidos por um ponto para serem utilizados em matrizes ou
vetores quando deseja-se que a operação seja realizada sobre cada um de seus elementos.
I A^2 significa potência de matrizes (A * A).
I A.^2 significa elevar cada elemento do vetor A ao quadrado.
Elevando cada elemento do vetor A ao quadrado:
>> Z = A.^2
Z =
1 4 9 16 25
Elevando o vetor A ao quadrado:
>> Z = A^2
Error using ^
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
Tem-se um erro pois o vetor A é uma matriz 1× 5 e a operação A*A não existe neste caso. Assim,
deve-se tomar ocuidado em operações que exigem concordância das dimensões das matrizes:
8
>> A = [1 2 3];
>> B = [4 5 6];
>> A*B
Error using *
Inner matrix dimensions must agree.
>> A*B'
ans =
32
O símbolo ' (aspas simples) significa transposição:
>> M'
ans =
1 2 -7
0 3 1
-1 4 3
Acesso a um elemento de um vetor:
>> Z(1)
ans =
1
>> Z(2)
ans =
4
>> Z(6)
Index exceeds matrix dimensions.
Tem-se um erro quando acessa-se uma posição inexistente do vetor. Para acessar vários elementos:
>> Z(1:3)
ans =
1 4 9
>> Z(3:5)
ans =
9
9 16 25
>> Z(2:4)
ans =
4 9 16
Para acessar umelemento de umamatriz é necessária a especificação de dois índices (linha e coluna):
>> M(2, 1)
ans =
2
Pode-se criar matrizes a partir de vetores ou outras matrizes:
>> b = [2 -3 1];
>> Mx = [b' M(:, 2:3)]
Mx =
2 0 -1
-3 3 4
1 1 3
M(:, 2:3) significa a parte damatriz M compreendida por todas as linhas (:) e as colunas 2 e 3 (2:3).
A matriz Mx foi gerada concatenando-se o vetor b transposto e as colunas 2 e 3 da matriz M.
As funções det(M) e inv(M) produzem o determinante e a inversa de umamatriz:
>> det(M)
ans =
-18
>> inv(M)
ans =
-0.2778 0.0556 -0.1667
1.8889 0.2222 0.3333
-1.2778 0.0556 -0.1667
Ao digitar no prompt help nome_do_comando, exibe-se uma pequena explicação sobre a função do
comando e sua sintaxe.
10
2. GRÁFICOS
Pode-se gerar gráficos a partir de matrizes:
>> X = linspace(0, 2*pi, 100);
>> Y = sin(X);
>> plot(X, Y)
O gráfico é gerado pelo comando plot. A variável X contém os valores do eixo x e a variável Y contém
os valores do eixo y . As variáveis X e Y devem ter amesma dimensão (Figura 2.1(a)). Pode-se desenhar
duas curvas no mesmo gráfico (Figura 2.1(b)):
>> Y2 = cos(X);
>> plot(X, Y, X, Y2)
Ou de outra forma:
>> plot(X, Y);
>> hold;
>> plot(X, Y2)
O comando holdmantém o gráfico anterior na janela que se desenha o próximo gráfico.
(a) Uma curva (b) Duas curvas no mesmo gráfico
Figura 2.1: Gráficos gerados noMatlab
A cor e o tipo da linha podem ser especificadas dentro do comando plot, após as variáveis de cada
curva (Figura 2.2(a)):
11
>> plot(X, Y, 'r-', X, Y2, 'g.')
O parâmetro 'r-', por exemplo, significa que a curva será desenhada como uma linha na cor ver-
melha. 'g.' significa que a curva será de pontos na cor verde. A Tabela 2.1 mostra algumas opções
possíveis.
Tabela 2.1: Cores e símbolos dos gráficos
Cores Símbolos
b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus - - dashed
m magenta * star d diamond
y yellow s square (none) no line
k black < triangle (left) ^ triangle (up)
w white v triangle (down) > triangle (right)
h hexagram p pentagram
O comando legend insere uma legenda:
>> legend('Seno de X', 'Cosseno de X');
Outras personalizações (Figura 2.2(b)):
I Título para o gráfico:
>> title('seno(x) e cosseno(x)')
I Nome para o eixo x:
>> xlabel('Ângulo (em radianos)')
I Nome para o eixo y :
>> ylabel('Variáveis dependentes')
I Insere linhas de grade:
12
>> grid
I Dimensões dos eixos:
>> axis([xmin xmax ymin ymax]);
(a) Gráfico com ajuste de cores e símbolos (b) Nomes dos eixos e legenda
Figura 2.2: Gráficos personalizados
3. SCRIPT DOMATLAB
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 Tabela 3.1 salvo em um arquivo
chamado graficos.m são executados como:
>> graficos
O caractere % insere um comentário, que é ignorado na execução.
OMatlab possui um editor de texto integrado (M-file Editor), que pode executar o script apertando a
tecla <F5>.
4. FUNÇÕES
Pode-se definir funções no Matlab, que são chamadas dentro de um script. As funções são definidas
em arquivos de texto salvos com o nome da função e com extensão .m, na mesma pasta onde o pro-
grama principal está sendo executado e cuja primeira linha deve conter o comando function. Este
comando deve ter a seguinte sintaxe:
13
Tabela 3.1: Script graficos.m
clear all;
clc; % limpa a tela
T = 0 : 0.1 : 10; % define o vetor tempo
X1 = T.^2;
X2 = exp(T);
plot(T, X1, 'r.', T, X2, 'bo'); % desenha os gráficos
axis([0 5 0 100]);
legend('t^2', 'e^{t}');
xlabel('Tempo [s]');
ylabel('Resposta');
function [variaveis_de_saida] = nome_da_função (variaveis_de_entrada)
Pode-se ter várias variáveis de entrada e saída na função, separadas por vírgula. Por exemplo, dada a
equação de segundo grau:
ax2+bx+ c = 0
pode-se criar uma função que retorna as raízes desta equação, com o código dado na Tabela 4.1:
Tabela 4.1: Arquivo raizes.m
function [r1, r2] = raizes (a, b, c)
% Entradas: a, b, c (coeficientes da equação de 2o. grau)
% Saídas: r1, r2 (raízes)
delta = b^2 - 4 * a * c;
r1 = ( -b + sqrt(delta) ) / (2 * a);
r2 = ( -b - sqrt(delta) ) / (2 * a);
O arquivo da Tabela 4.2 faz uso da função raizes.m.
5. CONTROLEDE EXECUÇÃO
Em um determinado programa, muitas vezes torna-se necessário repetir um bloco de código ate que
uma determinada condição seja verificada ou aindamudar a ordemde execução dos comandos. Para
isso, é definido noMatlab declarações de controle condicional e controle de loop.
5.1 Declarações de controle condicional
As declarações de controle condicional (if, else, switch) permitem selecionar quando umbloco
de código deve ser executado.
14
Tabela 4.2: Arquivo principal
clear all;
clc;
% definição dos parâmetros da eq. de 2o. grau: a*x^2 + b*x + c = 0
a = 1;
b = -3;
c = 2;
[r, s] = raizes (a, b, c);
v = [r s]';
disp('As raízes são:');
disp(v);
5.1.1 Declaração if
A forma geral para o uso da declaracao if é a seguinte:
if <expressão booleana 1>
<sequência de comandos 1>
elseif <expressão booleana 2>
<sequência de comandos 2>
else
<sequência de comandos 3>
end
Quando a<expressão booleana 1> for verdadeira, as linhas de comandos definidas em<sequên-
cia de comandos 1> serão executadas e, caso contrário, se a <expressão booleana 2> for
verdadeira, os comandos definidos em <sequência de comandos 2> serão executados e, caso
contrário, serão executadas os comandos definidos na <sequência de comandos 3>. O resul-
tado da <expressão booleana> é verdadeiro ou falso e é definido a partir de operadores lógicos e
relacionais, descritos na Tabela 5.1.
Tabela 5.1: Operadores lógicos e relacionais
Lógicos Relacionais
& e < menor que
| ou > maior que
~ nao > maior que
=< menor ou igual
>= maior ou igual
== igual
~= diferente
Uma formamais simples da declaração if é:
15
if <expressão booleana>
<sequência de comandos>
end
Neste caso, a <sequência de comandos> será executada somente quando a <expressão boo-
leana> for verdadeira. Um exemplo do uso da declaração if está na Tabela 5.2.
Tabela 5.2: Exemplo do uso do if
% Generate a random number
a = randi(100, 1);
% If it is even, divide by 2
if rem(a, 2) == 0
disp('a is even')
b = a/2;
end
5.1.2 Declaração switch
Por outro lado, quando deseja-se um teste com relação a um conjunto de valores conhecidos, usa-se
a declaração switch. Por exemplo:
[dayNum, dayString] = weekday (date, 'long', 'local');
switch dayString
case 'Segunda-feira'
disp('Início da semana de trabalho')
case 'Terça-feira'
disp('Dia 2')
case 'Quarta-feira'
disp('Dia 3')
case 'Quinta-feira'
disp('Dia 4')
case 'Sexta-feira'
disp('Último dia da semana de trabalho')
otherwise
disp('Fim de semana!')
end
Tanto para if quanto para switch, o Matlab executa o código correspondente até a primeira condi-
ção verdadeira, então termina o bloco. Cada declaração requerum end correspondente.
16
5.2 Declarações de controle de loop
As declarações de controle de loop (for, while, continue, break) permitem controlar a exe-
cução de loops no programa.
5.2.1 Declaração for
O loop for repete um bloco de código um número fixo e predeterminado de vezes. Um end delimita
a declaração. A forma geral do loop for e::
for <contador> = <valor inicial> : <incremento> : <valor final>
<sequência de comandos>
end
onde <contador> é a variável de controle, <valor inicial> é o valor inicial da variável, <incre-
mento> é o incremento dado à variável <contador>, podendo ser positivo ou negativo (quando o
incremento for igual a 0, o loop não será executado) e <valor final> é omaior oumenor valor que
a variável <contador> pode assumir. Um end correspondente delimita a declarações. A Tabela 5.3
mostra um exemplo do uso do for para loops agrupados.
Tabela 5.3: Exemplo do uso do for
for i = 1 : m
for j = 1 : n
H(i,j) = 1 / (i + j);
end
end
5.2.2 Declaração while
O loop while repete umgrupo de declarações umnúmero indefinido de vezes, sob o controle de uma
condição lógica. Um end correspondente delimita as declarações. A estrutura de um loop while e:
while <expressão booleana>
<sequência de comandos>
end
Na estrutura, a <sequência de comandos> sera executada enquanto a <expressão booleana>
retornar um valor verdadeiro. A Tabela 5.4 apresenta um código para calcular a raiz do polinômio
x3−2x−5 usando ométodo da bisseção.
17
Tabela 5.4: Exemplo do uso do while
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b - a > eps * b
x = (a + b) / 2;
fx = x^3 - 2 * x - 5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
5.2.3 Declaração continue
A declaração continue passa o controle para a próxima iteração do loop for ou while no qual
aparece, saltando quaisquer declarações restantes. Isto também é válido para loops agrupados, ou
seja, a execução continua no início do loop no qual a declaração continue está colocada.
5.2.4 Declaração break
A declaração break permite terminar um loop for ou while. Em loops agrupados, break termina
somente o loopmais interno.
6. SOLUÇÃODE EQUAÇÕESDIFERENCIAIS
OMatlab possui funções nativas para resolução numérica de equações diferenciais, descritas na Ta-
bela 6.1.
Tabela 6.1: Funções de resolução de EDOs noMatlab
ode45
Usamétodos de Runge-Kutta de quarta e quinta ordens simultaneamente para
estimar o erro e o tamanho do passo. Use esta função como primeira escolha
para resolver uma equação diferencial.
ode23
Usa métodos de Runge-Kutta de segunda e terceira ordens simultaneamente
para estimar o erro e o tamanho do passo. ode23 é computacionalmente mais
leve do que ode45.
ode113 Usa método de Adams-Bashforth-Moulton de ordem variável. Para problemas
com pouca tolerância a erros ou problemas computacionalmente pesados.
ode15s Se ode45 se torna um processo lento, a equação diferencial deve ser de um
problema stiff. Neste caso use ode15s, ode23s, ode23t, ode23tb.
18
6.1 Equações diferenciais ordinárias
OMatlab apenas calcula soluções numéricas de sistemas de equações diferenciais de 1.a ordem. Uma
equação diferencial ordinária (EDO) deve ser formatada como:
dy
dt
= f (t , y)
com condição inicial y(t0)= y0, onde t é a variável independente e y é a variável dependente.
Uma EDO, para ser resolvida usando as funções doMatlab, deve ser escrita em um arquivo definindo
uma função. Por exemplo, a EDO
y˙ +5y = 0 ⇒ y˙ =−5y
deve ser escrita como a função da Tabela 6.2.
Tabela 6.2: Definição de uma EDO
function [yp] = problema1 (t, y)
% Definição do problema
yp = -5 * y;
Obs.: mesmo que a variável t não apareça explicitamente na equação diferencial, deve ser colocado
na definição da função.
Para resolver EDOs de ordem superior, deve-se convertê-las, por intermédio de uma mudança de
variáveis, em um sistema de EDOs de 1.a ordem. Por exemplo, a EDO de 2.a ordem:
x¨+4x˙+6x = 0
com condições iniciais x(0)= x0 e x˙(0)= x˙0 deve ser convertida em um sistema de EDOs de primeira
ordem:
x˙1 = x2
x˙2 =−4x2−6x1
onde x1 = x e x2 = x˙ e condições iniciais x1(0)= x0 e x2(0)= x˙0. As variáveis em um sistema de EDOs
são colocadas em forma de vetor coluna no Matlab. Assim, a função é escrita de acordo com a Ta-
bela 6.3.
Observe que esse sistema de EDOs de 1.a ordem deve ser escrito na forma de equação de estados. A
solução deste sistema de EDOs pode ser obtida usando a função ode45. A sintaxe é dada por:
[T, X] = ode45 (@funcao_edo, [t_inicial t_final], x0)
onde:
19
Tabela 6.3: Definição de uma EDO de 2.a ordem
function [xp] = problema2 (t, x)
% Definição da EDO de 2a. ordem como um sistema de EDOs de 1a. ordem
xp(1, 1) = x(2);
xp(2, 1) = -4 * x(2) - 6 * x(1);
I funcao_edo: nome da função que define as EDOs
I [t_inicial t_final]: vetor com os valores inicial e final da variável independente
I x0: vetor com os valores das condições iniciais
As saídas da função ode45 são os vetores T, com os valores da variável independente, e X, matriz
com os valores de cada variável do sistema de EDOs. Para resolver o sistema definido pelo código da
Tabela 6.3, condições iniciais x1 = 3 e x2 = 0 e 0≤ t ≤ 5, usa-se o comando:
>> [T, X] = ode45 (@problema2, [0 5], [3 ; 0]);
A função ode45 retorna o vetor T de dimensão n×1 (n pode ser obtido com o comando n = size
(T, 1)) e a matriz X de dimensão n×2, com os valores de x1 na primeira coluna e x2 na segunda
coluna.
Caso seja útil passar valores de parâmetros para a função que define a EDO, ela deve ser definida de
acordo com o código da Tabela 6.4:
Tabela 6.4: Definição de uma EDO passando os valores dos parâmetros
function [xp] = problema3 (t, x, a, b)
% Definição da EDO, passando os valores de a e b
xp(1, 1) = x(2);
xp(2, 1) = -a * x(2) - b * x(1);
Dados os valores a = 3 e b = 1, a solução é obtida por:
>> [T, X] = ode45 (@(t, x) problema2(t, x, 3, 1), [0 5], [3 ; 0]);
6.1.1 Exemplo 1
Seja o sistemamassa-mola-amortecedor da Figura 6.1. Este sistema é definido pela EDO:
x¨(t )+ b
k
x˙(t )+ k
m
x(t )= 1
m
f (t )
20
m
u(t )
x
k
b
Figura 6.1: Sistemamassa-mola-amortecedor
Escrevendo na representação de espaços de estados, com x1 = x(t ), x2 = x˙(t ) e y = x1 tem-se:
x˙1 = x2
x˙2 =− k
m
x1− b
m
x2+ 1
m
f (t )
y = x1
Dados os valores m = 1,5kg, b = 0,9Ns/m e k = 60N/m, desenhar os gráficos de x1 e x2 no Matlab
considerando as condições iniciais x(0)= 0,05m e x˙(0)= 0m/s e f (t ) nula.
1)Definir o código da EDO noMatlab (arquivo mma.m, Tabela 6.5):
Tabela 6.5: Arquivo mma.m
function [xp] = mma (t, x)
% Definição das EDOs do sistema massa-mola-amortecedor
m = 1.5; % [kg]
b = 0.9; % [Ns/m]
k = 60; % [N/m]
f = 0; % [N]
xp(1, 1) = x(2);
xp(2, 1) = -(k / m) * x(1) - (b / m) * x(2) + (1 / m) * f;
2) Programa principal (arquivo sim_mma.m) que resolve as EDOs e desenha os gráficos (Tabela 6.6).
O resultado são os gráficos da Figura 6.2. Observe que a saída do sistema é o estado x1.
7. SISTEMASDE CONTROLE
Os comandos apresentados neste capítulo fazem parte do Toolbox Control Systems, o qual deve estar
instalado.
21
Tabela 6.6: Arquivo sim_mma.m
clear all;
clc;
[T, X] = ode45 (@mma, [0 20], [0.05 ; 0]); % Resolve as EDOs
figure; % Abre uma nova janela de gráfico
plot (T, X(:, 1));
grid;
xlabel ('Tempo [s]');
ylabel ('x [m]');
figure; % Abre outra janela de gráfico
plot (T, X(:, 2));
grid;
xlabel ('Tempo [s]');
ylabel ('\dot{x} [m]');
(a) Curva de x1 (b) Curva de x2
Figura 6.2: Gráficos do sistemamassa-mola-amortecedor
7.1 Espaço de estados noMatlab
Um sistema de EDOs com coeficientes constantes pode representado no espaço de estados, da se-
guinte forma:
x˙=Ax+Bu
y =Cx+Du
onde x é um vetor contendo as variáveis de estado, u é a entrada, y é a saída, e A, B,C e D são matri-
zes constantes. Este sistema pode ser definido no Matlab usando o comando ss(), especificando as
matrizes A, B, C eD.
22
>> sys = ss(A, B, C, D);
sys é um objeto que representa o sistema noMatlab.
7.2 Funções de transferência noMatlab
Um função de transferência da forma:
G(s)= b0s
3+b1s2+b2s+b3
a0s4+a1s3+a2s2+a3s+a4
pode ser definida no Matlab a partir dos polinômios do numerador e denominador, os quais devem
ser declarados como um vetor com os coeficientes:
>> num = [b0 b1 b2 b3];
>> den = [a0 a1 a2 a3 a4];
Em seguida, define-se a função de transferência pelo comando tf():
>> sys = tf(num, den);
Uma forma alternativa de definir a função de transferência é:
>> s = tf('s');
>> sys = (b0*s^3 + b1*s^2 + b2*s + b3) / (a0*s^4 + a1*s^3 + a2*s^2 + a3*s
+ a4);
Damesma forma que o comando ss(), tf() retorna um objeto que representa o sistema noMatlab.
7.3 Respostas de um sistema
Pode-se obter as respostas a umdegrau unitário, impulso ou uma entrada qualquer usando o sistema
definido na variável sys com os seguintes comandos:
I step(sys): produz a resposta e plota a resposta do sistema sys a um degrau unitário.
I impluse(sys): produz e plota a resposta do sistema sys a um impulso unitário
I lsim(sys, u, t): plota a resposta do sistema sys a uma entrada u no intervalo de tempo t
I Definir o tempo t, de 0 a 4 s com 0,01 s de incremento
t = 0 : 0.01 : 4;
I Definir a entrada u
u = sin(10 * t);
23
7.3.1 Exemplo 2
A representação no espaço de estados do exemplo anterior é dada por:
x˙=
[
0 1
− km − bm
]
x+
[
0
1
m
]
f (t )
y =
[
1 0
]
x
considerando o estado como x=
[
x(t ) x˙(t )
]T
.
A resposta ao degrau pode ser obtida com o código do arquivo sim_mma2.m, Tabela 7.1. O comando
step no script sim_mma2.m produz o gráfico da Figura 7.1.
Tabela 7.1: Arquivo sim_mma2.m
m = 1.5; % [kg]
b = 0.9; % [Ns/m]
k = 60; % [N/m]
A = [0 1 ; -k/m -b/m];
B = [0 ; 1/m];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
step(sys);
Figura 7.1: Resposta ao degrau unitário do sistemamassa-mola-amortecedor.
7.3.2 Exemplo 3
A equação diferencial que descreve o sistemamassa-mola-amortecedor dado na Subseção 6.1.1 é:
x¨(t )+ b
k
x˙(t )+ k
m
x(t )= 1
m
f (t )
24
Para calcular a função de transferência do sistema, aplica-se a transformada de Laplace (com condi-
ções iniciais nulas):
s2X (s)+ b
k
sX (s)+ k
m
X (s)= 1
m
F (s)
Assim, tem-se a função de transferência:
X (s)
F (s)
=
1
m
s2+ bm s+ km
Usando os valores dem, b e k definidos na Subseção 6.1.1, a resposta à rampaunitária pode ser obtida
executando o script sim_mma3.m.
Tabela 7.2: Arquivo sim_mma3.m
m = 1.5; % [kg]
b = 0.9; % [Ns/m]
k = 60; % [N/m]
num = 1/m; % Numerador da função de transferência
den = [1 b/m k/m]; % Denominador da função de transferência
sys = tf(num, den); % Função de transferência
step(sys);
O resultado deve ser o gráfico da Figura 7.2.
Figura 7.2: Resposta ao degrau unitário do sistemamassa-mola-amortecedor.
25
Parte II
Simulink
26
8. INTRODUÇÃO
O Simulink é uma ferramenta integrante do Matlabque permite a modelagem, simulação e análise
de sistemas dinâmicos. Sua interface é um ambiente gráfica baseado em diagramas de blocos e pos-
sui bibliotecas de blocos configuráveis. O Simulink oferece integração com o ambiente do Matlab,
permitindo que se aproveite as vantagens de ambos os softwares.
9. INÍCIO
A partir do prompt doMatlab, pode-se iniciar o Simulink com o comando:
>> simulink
ou a partir do ícone na janela principal do Matlab indicado na Figura 9.1.
Figura 9.1: Janela principal do Matlab com o ícone do Simulink.
A janela principal do Simulink mostra um conjunto de blocos de comando divididos em bibliotecas,
como apresentado na Figura 9.2.
A janela de trabalho, mostrada na Figura 9.3, é criada quando se inicia um novo modelo de sistemas
ou abre um existente, pelos ícones indicados na Figura 9.2.
Os modelos são construídos na janela de trabalho a partir dos blocos de comando das bibliotecas,
27
Figura 9.2: Janela principal do Simulink.
Figura 9.3: Janela de trabalho do Simulink.
28
arrastando ou copiando-os para a janela de trabalho. A conexão entre os blocos é feita arrastando a
saída de um bloco até a entrada de outro. Um clique duplo sobre os blocos abre a janela de configu-
ração dos parâmetros, específica para cada bloco.
Para iniciar a simulação, basta usar a opção 'Simulation > Run' domenu principal.
9.1 Organização
Uma forma de organizar os blocos quando o sistema se torna complexo é o agrupamento de blocos
em subsistemas. Para isso, arraste uma área de seleção sobre os blocos desejados e selecione omenu
'Diagram > Subsystem & Model Reference > Create Subsystem from Selection'. Os
sinais entram e saem dos subsistemas usando as portas 'Inport' e 'Outport', respectivamente.
Pode-se adicionar comentários na janela de trabalho para ajudar a compreensão do sistema. Um
clique duplo cria uma área na qual pode-se escrever um texto. Os nomes dos blocos também podem
ser alterados.
A seleção domenu 'Display > Signal & Ports > Signal Dimensions' permite visualizar a
dimensão de cada sinal do sistema.
9.2 Configurações da simulação
O Simulink, como todos os programas que de simulação de sistemas dinâmicos, utiliza-se de algo-
ritmos de integração para resolver numericamente as equações diferenciais do sistema. A janela de
configuração da simulação (Figura 9.4), acessada a partir do menu 'Simulation > Model Con-
figuration Parameters', permite ao usuário fazer a configuração do tempo de simulação, inte-
grador, passo de integração tolerâncias, entre outras características.
Figura 9.4: Janela de configuração da simulação.
29
O Simulink utiliza algoritmos de passo variável por padrão, isto é, o passo de integração varia entre
os valores mínimo e máximo da janela de parâmetros conforme um algoritmo interno de escolha,
relacionado com os valores dos parâmetros de tolerância. Pode-se alterar para algoritmos de passo
fixo, se necessário. É importante sempre verificar se as configurações estão adequadas e a simulação
ocorre como esperado.
10. INTERAÇÃODO SIMULINK COMOMATLAB
Variáveis definidas na área de trabalho do Matlab podem ser usadas pelo Simulink. Para isso, deve-
se previamente definir o nome e o valor da variável no Matlab e configurar o bloco de comando para
usar esta variável. É umaprática comumdefinir os valores de constantes emum script doMatlab para
usá-las em simulações do Simulink. Pode-se tambémusar dados usando os blocos From Workspace
e From File para carregá-los no Simulink.
O Simulink envia variáveis para a área de trabalho do Matlabpor meio do bloco To Workspace. O
bloco To File salva o sinal em um arquivo no formato .mat.
11. ALGUNS BLOCOSDE COMANDO
A biblioteca de blocos é organizada em grupos funcionais:
I Sources: blocos para a geração de sinais de entrada
I Sinks: blocos para a coleta e visualização de sinais
I Math: blocos para manipulação matemática
I Continuous: blocos para a definição de funções de transferências contínuas
Na biblioteca Source, os blocos mais comumente utilizados são:
I Constant: gerar um valor constante
I Step: gerar uma função degrau
I Ramp: gerar uma função rampa
I Sine Wave: gerar uma função seniodal
I From Workspace: sinal previamente gerado na área de trabalho doMatlab
I Clock: tempo em cada passo de simulação
Na biblioteca Sinks, tem-se:
I Scope: mostra um sinal como função do tempo
I XYGraph: gráfico do sinal y como função do sinal x
I To Workspace: salva o sinal na área de trabalho doMatlab
30
Na biblioteca Continuous, tem-se:
I Transfer Fcn: permite definir uma função de transferência especificando os coeficientes dos
polinômiosdo numerador e denominador
I Zero-Pole: permite definir uma função de transferência especificando os polos e zeros
12. EXEMPLOS
12.1 Exemplo 4
A implementação em Simulink da equação diferencial que descreve o sistema massa-mola-amorte-
cedor do exemplo da Subseção 6.1.1 está mostrada na Figura 12.1. Os nomes originais dos blocos
foram mantidos e os valores das variáveism, b e k devem ser previamente definidos na área de tra-
balho doMatlab.
Figura 12.1: Sistemamassa-mola-amortecedor.
As respostas para x ('x') e x˙ ('xp') dadas as condições iniciais podem ser vistas nos blocos 'Scope'
correspondentes (Figura 12.2).
12.2 Exemplo 5
A resposta do sistema massa-mola-amortecedor pode ser obtida usando o bloco 'Transfer Fcn'
para definir a função de transferência do sistema no Simulink. Este bloco deve ser configurado com
os polinômios do numerador e denominador da função de transferência do sistema (Subseção 7.3.2).
A implementação em Simulink está mostrada na Figura 12.3 e a resposta ao degrau unitário está na
Figura 12.4.
31
(a) Resposta de 'x' (b) Resposta de 'xp'
Figura 12.2: Respostas do sistemamassa-mola-amortecedor
Figura 12.3: Sistemamassa-mola-amortecedor definido pela função de transferência.
32
Figura 12.4: Resposta ao degrau unitário do sistemamassa-mola-amortecedor.
33
	I Matlab
	Introdução
	Comandos básicos
	Vetores e matrizes
	Gráficos
	Script do Matlab
	Funções
	Controle de execução
	Declarações de controle condicional
	Declaração if
	Declaração switch
	Declarações de controle de loop
	Declaração for
	Declaração while
	Declaração continue
	Declaração break
	Solução de equações diferenciais
	Equações diferenciais ordinárias
	Exemplo 1
	Sistemas de controle
	Espaço de estados no Matlab
	Funções de transferência no Matlab
	Respostas de um sistema
	Exemplo 2
	Exemplo 3
	II Simulink
	Introdução
	Início
	Organização
	Configurações da simulação
	Interação do Simulink com o Matlab
	Alguns blocos de comando
	Exemplos
	Exemplo 4
	Exemplo 5

Continue navegando