Você está na página 1de 188
MATLAB aplicado à Engenharia de Controle e Automação Industrial Elaboração: Renato de Abreu Fernandes Orientador:

MATLAB aplicado à Engenharia de Controle e Automação Industrial

Elaboração:

Renato de Abreu Fernandes

Orientador:

Maurício Gonçalves Ferrarez

Campos dos Goytacazes

2010

1

CAPÍTULO 1. INTRODUÇÃO

07

1.1. Diretório Atual (Current Directory)

08

1.2. Workspace

08

1.3. Histórico de Comando (Command History)

08

1.4. Janela de Comando (Command Window)

09

1.5. Start

09

1.6. Ambiente simulink

09

CAPÍTULO 2. COMANDOS BÁSICOS DO MATLAB

12

2.1. Operadores matriciais

14

2.2. Operadores relacionais e operadores lógicos

14

2.3. Caracteres especiais

15

2.4. Uso do operador ponto-e-vírgula

16

2.5. Uso do operador dois pontos

16

2.6. Linha de programa começando com %

16

CAPÍTULO 3. OPERAÇÕES BÁSICAS COM

17

3.1. Operações Simples com Vetores

17

3.2. Estrutura das Matrizes

18

3.3. Operações com matrizes

19

CAPÍTULO 4. CRIANDO GRÁFICOS

25

4.1. Gráfico em duas dimensões

25

4.2. Gráfico em três dimensões

29

4.3. Gráfico polar

30

4.4. Gráfico de Rede

31

CAPÍTULO 5. COMANDOS PARA DERIVADAS E INTEGRAIS

33

5.1. Derivada de expressões matemáticas

33

5.2. Cálculo de limite

36

5.3. Integral de expressões matemáticas

37

5.4. Somatório

39

5.5. Raízes de uma equação

39

CAPÍTULO 6. INTERPOLAÇÃO

40

6.1. Interpolação

unidimensional

40

6.2. Interpolação bidimensional

44

6.3. Interpolação pelo método dos mínimos quadrados

49

CAPÍTULO 7. MATLAB PARA CONTROLE CLÁSSICO

52

7.1. Determinando pólos e zeros

52

7.2. Criando funções de transferências

53

7.3. Utilizando a função conv

54

7.4. Frações Parciais

55

7.5. Análise da resposta transitória

57

7.5.1.

Análise da resposta transitória de uma entrada de referência do

tipo Impulso unitário

57

7.5.2.

Análise da resposta transitória de uma entrada de referência do

tipo Degrau unitário

58

7.5.3.

Análise da resposta transitória de uma entrada de referência do

tipo Rampa unitária

59

7.5.4. Análise da resposta transitória de uma entrada de referência do

tipo Aceleração

60

7.6. Obtendo função de transferência em série, paralelo e

62

7.7. Obtenção do gráfico de lugar das raízes

64

7.8. Aproximação de tempo morto

65

7.9. Construção de diagrama de bode

65

7.10. Diagrama de Nyquist

66

7.11. Transformação de modelos matemáticos

67

7.12. Análise da resposta transitória utilizando espaço estado

69

7.13. Comando para Cálculo de Posto de uma Matriz

71

7.14. Cálculo para encontrar a matriz de ganhos e realimentação

72

7.15. Cálculo de autovalores de uma Matriz

73

7.16. Comando para atribuir uma letra como símbolo

74

CAPÍTULO 8. SISOTOOL

75

8.1. O que é e para que serve o SISOTOOL?

75

8.2. Ambientes

76

8.3. Projeto de um Controlador PID para Plantas Estáveis

79

8.4. Projeto de Compensadores para Plantas Instáveis

84

CAPÍTULO 9. MATLAB PARA CONTROLE DIGITAL

95

9.1. Comandos

Introdutórios

95

9.2. Projeto de um controlador PD discreto

100

9.3. Projeto de um controlador PI discreto

106

9.4. Projeto de um controlador PID discreto

111

CAPÍTULO 10. MATLAB PARA CONTROLE AVANÇADO

117

10.1. Modelagem de portas lógicas

118

10.2. Modelagem de funções matemáticas

126

10.3. Modelagem de processos industriais utilizando dados reais

131

CAPÍTULO 11. COMUNICAÇÃO ENTRE O MATLAB E SOFTWARES DE

PLATAFORMA WINDOWS

138

11.1. Comunicação entre o MATLAB e o EXCEL utilizando protocolo de

comunicação DDE

139

11.2.

Comunicação entre o MATLAB e o INTOUCH utilizando protocolo

de comunicação DDE

144

11.3.

Comunicação entre o MATLAB e o SYSCON utilizando a

ferramenta opctool

 

147

CAPÍTULO 12. ESTUDO DE CASO

153

12.1. Modelagem matemática e utilização do MATLAB

154

12.1.1. Função de transferência

155

12.1.2. Espaço estado

156

12.1.3. Representação no MATLAB e resposta em malha aberta

157

12.2. Método de projeto de um controlador PID para controle de

velocidade do motor DC

159

12.2.1. Controle proporcional

160

12.2.2. Controle PID

162

12.2.3. Sintonia fina do controlador

163

12.3.

Lugar das raízes

165

12.4. Respota em frequência

167

12.5. Espaço estado

170

 

12.5.1. Projetando um controlador de realimentação de estado

completo

171

 

12.5.2. Adicionando uma entrada de referência

173

12.6.

Controle Digital

178

ADENDO. RESUMO DOS COMANDOS MAIS UTILIZADOS NO CURSO

CAPÍTULO 1 INTRODUÇÃO

O MATLAB (Uma abreviação para MATrix LABoratory) é um sistema baseado

em matrizes, empregado em cálculos matemáticos e de engenharia. Pode-se imaginar

o MATLAB como uma espécie de linguagem desenvolvida com intuito de manipular

matrizes. Todas as variáveis tratadas pelo MATLAB são matrizes. Isto quer dizer que o

MATLAB só tem um tipo de dado, a matriz, que nada mais é que um arranjo retangular

de números. O MATLAB possui um extenso conjunto de rotinas para obtenção de

saídas gráficas.

MATLAB é um programa de computador que utiliza da linguagem de alto nível e

ambiente interativo que habilita você executar computacionalmente tarefas grandes

com uma velocidade mais veloz que as outras linguagens de programação tradicionais

como C, C++ e Fortran.

O usuário pode usar o MATLAB em uma ampla gama de aplicações, incluindo

processamento de sinal e imagem, comunicação, design de controle, teste e medição,

modelagem e análise financeira, e biologia computacional. Add-on toolboxes (coleções

especiais de funções MATLAB efeito, disponível em separado) ampliar o ambiente

MATLAB para resolver determinadas classes de problemas nestas áreas de aplicação.

Fornece também um número de funcionalidades para documentar e partilhar o seu

trabalho. Você pode integrar seu código MATLAB com outras linguagens e aplicações.

O ambiente MATLAB é composto pelas seguintes divisões:

1.1

- Diretórios Atuais (Current Directory)

A janela Current Directory é usada para abrir arquivos ou ter acesso a qualquer

tipo de material, pasta ou programa instalado no computador. A vantagem de usar o

Current Directory é que não precisa sair do MATLAB para abrir e procurar outros

arquivos e pastas.

1.2 - Workspace

A janela Workspace permite o usuário observar todas as variáveis criadas e os

valores atribuídos às elas. É possível também a modificação destes valores através da

janela Array Editor, que permite alterar o valor da variável selecionada.

1.3 - Histórico de Comando (Command History)

A janela Command History permite o usuário ter acesso a todos os comandos

digitados na janela Command Window. Isto serve para que em algum momento

posterior, caso seja necessário, o usuário possa acessar, visualizar e usar os comandos

desejados e utilizados anteriormente em outra ocasião.

1.

4 - Janela de Comando (Command Window)

A janela Command Window é a principal janela, que executará e processará

todos os comandos desejados. Os comandos quando estão sendo processados, na

barra inferior aparecerá do lado esquerdo uma mensagem busy. Da mesma forma,

quando se inicia o MATLAB, os comandos somente podem ser executados após

aparecer a mensagem ready na barra.

1. 5 - Start

O Start fica localizado na barra inferior e é uma opção muito interessante de

ser explorada, pois possui muitos atalhos para Demos, Help, Toolboxes, suporte do

programa na internet e Help específico de ferramentas do MATLAB e SIMULINK.

1.6 - Ambiente SIMULINK

O SIMULINK é uma ferramenta para modelagem, simulação e análise de

sistemas dinâmicos. Sua interface primária é uma ferramenta de diagramação gráfica

por blocos e bibliotecas customizáveis de blocos. O software oferece alta integração

com o resto do ambiente MATLAB. O SIMULINK é amplamente usado em teoria de

controle e processamento digital de sinais para projeto e simulação multi-domínios.

Sistemas modeláveis matematicamente como sistemas de comunicação, de

automóveis, de dinâmica de barcos, de dinâmica de aeronaves, monetários e até

biológicos podem ser construídos e simulados no SIMULINK.

O MATLAB tem a facilidade do auxílio interativo (help-on-line), que pode ser

utilizado sempre que necessário. O comando help, quando executado, mostra uma

lista de funções e de operadores predefinidos, para os quais o recurso do auxílio (help)

está disponível. O comando help nome da função” dará informações sobre a função

especificada. Ex.: >>help roots. O comando help helpmostrará como utilizar o

auxílio interativo (help-on-line).

A janela de comandos Command Window” possibilita o usuário digitar os

comandos, programas e etc. Porém a mesma não possibilita a gravação dos comandos

digitados caso o MATLAB seja encerrado. A solução é criar um arquivo chamado M-

file. Este arquivo possibilita você salvar os comandos e rotinas desenvolvidas. Assim,

sempre que necessário, o usuário poderá usar o arquivo a qualquer hora e em

qualquer computador, basta copiar o arquivo.

Para criar uma M-filebasta clicar no primeiro ícone do canto esquerdo

superior

da

tela

designado

como

New

M-file

ou

no

Current

Directory,

pressionando o botão direito do mouse e selecionando a opção “New M-flie”. Deve-se

ter atenção quanto a gravação do arquivo, pois ele deve conter o nome desejado pelo

usuário seguido de “.me deve ser salvo na pasta MATLAB, localizada por default no

diretório Meus documentos. Ex:

Nome do arquivo: Lugardasraizes. m

Após esse arquivo ter sido criado, os comandos desenvolvidos ou não na janela

“Command Window” devem ser digitados ou copiados para dentro do “M.file. Após

ter sido digitado todos os comandos desejados e ter salvado o programa, basta clicar

no ícone “run” na barra de ferramentas para que o programa seja executado. Os

resultados serão mostrados na janela “Command Window”.

CAPÍTULO 2 - COMANDOS BÁSICOS DO MATLAB

O sistema MATLAB possui diversas funções predefinidas que poderão ser

chamadas pelo usuário para resolver uma ampla gama de problemas. Comandos e

funções matriciais comumente empregados na solução de problemas de Engenharia

de Controle são:

Comandos e funções matriciais

Explicações sobre o que o comando faz, o

comumente usados na solução de

que a função matricial significa, ou o que a

problemas de engenharia de controle.

declaração significa.

Abs

Valor absoluto, magnitude complexa. Ângulo de fase Resp. obtida para expressão sem atribuição Arcotangente Escala manual do eixo

Angle

Ans

Antan

Axis

Bode

Traçar diagrama de bode

clear

Limpar a área de trabalho Limpar tela gráfica Conjugado complexo Convolução, Multiplicação Co-seno Co-seno hiperbólico Co-variância

clg

conj

conv

cos

cosh

cov

deconv

Deconvolução, Divisão Determinante Matriz diagonal

det

diag

Eig Exit ou quit exp expm eye

Autovalores e autovetores Término do programa Exponenciação, base e Matriz exponencial Matriz identidade

filter format long format log e format short fromat short e freqs freqz

Implementação de filtro Número real de 15 dígitos Número real de 15 dígitos em notação científica Número real de 5 dígitos Número real de 5 dígitos em notação científica Resposta de freq. no domínio da transfor. de laplace Resposta de freqüência no domínio da transf. Z

12

Grid

Desenhar linhas em uma grade reticulada

Hold on

Manter na tela o gráfico corrente Parte imaginária de um número complexo Infinito Inversa

imag

inf

inv

j ou i

Raiz quadrada de -1

Length

Tamanho do vetor Vetores linearmente espaçados Logaritmo natural Gráfico loglog nos eixos x-y Logaritmo da matriz Vetores logariticamente espaçados Logaritmo de base 10 Projeto de estimador quadrático linear Projeto do regulador quadrático linear

Linspace

Log

Loglog

Logm

Logspace

Log10

Lqe

Lqr

Max

Valor máximo Valor médio Valor da mediana Valor mínimo

Mean

Median

Min

Nan

Não-número Gráfico da resp. em freq. em coordenada de Nyquist

nyquist

Ones

Constante

pi

Número pi Gráfico linear em coordenadas cartezianas x-y Gráfico em coordenadas polares Polinômio característico Ajuste polinomial de curvas Avaliação polinomial Avaliação de matriz polinomial Produto de elementos

plot

polar

poly

plyñt

polyval

polyvalm

prod

ramp

Traçar a resposta a entrada em rampa Gerar números e matrizes randômicos Calcular o posto (rank) de uma matriz Parte real de um número complexo Resto ou módulo Expansão em frações parciais Traçar lugar das raízes Raízes polinomiais

rand

rank

real

rem

residue

rlocus

roots

semilogx

Gráfico semilog x-y (eixo x logarítmico) Gráfico semilog x-y (eixo y logarítmico) Função sinal Seno Seno hiperbólico Dimensões de linhas e colunas de uma matriz Raiz quadrada Raiz quadrada de uma matriz Desvio padrão Traçar a resposta ao degrau unitário

semilogy

sign

sin

sinh

size

sqrt

sqrtm

std

step

13

sum

Soma de elementos

tan

Tangente Tangente hiperbólica Texto posicionado arbitrariamente Colocar título em um gráfico Traço de uma matriz

tanh

text

title

trace

Who

Lista de todas as variáveis atualmente na memória

Xlabel

Título do eixo dos x

Ylabel

Título do eixo dos y

Zeros

Zero

2.1 - Operadores matriciais

As notações utilizadas nas operações envolvendo matrizes são as seguintes:

+

Adição

-

Subtração

*

Multiplicação

^

Potenciação

|

Transposta conjugada

2.2 - Operadores relacionais e operadores lógicos

O MATLAB utiliza o seguinte conjunto de operadores relacionais e lógicos:

<

Menor que

<=

Menor ou igual a

>

Maior que

14

>=

Maior ou igual a

= =

Igual

~=

Diferente de

Observe que o sinal =é utilizado em um comando de atribuição, enquanto

= =é empregado em uma relação. Os operadores lógicos são os seguintes:

&

AND

 

|

OR

~

NOT

2.3 - Caracteres especiais

O MATLAB usa os seguintes caracteres especiais:

[

]

Usado na formação de vetores e de matrizes.

(

)

Usado para a quebra da precedência de operadores em expressões.

Usado para separar subscrito e argumentos de funções.

;

Usado para encerrar linhas e para suprimir impressão.

:

Usado para subscrever conjuntos e para a geração de vetores.

!

Usado para forçar a execução de comandos dos sistemas operacionais.

%

Usado para introduzir Comentários.

2.4

- Uso do operador ponto-e-vírgula

O ponto-e-vírgula é usado para suprimir impressão. Se o último caractere de

um comando for um ponto-e-vírgula, o comando é executado, mas sem a impressão

dos resultados gerados. Esta é uma característica útil na medida em que a impressão

de resultados intermediários pode não ser necessária. O ponto-e-vírgula também é

usado como indicador de final de linha quando se entra com os elementos de uma

matriz, exceção feita obviamente à última linha.

2.5

- Uso do operador dois pontos

 

Os dois pontos têm função muito importante no MATLAB. Este operador pode

ser

usado

para

criar

vetores,

subscrever

matrizes

e

especificar

as

iterações

de

comando for. Por exemplo, j:k é a mesma coisa que [jj+1 j+2

k],

A(:,j) é a j-ésima

coluna da matriz A, e A(i,:) é a i-ésima linha da matriz A.

2.6 - Linha de programa começando com ‘%’

As linhas de programas MATLAB iniciadas por %são linhas de comentários. A

notação “%” é similar ao ‘REM’ da linguagem BASIC. As linhas de comentários não são

executadas, ou seja, tudo que aparecer depois de um “%” em uma linha de programa

MATLAB é ignorado. Se os comentários precisarem de mais de uma linha, cada uma

delas deve começar com o símbolo %.

CAPÍTULO 3 - OPERAÇÕES BÁSICAS COM MATRIZES

3.1 - Operações Simples com Vetores

Essa é uma demonstração de alguns aspectos da linguagem do MATLAB.

Primeiro, vamos criar um vetor simples chamado “a” com nove elementos. Na

Command Window, digite:

>> a = [1 2 3 4 6 4 3 4 5]

E aperte a tecla Enter para executar o comando:

a =

1

2

3

4

6

4

3

4

5

Agora, vamos adicionar duas unidades para cada elemento do vetor a”, e

guardar um resultado em um novo vetor “b”. Digite:

>> b = a + 2

E aperte a Tecla Enter para executar o comando:

b =

3

4

5

6

8

6

5

6

7

O mesmo acontece caso se queira subtrair uma unidade ou qualquer outro

valor de cada elemento do vetor “b”, e guardar o resultado em um novo vetor “c”.

>> c = b -1

Em seguida aperte a tecla Enter:

c =

2

3

4

5

7

5

4

5

6

Caso queira multiplicar ou dividir todos os números de um vetor, basta colocar

o símbolo “*ou /, respectivamente.

Ex.: >>d=c*2

>>e=c/5

3.2 - Estrutura das Matrizes

Criar Matrizes é tão fácil quanto fazer um vetor. Usando o operador Ponto-e-

Vírgula ;para separar as linhas da matriz podemos fazer:

Matriz 2x2

>> A=[1 2;3 4]

A =

1

3

2

4

Matriz 3x3

>> B=[-1 2 3;4 -5 6;7 8 -9]

B

=

-1

2

3

4

-5

6

7

8

-9

Observação: Caso se queira que a matriz seja mostrada na forma de gráfico,

basta usar os comandos para plotar gráficos que serão mostrados no próximo capítulo

e analisar o seu comportamento.

3.3 - Operações com matrizes

Somando duas Matrizes:

>> A=[1 2 3;4 5 6;7 8 9];

>> B=[9 8 7;6 5 4;3 2 1];

>> C=A+B

C

=

10

10

10

10

10

10

10

10

10

Subtraindo duas Matrizes:

>> D=A-B

D

=

-8

-6

-4

-2

0

2

4

6

8

>> D=B-A

D

=

8

6

4

2

0

-2

-4

-6

-8

Note que se você inverter a ordem das matrizes que vão ser subtraídas os sinais

são trocados.

Multiplicando duas Matrizes:

>> E=A*B

E

=

30

24

18

84

69

54

138

114

90

>> E=B*A;

Note que os valores também são invertidos nesse caso.

Dividindo duas matrizes:

>> F=A/B

Warning: Matrix is singular to working precision.

F =

NaN

NaN

NaN

NaN

NaN

NaN

NaN -Inf

Inf

Ao

invés

de

multiplicar

matrizes,

nós

podemos

multiplicar

os

elementos

correspondentes de duas matrizes ou vetores usando o operador “.*:

>> A=[1 2;3 4];

>> B=[5 6;7 8];

>> C= A.*B

C

=

5

12

21

32

Comando para encontrar a Matriz inversa:

>> A = [1 2 0; 2 5 -1; 4 10 -1];

>> X=inv(A)

X

=

5

2

-2

-2

-1

1

0

-2

1

Para encontrar a Matriz Transposta:

>> C= B'

C =

-1

4

7

2

-5

8

3

6

-9

Para obter os valores próprios de um vetor basta usar o comando eig():

>> eig(A)

ans =

3.7321

0.2679

1.0000

>> whos

Name

Size

Bytes Class

Attributes

A

3x3

72 double

Qualquer

momento,

nós

podemos

listar

as

variáveis

que

nós

temos

armazenado na memória. Isso é possível usando os comandos who ou whos.

>> who

Your variables are:

A

B

C

D

E

F

X

Y

a

ans b

c

d

e

2x2

32 double

 

C

2x2

32 double

 

D

3x3

72 double

E

3x3

72 double

F

3x3

72 double

X

3x3

72 double

Y

3x3

72 double

a

1x9

72 double

ans

3x1

24 double

b 1x9

72 double

c 1x9

72 double

d 1x9

72 double

e 1x9

72 double

Caso digitarmos a variável, seu conteúdo será mostrado:

>> A

A =

1

2

0

2

5

-1

4

10

-1

O mesmo pode ser aplicado para as outras variáveis.

CAPÍTULO 4 - CRIANDO GRÁFICOS

4.1 - Gráfico em duas dimensões

Primeiro, iremos atribuir valores a um vetor:

>>b = [3

4

5

6

8

6

5

6

7];

Utilizando o vetor b criado, podemos demonstrá-lo em forma de gráfico.

Vamos plotar o resultado do nosso vetor com grid lines.

Digite na Comand window,ou na M-filecriada, os comandos:

>>plot(b)

% Comando para plotar o vetor b.

>>grid on

% Comando para aparecer o grid no gráfico.

Na Figura 1, é apresentado o gráfico gerado para os comandos acima:

para aparecer o grid no gráfico. Na Figura 1, é apresentado o gráfico gerado para os

Figura 1

O gráfico pode ser modificado facilmente com os comandos:

>> plot(b,'p')

vetor b.

% A linha do gráfico será substituída por estrelas nos pontos do

>>

plot(b,'g')

% A linha do gráfico ficará verde.

>>

plot(b,'r')

% A linha do gráfico ficará vermelha.

>>

plot(b,'o')

% A linha do gráfico será substituída por bolas.

>>

plot(b,'x')

% A linha do gráfico será substituída por x.

>>

plot(b,'y')

% A linha do gráfico ficará amarela.

>>

plot(b,'*')

% Os valores do vetor b são representados por *.

O

MATLAB pode gerar outros tipos de gráficos utilizando o mesmo vetor b,

exemplo:

>>bar(b,’r’)

Na Figura2, é apresentado o gráfico gerado pelo comando acima:

8

7

6

5

4

3

2

1

0

Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3
Na Figura2, é apresentado o gráfico gerado pelo comando acima: 8 7 6 5 4 3

1

2

3

4

5

6

7

Figura 2

8

9

velocidade m/s

Para colocar os nomes nos eixos x e y devem-se usar os comandos xlabel e

ylabel, respectivamente. Exemplo:

>> plot(b,'*')

>> xlabel('tempo em s')

>> ylabel('velocidade m/s')

>> axis ([0 10 0 10])

Na Figura 3, é apresentado o gráfico gerado pelos comandos acima:

10

10
10
10
10
10
10
10
10
10

9

 

8

 
8  

7

 
7  

6

 
6  
6  
6  

5

 
5  
5  

4

 
4  

3

 
3  

2

 

1

1
1
1
1
1
1
1
1
1
1

0

 

0

1

2

3

4

5

6

tempo em s

7

Figura 3

8

9

10

Como podemos ver o termo tempo em segundosfoi alocado na coordenada

x e o termo “velocidade m/sfoi alocado na coordenada y. O comando axis tem a

função de limitar as coordenadas. O primeiro ”0” e “10” são referentes ao eixo x e os

outros “0” e “10” são referentes ao eixo y.

Outro exemplo usando o comando stairs:

>> b=[1 2 3 4 5 4 3 2 1];

>> stairs(b)

Na Figura 4, é apresentado o gráfico gerado pelos comandos acima:

8 7.5 7 6.5 6 5.5 5 4.5 4 3.5 3 1 2 3 4
8
7.5
7
6.5
6
5.5
5
4.5
4
3.5
3
1
2
3
4
5
6
7
8
9

Figura 4

Outro caso é o do comando fill, que preenche o polígono bidimensional

definido pelos vetores de coluna x e y com a cor definida por c. Os vértices do polígono

são especificados pelos pares (xi, yi). Se necessário, o polígono é fechado pela conexão

do último vértice ao primeiro. Tente o exemplo:

>> t=(1/8:2/8:15/8)*pi;

% Vetor de coluna.

>> x=sin(t);

% Função seno em função da variável t.

>> y=cos(t);

% Função cosseno em função da variável t.

>> fill(x,y,'r')

% Um círculo preenchido com vermelho usando somente 8

pontos.

>> axis('square')

>> text(-.11,0,'pare')

>> title('Placa Vermelha de Pare')

Na Figura 5, é apresentado o gráfico gerado pelos comandos acima:

Placa Vermelha de Pare

1 0.8 0.6 0.4 0.2 0 pare -0.2 -0.4 -0.6 -0.8 -1 - 1 -0.5
1
0.8
0.6
0.4
0.2
0
pare
-0.2
-0.4
-0.6
-0.8
-1
- 1
-0.5
0
0.5
1

Figura 5

4.2 - Gráficos em três dimensões

O tipo de gráfico em três dimensões mais utilizado é:

>> A=[1 2 3;4 5 6;7 8 9];

>>bar3(A)

Na Figura 6, é apresentado o gráfico gerado pelos comandos acima:

10

8

6

4

2

0

3 2 3 2 1 1
3
2
3
2
1
1

Figura 6

As opções de mudança de cor também valem para os gráficos em 3d, como:

>> bar3(A,'g')

% O gráfico ficará verde.

>> bar3(A,'r')

% O gráfico ficará vermelha.

>> bar3(A,'b')

% O gráfico ficará preto.

>> bar3(A,'y')

% O gráfico ficará amarelo.

4.3 - Gráfico polar

Gráficos em coordenadas polares podem ser criados usando-se o comando

polar (t,r,S), onde t é o vetor ângulo em radianos, r é o vetor raio e S é um string de

caracteres opcionais que descreve cor, símbolos marcadores e/ ou tipo de linha. Veja o

exemplo:

>> t = 0:.01:2*pi;

>>r = sin(2*t).*cos(2*t);

>>polar(t,r)

Na Figura 7, é apresentado o gráfico gerado pelos comandos acima:

7, é apresentado o gráfico gerado pelos comandos acima: 4.4 - Gráficos de Rede Figura 7

4.4 - Gráficos de Rede

Figura 7

Um exemplo simples de gráfico de rede pode ser feito utilizando os comandos

peaks, que gera uma matriz N por N. Exemplo:

>> z=peaks(40); % Onde N=40.

E o comando surf gera o gráfico de rede da variável desejada, neste caso é z:

>>surf(z)

Na Figura 8, é apresentado o gráfico de rede gerado pelos comandos acima: 10 5
Na Figura 8, é apresentado o gráfico de rede gerado pelos comandos acima:
10
5
0
-5
-10
40
30
40
30
20
20
10
10
0
0

Figura 8

CAPÍTULO 5 - COMANDOS PARA DERIVADAS E INTEGRAIS

5.1 - Derivada de expressões matemáticas

Para derivar uma expressão que contém mais de uma variável, você deve

especificar a variável que você quer derivar utilizando o comando syms. O comando

diff então calcula a derivada parcial da expressão com a respectiva variável. Exemplo:

>> syms s t

>> f=sin(s*t);

>> diff(f,t)

ans =

cos(s*t)*s

Da mesma forma para:

>> f=cos(s*t);

>> diff(f,t)

ans =

-sin(s*t)*s

Caso se deseje saber quais foram as variáveis utilizadas na diferenciação, basta

executar o comando:

>> findsym(f,2)

ans =

t,s

Outros exemplos:

>>syms a b x n t theta

A Tabela 1 ilustra os resultados das expressões atribuídas a f em cada situação:

das expressões atribuídas a f em cada situação: Tabela 1 Há uma opção de mostrar a

Tabela 1

Há uma opção de mostrar a derivada de forma simplificada. Para isto, usa-se o

comando:

>> simplify(diff(x^n))

ans =

x^(n-1)*n

Podemos utilizar o comando diff também em matrizes:

>> syms a x

>> A = [cos(a*x),sin(a*x);-sin(a*x),cos(a*x)]

A =

[ cos(a*x), sin(a*x)]

[ -sin(a*x), cos(a*x)]

>> diff(A)

ans =

[

-sin(a*x)*a, cos(a*x)*a]

[

-cos(a*x)*a, -sin(a*x)*a]

A

Tabela 2 mostra de uma forma resumida os comandos usados no MATLAB

associados aos seus respectivos operadores matemáticos:

de uma forma resumida os comandos usados no MATLAB associados aos seus respectivos operadores matemáticos: Tabela

Tabela 2

5.2 - Cálculo de limite

Da mesma forma que na diferenciação de expressões matemáticas, para se

calcular o Limite de alguma expressão basta declarar a variável (como símbolo) usada

na expressão e fazer o uso do comando limit:

>> syms x

>> f=2*x^2 +10*x +100

f =

2*x^2+10*x+100

>> limit(f) % Aplica Lim f tendendo a zero.

ans =

100

A Tabela 3 explora as opções para o comando limit(f), lembrando que f é a

função do objeto simbólico x:

Tabela 3 explora as opções para o comando limit (f), lembrando que f é a função

Tabela 3

5.3 - Integral de expressões matemáticas

Se f é uma expressão simbólica, então se utiliza o comando int para calcular a

integral da mesma:

>>int(f)

Veja como comando int funciona na Tabela 4:

Veja como comando int funciona na Tabela 4: Tabela 4 Nem sempre todas as integrais poderão

Tabela 4

Nem sempre todas as integrais poderão ser calculadas, pois existem algumas

limitações. Veja alguns exemplos na Tabela 5:

>>syms a b theta x y n u z

Tabela 5 A Tabela 6 apresenta exemplos de implementação de integrais definidas: >>syms x; >>

Tabela 5

A Tabela 6 apresenta exemplos de implementação de integrais definidas:

>>syms x;

>> f=x^7; a=0;b=1;

>>int(f,a,b)

ans

1/8

de integrais definidas: >>syms x; >> f=x^7; a=0;b=1; >>int(f,a,b) ans 1/8 Tabela 6 38

Tabela 6

5.4

- Somatório

A implementação desta função é muito simples, basta declarar as variáveis e

usar o comando symsum. Exemplo:

>> syms x k

>> s1 = symsum(1/k^2,1,inf)

s1 =

1/6*pi^2

>> s2 = symsum(x^k,k,0,inf)

s2 =

-1/(x-1)

5.5 - Raízes de uma equação

Para se calcular raiz de uma equação, usa-se o comando roots:

>> roots([5 4 2 ])

% 5*s^2 + 4*s +2

ans =

-0.4000 + 0.4899i

-0.4000 - 0.4899i

CAPÍTULO 6 - INTERPOLAÇÃO

6.1 - Interpolação Unidimensional

A interpolação é definida como sendo uma forma de estimar os valores de

uma função entre aqueles dados por um conjunto de pontos de dados. A interpolação

é uma ferramenta valiosa quando não se pode calcular rapidamente a função nos

pontos intermediários desejados. Por exemplo, isso ocorre quando os pontos dados

resultam

nas

demorados.

medições

experimentais

ou

de

procedimentos

computacionais

Talvez o exemplo mais simples de interpolação sejam os gráficos do MATLAB.

Por definição, o MATLAB desenha linhas retas interligando os pontos de dados usados

para

se

fazer

um

gráfico.

Essa

interpolação

linear

considera

que

os

valores

intermediários caem em uma linha reta entre os pontos definidos. Com certeza, à

medida que se têm

mais pontos de

dados e a distância entre eles diminui, a

interpolação linear torna-se mais precisa. Por exemplo:

>> x1=linspace(0,2*pi,60);

>> x2=linspace(0,2*pi,6);

>> plot(x1,sin(x1),x2,sin(x2),'--')

>> xlabel('x'),ylabel('sin(x)'),title('interpolação Linear')

Na Figura 9 é apresentado o gráfico gerado pelos comandos acima:

interpolação Linear

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
sin(x)

x

Figura 9

Dos dois gráficos da função seno, o que tem 60 pontos é muito mais suave e

mais preciso entre os pontos de dados do que o que só tem seis pontos.

Há diversas estratégias de interpolação, dependendo das suposições feitas.

Além disso, é possível interpolar em mais de uma dimensão. Isto é, se você tiver dados

referentes a uma função de duas variáveis, z=f(x,y), pode interpolar entre os valores

tanto de x como de y para encontrar valores intermediários de z. O MATLAB apresenta

diversas opções de interpolação na função unidimensional

interp1 e na função

bidimensional interp2. Cada uma dessas funções será sempre exemplificada nas

subseções seguintes. Para ilustrar a interpolação unidimensional, consideremos o

seguinte exemplo:

Como parte de um projeto de ciências, Laura registrou a temperatura oficial em

Porto Alegre a cada hora, em um período de doze horas, para usar esses dados como

informação sobre o clima local.

Laura analisa seus dados:

>> horas = 1:12;

>> temps = [5 8 9 15 25 29 31 30 22 25 27 24];

>> plot(horas,temps,horas,temps,’*’)

>> title(‘temperatura em Porte Alegre’)

>> xlabel(‘hora’), ylabel(‘Graus celcius’)

Na Figura 10 é apresentado o gráfico gerado pelos comandos acima:

temperatura em Porte Alegre

35 30 25 20 15 10 5 0 2 4 6 8 10 12 Graus
35
30
25
20
15
10
5
0
2
4
6
8
10
12
Graus celcius

hora

Figura 10

Conforme mostrado no gráfico da Figura 10, o MATLAB desenha linhas que

interpolam de forma linear os pontos de dados. Para estimar a temperatura a qualquer

hora, Laura pode interpretar os dados visualmente. Como alternativa, ela poderia usar

o comando interp1:

>> t = interp1(horas,temps,9.3)

t =

22.9000

% Estima a temperatura em hora = 9.3.

>> t = interp1(horas,temps,[3.2 6.5 7.1 11.7])

instantes 3.2, 6.5, 7.1, 11.7 horas.

t =

10.2

30

30.9

24.9

% Estima a temperaturas nos

Esse uso padrão de interp1 é descrito por interp1(x,y,x0), onde x é a variável

independente (abscissa), y é a variável dependente (ordenada) e x0 é um conjunto de

valores a serem interpolados. Além disso, esse uso padrão pressupõe interpolação

linear. Para se ter resultados um pouco mais precisos, basta utilizar o comando splines.

Então:

>> t = interp1(horas,temps,*3.2 6.5 7.1 11.7+,’splines’)

t =

9.6734

30.0427

31.1755

25.3820

Antes de discutir a interpolação bidimensional, é importante reconhecer uma

das principais restrições impostas por interp1. Não se podem pedir resultados fora do

limite da variável independente; por exemplo, interp1(horas,temps,13.5) conduziria a

um erro já que varia de 1 a 12.

6.2 - Interpolação Bidimensional

A interpolação bidimensional é fundamentada nas mesmas idéias básicas da

interpolação unidimensional. Entretanto, como o próprio nome indica, a interpolação

bidimensional

interpola

funções

de

duas

variáveis,

z

=f(x,y).

Para

ilustrar

essa

dimensão adicional, consideremos o seguinte problema:

Bernardo conseguiu um emprego no laboratório de pesquisas da Tanguá S.A.

Lá,

ele

está

tentando

aperfeiçoar

a

receita

de

um

biscoito

feito

em

forno

de

microondas. Para testar a uniformidade das receitas após assar, ele os tira do forno de

microondas depois de prontos e mede a temperatura interna do biscoito em uma

matriz de 3 por 5 pontos no tabuleiro, conforme mostrado na Figura 11. A partir

desses dados, Bernardo espera determinar a distribuição de temperatura ao longo do

tabuleiro.

a distribuição de temperatura ao longo do tabuleiro. Figura 11 Bernardo usa o MATLAB para resolver

Figura 11

Bernardo usa o MATLAB para resolver seu problema criando os arquivos M-

files de instrução:

%Meiaaltura.m

%Analisa os dados de teste do lote.

%Corta o tabuleiro a meia profundidade e examina através da largura.

largura = 1:5 ; % Largura do tabuleiro

profund =1:3;

% Profundidade do tabuleiro

temp= [82 81 80 82 84; 79 63 61 65 81;84 84 82 85 86];

la=1:0.2:5;

% Escolhe a resolução para a largura.

p=2;

% Centro do tabuleiro.

zl=interp2(largura,profund,temp,la,p);

% Interpolação linear.

zc=interp2(largura,profund,temp,la,p,'cubic') % Interpolação cúbica.

plot(la,zl,'--',la,zc)

% Plota as interpolações linear e cúbica.

Xlabel('largura do tabuleiro')

Ylabel('graus celcius')

Title('Temperatura na profundidade =2')

Na Figura 12, é apresentado o gráfico da temperatura na profundidade =2:

Temperatura na profundidade =2

85 80 75 70 65 60 1 1.5 2 2.5 3 3.5 4 4.5 5
85
80
75
70
65
60
1
1.5
2
2.5
3
3.5
4
4.5
5
graus celcius

% Meialargura.m

largura do tabuleiro

Figura 12

% Analisa os dados de teste do lote.

% Corta o tabuleiro a meia largura e examina através da profundidade.

largura = 1:5 ; % Largura do tabuleiro.

profund =1:3;

% Profundidade do tabuleiro.

temps= [82 81 80 82 84; 79 63 61 65 81; 84 84 82 85 86];

pr=1:0.2:3;

% Escolhe a resolução da profundidade.

l=3;

% Centro do tabuleiro.

zl=interp2(largura,profund,temps,l,pr);

% Interpolação linear.

zc=interp2(largura,profund,temps,l,pr,'cubic') % Interpolação cúbica.

plot(pr,zl,'-- ',pr,zc)

% Plota as interpolações linear e cúbica.

xlabel('profundidade do tabuleiro')

ylabel('graus celcius')

title('Temperatura na largura =3')

Na Figura 13 é apresentado o gráfico da Temperatura na largura=3:

Temperatura na largura =3

85 80 75 70 65 60 1 1.5 2 2.5 3 graus celcius
85
80
75
70
65
60
1
1.5
2
2.5
3
graus celcius

% tabuleiro.m

profundidade do tabuleiro

Figura 13

% Analisa os dados de teste do lote.

% Visualiza a distribuição de temperatura em todo o tabuleiro.

largura=[1 2 3 4 5] ; % Largura do tabuleiro.

profund=[1 2 3];

% Profundidade do tabuleiro.

temps=[82 81 80 82 84; 79 63 61 65 81;84 84 82 85 86];

pr=1:.2:3;

% Escolhe a resolução para a profundidade.

la=0:.2:5;

% Escolhe a resolução para a largura.

zc=interp2(largura,profund,temps,la,pr,'linear'); % Interpolação cúbica.

mesh(la,pr,zc) % Cria um gráfico tridimensional.

xlabel('largura do tabuleiro')

ylabel('profundidade do tabuleiro')

zlabel('Graus Celsius')

title('Temperatura do lote')

axis('ij')

grid

E por fim, a Figura 14 apresenta a temperatura do lote:

do lote' ) axis( 'ij' ) grid E por fim, a Figura 14 apresenta a temperatura

Figura 14

O exemplo acima demonstra claramente que a interpolação bidimensional é

mais complicada simplesmente porque há mais detalhes com os quais devemos nos

preocupar. A forma básica de interp2 é interp2(x,y,z,xi,yi,método). Aqui x e y são as

duas variáveis independentes, z é a matriz da variável dependente, a qual tem o

tamanho de length(y ) linhas e lenght(x) colunas, xi é um conjunto de valores a serem

interpolados ao longo do eixo x e yi é um conjunto de valores a serem interpolados ao

longo do eixo dos y. O parâmetro opcional método pode ser ‘linear’, ‘cubic’ ou

nearest’. Neste caso, cubic não significa splines cúbicas, mas sim outro algoritmo

usando polinômios cúbicos. Para maiores informações acerca desses métodos, peça a

ajuda on-line, por exemplo, help interp2.

6.3 - Interpolação pelo método dos mínimos quadrados

Deseja-se construir um novo conjunto de dados a partir de um conjunto

discreto de dados pontuais previamente conhecidos. Para isto existem vários métodos

de

interpolação

e

interpolação

pelo

otimização

método

dos

matemáticas.

Vamos

mínimos

quadrados.

utilizar

aqui

O

Método

o

método

de

dos

Mínimos

Quadrados é uma técnica de otimização matemática que procura encontrar o melhor

ajustamento para um conjunto de dados tentando minimizar a soma dos quadrados

das diferenças entre a curva ajustada e os dados (tais diferenças são chamadas

O comando polyfit calcula um polinômio de ordem N utilizando este método.

Por exemplo, se tivermos um vetor de dados:

>>x=[0:1:10];

>>y=[0 0.7 2.4 3.1 4.2 4.8 5.7 5.9 6.2 6.4 6.4]

Façamos:

>>coef1=polyfit(x,y,1)

>>coef2=polyfit(x,y,2)

% Se quisermos ajustar uma função de grau 1.

% Se quisermos ajustar uma função de grau 2, etc.

Observação: x e y sempre devem ter o mesmo número de elementos. Neste

caso temos 11 elementos em cada um. E para calcular um polinômio de grau n, basta

usar polyfit(x,y,n).

O seguinte resultado será mostrado para o caso de grau 1:

coef1=

0.66

0.831

O que significa:

y=0.66x+0.8318

E o resultado para o caso de grau 2 será:

coef2 =

-0.0712

1.3785

-0.2364

O que significa:

y2=-0.66x^2+1.3785x-0.2364

Para plotar o gráfico das funções coef1 e coef2, digite:

>> plot(coef1)

>> hold on

>> plot(coef2,'--r')

Na Figura 15 é apresentado o gráfico gerado pelos comandos acima:

1.4 1.2 1 0.8 0.6 0.4 0.2 0 Função de primeiro grau -0.2 Função de
1.4
1.2
1
0.8
0.6
0.4
0.2
0
Função de primeiro grau
-0.2
Função de segundo grau
-0.4
1
1.2
1.4
1.6
1.8
2
2.2
2.4
2.6
2.8
3

Figura 15

CAPÍTULO 7 - MATLAB PARA CONTROLE CLÁSSICO

7.1 - Determinando pólos e zeros da função de transferência

Há um comando no MATLAB que determina pólos e zeros. Este comando é o

tf2zp, que significa função de transferência para pólos e zeros. Exemplo:

>>num=[0 0 4 16 12]

>>den=[1 12 44 48 0]

>>[z,p,K]=tf2zp(num,den)

Obteremos a seguinte resposta:

z =

-3

-1

p =

0

-6.0000

-4.0000

-2.0000

K =

4

Onde z são os zeros, p são os pólos e k é a constante que multiplica o num.

7.2 - Criando funções de transferência

Uma função de transferência pode ser representada no MATLAB por dois

vetores linha, um com os coeficientes dos polinômios do numerador e o outro com os

coeficientes

do

polinômio

do

denominador.

Para

criarmos

uma

função

de

transferência devemos declarar o numerador e o denominador com potências de s

decrescentes. Por exemplo:

o denominador com potências de s decrescentes. Por exemplo: Deseja-se declarar a função de transferência acima

Deseja-se declarar a função de transferência acima no MATLAB. Na Command

Window, digite:

>> num=[1 2 3];

>> den=[2 3 -5];

E, então, utilizar o comando tf (num,den):

>> G= tf(num,den)

Transfer function:

s^2 + 2 s + 3

---------------

2 s^2 + 3 s 5

Algumas

funções

de transferência possuem

tempo

morto

ou retardo

de

transporte. Para colocar o tempo morto juntamente com a função de transferência

deve-se utilizar o comando tf(num,den,’inputdelay’,tm), onde tm é o tempo morto:

>>ft_com_tempo_morto= tf(num,den,'inputdelay',0.1)

Transfer function:

 

s^2 + 2 s + 3

exp(-0.1*s) *

---------------

2 s^2 + 3 s - 5

7.3 - Utilizando a função conv:

Para multiplicar dois polinômios com o MATLAB, pode-se utilizar o comando

conv. Por exemplo, para multiplicar os polinômios p1=

2

s

3 s 5
3
s
5

devemos declara- los da seguinte forma:

>>p1=[1 -3 5];

>>p2=[2 4 5];

>>c= conv(p1,p2)

2

e p2= 2

s

4 s 5 ,
4
s
5 ,

c =

2

-2

3

5

25

%

2s^4 2s^3 + 3s^2 +5s +25

Que são os coeficientes, em ordem decrescente, do polinômio resultante da

multiplicação entre p1 e p2.

7.4 - Frações Parciais

7.4 - Frações Parciais Expandindo em frações parciais temos: Podemos escrever F(S) como sendo, Podemos calcular

Expandindo em frações parciais temos:

- Frações Parciais Expandindo em frações parciais temos: Podemos escrever F(S) como sendo, Podemos calcular o

Podemos escrever F(S) como sendo,

frações parciais temos: Podemos escrever F(S) como sendo, Podemos calcular o resíduo, os pólos e o

Podemos calcular o resíduo, os pólos e o termo direto da expansão em frações

parciais utilizando o seguinte comando do MATLAB:

o resíduo, os pólos e o termo direto da expansão em frações parciais utilizando o seguinte
Outro exemplo: 56

Outro exemplo:

Outro exemplo: 56

7.5 - Análise da resposta transitória

7.5.1 - Análise da resposta transitória de uma entrada de referência do tipo

impulso unitário:

Para se aplicar uma entrada do tipo impulso unitário, usa-se o comando

impulse(num,den) ou impulse(G):

>> num=[1];

>> den=[1 0.2 1];

>> G=tf(num,den);

>> impulse(G)

A Figura 16 apresenta o gráfico com resposta da planta a uma entrada do tipo

impulso:

Impulse Response

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 0 10 20 30 40
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
0
10
20
30
40
50
60
Amplitude

Time (sec)

Figura 16

7.5.2 - Análise da resposta transitória de uma entrada de referência do tipo

degrau unitário:

Vamos analisar, agora, a resposta de um sistema à entrada do tipo degrau

unitário. Para a seguinte função de transferência:

unitário. Para a seguinte função de transferência: Digite os seguintes comandos na Command Window para

Digite os seguintes comandos na Command Window para declarar a F.T. e

aplicar o degrau utilizando o comando step:

>> num=[0 2 25] ;

>> den=[1 4 25];

>> sys=tf(num, den);

>> step(sys)

Na Figura 17, é apresentado o gráfico com resposta da planta a uma entrada

em degrau unitário:

Step Response

1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 2.5 3
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
0.5
1
1.5
2
2.5
3
Amplitude

Time (sec)

Figura 17

7.5.3 - Análise da resposta transitória de uma entrada de referência do tipo

rampa unitária:

Não existe um comando específico para uma entrada do tipo rampa, porém

existe um comando chamado lsim, onde o usuário coloca o tipo de entrada que se

deseja aplicar:

>> num=[ 0 0 1];

>> den=[1 1 1];

>> t=0:0.1:8;

>> r=t;

% Caracteriza o tipo de entrada, que neste caso é rampa unitária.

>> y=lsim(num,den,r,t);

>> plot(t,r,'-',t,y,'o')

A Figura 18 apresenta o gráfico com a resposta da planta a uma entrada do tipo

rampa unitária.

8 7 6 5 4 3 2 1 0
8
7
6
5
4
3
2
1
0

0

1

2

3

4

5

Figura 18

6

7

8

7.5.4 - Análise da resposta transitória de uma entrada de referência do tipo

aceleração unitária:

Da mesma forma que o item anterior, o comando usado é o lsim. Porém o que

muda é o tipo de entrada:

>> num=[2];

>> den=[1 1 2];

>> t=0:0.1:10;

Entrada e Saída

>> r=0.5*t.^2;

unitária.

% A entrada r(t)=1/2*t^2 é uma entrada em aceleração

>> y=lsim(num,den,r,t);

>> plot(t,r,'-',t,y,'o',t,y,'-')

>> xlabel('t(s)')

>> ylabel('Entrada e Saída')

Na Figura 19, é apresentado o gráfico com a resposta da planta para uma

entrada do tipo aceleração:

50 45 40 35 30 25 20 15 10 5 0 0 1 2 3
50
45
40
35
30
25
20
15
10
5
0
0
1
2
3
4
5
6
7
8
9
10
t(s)

Figura 19

7.6 - Obtendo função de transferência em série, paralelo e feedback:

s 4 5 s 4
s
4
5
s
4

5

Suponhamos que haja duas funções de transferência G1(s)= 2

2

s

e

s 5 8 s 1
s
5
8
s
1

2

G2(s)= 4

s

2

e que se deseje obter a função de transferência em série, em

paralelo

e

em

feedback

do

conjunto.

Para

isso

devem-se

declarar

primeiro

na

Command Window os seguintes comandos:

>>g1=tf([0 5 4],[2 6 4]);

>>g2=tf([0 2 5],[4 8 1]);

Vejamos agora como obter as funções de transferência em série, paralelo e

feedback dessas funções de transferência.

Em série:

e feedback dessas funções de transferência. Em série: No MATLAB digite: >> Sys=series(g1,g2) Transfer

No MATLAB digite:

>> Sys=series(g1,g2)

Transfer function:

10 s^2 + 33 s + 20

----------------------------------

8 s^4 + 40 s^3 + 66 s^2 + 38 s + 4

Em paralelo:

Em paralelo: >> Sys=parallel(g1,g2) Transfer function: 24 s^3 + 78 s^2 + 75 s + 24

>> Sys=parallel(g1,g2)

Transfer function:

24 s^3 + 78 s^2 + 75 s + 24

----------------------------------

8 s^4 + 40 s^3 + 66 s^2 + 38 s + 4

Em feedback:

8 s^4 + 40 s^3 + 66 s^2 + 38 s + 4 Em feedback :

>> Sys=feedback(g1,g2)

Transfer function:

20 s^3 + 56 s^2 + 37 s + 4

-----------------------------------

8 s^4 + 40 s^3 + 76 s^2 + 71 s + 24

Imaginary Axis

7.7 - Obtenção do gráfico de lugar das raízes

Para desenhar o gráfico de lugar das raízes deve-se, primeiramente, entrar

com os valores de numerador e denominador da função de transferência de malha

aberta e depois utilizar o comando rlocus (num,den) ou rlocus(A,B,C,D):

>> num=[0 4 3];

>> den=[2 4 5 4];

>> rlocus(num,den)

O gráfico gerado pode ser visualizado na Figura 20:

Root Locus

6

 
6    
6    
6    
6    
6    
 

4

 
4      
   

2

2
2

0

0    
0    
   
     

-2

 
-2      
-2      
   

-4

-4
 
-4  
-4  
-4  

-6

   

-1.4

-1.2

-1

-0.8

-0.6

Real Axis

-0.4

-0.2

Figura 20

0

0.2

Caso o usuário queira fazer uma análise mais detalhada do lugar das raízes,

basta clicar em cima do lugar das raízes (linha vermelha, verde ou azul) que as

informações serão mostradas.

7.8 - Aproximação de tempo morto

Para tratar o tempo morto

e

- Aproximação de tempo morto Para tratar o tempo morto e sT utilize ao comando pade

sT

utilize ao comando pade. Por exemplo, se

T=0.1s e estiver utilizando uma função de transferência de terceira ordem:

>>[num,den] = pade(0.1,3)

>> printsys(num,den,'s')

num/den =

-1 s^3 + 120 s^2 - 6000 s + 120000

-------------------------------------------

s^3 + 120 s^2 + 6000 s + 120000

7.9 - Construção de diagrama de bode

Para se obter o gráfico de bode de algum sistema são necessários que sejam

inseridos os valores de numerador e denominador e então digitar o comando bode

(num,den) ou bode(A,B,C,D):

>> num=[0 4 3];

>> den=[2 4 5 4];

>>bode (num,den)

Magnitude (dB)

Phase (deg)

Na Figura 21, é apresentado no gráfico o diagrama de Bode para F.T. declarada:

Bode Diagram

20

0

-20

-40

-60

-80

45

0

0

-45

-90

-135

-180

-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1
-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1
-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1
-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1
-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1
-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1
-20 -40 -60 -80 45 0 -45 -90 -135 -180 10 -1 10 0 10 1

10 -1

10 0

10 1

10 2

Frequency (rad/sec)

Figura 21

O gráfico localizado na parte superior da Figura 21 é o gráfico de ganho da

função de transferência e o gráfico localizado na parte inferior é o de fase. Caso o

usuário necessite de mais detalhes, basta clicar em cima do gráfico (linha azul) que as

informações exatas da freqüência, magnitude (ganho) e phase (fase) serão mostradas.

7.10 - Diagrama de Nyquist

Para se obter o gráfico de Nyquist de algum sistema são necessários que sejam

inseridos os valores de numerador e denominador e então digitar o comando nyquist

(num,den) ou nyquist (A,B,C,D):

>> num=[0 4 3];

>> den=[2 4 5 4];

>>nyquist(num,den)

Na Figura 22, é apresentado o diagrama de Nyquist para a F.T. declarada:

Nyquist Diagram

2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -1 -0.5 0 0.5 1 1.5
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-1