Escolar Documentos
Profissional Documentos
Cultura Documentos
2009
Laboratrio
Introduo ao uso do MATLAB
Exemplos e atividades propostas
ndice
1. Introduo ................................................................
................................................................................................
...............................................................................
............................................... 1
1.1
1.2
1.2.1
1.3
1.4
1.5
1.5.1
1.5.2
1.6
1.7
1.7.1
1.8
1.8.1
1.9
1.10
Seqncias ......................................................................................................................5
Obtendo ajuda.................................................................................................................6
Operaes matemticas ..................................................................................................7
Polinmios..................................................................................................................... 13
Avaliao, multiplicao, diviso e diferenciao....................................................................14
Funes de transferncia.............................................................................................. 15
Simulaes .................................................................................................................... 15
3.2
3.2.1
3.3
3.4
3.4.1
4. Programao ................................................................
................................................................................................
..........................................................................
.......................................... 24
4.1
4.1.1
4.1.2
4.1.3
4.1.4
4.1.5
4.2
4.2.1
Controle de fluxo........................................................................................................... 28
Estrutura condicional if ............................................................................................................28
Exemplo: 28
4.2.2
Estrutura repetitiva while ........................................................................................................29
4.2.3
Estrutura repetitiva for ............................................................................................................29
4.3
4.4
4.5
4.6
4.7
4.7.1
4.7.2
4.7.3
4.7.4
Vetorizao ................................................................................................................... 29
Entrada de dados .......................................................................................................... 30
Edio de funes existentes ........................................................................................ 30
Subfunes .................................................................................................................... 30
Exemplos de aplicao .................................................................................................. 31
Aproximaes .............................................................................................................................31
Anlise do erro em regime estacionrio ...................................................................................32
Atividade ....................................................................................................................................33
Atividade estabilidade em funo de um parmetro ...........................................................33
5.2
5.2.1
5.3
Exemplo ........................................................................................................................ 34
Atividade ....................................................................................................................................35
Exemplos....................................................................................................................... 36
7.2
7.2.1
7.3
7.3.1
8. Simulink ................................................................
................................................................................................
................................................................................
................................................ 49
8.1
8.1.1
8.1.2
8.2
8.3
8.3.1
Atividades ..................................................................................................................... 55
Subsistemas .................................................................................................................. 57
Exemplo controlador PI .........................................................................................................57
Foto da capa: "Motor driven XY table - Series MAXY6000 ". Obtida de:
http://www.unislide.com/images/motor/maxy6012elite.jpg
1. Introduo
O MATLAB (Matrix Laboratory) um ambiente de programao de alto desempenho voltado
para a resoluo de problemas que possam ser expressos em notao matemtica. Projeto e
simulao de sistemas de controle, anlise de dados e criao de grficos so algumas das
aplicaes possveis para esta ferramenta. Pacotes especficos, chamados toolboxes, permitem
a expanso do ambiente de trabalho do MATLAB para a resoluo de classes particulares de
problemas como processamento de sinais, identificao de sistemas, implementao de redes
neurais, lgica difusa (fuzzy), simulao, etc. Adicionalmente, um programa grfico chamado
Simulink, que trabalha juntamente com o MATLAB, permite a simulao interativa de
sistemas dinmicos lineares ou no-lineares, contnuos ou digitais.
Ajuda
Workspace
Prompt do interpretador
Janela de
comandos
Histrico de
comandos
A visualizao padro da janela de comando (conforme a figura 1.1) pode ser obtida, a
qualquer momento, clicando-se em View > Desktop Layout > Default.
Antes de iniciar a sesso de trabalho conveniente aumentar a fonte da letra usada na janela
de comando. Clique em File > Preferences > Command Window > Fonts & Colors, selecione a
1
opo "Use custom font" (ver figura 1.2) e ajuste o tamanho da fonte para (no mnimo) 16
pontos. Acredite: muitos erros de digitao pode ser evitados com esta simples providncia!
5]
O resultado do comando anterior mostrado na figura 1.3. Note que o comando passou a fazer
parte do histrico do programa e que a matriz foi armazenada no workspace. A alocao da
matriz tambm pode ser confirmada pelos comandos who (que mostra os nomes das variveis
armazenadas) ou whos (que mostra os nomes e espaos ocupados pelas variveis). Exemplo:
>> whos
Name
Size
Bytes
Class
1x5
40
double array
Comando digitado
1
6
4
3
7
5
Quando for interessante omitir a exibio do resultado de qualquer comando basta encerr-lo
com ponto-e-vrgula. Exemplo:
M = [2 1 3; 4 6 7; 3 4 5];
A partir deste ponto, o termo matriz ser usado apenas para designar matrizes com mais de uma dimenso.
3
O smbolo de porcentagem serve para criar comentrios de uma linha, tanto na janela de
comandos quanto no ambiente de programao do MATLAB.
Os elementos de uma matriz podem ser acessados pelo nome da varivel, seguido de ndices
entre parnteses, sendo que o primeiro elemento sempre o de ndice 1. Exemplo de acesso:
>> x = B(2)
x =
-4
Valores inseridos
automaticamente
A =
4
Para acessar os elementos de uma matriz escreve-se o conjunto de ndices entre parnteses,
separados por vrgula. Exemplo:
>> x = M(2,3)
x =
7
Para facilitar a repetio de comandos possvel usar as setas para cima e para baixo do
teclado ou dar um duplo-clique nos itens da janela de histrico. No existem comandos
especficos para desfazer atribuies feitas na janela de comando, apesar de existir a opo
undo no menu Edit do programa.
1.2.1
Atividades
Antes de iniciar as atividades a seguir, limpe a janela de comando digitando clc. Em seguida,
remova todas as variveis da memria, usando o comando clear. Se quiser eliminar apenas
uma varivel, use a sintaxe clear <nome da varivel>. Anote os resultados obtidos.
O comando anterior pode ser traduzido como "armazene em v1 os elementos de M que esto na
linha 2 e em todas as colunas". Da mesma forma, o comando a seguir cria um vetor coluna com
os elementos da primeira coluna da matriz M:
v2 = M(:,1)
e) O uso de ":" tambm permite a atribuio de valores a uma dimenso completa de uma
matriz. Por exemplo, verifique o efeito da seguinte instruo sobre a matriz M:
M(1,:) = 5
1.3 Seqncias
O uso de ":" tambm serve para denotar uma seqncia igualmente espaada de valores, entre
dois limites especificados, inteiros ou no.
Por exemplo, a instruo
v3 = 3:8
Exemplo:
>> v4 = 2:0.5:4
v4 =
2.0000
2.5000
3.0000
3.5000
4.0000
Outra forma de se obter um vetor com valores igualmente espaados pelo uso da funo
linspace. Por exemplo, a instruo
y = linspace(10,200,25)
gera um vetor linha com 25 valores igualmente espaados entre 10 e 200. Se o parmetro que
controla o nmero de pontos for omitido, a seqncia ter 100 valores.
A diferena entre usar o operador ":" e a funo linspace que a primeira forma exige o
espaamento entre os valores enquanto a segunda requer a quantidade de valores.
Seqncias com valores linearmente espaados so usados, normalmente, para fornecer
valores de variveis independentes para funes. Por exemplo, as instrues a seguir criam
um vetor com 50 valores da funo y = sen ( x ) , para x [0,2]:
x = linspace(0,2*pi,50);
y = sin(x);
Neste tipo de operao, chamada de vetorizada, o MATLAB cria ou redimensiona o vetor y com
a mesma dimenso do vetor x. Em situaes que exijam grandes variaes de valores, como na
anlise de respostas em freqncia, interessante que a variao de valores seja logartmica, o
que pode ser obtido com o uso da funo logspace, de sintaxe semelhante de linspace. Por
exemplo, a instruo
f = logspace(0,4,50);
Tambm possvel fazer uma busca por palavra-chave com o comando lookfor. Por exemplo,
lookfor identity
retorna uma descrio curta de funes relativas a matrizes identidade. Alm dessas formas,
pode-se consultar a documentao do MATLAB clicando no cone de ajuda da janela de
comandos.
5 5 5
B = 4 6 2
3 4 5
C = A+B
C = A-B
C = A*B
C = A.*B
C = A./B
C = A.^2
(Soma)
(Subtrao)
(Multiplicao matricial)
(Multiplicao elemento-a-elemento)
(Diviso elemento-a-elemento)
(Potenciao elemento-a-elemento)
i)
iv)
6 9 10
C = 6 9 11
9 4 6
5
C = 8
18
20
18
0
ii)
25
18
5
v)
4
C = 2
3
1
3
4
0
7
4
0 ,2 0 ,8 1,0
C = 0,5 0,5 4 ,5
2,0 0 0 ,2
iii)
vi)
36
C = 49
33
34
38
61
35
1 16
C = 4
9
36 0
25
81
1
49
64
Ateno:
Ateno
1) Para obter o sinal de potenciao (^) preciso pressionar a tecla correspondente duas vezes;
2) A multiplicao de uma matriz A (n k) por uma matriz B (k m) produz uma matriz n m.
Para as outras operaes mostradas, as matrizes A e B devem ter as mesmas dimenses.
1.5.1
Todo sistema de equaes lineares pode ser escrito sob a forma matricial Ax = b . Exemplo:
3 x 1 2 x 2 + x 3 = 4
S = 2 x 2 x 3 = 7
4 x + x + 2 x = 0
2
3
1
3
A = 0
4
2 1
2 1 ;
1
2
x1
x = x 2 ;
x 3
4
b = 7
0
Se a matriz dos coeficientes (A) for quadrada e no-singular, ou seja, sem linhas ou colunas
linearmente dependentes, a soluo (nica) do sistema dada por:
x = A 1 b .
Esta soluo pode ser calculada de forma direta pelo MATLAB pelas instrues:
7
ou
x = inv(A)*b
x = A\b
As duas formas fornecem as mesmas respostas, mas os clculos envolvidos no uso do operador
"\" exigem menos memria e so mais rpidos do que os envolvidos no clculo de uma matriz
inversa. O MATLAB tambm resolve sistemas sob a forma xA = b ou sistemas com mais de
uma soluo (o que no ser discutido neste material, consulte a ajuda do programa).
1.5.2
Atividade
S 1 = 2 x 2 x 3 = 7
4 x + x + 2 x = 0
2
3
1
x1 + 4 x 2 + 7 x 3 = 5
S 2 = 3 x 1 9 x 3 = 1
2 x + 5 x + 11 x = 2
2
3
1
x + 2 x 2 = 4
S3 = 1
3 x 1 + 6 x 2 = 5
Retorna uma matriz identidade n n, isto , com valores unitrios na diagonal principal e
nulos nas demais posies.
g) x = det(A)
Retorna o determinante da matriz quadrada A. Nota: para verificar se uma matriz possui
linhas ou colunas linearmente dependentes o manual do MATLAB recomenda usar a funo
cond (clculo do nmero de condio) ao invs de verificar se det(A) = 0.
h) x = find(expresso)
Encontra e retorna todos os elementos de um vetor ou matriz que satisfazem a uma certa
expresso lgica. Normalmente, usa-se argumentos esquerda da instruo de busca para
armazenar os ndices dos elementos de interesse. Exemplo:
>> A = [3 -2 1; 0 2 -1; 4 1 2];
>> [L C] = find(A>2 & A<=4)
L =
1
3
C =
1
1
Obs.:
3
A = 0
4
2 1
2 1
1
2
Operadores relacionais
<
<=
>
Operadores lgicos
Menor que
&
Operao "E"
Menor ou igual
Operao "OU"
Maior que
Negao lgica
>=
Maior ou igual
==
Igual a
~=
Diferente de
Estes operadores se aplicam a escalares e matrizes, de acordo com regras que podem ser
consultadas na documentao do MATLAB. Se o argumento da funo for apenas o nome de
uma matriz ou vetor, sero retornados os ndices de todos os elementos da matriz ou vetor que
forem diferentes de zero.
i) x = all(A)
Retorna 1 para cada coluna da matriz A que contenha somente valores no nulos e 0 em caso
contrrio, gerando um vetor linha. Exemplo:
>> A = [3 -2 1; 0 2 -1; 4 1 2];
>> x = all(A)
Obs.:
x =
0
3
A = 0
4
2 1
2 1
1
2
Para vetores, a funo retorna 1 se todos os elementos forem no nulos e 0 em caso contrrio.
j) x = any(A)
9
Retorna 1 para cada coluna da matriz A que contenha algum valor no nulo e 0 em caso
contrrio, gerando um vetor linha. A funo tambm trabalha com vetores. Exemplo:
>> x = any(A)
x =
1
1.7 Grficos
O MATLAB possui diversas ferramentas para traados de grficos bidimensionais ou
tridimensionais. A maneira mais simples de traar um grfico xy pelo uso da funo plot. A
forma plot(x,y) desenha um grfico bidimensional dos pontos do vetor y em relao aos pontos
do vetor x, sendo que ambos devem ter o mesmo nmero de elementos. No obrigatrio que
os valores de y representem uma funo em relao aos valores de x. O grfico resultante
desenhado em uma janela de figura com as escalas automticas nos eixos x e y e segmentos de
reta unindo os pontos. Por exemplo, para desenhar o grfico da funo
O resultado (ver figura 1.4) exibido em uma janela de figura identificada por um nmero.
10
Em algumas ocasies interessante que as escalas dos eixos sejam representadas em escala
logartmica (ao invs da escala linear padro). Nestes casos, possvel usar as funes
semilogx, semilogy ou loglog, que alteram, respectivamente, a escala do eixo x, do eixo y e de
ambos. Normalmente os valores que compem tais grficos tambm so gerados com
espaamentos logartmicos, via funo logspace.
A funo plot pode trabalhar com vrias duplas de vetores, sobrepondo mais de um grfico em
uma mesma janela. Exemplo:
x = linspace(0,2*pi,100);
y1 = sin(x);
y2 = 0.5*sin(3*x);
plot(x,y1,x,y2);
xlabel('ngulo em graus');
ylabel('sen(x) e sen(3x)');
title('Grficos sobrepostos')
grid
%
%
%
%
%
%
%
%
Note que foram usadas funes para nomear os eixos (xlabel e ylabel) e o ttulo do grfico
(title), alm de exibio de linhas de grade (grid). O resultado da seqncia de comandos
anterior est representado na figura 1.5.
Outra forma de se obter grficos sobrepostos com o uso da funo hold, que faz com que todos
os resultados grficos subseqentes ao seu uso sejam desenhados em uma mesma janela de
figura. Exemplo (considerando as variveis do exemplo anterior):
plot(x,y1);
hold on
plot(x,y2);
hold off
%
%
%
%
Todos os resultados grficos aparecem na janela de figura ativa. Uma nova janela pode ser
criada ou ativada pelo comando figure. Quando usada sem argumentos, esta funo cria uma
janela de ttulo Figure No. xx, sendo xx um nmero seqencial, considerado disponvel pelo
MATLAB. O uso de figure(n) cria a janela de figura n, se necessrio, e a torna ativa. Outros
recursos da funo plot podem ser consultados na documentao do MATLAB.
1.7.1
Grficos tridimensionais
Grficos em trs dimenses podem ser traados pelo MATLAB com a mesma facilidade que os
bidimensionais. A funo plot3 funciona de forma semelhante plot para o traado de grficos
de linha. Por exemplo, a seqncia de comandos a seguir produz um grfico de uma hlice
tridimensional. Note o uso da funo zlabel para nomear o eixo z do grfico.
t = linspace(0,6*pi,100);
plot3(sin(t),cos(t),t);
xlabel('seno(t)');
ylabel('cosseno(t)');
zlabel('z = t');
title('Grfico de hlice');
grid on;
12
A partir dessas matrizes, que representam uma grade retangular de pontos no plano xy,
qualquer funo de duas variveis pode ser calculada em uma matriz Z e desenhada pelo
comando mesh. Exemplo para o grfico de um parabolide elptico:
x = -5:0.5:5;
y = x;
[X,Y] = meshgrid(x,y);
Z = X.^2 + Y.^2;
mesh(X,Y,Z)
%
%
%
%
%
O resultado deste exemplo mostrado na figura 1.7. A funo mesh cria uma malha
tridimensional em que cada ponto unido por segmentos de reta aos vizinhos na malha.
Usando a funo surf possvel gerar um grfico de superfcie em que os espaos entre os
segmentos so coloridos. Em ambos os casos, uma quarta matriz pode ser usada como
parmetro para estabelecer as cores a serem usadas no desenho. Se esta matriz for omitida,
como no exemplo anterior, as cores das linhas sero relacionadas com a altura da malha sobre
o plano xy. As duas funes podem receber somente a matriz Z como parmetro, traando um
grfico de malha cujos valores de x e y correspondem aos ndices da matriz.
1.8 Polinmios
O MATLAB possui funes especficas para operaes com polinmios, como a determinao de
razes, avaliao, diferenciao, etc. Uma funo polinomial da forma
p ( x ) = a n x n + a n 1 x n 1 + + a 2 x 2 + a1 x + a 0
a n 1
a2
a1
a0 ] .
1.8.1
n (s ) = 3 s 2 + s + 1
d (s ) = s + 1 .
Note que o grau do polinmio resultante dado pela soma dos graus dos polinmios envolvidos
na multiplicao. Finalmente, a derivada de uma funo polinomial pode ser obtida
diretamente a partir do vetor que representa a funo com o uso da funo polyder.
14
-3
3
s + 2s + 3
2
pode ser armazenada em uma varivel no MATLAB pela seguinte seqncia de comandos:
>> n = 3;
>> d = [1 2 3];
>> G = tf(n,d)
Transfer function:
3
------------s^2 + 2 s + 3
1.10 Simulaes
Existem funes especficas para simular o comportamento de sistemas lineares a entradas
tipo impulso, degrau ou entradas genricas. Para simular a resposta a um impulso unitrio
(em t = 0 s) de um sistema linear utiliza-se a funo impulse, fornecendo os polinmios
representativos da funo de transferncia do sistema ou a prpria funo. Considerando as
variveis n e d do exemplo anterior, pode-se usar indistintamente
impulse(n,d)
ou
impulse(G)
O resultado da simulao apresentado em uma janela grfica, como mostra a figura 1.8.
Opcionalmente, pode-se fornecer um valor em segundos para o tempo final de simulao:
impulse(G,10);
15
A simulao da resposta a uma entrada em degrau unitrio feita pela funo step, como em:
step(G);
% Opo: step(n,d);
16
Como se trata da simulao de um sistema linear, a sada para uma entrada em degrau de
amplitude A pode ser calculada como y 2 (t ) = Ay (t ) . Finalmente as funes impulse e step
permitem que o usurio fornea um vetor de tempos a ser usado na simulao. Exemplo:
t = 0:0.01:15;
step(n,d,t);
Assim como no caso da funo plot, pode-se sobrepor dois grficos em uma mesma janela de
figura. Finalmente, para simular a resposta de um sistema linear a uma entrada genrica
preciso usar a funo lsim, fornecendo a especificao do sistema e os vetores de entrada e de
tempo de simulao. Exemplo (usando o sistema G definido anteriormente):
t = 0:0.1:10;
u = zeros(length(t),1);
u(21:30) = 0.5;
lsim(G,u,t);
%
%
%
%
O resultado da simulao apresentado em uma janela grfica, como mostra a figura 1.10.
Entrada
Sada
Se for usada uma sintaxe com argumentos esquerda a simulao ser feita mas o grfico no
ser desenhado. O vetor de sada criado pela funo ter sempre o mesmo nmero de
elementos do vetor de tempo fornecido.
17
G 1 (s ) =
10
s+5
G 2 (s ) =
b)
0,8
s+2
c)
G 3 (s ) =
1
0 ,01 s + 1
Em seguida, determine:
i)
ii)
iii)
iv)
os plos do sistema;
o valor final terico da resposta (usando o Teorema do Valor Final);
o valor final do sinal de resposta (a partir da simulao);
a constante de tempo do sistema.
Y(s)
y ( ) = lim s [ X (s )G (s ) ] = lim s Y (s )
G(s)
s 0
s 0
G (s ) =
K
s +1
G 4 (s ) =
1
s + s +1
b)
G 5 (s ) =
9
s + 3s + 9
c)
G 6 (s ) =
25
s + 7 s + 25
d)
G 7 (s ) =
25
s + 10 s + 25
Observao: Nas simulaes de resposta ao degrau criadas pela funo step as principais caractersticas
de desempenho podem ser obtidas diretamente na janela grfica: clique com o boto direito do mouse
sobre uma rea livre do grfico e selecione, no menu Characteristics, as opes Peak Response
(ultrapassagem ou sobressinal), Settling Time (tempo de assentamento), Rise Time (tempo de subida) e
Steady State (valor final).
18
Determine:
i)
ii)
iii)
iv)
v)
G (s ) = K
n 2
s 2 + 2 n s + n 2
G 8 (s ) =
Simule a resposta ao degrau e compare com o resultado analtico. Por que o teorema falhou?
2.6 Aproximaes
a) Obtenha em uma mesma janela de figura as respostas ao degrau de
G 4 (s ) =
1
s + s +1
2
G 9 (s ) =
10
s + 11 s + 11 s + 10
3
Repita (em outra janela de figura) para uma entrada em impulso. O que se pode concluir?
b) Obtenha em uma mesma janela de figura as respostas ao degrau unitrio de
G10 (s ) =
2
s + 2s + 2
2
G11 (s ) =
s+2
.
s + 2s + 2
2
03 Aproximaes e estabilidade
7,98
,
s + 11 ,4 s 2 + 14 s + 7 ,98
3
3.1.1
0 ,0893
0,7530
0 ,0893 s
+
Exemplo
Obtenha em uma mesma janela de figura as respostas ao degrau de cada termo da funo
G (s ) , dada anteriormente. Verifique qual termo possui maior influncia na resposta dinmica
do sistema. Confirme sua anlise a partir da resposta ao degrau do sistema de 3 ordem, G (s ) .
3.2.1
03 Aproximaes e estabilidade
Exemplos
7 ,98
s + 11 ,4 s 2 + 14 s + 7 ,98
ii) G 2 (s ) =
73 ,626
(s + 3 ) s + 4 s + 24 ,542
i)
1 ,278 s + 12 ,78
s 3 + 11 ,72 s 2 + 17 ,626 s + 4 ,26
(s z1 )
.
(s p1 )(s p 2 )(s p 3 )
c) Escreva uma seqncia de comandos que crie uma aproximao de 2 ordem, G 2 ( s ) , para:
G 3 (s ) =
156 ,25
.
s + 16 s + 78 ,75 s 2 + 81 ,25 s + 78 ,125
4
Use apenas instrues literais, isto , que no envolvam valores numricos diretamente.
G1 (s ) =
n 1 (s )
n (s )
e G 2 (s ) = 2 .
d 1 (s )
d 2 (s )
a) Conexo em cascata
X(s)
Y(s)
G1(s)
G2(s)
Comandos:
[n d] = series(n1,d1,n2,d2)
[n d] = series(G1,G2)
FT = G1*G2
3 opes para a
mesma operao
21
Y (s )
= G 1 (s )G 2 (s )
X (s )
03 Aproximaes e estabilidade
b) Conexo em paralelo
G1(s)
+
X(s)
Y(s)
Y (s )
= G1 (s ) + G 2 (s )
X (s )
G2(s)
Comandos:
[n d] = parallel(n1,d1,n2,d2)
[n d] = parallel(G1,G2)
FT = G1+G2
3 opes para a
mesma operao
3.4 Estabilidade
Sabe-se que um sistema em malha fechada estvel se sua funo de transferncia no
apresentar plos no semiplano direito do plano complexo, ou seja, se nenhum plo tiver parte
real positiva. Por exemplo, considere o sistema da figura 3.1.
X(s)
Y(s)
G(s)
H(s)
Figura 3.1: Sistema de controle em malha fechada
Y (s )
G (s )
.
=
X (s ) 1 + G (s )H (s )
q (s ) = 1 + G (s )H (s ) = 0
Para um sistema como o da figura 3.1, a funo feedback do MATLAB permite determinar
diretamente a funo de transferncia em malha fechada. Exemplo:
>> MF = feedback(G,H)
O padro da funo feedback trabalhar com realimentao negativa. Para sistemas com
realimentao negativa unitria, isto , quando H (s ) = 1 , usa-se:
>> MF = feedback(G,1)
22
3.4.1
03 Aproximaes e estabilidade
Exemplos
Investigue a estabilidade dos sistemas a seguir, admitindo a configurao da figura 3.1, com
realimentao negativa unitria. Sistemas marginalmente estveis devem ser classificados
como instveis.
a) G (s ) =
1
s 3 + s 2 + 2 s + 1 ,5
( ) Estvel
( ) Instvel
b) G (s ) =
1
s + 2s 4
( ) Estvel
( ) Instvel
c) G (s ) =
1
s 4 + 6 ,5 s 3 + 14 s 2 + 11 ,5 s + 2
( ) Estvel
( ) Instvel
d) G (s ) =
1
s + 2s + 2s + 3
( ) Estvel
( ) Instvel
***
23
04 Programao
4. Programao
Um dos aspectos mais poderosos do MATLAB a possibilidade de se criar programas em uma
linguagem de programao interpretada3 usando a mesma notao aceita na janela de
comando. Arquivos contendo cdigo MATLAB so arquivos de texto com a extenso .m
chamados de arquivos-M (M-files). Estes arquivos podem conter o cdigo de scripts ou funes,
funes
cujas principais caractersticas esto relacionadas na tabela 4.1.
Tabela 4.1: Caractersticas das formas de programao MATLAB
Arquivos de script
Arquivos de funes
F (s ) =
4.1.1
5
.
s + 2s + 5
2
Criando um script
%
%
%
%
%
%
%
%
%
Como a linguagem de programao do MATLAB interpretada, todos os cdigos precisam ser executados a partir
do MATLAB. possvel criar executveis independentes, assunto que no ser discutido neste material.
24
clear;
clc;
n = 5;
d = [1 2 5];
F = tf(n,d);
figure(1);
step(F,10);
figure(2);
impulse(F,10);
%
%
%
%
%
%
%
%
%
04 Programao
Antes de executar o script preciso que o MATLAB reconhea a pasta em que o arquivo .m foi
gravado como um diretrio de trabalho. Digite cd na janela de comando para descobrir o
diretrio de trabalho atual e, se necessrio, altere-o para o diretrio onde o script foi gravado.
Por exemplo, se o script foi gravado em C:\TEMP, digite:
>> cd c:\temp
4.1.2
Anlise do script
As primeiras linhas do cdigo proposto contm comentrios que so exibidos pelo comando
help quando o usurio pede ajuda sobre o script:
>> help Analise1
ANALISE1.M - Script para anlise de desempenho.
Simula a resposta ao degrau e ao impulso de:
5
F(s) = -----------s^2 + 2s + 5
Ateno: cria os polinmios 'n' e 'd' e a funo
de transferncia 'F' no workspace!
25
04 Programao
A primeira linha de comentrio, chamada de linha H1 usada nas buscas por palavra-chave
do comando lookfor. Exemplo:
>> lookfor desempenho
Analise1.m: % ANALISE1.M - Script para anlise de desempenho.
4.1.3
Funes so arquivos-M que estendem a capacidade de processamento dos scripts por aceitar
argumentos de entrada e retornar valores para o workspace. Cada funo trabalha com
variveis locais, isoladas do espao de memria do workspace. Alm disso, as funes podem
ser executadas mais rapidamente que os scripts por serem compiladas internamente em um
pseudo-cdigo que mantido em memria, aumentando a velocidade de execuo caso a funo
seja chamada mais de uma vez.
A primeira linha de um arquivo de funo depois dos comentrios iniciais deve conter a
palavra-chave function seguida pela definio dos valores de retorno, nome da funo e pela
lista de argumentos de entrada4. Como exemplo, analise o cdigo listado a seguir de uma
funo (Media) para clculo da mdia dos elementos de um vetor (o uso da estrutura if dera
explicado futuramente).
% MEDIA.M - Funo para clculo da mdia dos elementos de um vetor
% Verso simplificada, com verificao bsica de dimenso do vetor
% Forma de uso: y = media(V) , sendo V um vetor linha ou coluna
function y = Media(V)
[nl nc] = size(V);
% Obtm dimenses do vetor
if (nl==1 & nc==1)
% Se nl=nc=1, V um escalar
disp('Erro: a funo no trabalha com escalares');
else
y = sum(V)/length(V);
% Se no for escalar, calcula a mdia
end
% Fim da estrutura condicional
Note que o valor de retorno da funo foi o ltimo valor atribudo internamente varivel y. O
final do cdigo de uma funo no precisa de nenhum identificador especfico.
4.1.4
Atividade
Pesquise detalhes de funcionamento das funes disp e sum, usadas no cdigo da funo
Media. Consulte tambm a documentao da funo mean.
So vlidas as mesmas observaes feitas para os scripts em relao utilidade das primeiras linhas do cdigo.
26
4.1.5
04 Programao
Convenes
Palavra-chave
indicadora de funo
Nome da funo
Argumento de sada
(devolvido pela funo)
Se a funo retornar mais de um valor deve-se especificar uma lista de argumentos de retorno,
delimitada por colchetes. Argumentos de entrada, se existirem, devem estar entre parnteses.
As duas listas devem ter seus valores, obrigatoriamente, separados por vrgulas. Exemplo:
% PONTOMEDIO.M - Calculo das coordenadas do ponto mdio entre
% pontos. A funo deve receber 2 vetores de coordenadas (x,y)
function [x,y] = PontoMedio(coord_x,coord_y)
if(length(coord_x)==length(coord_y))
x = mean(coord_x);
y = mean(coord_y);
else
disp('Erro nas dimenses dos vetores!');
end
A lista de retorno pode ser omitida ou deixada vazia se no houver resultado a ser devolvido,
ou seja, pode-se escrever um cabealho como
function Calcula(x)
ou
function [] = Calcula(x)
04 Programao
Estrutura condicional if
As expresses podem incluir operadores relacionais e lgicos, como mostrado na tabela 4.2.
Tabela 4.2: Operadores relacionais e lgicos
Operadores relacionais
<
<=
>
Operadores lgicos
Menor que
&
Operao "E"
Menor ou igual
Operao "OU"
Maior que
Negao lgica
>=
Maior ou igual
==
Igual a
~=
Diferente de
Exemplo:
...
if x == 0
y = sin(3*t+a);
else
y = cos(3*t-a);
end
...
O MATLAB reconhece 6 estruturas de controle de fluxo: if, switch, while, for, try-catch e return.
28
4.2.2
04 Programao
O lao while executa um grupo de comandos enquanto uma expresso de controle for avaliada
como verdadeira. A sintaxe para este tipo de lao :
while expresso
<COMANDOS>
end
4.2.3
O incremento pode ser negativo ou omitido (caso em que ser adotado um incremento
unitrio). Exemplo de um trecho de cdigo que simula a operao da funo interna max:
...
M = V(1);
for i = 2:length(V)
% O incremento foi omitido!
if V(i) > M
M = V(i);
end
end
% Neste ponto, M = max(V)
...
4.3 Vetorizao
O acesso vetorizado uma opo aos laos de acesso individual a elementos de vetores ou
matrizes. Normalmente, o acesso vetorizado mais rpido que o acesso individual, feito com
laos de repetio. Exemplo de uso:
Acesso convencional
Acesso vetorizado
i = 0;
for t = 0:0.001:99.999
i = i+1;
y(i) = sin(t);
end
t = 0:0.001:99.999;
y = sin(t);
04 Programao
Se o valor de entrada for uma expresso, seu valor ser avaliado antes da atribuio varivel
usada no comando. Se o valor de entrada for um texto o caractere 's' (string) deve ser includo
na lista de argumentos da funo. Exemplo:
Titulo_Grafico = input('Ttulo do grfico: ','s');
Outra forma disponvel de interao via teclado dada pela funo pause. Quando usada sem
argumentos, a instruo interrompe a execuo de um script ou funo at que o usurio
pressione alguma tecla6. A funo pause especialmente til para permitir ao usurio a
leitura de vrias informaes impressas em tela ou durante a fase de depurao do programa.
No possvel editar o cdigo de funes internas do MATLAB como inv, max, etc. Apesar de
possvel, no recomendvel alterar diretamente o cdigo das funes que acompanham o
MATLAB. Se desejar7, crie uma nova verso com outro nome.
4.6 Subfunes
Os arquivos-M podem conter mais de uma funo. A primeira delas, cujo nome deve coincidir
com o nome do arquivo, a funo primria enquanto as demais so subfunes.
subfunes As
subfunes podem ser definidas em qualquer ordem aps a funo primria e suas variveis
sempre tem escopo local8. No preciso usar qualquer indicao especial de fim de funo
porque a presena de um novo cabealho indica o fim da funo (ou subfuno) anterior. Como
exemplo, analise o cdigo da funo Baskara, listado a seguir.
% BASKARA.M - Exemplo de uso de uma subfuno para
% clculo de razes de equao do 2o grau
% Funo primria: mesmo nome que o do arquivo .M
function x = Baskara(v)
a = v(1); b = v(2); c = v(3);
D = Delta(a,b,c);
% Obtm coeficientes
% Calcula "delta"
6 A funo pause tambm pode ser usada com argumentos. Quando usada sob a forma pause(N),
pause(N) a funo
interrompe a execuo do cdigo atual por N segundos.
7 E souber o que est fazendo.
8 possvel criar variveis globais, reconhecidas em todo o cdigo consulte a documentao do MATLAB.
30
04 Programao
Aproximaes
Crie uma funo chamada Aprox2 que obtenha uma aproximao de 2 ordem a partir de uma
funo de transferncia de 3a ordem, da forma:
G 3 (s ) =
n3
.
d 3 (s )
A funo deve receber como parmetros o numerador (um nmero real) e o polinmio de 3
grau correspondente ao denominador. Os valores de retorno devem ser os polinmios do
numerador e denominador da aproximao. Adicionalmente, devem ser superpostos os grficos
da resposta ao degrau das duas funes de transferncia. Exemplo de uso:
G 3 (s ) =
7,98
s + 11 ,4 s 2 + 14 s + 7 ,98
3
Instrues:
>> n3 = 7.98
>> d3 = [1 11.4 14 7.98];
>> [n2 d2] = Aprox2(n3,d3)
n2 = 0.7908
d2 = 1.0000
1.3090
0.7908
31
04 Programao
4.7.2
s 0
Um exemplo deste clculo mostrado no cdigo da funo Erro, listado a seguir, que desenha o
grfico do erro e da resposta ao degrau do sistema mostrado na figura 4.3.
function [ess] = Erro(K)
clc
G = tf(K,conv([1 1],[1 5]));
MF = feedback(G,1);
[y t] = step(MF);
u = ones(length(y),1);
e = u-y;
plot(t,y,t,e)
ess = e(length(e));
%
%
%
%
%
%
%
%
Limpa a tela
Cria a funo de ramo direto
Cria a funo em malha fechada
Obtm os vetores de simulao
Cria o vetor representativo da entrada
Calcula o vetor de erros
Traa os grficos da sada e do erro
Retorna o valor "final" do erro
No cdigo, observe o uso da funo step com argumentos esquerda e como a funo plot foi
usada para sobrepor dois grficos na mesma janela (uma alternativa ao uso de hold).
32
04 Programao
X(s)
Y(s)
G(s)
G (s ) =
(s + 1 )(s + 5 )
H (s ) = 1
H(s)
Figura 4.3: Sistema de controle realimentado
4.7.3
Atividade
Modifique o cdigo da funo Erro para aceitar como argumento de entrada o tempo de
simulao e os parmetros de G (s ) e H (s ) . Verifique a influncia do valor de K na resposta
dinmica do sistema.
4.7.4
a) Analise o grfico criado pela funo e verifique se existem valores de K para os quais o
sistema realimentado instvel.
b) Faa com que a funo aceite a entrada dos valores do ganho mximo e do passo. Exemplo:
Kmax = input('Digite o valor do ganho mximo: ');
c) Modifique a funo para detectar o valor de K que leva o sistema ao limite da estabilidade.
X(s)
1
3
s + 2s2 + 4s
33
Y(s)
Y(s)
G(s)
kp
Neste caso, percebe-se que as razes da equao caracterstica do sistema, dada por
q (s ) = 1 + k p G (s ) = 1 + k p
n (s )
=0
d (s )
dependem do valor do ganho Kp. O traado do lugar das razes de um sistema em malha
fechada, em funo de um ganho de ramo direto, pode ser obtido diretamente no MATLAB
pela funo rlocus. A partir da funo de transferncia em malha aberta,
G (s ) =
n (s )
d (s )
ou
rlocus(G);
% Sendo G = tf(n,d)
Neste caso, o MATLAB utiliza um vetor de ganhos criado automaticamente, com kp variando
de 0 a +. Este vetor tambm pode ser fornecido pelo usurio, como no exemplo a seguir:
VG = [0:0.5:20];
rlocus(n,d,VG);
O resultado apresentado em uma janela de figura com os plos e zeros de malha aberta
indicados por "
" e "", respectivamente. A funo rlocus tambm pode fornecer as razes
calculadas e o vetor de ganhos utilizado nos clculos, sem traar o grfico, usando-se:
[R Kp] = rlocus(n,d)
Analisando-se estes valores de retorno possvel descobrir, por exemplo, quais valores de kp
podem tornar o sistema instvel.
5.1 Exemplo
Considere um sistema como o da figura 5.1, com:
G (s ) =
1
3
s + 4s + 6s + 1
34
5.1.1
Atividade
Descubra quantos (e quais) valores de ganho kp foram usados pela funo rlocus para a
obteno do lugar das razes do sistema da figura 5.2.
A mensagem "Select a point in the graphics window" ser mostrada na janela de comando do
MATLAB e um cursor e forma de cruz aparecer na janela de figura, aguardando que um
35
ponto seja selecionado. No exemplo a seguir (figura 5.3) foi considerado o lugar das razes do
sistema descrito como exemplo no item 5.1.
Os plos calculados no vetor p ficam destacados na janela de figura at que o grfico seja
redesenhado. Importante: a funo rlocfind s funciona se existir uma janela de lugar das
razes criada pelo comando rlocus.
5.2.1
Atividade
Use a funo rlocfind para estimar o ganho kp que leva o sistema definido em 5.1 ao limite da
estabilidade.
5.3 Exemplos
Obs.:
Obs todas as anlises a seguir se referem a sistemas com a estrutura mostrada na figura 5.1.
a) Determine o ganho crtico (limite da estabilidade) para um sistema com:
G (s ) =
s2 s + 2
.
s (s 2 + 2 s + 3 )
36
G (s ) =
s (s + 2 ) s 2 + 4 s + 5
).
Verifique se possvel obter plos dominantes com parte real igual a -0,35 e determine para
qual valor de kp isto acontece.
c) Considere um sistema definido pela funo de transferncia:
G (s ) =
(s + 1 ) .
s 2 (s + 9 )
Determine o valor do ganho kp para o qual os trs plos de malha fechada so reais e iguais.
d) Um colega traou o lugar das razes de um sistema com
G (s ) =
s + 20
,
s s + 24 s + 144
O procedimento adotado pelo colega est correto, ou seja, o sistema em questo ter realmente
comportamento oscilatrio para kp 16,37? Justifique.
e) Considere o sistema de controle mostrado na figura 5.4 e os controladores:
i)
G c (s ) = k p
(Controlador proporcional)
ii)
G c (s ) = k i / s
(Controlador integral)
iii)
G c (s ) = k p +
ki
s +1
= k pi
s
s
Obtenha o lugar das razes de cada sistema compensado. Discuta a estabilidade dos sistemas
em funo do ganho e, quando possvel, determine o valor do ganho crtico.
X(s)
1
s2 + 5s + 6
Gc(s)
37
Y(s)
Y(s)
G(s)
kp
Mostre que, para a anlise de lugar das razes, esta estrutura equivalente da figura 5.1.
***
38
Y(s)
F(s)
C(s)
G(s)
H(s)
Figura 6.1: Configurao padro para a ferramenta de projeto SISO
Nesta configurao:
F (s ) o pr-filtro do sistema;
G p (s ) =
1 . 000
.
s (s + 125 )
Resoluo
Resoluo:
oluo a funo de transferncia do controlador PD dada por
G pd (s ) = k p + k d s = k p (1 + T d s ) ,
39
X(s)
kp
(1+Tds)
1.000
Y(s)
s(s + 125)
1 . 000 (1 + T d s )
s (s + 125 )
Neste exemplo, o zero do sistema (em s = -1/Td) ser posicionado arbitrariamente entre os
plos de malha aberta, com Td = 1/80 (ver figura 6.3).
Para executar a ferramenta de projeto com o diagrama de lugar das razes do sistema usa-se a
funo rltool. Seqncia de comandos:
>>
>>
>>
>>
>>
Td = 1/80;
n = 1000*[Td 1];
d = conv([1 0],[1 125]);
G = tf(n,d);
rltool(G);
A interface da ferramenta de projeto ser mostrada (ver figura 6.4) com os plos
correspondentes ao valor atual de kp (valor inicial = 1) destacados.
40
Ganho
atual
Configurao de
realimentao
Mudana de
estrutura
Plos atuais
(malha fechada)
Para verificar se os critrios de desempenho esto sendo satisfeitos abra uma janela com a
resposta ao degrau do sistema controlado, clicando em Analysis > Response to Step Command.
Inicialmente, so mostrados os grficos da sada do sistema e do esforo de controle (sada do
controlador), conforme a figura 6.5.
Resposta ao degrau
( r to y )
Esforo de controle
( u to y )
41
As curvas que aparecem na janela de resposta podem ser alteradas clicando-se em Analysis >
Other Loop Responses. No momento, oculte o grfico do esforo de controle, desmarcando a
opo "r to u (FCS)" (ver figura 6.6).
Esforo de
controle
Clique com o boto direito na janela de resposta ao degrau e selecione Characteristics > Rise
Time. Para k p = 1 o tempo de subida deve ser de aproximadamente 0,283 s.
Mantenha as janelas da resposta e da ferramenta de projeto lado a lado e altere o ganho kp
arrastando um dos plos atuais do sistema. O novo valor de ganho tambm pode ser digitado
na caixa de edio "Current Compensator". O desempenho exigido neste projeto deve ser
obtido para kp 27. Se for necessrio repetir o projeto, por exemplo, com outro valor de Td,
altere a funo de transferncia G (s ) e importe-a para a ferramenta de projeto, clicando em
File > Import e selecionando a varivel G como "funo da planta" (ver figura 6.7).
Funo de
transferncia
da planta
6.1.1
Atividades
a) Repita o projeto com Td = 1/200. Verifique se ainda possvel atender aos critrios de
desempenho exigidos e discuta os resultados obtidos.
42
b) Ainda com Td= 1/200, repita o projeto usando um controlador proporcional. Discuta os
resultados obtidos.
c) Usando os mesmos critrios de desempenho dos projetos anteriores, projete um controlador
proporcional-integral (PI) para a planta:
G P (s ) =
1 . 000
.
(s + 125 )(s + 500 )
G pi (s ) = k p +
ki
s + 1 Ti
1
= k p
= k p 1 +
,
s
Ti s
s
Adote um valor para o tempo integral e determine o valor de kp que permita atender s
especificaes de desempenho propostas. Justifique a escolha feita para a posio do zero em
relao aos plos do sistema.
***
43
07 Resposta em freqncia
G ( j ) = G (s )
s = j
Im (G ( j )) + Re (G ( j ))
= arctg ( Im (G ( j ))/ Re (G ( j )) ) ,
Atividades
a) Crie um script ou funo que calcule o valor da amplitude e fase (em graus) do ganho de
um sistema definido por
G (s ) =
10 . 000
s + 141 ,4 s + 10 . 000
2
G ( j ) =
10 .000
,
(10 .000 2 ) + (141 ,4 ) j
para entradas senoidais de freqncias: 1, 10, 100, 1.000 e 10.000 rad/s. Use as funes abs e
angle nos clculos e converta os ngulos de radianos para graus, multiplicando os valores por
180 e dividindo por . O que se pode concluir respeito do ganho do sistema?
b) Analise o cdigo listado a seguir.
function Ordem1(n,d,wmax)
w = logspace(-2,ceil(log10(wmax)),100);
for k=1:100
G = n/(d(1)*w(k)*i+d(2));
Mod(k) = abs(G);
Fase(k) = angle(G)*180/pi;
end
figure(1); semilogx(w,Mod); title('Modulo');
figure(2); semilogx(w,Fase); title('Fase (graus)');
07 Resposta em freqncia
d) Elabore uma funo (RespFreq) que desenhe os grficos da resposta em freqncia (mdulo
e fase do ganho) de um sistema linear da forma:
G (s ) =
n (s )
K
.
= 2
d (s ) as + bs + c
Sintaxe da funo
[Mod,Fase,w] = RespFreq(n,d,wmax);
Dados de entrada
Valores de retorno
Consideraes
Exemplo
10 . 000
.
s + 141 ,4 s + 10 . 000
2
Comandos:
>>
>>
>>
>>
n = 1e4;
d = [1 141.4 n];
G = tf(n,d);
bode(G);
% Opo: bode(n,d);
45
07 Resposta em freqncia
n 2
.
2
s 2 + 2 n s + n
Desconsiderando-se o ganho K, cujo efeito pode ser includo posteriormente, pode-se traar o
diagrama de Bode do sistema para uma freqncia normalizada ( u = n ) em funo da
relao de amortecimento (ver figura 7.2).
46
07 Resposta em freqncia
Esses parmetros podem ser usados para estabelecer critrios de desempenho no domnio do
tempo, apesar de no existirem formulaes exatas que relacionem a resposta em freqncia
com a resposta temporal de um sistema.
47
7.3.1
07 Resposta em freqncia
Atividades
G 1 (s ) =
4 ,494
s + 1,484 s + 4 ,494
ii)
G 2 (s ) =
s +1
s +s+2
2
b) A sada de um sistema linear excitado por uma entrada que no seja puramente senoidal
pode ser obtida pela composio dos efeitos associados a cada componente espectral do sinal de
entrada. Por exemplo, considere o sistema da figura 7.3.
x1(t)
+
x 1 (t ) = sen (5 t )
x(t)
+
+
G(s)
y(t)
x 2 (t ) = 0 ,5 sen (50 t )
G (s ) =
1 . 000
s + 20 s + 200 s + 1 . 000
3
x2(t)
48
08 Simulink
8. Simulink
O Simulink um programa que funciona de forma integrada ao MATLAB, usado para
modelagem e simulao de sistemas dinmicos lineares ou no-lineares, em tempo contnuo,
tempo discreto ou uma combinao dos dois modos. Os resultados das simulaes podem ser
visualizados, gravados em variveis do MATLAB ou em arquivos de dados.
1,5
s2 - s + 2
s(s2 + 2s + 3)
Y(s)
Uma janela para edio de um novo modelo (untitled) deve ser aberta automaticamente. Se
isso no acontecer, clique em File > New > Model na janela do Simulink.
49
08 Simulink
Para inserir um gerador de sinal tipo degrau no sistema basta clicar no bloco Step e arrast-lo
para a janela do modelo (ver figura 8.4).
50
08 Simulink
51
08 Simulink
Crie a ligao de realimentao ligando a entrada do somador com a linha de ligao entre o
bloco da funo de transferncia e o osciloscpio (scope) podem ser necessrias algumas
tentativas. Outra maneira de se fazer esta ligao posicionar o cursor sobre a linha de
ligao, pressionar a tecla Ctrl e arrastar o mouse at a entrada do somador. O processo de
clicar e arrastar pode ser feito em etapas para que as linhas de ligao sejam posicionadas de
forma conveniente.
Para completar o modelo, edite o valor do ganho do bloco amplificador e altere a funo de
transferncia, digitando os polinmios do numerador ([1 -1 2]) e do denominador ([1 2 3 0]).
Se desejar, edite os nomes dos blocos para descrever a funo de cada um. Finalmente, grave o
modelo como sistema_0
istema_01.mdl
_01.mdl antes de gerar a simulao. O resultado final deve ser
semelhante ao mostrado na figura 8.8.
8.1.1
Clique em Simulation > Parameters para acessar as opes de simulao (ver figura 8.9).
52
08 Simulink
Tempo
final de
simulao
Fator de
refinamento
08 Simulink
factor) que permite obter um nmero adicional de pontos de simulao entre aqueles que o
algoritmo usaria normalmente. Por exemplo, se o fator de refinamento for definido como 5,
cada passo de integrao (de tamanho varivel) ser divido em 5 subintervalos. Na prtica,
mais simples e eficiente (do ponto de vista computacional) melhorar os resultados de uma
simulao aumentando o fator de refinamento do que reduzindo o tamanho do passo de
integrao9.
8.1.2
Simulando
Ajuste o tempo de simulao para 80 segundos, alterando o valor de Stop Time (80). Simule a
resposta do modelo, clicando em Simulation > Start ou no cone em forma de seta na barra de
ferramentas do Simulink. O programa avisa que a simulao terminou emitindo um beep e
exibindo a palavra "Ready" na parte inferior da janela do modelo. D um duplo clique no bloco
do osciloscpio (Scope) para ver a simulao do sinal de sada. O resultado deve ser como
mostrado na figura 8.10.
Escala
automtica
possvel alterar as escalas dos eixos a partir das opes de configurao do bloco (clicando
com o boto direito do mouse em algum ponto do grfico) mas, geralmente, basta clicar no
boto de escala automtica (ver figura 8.10), indicado por um binculo. O resultado final
(ajuste de escala automtica) mostrado na figura 8.11. Se o resultado parecer pouco preciso,
aumente o fator de refinamento (3
3 ou 5 costumam ser valores adequados) e simule novamente.
Como padro, o Simulink armazena o vetor de tempo usado na simulao em varivel do
workspace chamada tout.
tout A criao desta varivel, incluindo seu nome, podem ser ajustados
na aba Workspace I/O da caixa de dilogo dos parmetros de simulao.
Por questes de estabilidade numrica, o fator de refinamento no deve ser aumentado indefinidamente.
54
08 Simulink
8.2 Atividades
Ateno:
namento = 5 e ajuste
a
o tempo de
Ateno Nas simulaes pedidas a seguir use fator de refinamento
simulao para valores convenientes.
a) Simule o comportamento do sistema da figura 8.12 para uma entrada senoidal de 5 rad/s.
Amplitude = 2
Figura 8.13: Sistema da atividade 8.2 b)
c) Obtenha o valor aproximado do ganho do sistema da figura 8.14 para um sinal de entrada
senoidal de 5 rad/s.
55
08 Simulink
1 = 5 rad/s
2 = 50 rad/s
G1 (s ) =
100
s + 14 s + 100
2
ii)
G 2 (s ) =
1 . 000
s + 20 s + 200 s + 1. 000
3
08 Simulink
h) possvel usar variveis do workspace como entradas para sistemas do Simulink, usando
o bloco From Workspace da biblioteca Sources.
Sources. Como exemplo, simule por 10 segundos o
comportamento do sistema da figura 8.18 para a entrada u (t ) = 0 ,75 sen (5 t ) . Para isso, crie
uma matriz de estmulos, VU,
VU com os tempos de simulao na primeira coluna e os valores da
funo u (t ) na segunda.
Modelo
Comandos:
Comandos
t = [0:0.1:10]';
u = 0.75*sin(5*t);
);
VU = [t u];
Observao
(VU).
bservao:
ervao o bloco From Workspace deve estar associado varivel correta (VU
VU
8.3 Subsistemas
Modelos complexos podem ser simplificados pela criao de subsistemas,
subsistemas que so conjuntos de
blocos relacionados logicamente. A maneira mais simples de se criar um subsistema pelo
agrupamento de blocos j existentes em um modelo. Tambm
ambm possvel adicionar
adicion um bloco
subsystem vazio a um modelo e edit-lo.
8.3.1
Exemplo controlador PI
57
08 Simulink
Clique em Edit > Create Subsystem. Os blocos selecionados sero substitudos por um bloco
chamado Subsystem, com uma entrada (In1
(In1)
Out1).
In1 e uma sada (Out1
Out1). Altere o nome do bloco para
"Controlador PI",, conforme a figura 8.21.
58
08 Simulink
Subsistema
personalizado
Figura 8.23:
3: Subsistema personalizado e caixa de dilogo de propriedades
Se desejar, consulte a ajuda do MATLAB para aprender a trabalhar com estes recursos.
***
59