Você está na página 1de 62

Engenharia de Controle

2009

Laboratrio
Introduo ao uso do MATLAB
Exemplos e atividades propostas

Prof. Anderson Harayashiki Moreira

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

Iniciando o MATLAB ......................................................................................................1


Manipulao de matrizes ...............................................................................................2
Atividades .................................................................................................................................... 4

Seqncias ......................................................................................................................5
Obtendo ajuda.................................................................................................................6
Operaes matemticas ..................................................................................................7

Sistemas de equaes lineares.................................................................................................... 7


Atividade ...................................................................................................................................... 8

Outras operaes com matrizes......................................................................................8


Grficos ......................................................................................................................... 10
Grficos tridimensionais ...........................................................................................................12

Polinmios..................................................................................................................... 13
Avaliao, multiplicao, diviso e diferenciao....................................................................14

Funes de transferncia.............................................................................................. 15
Simulaes .................................................................................................................... 15

2. Anlise de sistemas lineares de 1 e 2 ordem atividades ...................................


................................... 18
2.1
2.2
2.3
2.4
2.5
2.6

Sistemas de 1 ordem ................................................................................................... 18


Resposta temporal ........................................................................................................ 18
Sistemas de 2 ordem ................................................................................................... 18
Sistemas de 2 ordem sem zeros................................................................................... 19
Validade do Teorema do Valor Final............................................................................ 19
Aproximaes ................................................................................................................ 19

3. Aproximaes e estabilidade de sistemas lineares ................................................


................................................ 20
3.1
3.1.1

3.2
3.2.1

3.3
3.4

3.4.1

Sistemas de 3 ordem ................................................................................................... 20


Exemplo .....................................................................................................................................20

Aproximaes para modelos de 2 ordem ..................................................................... 20


Exemplos ....................................................................................................................................21

Conexes entre sistemas .............................................................................................. 21


Estabilidade .................................................................................................................. 22
Exemplos ....................................................................................................................................23

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

Exemplo anlise de um sistema linear ..................................................................... 24


Criando um script ......................................................................................................................24
Anlise do script ........................................................................................................................25
Criando uma funo ..................................................................................................................26
Atividade ....................................................................................................................................26
Convenes.................................................................................................................................27

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. Lugar das razes introduo ................................................................


...............................................................................
............................................... 34
5.1
5.1.1

5.2
5.2.1

5.3

Exemplo ........................................................................................................................ 34
Atividade ....................................................................................................................................35

Anlise grfica do lugar das razes .............................................................................. 35


Atividade ....................................................................................................................................36

Exemplos....................................................................................................................... 36

6. Projeto usando lugar das razes introduo ........................................................


........................................................ 39
6.1
6.1.1

Exemplo de projeto ....................................................................................................... 39


Atividades ..................................................................................................................................42

7. Resposta em freqncia introduo ................................................................


....................................................................
.................................... 44
7.1
7.1.1

7.2

7.2.1

7.3

7.3.1

Determinao manual da resposta em freqncia ...................................................... 44


Atividades ..................................................................................................................................44

Diagrama de Bode ........................................................................................................ 45


Exemplo .....................................................................................................................................45

Sistemas de 2a ordem ................................................................................................... 46


Atividades ..................................................................................................................................48

8. Simulink ................................................................
................................................................................................
................................................................................
................................................ 49
8.1
8.1.1
8.1.2

8.2
8.3

8.3.1

Exemplo de uso ............................................................................................................. 49


Configurando os parmetros de simulao ..............................................................................52
Simulando ..................................................................................................................................54

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

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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.

1.1 Iniciando o MATLAB


Execute o MATLAB 6.5 a partir do menu "Iniciar". A tela principal do programa (figura 1.1)
contm, em sua visualizao padro, uma janela de comandos (command window), uma janela
para exibio da rea de trabalho (workspace), onde ficam armazenadas as variveis definidas
pelo usurio e o histrico de comandos. A janela de comando fornece a principal forma de
comunicao entre o usurio e o interpretador MATLAB, que exibe um sinal de prontido
(prompt) para indicar que est pronto para receber instrues.
Novo modelo do Simulink

Ajuda
Workspace
Prompt do interpretador

Janela de
comandos
Histrico de
comandos

Figura 1.1: Tela principal do MATLAB

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

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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!

Figura 1.2: Ajuste da fonte usada na janela de comandos

1.2 Manipulao de matrizes


O tipo numrico padro usado pelo MATLAB a matriz de valores em ponto flutuante:
nmeros reais ou complexos so armazenados em matrizes 1x1. A maneira mais simples de se
armazenar uma matriz na memria com uma atribuio, como em:
>> A = [2

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

Grand total is 5 elements using 40 bytes

O MATLAB sensvel caixa,


caixa ou seja, diferencia letras maisculas de minsculas e aloca
automaticamente o espao de memria necessrio para as variveis usadas.

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

Comando digitado

Figura 1.3: Atribuio de valores

A matriz deste exemplo chamada de vetor linha,


linha j que se trata de uma matriz com apenas 1
linha: na digitao, os valores do vetor podem ser separados por espaos, como no exemplo, ou
por vrgulas. Para criar um vetor coluna deve-se separar cada linha das demais usando pontopontoe-vrgula.
vrgula Exemplo:
>> B = [5; -4; 6.5]
B =
5.0000
-4.0000
6.5000

Para criar uma matriz bidimensional1 basta combinar as sintaxes anteriores:


>> M = [2 1 3; 4 6 7; 3 4 5]
M =
2
4
3

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];

% Cria uma matriz 3x3 (3 linhas e 3 colunas)

A partir deste ponto, o termo matriz ser usado apenas para designar matrizes com mais de uma dimenso.
3

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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

Se uma nova informao for atribuda a um vetor ou matriz os redimensionamentos


necessrios sero feitos automaticamente. Exemplo:
>> A = [4 5 9];
>> A(6) = 8

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

O resultado de qualquer comando que no seja atribudo a uma varivel especfica


armazenado em uma varivel especial chamada ans.
ans Exemplo:
>> M(2,1)
ans =
4

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.

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

a) Armazene a seguinte matriz:


2 1 5
M = 3 1 1
2 0 2

b) Obtenha a matriz transposta de M, digitando:


m1 = M'

c) Obtenha a matriz inversa de M, digitando:


m2 = inv(M)

A utilidade da inversa de uma matriz ser discutida futuramente.


d) A indexao pode ser usada em conjunto com o sinal ":" para indicar "todos os elementos"
de uma certa dimenso. Por exemplo, o comando a seguir cria um vetor linha com todos os
elementos da segunda linha da matriz M:
v1 = M(2,:)

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

f) Se a atribuio envolver uma matriz vazia,


vazia indicada por um par de colchetes vazios,
possvel eliminar totalmente uma linha ou coluna de uma matriz. Por exemplo, a instruo
M(2,:) = []

remove a segunda linha da matriz M.


g) Finalmente, matrizes podem ser concatenadas por meio de atribuies diretas. Exemplo:
m3 = [[5; 5; 5] v2 v1']

% Cria uma nova matriz 3 x 3

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

cria um vetor linha com os valores 3, 4, 5, 6, 7 e 8 (o incremento padro unitrio).


O incremento pode ser definido pelo usurio se a seqncia for criada sob a forma:
5

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

[Valor inicial: Incremento: Valor final]

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);

% 'pi' uma funo interna que retorna o valor de

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);

cria um vetor com 50 valores espaados logaritmicamente entre 10 0 = 1 e 10 4 = 1 .000 .

1.4 Obtendo ajuda


H diversas maneiras de se obter mais informaes sobre uma funo ou tpico do MATLAB.
Se o nome da funo for conhecido pode-se digitar, na janela de comando:
help <nome da funo>

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.

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

1.5 Operaes matemticas


O MATLAB reconhece os operadores matemticos comuns maioria das linguagens de
programao nas operaes com escalares (nmeros reais e complexos). Nas operaes com
matrizes preciso respeitar as regras da Matemtica em relao s dimenses envolvidas. Por
exemplo, considere as seguintes matrizes:
1 4 5
A = 2 3 9
6 0 1

5 5 5
B = 4 6 2
3 4 5

Em seguida, considere as operaes:


i)
ii)
iii)
iv)
v)
vi)

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)

De acordo com as definies da Matemtica e as convenes do MATLAB, deve-se obter os


seguintes resultados:

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

Sistemas de equaes lineares

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

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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

Resolva, se possvel, os seguintes sistemas lineares.


3 x1 2 x 2 + x 3 = 4

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

1.6 Outras operaes com matrizes


H uma srie de funes disponveis no MATLAB para gerao ou alterao de matrizes e
vetores, exemplificadas a seguir.
a) x = max(A)
Retorna o maior componente de A. Se A for uma matriz, o resultado um vetor linha contendo
o maior elemento de cada coluna. Para vetores, o resultado o maior valor (ou o nmero
complexo com maior mdulo) entre seus componentes. Ainda para vetores, a sintaxe
[vmax imax] = max(v)

retorna o maior elemento do vetor v em vmax e o ndice correspondente em imax.


imax
b) x = size(A)
Retorna as dimenses da matriz A em um vetor linha, x = [ m n ],
] contendo o nmero de
linhas (m) e colunas (n) da matriz. A sintaxe
[m n] = size(A)

determina o nmero de linhas e colunas em variveis separadas.


c) x = length(A)
Retorna o comprimento do vetor A ou o comprimento da maior dimenso da matriz A. Neste
ltimo caso caso, length(A) = max(size(A)).
max(size(A))
d) x = zeros(n)
Cria uma matriz quadrada n n de elementos nulos. Tambm possvel obter matrizes
retangulares m n usando a sintaxe x = zeros(m,n).
zeros(m,n) A sintaxe
x = zeros(size(A))

produz uma matriz x com as mesmas dimenses de A, preenchida com zeros.


e) x = ones(n)
Semelhante a zeros, gerando matrizes com valores unitrios (preenchidas com 1's).
f) x = eye(n)
8

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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

No exemplo anterior, apenas A(1,1) e A(3,1) atendem ao critrio desejado. As expresses


vlidas em MATLAB podem incluir operadores relacionais e lgicos, resumidos na tabela 1.1.
Tabela 1.1: 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

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

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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

y = 1 1 ,1547 e 1 ,5 x sen (2 ,5981 x + 1 ,0472 ) ,


no intervalo x [0 ,10 ] , pode-se utilizar a seguinte seqncia de comandos:
>> x = 0:0.1:10;
>> y = 1-1.1547*exp(-1.5*x).*sin(2.5981*x+1.0472);
>> plot(x,y)

O resultado (ver figura 1.4) exibido em uma janela de figura identificada por um nmero.

Figura 1.4: Exemplo de resultado grfico da funo plot

10

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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

%
%
%
%
%
%
%
%

Cria vetor 'x' com 100 pontos de 0 a 2*pi


Calcula y1 = sen(x)
Calcula y2 = 0.5*sen(3x)
Traa os dois grficos
Nomeia o eixo x
Nomeia o eixo y
Atribui um ttulo ao grfico
Ativa as linhas de grade da janela

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.

Figura 1.5: Grfico de duas funes superpostas

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

%
%
%
%

Desenha o grfico de uma funo


Ativa a 'trava' de exibio grfica
Desenha outro grfico na mesma janela de figura
Desativa a 'trava' de exibio grfica
11

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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;

O resultado est representado na figura 1.6.

Figura 1.6: Grfico de linha tridimensional

O MATLAB tambm pode construir grficos de superfcies, a partir de um conjunto de


coordenadas tridimensionais xyz. Inicialmente, preciso gerar matrizes X e Y com,
respectivamente, linhas e colunas repetidas, preenchidas com os valores das variveis x e y.
Isto pode ser feito diretamente pela funo meshgrid, como no exemplo mostrado a seguir:
x = linspace(0,2,20);
y = linspace(1,5,20);
[X,Y] = meshgrid(x,y);

% Gerao de valores para 'x' e 'y',


% ambos com a mesma dimenso!
% Criao da matriz da malha 'xy'

12

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

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)

%
%
%
%
%

Definio da malha de pontos no eixo 'x'


Repetio da malha do eixo x para o eixo 'y'
Criao da matriz da malha 'xy'
Clculo da funo z = f(x,y)
Traado do grfico da funo '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.

Figura 1.7: Grfico de superfcie tridimensional

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

pode ser representada no MATLAB por um vetor de coeficientes,


coeficientes em ordem decrescente de
potncia:
p = [ an

a n 1

a2

a1

a0 ] .

Por exemplo, o polinmio g ( x ) = x 3 2 x 5 pode ser representado pelo seguinte vetor:


g = [1 0 -2 -5];
13

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

As razes (reais ou complexas) de um polinmio podem ser calculadas diretamente em um


vetor coluna pela funo roots. Exemplo:
>> r = roots(g)
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i

Note a forma de representao de nmeros complexos no MATLAB (parte real + parte


imaginria + i). De fato, o MATLAB reconhece automaticamente as letras i e j como a
unidade imaginria da matemtica.
De forma inversa, se forem conhecidas as razes de um polinmio, a funo poly reconstri o
polinmio original. Por exemplo, os coeficientes do vetor g do exemplo anterior, podem ser
recuperados pela instruo:
p1 = poly(r)

1.8.1

% Ateno: o argumento da funo poly deve ser um vetor coluna!

Avaliao, multiplicao, diviso e diferenciao

Avaliar um polinmio significa determinar o valor de p ( x ) para um dado valor de x. Para


calcular, por exemplo, g (2. 4 ) usa-se a funo polyval, como em:
>> y = polyval(g,2.4)
y =
4.0240

As operaes de multiplicao e diviso entre polinmios correspondem, respectivamente, a


operaes de convoluo e deconvoluo, implementadas pelas funes conv e deconv. Por
exemplo, considere:
e

n (s ) = 3 s 2 + s + 1

d (s ) = s + 1 .

O produto n (s ) d (s ) pode ser calculado com a seguinte seqncia de comandos:


>> n = [3 1 1];
>> d = [1 1];
>> prod = conv(n,d)
prod =
3

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

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

Por exemplo, a derivada de f ( x ) = 2 x 3 + x 2 3 x pode ser calculada com:


>> f = [2 1 -3 0]
>> f1 = polyder(p)
f1 =
6

-3

1.9 Funes de transferncia


Considere um sistema linear em que se possa monitorar uma varivel de sada, gerada pela
ao de uma varivel de entrada. Neste caso, define-se a funo de transferncia do sistema
como a relao entre a transformada de Laplace da varivel de sada e a transformada de
Laplace da varivel de entrada, considerando condies iniciais nulas. Existe uma classe
prpria no MATLAB para funes de transferncia, criadas pela funo tf e definidas pelo
quociente de dois polinmios na varivel s. Por exemplo, a funo de transferncia
G (s ) =

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);

% Simula a resposta ao impulso por 10 s.

possvel, ainda, armazenar os vetores do tempo de simulao (criado automaticamente pelo


MATLAB) e da resposta do sistema, sem desenhar o grfico correspondente. Exemplo:
[y t] = impulse(G,10);

% Simula por 10 s. Retorna vetores de tempo e sada

15

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

Figura 1.8: Resposta ao impulso

A simulao da resposta a uma entrada em degrau unitrio feita pela funo step, como em:
step(G);

% Opo: step(n,d);

O resultado desta simulao est representado na figura 1.9.

Figura 1.9: Resposta ao degrau unitrio

16

Engenharia de Controle Laboratrio

01 Introduo ao uso do MATLAB

No possvel alterar a amplitude do degrau usado na simulao. No entanto, possvel


controlar o tempo de simulao e armazenar os vetores de resposta (sada e tempo). Exemplo:
>> [y t] = step(G,10);

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);

%
%
%
%

Vetor de tempo de simulao


Vetor de entrada, com mesma dimenso de 't'
Atribuio de valores no nulos
Simulao

O resultado da simulao apresentado em uma janela grfica, como mostra a figura 1.10.

Entrada

Sada

Figura 1.10: Resposta a um sinal genrico

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

Engenharia de Controle Laboratrio

02 Anlise de sistemas lineares

2. Anlise de sistemas lineares de 1 e 2 ordem atividades


2.1 Sistemas de 1 ordem
Obtenha a resposta ao degrau unitrio dos sistemas definidos pelas seguintes funes de
transferncia:
a)

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.

Finalmente, discuta a estabilidade de cada sistema, classificando-os como estveis (E),


marginalmente estveis (ME) ou instveis (I). Teorema do Valor Final:
X(s)

Y(s)

y ( ) = lim s [ X (s )G (s ) ] = lim s Y (s )

G(s)

s 0

s 0

2.2 Resposta temporal


Reescreva as funes de transferncia anteriores, sob a forma

G (s ) =

K
s +1

e verifique a relao entre esta forma e os parmetros da resposta ao degrau: constante de


tempo e valor final.

2.3 Sistemas de 2 ordem


Obtenha a resposta ao degrau unitrio dos sistemas definidos pelas seguintes funes de
transferncia:
a)

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

Engenharia de Controle Laboratrio

02 Anlise de sistemas lineares

Determine:
i)
ii)
iii)
iv)
v)

os plos e zeros 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);
o tempo de subida e de acomodao do sinal de resposta;
o valor da ultrapassagem (ou sobressinal).

Em seguida, discuta a estabilidade de cada sistema e classifique-os em subamortecidos (SB),


sobreamortecidos2 (SO), criticamente amortecidos (CA) ou oscilatrios (O).

2.4 Sistemas de 2 ordem sem zeros


Reescreva as funes de transferncia do item anterior sob a forma

G (s ) = K

n 2
s 2 + 2 n s + n 2

e identifique os valores de e n . Verifique a influncia da freqncia natural ( n ) na


velocidade da resposta de sistemas com a mesma relao de amortecimento ( ) . Em seguida,
analise a influncia da relao em sistemas com a mesma freqncia n . Para qual caso o
sobressinal da resposta se mantm igual?

2.5 Validade do Teorema do Valor Final


Usando o Teorema do Valor Final, determine o valor estacionrio da resposta ao degrau
unitrio do sistema definido por:
s+2
.
s3 + 1

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

Discuta os efeitos causados na resposta ao degrau de G10 (s ) pela incluso do zero (s = 2 ) .

Tambm chamados de superamortecidos.


19

Engenharia de Controle Laboratrio

03 Aproximaes e estabilidade

3. Aproximaes e estabilidade de sistemas lineares


3.1 Sistemas de 3 ordem
A caracterstica dominante de um sistema de 3 ordem sem zeros pode ser identificada por
meio de expanso em fraes parciais. Por exemplo, a funo de transferncia
G (s ) =

7,98
,
s + 11 ,4 s 2 + 14 s + 7 ,98
3

pode ser reescrita como:


G (s ) = G1 (s ) + G 2 (s ) + G 3 (s ) =

3.1.1

0 ,0893
0,7530
0 ,0893 s
+

s + 10 ,091 s 2 + 1,3090 s + 0 ,7908 s 2 + 1,3090 s + 0 ,7908

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 Aproximaes para modelos de 2 ordem


Os passos a seguir descrevem uma forma de se aproximar um sistema de ordem superior, sem
zeros, para um sistema de 2 ordem:
1) Calcule (ou visualize no plano complexo) os plos originais da funo de transferncia use

as funes roots e pzmap;


2) Despreze o plo (ou plos) que tiver menor influncia na resposta dinmica do sistema para
obter um novo denominador de 2 ordem;
3) Obtenha um numerador que mantenha o ganho esttico (ganho DC) do sistema original;
4) Verifique (por exemplo, graficamente) a qualidade da aproximao obtida.
20

Engenharia de Controle Laboratrio

3.2.1

03 Aproximaes e estabilidade

Exemplos

a) Usando o conceito de plos dominantes, escreva modelos de 2 ordem para:


i) G1 (s ) =

7 ,98
s + 11 ,4 s 2 + 14 s + 7 ,98

ii) G 2 (s ) =

73 ,626
(s + 3 ) s + 4 s + 24 ,542

b) Considere um sistema definido pela funo de transferncia:


G (s ) =

i)

1 ,278 s + 12 ,78
s 3 + 11 ,72 s 2 + 17 ,626 s + 4 ,26

Reescreva a funo sob a forma T (s ) = K

(s z1 )
.
(s p1 )(s p 2 )(s p 3 )

ii) Usando o resultado anterior, obtenha uma aproximao de 2 ordem para G (s ) .

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.

3.3 Conexes entre sistemas


O MATLAB possui funes para determinar o efeito de algumas formas de interconexo entre
funes de transferncia. Nos exemplos a seguir, considere que se deseja obter
Y (s ) n (s )
=
X (s ) d (s )

a partir das funes:

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 )

Engenharia de Controle Laboratrio

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

A funo de transferncia em malha fechada deste sistema dada por:


FTMF =

Y (s )
G (s )
.
=
X (s ) 1 + G (s )H (s )

O denominador da funo de transferncia em malha fechada d origem equao

caracterstica do sistema, definida como:

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

Engenharia de Controle Laboratrio

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

Engenharia de Controle Laboratrio

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

No aceitam argumentos nem retornam


valores ao workspace.

Aceitam argumentos e retornam valores ao


workspace.

Trabalham com as variveis definidas no


workspace.

Trabalham com variveis definidas localmente


ao arquivo.

Principal aplicao: automatizao de


comandos que precisam ser executados em
uma certa seqncia.

Principal aplicao: adaptao da linguagem


MATLAB a qualquer situao de programao
necessria.

4.1 Exemplo anlise de um sistema linear


Para ilustrar as formas de programao possveis vamos criar um script para a anlise de
desempenho de um sistema linear de 2 ordem definido, pela funo de transferncia:

F (s ) =
4.1.1

5
.
s + 2s + 5
2

Criando um script

Os scripts constituem a forma mais simples de programao em ambiente MATLAB porque


apenas automatizam uma srie de comandos. possvel usar qualquer editor de textos para a
criao de scripts, mas o uso do editor embutido no MATLAB preferido por fornecer recursos
teis ao programador como auto-indentao, destaque de palavras reservadas, ferramentas de
depurao, etc. Digite edit na janela de comando ou clique em File > New > M-file para invocar
o editor. Para este exemplo, digite o cdigo listado a seguir e salve-o com o nome Analise1.m.
nalise1.m
Os comentrios podem ser omitidos.

%
%
%
%
%
%
%
%
%

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!

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

Engenharia de Controle Laboratrio

clear;
clc;
n = 5;
d = [1 2 5];
F = tf(n,d);
figure(1);
step(F,10);
figure(2);
impulse(F,10);

%
%
%
%
%
%
%
%
%

04 Programao

Limpa todas as variveis da memria


Limpa a janela de comando
Define o numerador da funo de transferncia
Define o denominador da funo de transferncia
Cria a funo de transferncia F
Cria a janela grfica 1
Simula por 10 s e desenha a resposta ao degrau de F
Cria a janela grfica 2
Simula por 10 s e desenha a resposta ao impulso de F

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

Execute o script, digitando seu nome (A


Analise1)
nalise1 na janela de comando. Neste exemplo, o
resultado grfico exibido em duas janelas (ver figura 4.1). Verifique que as variveis F, n e d
(e somente elas!) permanecem no workspace aps a execuo do script.

Figura 4.1: Resultados grficos do script

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

Engenharia de Controle Laboratrio

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

Criando uma funo

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

Exemplo de uso da funo:


>> a = [1 2 4 6 7 7];
>> b = Media(a)
b =
4.5000

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

Engenharia de Controle Laboratrio

4.1.5

04 Programao

Convenes

Os nomes de funes no MATLAB tm as mesmas restries que os nomes de variveis: devem


ter, no mximo, 31 caracteres e iniciar por uma letra seguida por qualquer combinao de
caracteres, nmeros ou caracteres de sublinhado. O nome do arquivo que contm o cdigo da
funo deve ser formado pelo nome da funo, com extenso .m.
.m Se houver divergncias, o
nome do arquivo prevalecer sobre o nome interno da funo.
A linha de definio da funo deve seguir uma forma padronizada que identifique a
quantidade de parmetros recebidos ou devolvidos pela funo. Para a funo Media, usada
anteriormente como exemplo, pode-se identificar:
function y = media(V)
Argumento de entrada
(recebido pela funo)

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

Exemplo de execuo da funo PontoMedio:


>> cx = [1 2 4 1 4 5];
>> cy = [7 2 3 5 0 8];
>> [x,y] = PontoMedio(cx,cy)
x =
2.8333
y =
4.1667

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)

Como mostrado no exemplo da funo Media as variveis passadas para a funo no


precisam ter os mesmos nomes usados na definio da funo.
27

Engenharia de Controle Laboratrio

04 Programao

4.2 Controle de fluxo


Como a maioria das linguagens de programao, o MATLAB permite o uso de estruturas
condicionais e repetitivas para controle de fluxo5. Neste material discutiremos algumas formas
de uso dos comandos if, while e for.
4.2.1

Estrutura condicional if

O comando if avalia uma expresso e, dependendo de seu valor, executa um determinado


conjunto de instrues. Em sua forma mais simples, usa-se:
if expresso
<COMANDOS>
end

Se a expresso lgica for verdadeira (diferente de zero), todos os comandos at o finalizador


end sero executados. Em caso contrrio (expresso igual a zero), a execuo do cdigo
continuar na instruo aps o finalizador end. A forma completa da estrutura inclui a
declarao else para a indicao de comandos a serem executados se a expresso for falsa:
if expresso
<COMANDOS V>
else
<COMANDOS F>
end

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

Engenharia de Controle Laboratrio

4.2.2

04 Programao

Estrutura repetitiva while

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

Exemplo de um trecho de cdigo que simula a operao da funo interna sum:


...
S = 0;
i = 1;
while i<=length(V)
S = S+V(i);
i = i+1;
end
% Neste ponto, S = sum(V)
...

4.2.3

Estrutura repetitiva for

O lao for executa repetidamente um conjunto de comandos por um nmero especificado de


vezes. Sua forma geral :
for varivel de controle = valor inicial: incremento: valor final
<COMANDOS>
end

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);

Verses recentes do MATLAB (verso 6 em diante) fazem operaes automticas de otimizao


que, na prtica, produzem ganhos de desempenho compatveis com os da vetorizao.
29

Engenharia de Controle Laboratrio

04 Programao

4.4 Entrada de dados


A funo input permite a entrada de dados ou expresses durante a execuo de scripts ou
funes, exibindo (opcionalmente) um texto ao usurio. Exemplo:
Kp = input('Digite o ganho da ao proporcional: ');

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.

4.5 Edio de funes existentes


O cdigo da maioria das funes discutidas neste material pode ser visualizado ou editado,
digitando-se:
>> edit <nome da funo>

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

Engenharia de Controle Laboratrio

04 Programao

% Calcula razes reais, se existirem


if isreal(D)
r1 = (-b+D)/(2*a);
% Calcula raiz
r2 = (-b-D)/(2*a);
% Calcula raiz
if r1 == r2
x = r1;
% Retorna apenas uma raiz
else
x = [r1; r2];
% Retorna razes distintas
end
else
disp('A equao no possui razes reais');
x = [];
% Retorno nulo
end
% Subfuno para clculo de "delta"
function d = Delta(a,b,c)
d = sqrt(b^2-4*a*c);

4.7 Exemplos de aplicao


4.7.1

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)

Tcnica: eliminao do plo no-dominante (supostamente, o nico plo real).

Valores de retorno da funo (para este exemplo)

n2 = 0.7908
d2 = 1.0000

1.3090

0.7908

Resultado grfico: ver exemplo na figura 4.2.

31

Engenharia de Controle Laboratrio

04 Programao

Figura 4.2: Exemplo do resultado grfico da funo Aprox2

4.7.2

Anlise do erro em regime estacionrio

Para sistemas realimentados estveis o erro em regime estacionrio dado por:


e( ) = lim e(t ) = lim s E (s ) .
t

s 0

Como o MATLAB sempre calcula a resposta de sistemas lineares em tempo discreto,


discreto isto ,
para apenas alguns instantes de tempo, pode-se calcular o vetor de erro (e
e) a partir dos vetores
de entrada (u
u) e sada (y
y) de uma simulao, usando:
e = uy;

% ATENO: u e y devem tem a mesma dimenso!

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

Engenharia de Controle Laboratrio

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

Atividade estabilidade em funo de um parmetro

A funo Polos, listada a seguir, calcula e desenha em um plano xy os plos do sistema de


controle mostrado na figura 4.4, para alguns valores de K entre 0 e 20.
% POLOS.M - Funo para desenhar a posio dos plos de um
% sistema realimentado em funo do ganho K
function [] = Polos
K = [0:0.5:20];
% Cria vetor de ganhos
for i=1:length(K)
q = [1 2 4 K(i)];
% Polinmio da equao caracterstica
p(:,i) = roots(q);
% Calcula razes para o ganho K(i)
end
plot(real(p),imag(p),'bx');
% Desenha grfico dos plos
grid on;
xlabel('Eixo real');
% Nomeia os eixos
ylabel('Eixo imaginrio');
% do grfico

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

Figura 4.4: Sistema de controle realimentado

33

Y(s)

Engenharia de Controle Laboratrio

05 Lugar das razes

5. Lugar das razes introduo


O desempenho de um sistema linear pode ser analisado pelos plos da sua funo de
transferncia em malha fechada. Na prtica, tenta-se ajustar a posio destes plos para que o
comportamento do sistema atenda a certas especificaes de desempenho (sobressinal, tempo
de assentamento, etc). Por exemplo, considere o sistema representado na figura 5.1.
X(s)

Y(s)

G(s)

kp

Figura 5.1: Sistema de controle em malha fechada

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 )

obtm-se o lugar das razes do sistema em malha fechada, usando


rlocus(n,d);

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);

% Cria vetor com ganhos de 0 a 20


% Obtm o lugar das razes

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)

% R = matriz de razes; Kp = vetor de ganhos

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

Engenharia de Controle Laboratrio

05 Lugar das razes

O lugar das razes deste sistema pode ser obtido, digitando-se:


>> MA = tf(1,[1 4 6 1]);
>> rlocus(MA);

O resultado grfico est representado na figura 5.2. As setas indicam o sentido de


deslocamento dos plos de malha fechada do sistema com o aumento de kp.

Plo de malha aberta

Figura 5.2: Lugar das razes

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.

5.2 Anlise grfica do lugar das razes


A anlise dos plos do sistema em relao ao ganho kp tambm pode ser feita de forma grfica
pelo uso da funo rlocfind. Esta funo calcula o ganho de ramo direto necessrio para que
um certo plo, selecionado pelo mouse na janela do lugar das razes, seja obtido.
Para ver um exemplo de como isto pode ser feito, obtenha o lugar das razes do sistema
desejado e digite:
>> [g p] = rlocfind(MA)

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

Engenharia de Controle Laboratrio

05 Lugar das razes

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.

Figura 5.3: Seleo de um ponto sobre o lugar das razes

Os resultados correspondentes so exibidos na janela de comando assim que um ponto for


selecionado. Para o exemplo da figura 5.3, tem-se:
selected_point = -0.6836 + 1.3540i
g = 5.1271
p = -2.5984
-0.7008 + 1.3664i
-0.7008 - 1.3664i

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

Engenharia de Controle Laboratrio

05 Lugar das razes

Na condio crtica, quais plos so dominantes?


b) Considere um sistema realimentado definido por:

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

para determinar a faixa de valores de kp que tornassem o sistema realimentado oscilatrio.


Usando a funo rlocfind e selecionando o ponto em que os plos do sistema (realimentado)
passavam a ter parte complexa, obteve:
selected_point = -4.7698
g = 16.3718
p = -14.4939
-4.7698
-4.7363

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

(Controlador proporcional-integral simplificado)

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)

Figura 5.4: Sistema de controle em malha fechada

37

Y(s)

Engenharia de Controle Laboratrio

05 Lugar das razes

f) A funo rlocus do MATLAB utiliza a estrutura mostrada na figura 5.5.


X(s)

Y(s)

G(s)

kp

Figura 5.5: Estrutura usada na anlise de lugar das razes

Mostre que, para a anlise de lugar das razes, esta estrutura equivalente da figura 5.1.
***

38

Engenharia de Controle Laboratrio

06 Projeto usando lugar das razes

6. Projeto usando lugar das razes introduo


O MATLAB permite o projeto interativo de sistemas de controle por meio de uma ferramenta
grfica chamada SISO Design Tool. A abreviatura SISO indica que o projeto limitado a
sistemas com apenas uma entrada e uma sada (single-input, single-output). possvel usar
como base de projeto o diagrama do lugar das razes do sistema, o diagrama de Bode ou o
diagrama de Nichols. A configurao padro para o projeto est representada na figura 6.1.
X(s)

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;

C (s ) o compensador (ou controlador);

G (s ) representa a planta ou processo controlado;

H (s ) representa o elemento de medio (sensor).

As funes de transferncia do compensador e da planta, geralmente, so importadas do


workspace, como ser mostrado a seguir. Por padro, adota-se F (s ) = H (s ) =1.

6.1 Exemplo de projeto


Considere o projeto de um controlador proporcional-derivativo (PD) para uma planta com a
seguinte funo de transferncia:

G p (s ) =

1 . 000
.
s (s + 125 )

O sistema controlado deve apresentar:


i) Erro estacionrio nulo para entrada em degrau;
ii) Sobressinal mximo de 10%;
iii) Tempo de subida menor ou igual a 10 ms.

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

sendo T d = k d k p , o tempo derivativo do controlador.


Para utilizarmos o diagrama de lugar das razes no projeto preciso que exista apenas um
parmetro livre. Assim, incluiremos a contribuio dinmica do controlador na planta, para
um valor fixo de Td , de modo que o ganho de ramo direto seja apenas kp. (ver figura 6.2).

39

Engenharia de Controle Laboratrio

06 Projeto usando lugar das razes

X(s)

kp

(1+Tds)

1.000

Y(s)

s(s + 125)

Figura 6.2: Sistema de controle com ganho de ramo direto ajustvel

Assim, as funes de transferncia necessrias para o uso da ferramenta de projeto so:


F (s ) = H (s ) = 1 ; C (s ) = k p ; G (s ) =

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

Figura 6.3: Lugar das razes do sistema para Td = 1/80

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

Engenharia de Controle Laboratrio

06 Projeto usando lugar das razes

Ganho
atual

Configurao de
realimentao

Mudana de
estrutura

Plos atuais
(malha fechada)

Figura 6.4: Interface da ferramenta de projeto SISO

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 )

Figura 6.5: Resposta ao degrau do sistema controlado

41

Engenharia de Controle Laboratrio

06 Projeto usando lugar das razes

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

Figura 6.6: Configurao da resposta ao degrau

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

Figura 6.7: Alterao da 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

Engenharia de Controle Laboratrio

06 Projeto usando lugar das razes

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 )

A funo de transferncia do controlador PI :

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

Engenharia de Controle Laboratrio

07 Resposta em freqncia

7. Resposta em freqncia introduo


O estudo da resposta em freqncia de um sistema linear estvel visa determinar como sua
sada em regime permanente varia em funo da freqncia de um sinal de entrada
puramente senoidal. Nestas condies, a sada e todos os sinais internos do sistema so
senoidais com a mesma freqncia do sinal de entrada, diferindo apenas em amplitude e fase.

7.1 Determinao manual da resposta em freqncia


Considere um sistema linear estvel definido por uma funo de transferncia conhecida, G (s )
, submetido a uma entrada senoidal da forma x (t ) = A sen (t ) . Neste caso, a sada em regime
permanente da forma:
y (t ) = A G ( ) sen (t + ) .

O ganho do sistema, dado por

G ( j ) = G (s )

s = j

um nmero complexo cujo mdulo e fase podem ser calculados como


G ( j ) =

Im (G ( j )) + Re (G ( j ))

= arctg ( Im (G ( j ))/ Re (G ( j )) ) ,

sendo Re (G ( j )) e Im (G ( j )) , respectivamente, a parte real e imaginria do ganho G ( j ) .


7.1.1

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)');

Teste a funo para n=1,


n=1 d=[1 1] e wmax = 100.
100 Explique, usando suas prprias palavras, qual
a utilidade da funo.
c) Crie uma nova verso da funo Ordem1 que use acesso vetorizado (ver seo 1.3, pg. 6).
44

Engenharia de Controle Laboratrio

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

Funo de transferncia (polinmios do numerador e denominador);


Freqncia mxima a ser usada nos clculos (em rad/s).

Valores de retorno

Vetores de mdulo e fase dos ganhos calculados;


Vetor de freqncias usadas nos clculos.

Consideraes

Freqncia mnima = 0,01 rad/s;


1.000 valores de freqncia;
Grfico de fases em graus.

e) Altere o cdigo de RespFreq para trabalhar com funes de transferncia genricas.

7.2 Diagrama de Bode


A representao grfica do ganho de um sistema (mdulo e fase) em funo da freqncia do
sinal de entrada fornece informaes importantes sobre seu comportamento dinmico.
Normalmente os grficos de mdulo e fase usam escalas logartmicas de freqncia, que
facilitam a representao de grandes variaes de . Alm disso, usual representar os
valores de ganho em decibis (dB), calculados como:
G dB = 20 log 10 G ( ) .

Os grficos desenhados sob as especificaes anteriores formam o diagrama de Bode de um


sistema, que pode ser obtido diretamente no MATLAB pelo uso da funo bode.
7.2.1

Exemplo

A seqncia de comandos a seguir desenha o diagrama de Bode do sistema definido por:


G (s ) =

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);

O resultado representado em uma janela grfica, conforme a figura 7.1.

45

Engenharia de Controle Laboratrio

07 Resposta em freqncia

Figura 7.1: Diagrama de Bode

Neste caso, as freqncias usadas na criao dos grficos so determinadas automaticamente


pelo MATLAB. Como outras funes com resultados grficos, a funo bode tambm aceita
mais de uma funo de transferncia como argumento. Neste caso, os diagramas so
sobrepostos na mesma janela de figura. Os valores calculados pela funo bode (ou seja, a
resposta em freqncia) podem ser obtidos, sem o traado dos grficos, usando-se a sintaxe:
[mod,fase,w] = bode(G)

% Sendo G = tf(n,d), um sistema linear

Nesta forma de uso, os ganhos retornados pela funo so adimensionais, e no em decibis. O


vetor de freqncias a ser usado nos clculos pode ser fornecido pelo usurio, como no exemplo
a seguir (que aproveita os polinmios do exemplo anterior):
>> G = tf(n,d);
>> w = logspace(0,3,200);
>> bode(G,w);

7.3 Sistemas de 2a ordem


Muitos sistemas lineares podem ser representados ou aproximados por funes de
transferncia de 2a ordem padro, da forma:
G (s ) = K

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

Engenharia de Controle Laboratrio

07 Resposta em freqncia

Figura 7.2: Diagrama de Bode para sistemas de 2a ordem padro

Em geral, h trs parmetros de interesse na resposta em freqncia de um sistema de 2a


ordem:

O pico de ressonncia (ganho mximo) do sistema, denominado M p (em dB);

A freqncia de ressonncia ( r ) em que o pico de ressonncia ocorre;


A largura de banda passagem do sistema ( B ) , definida pela freqncia em que o ganho
cai 3 dB abaixo de seu valor em baixas freqncias.

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

Engenharia de Controle Laboratrio

7.3.1

07 Resposta em freqncia

Atividades

a) Determine o pico de ressonncia, a freqncia de ressonncia e a largura de banda dos


sistemas definidos por:
i)

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)

Figura 7.3: Sistema realimentado com duas entradas senoidais

Obtenha a simulao da sada y (t ) usando a funo lsim e verifique a atuao do sistema


como um filtro de freqncias. Sugesto para o vetor de tempo de simulao: t = 0: 0.005: 5;
c) Simule a sada do sistema anterior para cada sinal de entrada, x 1 (t ) e x 2 (t ) , isoladamente.
Verifique a defasagem e atenuao sofridas em cada caso e confira os resultados usando o
diagrama de Bode do sistema realimentado.
***

48

Engenharia de Controle Laboratrio

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.

8.1 Exemplo de uso


A criao de modelos no Simulink feita de forma grfica pelo posicionamento, interligao e
configurao de blocos funcionais. Para ilustrar o uso do Simulink ser mostrado como obter a
simulao da resposta ao degrau do sistema representado na figura 8.1.
X(s)

1,5

s2 - s + 2
s(s2 + 2s + 3)

Y(s)

Figura 8.1: Sistema de controle em malha fechada

Inicie o Simulink a partir da linha de comando (digitando simulink)


simulink ou clicando no cone do
programa na barra de comandos do MATLAB. A janela principal do Simulink ser exibida com
as bibliotecas de blocos disponveis para uso.

Figura 8.2: Bibliotecas de blocos do Simulink

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

Engenharia de Controle Laboratrio

08 Simulink

Os blocos necessrios para a simulao do exemplo esto nas bibliotecas Sources,


Sources Sinks,
Sinks
Continuous e Math Operations.
Operations Por exemplo, a figura 8.3 mostra alguns blocos da biblioteca
de geradores de sinais.

Figura 8.3: Biblioteca de blocos geradores de sinais

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

Figura 8.4: Janela do modelo em edio

50

Engenharia de Controle Laboratrio

08 Simulink

Em seguida, insira um somador no modelo a partir da biblioteca Math Operations e d um


duplo-clique no somador para editar suas propriedades. Altere a lista de sinais para ' + - ' (sem
as aspas) e clique em OK (ver figura 8.5).

Figura 8.5: Caixa de dilogo com as propriedades do bloco somador

Crie uma ligao entre o gerador e a entrada '+


+' do somador. Para isso, posicione o mouse
sobre a sada do gerador at que o cursor mude para a forma de uma cruz. Em seguida, clique
e arraste o cursor at a entrada do somador o cursor deve mudar para uma cruz dupla para
completar a ligao (ver figura 8.6).

Figura 8.6: Ligao entre dois blocos

Insira os outros blocos no sistema (navegue pelas bibliotecas Continuous e Sinks)


Sinks e complete
as ligaes at obter um modelo semelhante ao da figura 8.7. As tcnicas vlidas na maioria
dos programas para ambiente Windows, como seleo mltipla de objetos, redimensionamento
e movimentao tambm funcionam no Simulink. Operaes de rotao e espelhamento esto
disponveis em menus acionados pelo clique do boto direito do mouse sobre os blocos.

51

Engenharia de Controle Laboratrio

08 Simulink

Figura 8.7: Modelo de simulao parcialmente construdo

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.

Figura 8.8: Modelo de simulao completo

8.1.1

Configurando os parmetros de simulao

Clique em Simulation > Parameters para acessar as opes de simulao (ver figura 8.9).
52

Engenharia de Controle Laboratrio

08 Simulink

Tempo
final de
simulao

Fator de
refinamento

Figura 8.9: Parmetros de simulao

Os botes da caixa de dilogo tm as seguintes funes:


Apply aplica os parmetros de simulao atuais ao sistema, mesmo que exista uma
simulao em curso, mantendo a caixa de dilogo aberta;
Cancel retorna os parmetros da simulao aos ltimos valores ajustados;
Help abre uma janela de ajuda para os comandos da caixa de dilogo;
OK aplica os parmetros de simulao ao sistema e fecha a caixa de dilogo.

Algumas opes de interesse da aba Solver:


Solver
a) Simulation time Intervalo de tempo em que a simulao feita. O tempo que a simulao
leva para ser completada depende de fatores como a complexidade do modelo e capacidade de
processamento do computador.
b) Solvers A simulao de um sistema dinmico envolve a integrao numrica de sistemas
de equaes diferenciais ordinrias. Para isso, o Simulink oferece vrios mtodos de resoluo
com passos de integrao fixos ou variveis. Normalmente, o algoritmo de passo varivel
ode45,
ode45 fundamentado nos mtodos de Runge-Kutta, fornece bons resultados.
c) Step sizes possvel controlar os valores dos passos de integrao dos algoritmos de
passo varivel, como ode45.
ode45 Como regra geral, pode-se deixar o controle desses valores a cargo
do Simulink em uma primeira simulao e alter-los caso os resultados obtidos no sejam
adequados. De preferncia, deve-se manter valores iguais para os valores de passo mximo e
inicial. Esta regra prtica funciona de forma conveniente para a maioria dos problemas de
simulao embora no seja a nica nem a mais adequada para todos os casos. Em muitas
situaes possvel melhorar os resultados de uma simulao ajustando-se o fator de
refinamento da simulao, como ser discutido adiante.
d) Error tolerances Os algoritmos de resoluo usam tcnicas de controle de erro a cada
passo de simulao. Os valores estimados dos erros so comparados com um erro aceitvel,
definido pelos valores de tolerncia relativa e absoluta, indicados na caixa de dilogo. Os
algoritmos de passo varivel reduzem o passo de integrao automaticamente se o erro for
maior que o aceitvel. Em geral no preciso alterar estes parmetros.
e) Output options Permite o controle dos instantes de tempo em que sero gerados os
resultados da simulao. A opo mais til a do controle do fator de refinamento (Refine
53

Engenharia de Controle Laboratrio

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

Figura 8.10: Resultado da simulao

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

Engenharia de Controle Laboratrio

08 Simulink

Figura 8.11: Resultado da simulao aps ajuste de escala

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.

Figura 8.12: Sistema da atividade 8.2 a)

Determine o valor aproximado do ganho do sistema, analisando sua sada em regime


permanente. Em seguida, calcule
c
o valor exato do ganho fazendo s = j5 na funo de
transferncia de malha fechada e compare os resultados.
b) Determine o valor aproximado do mdulo do ganho do sistema da figura 8.13
8.1 para sinais
senoidais de 3 rad/s. Repita para sinais de 5 e 10 rad/s. O MATLAB pode emitir alguns avisos
de "loop algbrico" porque a funo de transferncia do sistema realimentado possui
numerador e denominador com mesmo grau.

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

Engenharia de Controle Laboratrio

08 Simulink

Figura 8.14: Sistema da atividade 8.2 c)

Em seguida, considere que a sada do


d controlador sature em 8,5.
8,5 Simule o sistema nesta nova
condio e verifique as alteraes ocorridas em sua sada. Represente a saturao do
controlador usando o bloco Saturation da biblioteca Discontinuities (ver figura 8.15).

Figura 8.15: Ponto de insero do bloco de saturao

d) Investigue a atuao dos demais blocos da biblioteca Discontinuities.


Discontinuities
e) Simule o comportamento do sistema mostrado na figura 8.16,
6, analisando a sada do
sistema em relao ao sinal de entrada,
entrada aps o misturador. Descreva
screva a atuao do sistema.
Sugesto para o tempo total de simulao: 5 s.

1 = 5 rad/s

2 = 50 rad/s

Figura 8.16: Sistema da atividade 8.2 e)

f) Repita a simulao anterior, substituindo a planta original por:


i)

G1 (s ) =

100
s + 14 s + 100
2

ii)

G 2 (s ) =

1 . 000
s + 20 s + 200 s + 1. 000
3

Verifique as mudanas ocorridas no desempenho do sistema de acordo com a ordem do sistema


que representa a planta. Descreva a atuao do sistema.
g) possvel enviar os resultados de uma simulao para o workspace com o bloco To
Workspace da biblioteca Sinks:
Sinks o nome da varivel criada no workspace definido pelas
56

Engenharia de Controle Laboratrio

08 Simulink

propriedades do bloco. Simule o comportamento do sistema da figura 8.17


8.1 durante 10
segundos, ajustando o gerador de pulsos para um perodo de 2 segundos. Na janela de
comandos do MATLAB, trace o grfico do vetor saida em funo de tout.
tout
Importante:
Importante: configure o bloco To Workspace para gerar valores de sada no formato array (o
formato padro Structure).

Figura 8.17: Sistema da atividade 8.2 g)

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];

Figura 8.18: Sistema da atividade 8.2 h)

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

Crie um modelo no Simulink,


Simulink de acordo com a figura 8.19.

57

Engenharia de Controle Laboratrio

08 Simulink

Figura 8.19: Sistema de controle com controlador PI

Usando o mouse, selecione os blocos do controlador PI (ver figura 8.20).


).

Figura 8.20: Seleo dos blocos do controlador PI

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.

Figura 8.21: Modelo de simulao com subsistema

D um duplo-clique no subsistema para edit-lo,


edit lo, modificar os nomes das entradas e sadas ou
mesmo para grav-lo
lo como um modelo independente do Simulink (ver figura
figu 8.22).
A entrada e a sada do subsistema so representadas por blocos da biblioteca Ports &
Subsystems e podem ter seus nomes ocultados individualmente pela opo Format - Hide
Name,
Name do menu de contexto acionado pelo boto direito do mouse. Se esta operao for feita no
subsistema, fora de sua janela de edio, todos os nomes sero escondidos e o subsistema ser
representado por um cone padro.

58

Engenharia de Controle Laboratrio

08 Simulink

Figura 8.22: Janela de edio do subsistema

Existem ainda ferramentas avanadas, como as mscaras, que permitem a personalizao da


aparncia dos subsistemas e a criao de caixas de dilogo (ver exemplo na figura 8.23).
8.2

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

Você também pode gostar