You are on page 1of 188

MATLAB aplicado Engenharia de Controle e Automao Industrial

Elaborao: Renato de Abreu Fernandes Orientador: Maurcio Gonalves Ferrarez

Campos dos Goytacazes 2010


1

CAPTULO 1. INTRODUO ................................................................... 07


1.1. Diretrio Atual (Current Directory) ..............................................................08 1.2. Workspace ....................................................................................................08 1.3. Histrico de Comando (Command History) ................................................. 08 1.4. Janela de Comando (Command Window) ................................................... 09 1.5. Start.... ......................................................................................................... 09 1.6. Ambiente simulink ...................................................................................... 09

CAPTULO 2. COMANDOS BSICOS DO MATLAB .......................... 12


2.1. Operadores matriciais ................................................................................. 14 2.2. Operadores relacionais e operadores lgicos ..............................................14 2.3. Caracteres especiais .....................................................................................15 2.4. Uso do operador ponto-e-vrgula .................................................................16 2.5. Uso do operador dois pontos .......................................................................16 2.6. Linha de programa comeando com % .......................................................16

CAPTULO 3. OPERAES BSICAS COM MATRIZES. ....................... 17


3.1. Operaes Simples com Vetores ..................................................................17 3.2. Estrutura das Matrizes ..................................................................................18 3.3. Operaes com matrizes ..............................................................................19

CAPTULO 4. CRIANDO GRFICOS ................................................ 25


4.1. Grfico em duas dimenses .........................................................................25 4.2. Grfico em trs dimenses ...........................................................................29 4.3. Grfico polar .................................................................................................30 4.4. Grfico de Rede ............................................................................................31 2

CAPTULO 5. COMANDOS PARA DERIVADAS E INTEGRAIS ........... 33


5.1. Derivada de expresses matemticas ..........................................................33 5.2. Clculo de limite ...........................................................................................36 5.3. Integral de expresses matemticas ............................................................37 5.4. Somatrio .....................................................................................................39 5.5. Razes de uma equao ................................................................................39

CAPTULO 6. INTERPOLAO ....................................................... 40


6.1. Interpolao unidimensional ........................................................................40 6.2. Interpolao bidimensional ..........................................................................44 6.3. Interpolao pelo mtodo dos mnimos quadrados ....................................49

CAPTULO 7. MATLAB PARA CONTROLE CLSSICO ....................... 52


7.1. Determinando plos e zeros.........................................................................52 7.2. Criando funes de transferncias ...............................................................53 7.3. Utilizando a funo conv ..............................................................................54 7.4. Fraes Parciais.............................................................................................55 7.5. Anlise da resposta transitria .....................................................................57 7.5.1. Anlise da resposta transitria de uma entrada de referncia do tipo Impulso unitrio ...........................................................................................57 7.5.2. Anlise da resposta transitria de uma entrada de referncia do tipo Degrau unitrio ............................................................................................58 7.5.3. Anlise da resposta transitria de uma entrada de referncia do tipo Rampa unitria .............................................................................................59

7.5.4. Anlise da resposta transitria de uma entrada de referncia do tipo Acelerao unitria. ....................................................................................60 7.6. Obtendo funo de transferncia em srie, paralelo e feedback. ...............62 7.7. Obteno do grfico de lugar das razes ......................................................64 7.8. Aproximao de tempo morto .....................................................................65 7.9. Construo de diagrama de bode.................................................................65 7.10. Diagrama de Nyquist ..................................................................................66 7.11. Transformao de modelos matemticos ..................................................67 7.12. Anlise da resposta transitria utilizando espao estado ..........................69 7.13. Comando para Clculo de Posto de uma Matriz ........................................71 7.14. Clculo para encontrar a matriz de ganhos e realimentao.....................72 7.15. Clculo de autovalores de uma Matriz .......................................................73 7.16. Comando para atribuir uma letra como smbolo .......................................74

CAPTULO 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 Estveis .................................79 8.4. Projeto de Compensadores para Plantas Instveis ......................................84

CAPTULO 9. MATLAB PARA CONTROLE DIGITAL .......................... 95


9.1. Comandos Introdutrios ...............................................................................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 4

CAPTULO 10. MATLAB PARA CONTROLE AVANADO ................ 117


10.1. Modelagem de portas lgicas...................................................................118 10.2. Modelagem de funes matemticas ......................................................126 10.3. Modelagem de processos industriais utilizando dados reais ...................131

CAPTULO 11. COMUNICAO ENTRE O MATLAB E SOFTWARES DE PLATAFORMA WINDOWS .......................................................... 138
11.1. Comunicao entre o MATLAB e o EXCEL utilizando protocolo de comunicao DDE ..............................................................................................139 11.2. Comunicao entre o MATLAB e o INTOUCH utilizando protocolo de comunicao DDE .........................................................................................144 11.3. Comunicao entre o MATLAB e o SYSCON utilizando a ferramenta opctool ...........................................................................................................................147

CAPTULO 12. ESTUDO DE CASO ................................................ 153


12.1. Modelagem matemtica e utilizao do MATLAB ...................................154 12.1.1. Funo de transferncia ............................................................155 12.1.2. Espao estado ............................................................................156 12.1.3. Representao no MATLAB e resposta em malha aberta.........157 12.2. Mtodo 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 5

12.3. Lugar das razes.........................................................................................165 12.4. Respota em frequncia .............................................................................167 12.5. Espao estado ...........................................................................................170 12.5.1. Projetando um controlador de realimentao de estado completo ............................................................................................................171 12.5.2. Adicionando uma entrada de referncia ..................................173 12.6. Controle Digital .........................................................................................178

ADENDO. RESUMO DOS COMANDOS MAIS UTILIZADOS NO CURSO

CAPTULO 1 INTRODUO

O MATLAB (Uma abreviao para MATrix LABoratory) um sistema baseado em matrizes, empregado em clculos matemticos e de engenharia. Pode-se imaginar o MATLAB como uma espcie de linguagem desenvolvida com intuito de manipular matrizes. Todas as variveis tratadas pelo MATLAB so matrizes. Isto quer dizer que o MATLAB s tem um tipo de dado, a matriz, que nada mais que um arranjo retangular de nmeros. O MATLAB possui um extenso conjunto de rotinas para obteno de sadas grficas. MATLAB um programa de computador que utiliza da linguagem de alto nvel e ambiente interativo que habilita voc executar computacionalmente tarefas grandes com uma velocidade mais veloz que as outras linguagens de programao tradicionais como C, C++ e Fortran. O usurio pode usar o MATLAB em uma ampla gama de aplicaes, incluindo processamento de sinal e imagem, comunicao, design de controle, teste e medio, modelagem e anlise financeira, e biologia computacional. Add-on toolboxes (colees especiais de funes MATLAB efeito, disponvel em separado) ampliar o ambiente MATLAB para resolver determinadas classes de problemas nestas reas de aplicao. Fornece tambm um nmero de funcionalidades para documentar e partilhar o seu trabalho. Voc pode integrar seu cdigo MATLAB com outras linguagens e aplicaes. O ambiente MATLAB composto pelas seguintes divises:

1.1 - Diretrios 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 no precisa sair do MATLAB para abrir e procurar outros arquivos e pastas.

1.2 - Workspace

A janela Workspace permite o usurio observar todas as variveis criadas e os valores atribudos s elas. possvel tambm a modificao destes valores atravs da janela Array Editor, que permite alterar o valor da varivel selecionada.

1.3 - Histrico de Comando (Command History)

A janela Command History permite o usurio ter acesso a todos os comandos digitados na janela Command Window. Isto serve para que em algum momento posterior, caso seja necessrio, o usurio possa acessar, visualizar e usar os comandos desejados e utilizados anteriormente em outra ocasio.

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 esto 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 aps aparecer a mensagem ready na barra.

1. 5 - Start

O Start fica localizado na barra inferior e uma opo muito interessante de ser explorada, pois possui muitos atalhos para Demos, Help, Toolboxes, suporte do programa na internet e Help especfico de ferramentas do MATLAB e SIMULINK.

1.6 - Ambiente SIMULINK

O SIMULINK uma ferramenta para modelagem, simulao e anlise de sistemas dinmicos. Sua interface primria uma ferramenta de diagramao grfica por blocos e bibliotecas customizveis de blocos. O software oferece alta integrao com o resto do ambiente MATLAB. O SIMULINK amplamente usado em teoria de controle e processamento digital de sinais para projeto e simulao multi-domnios.

Sistemas modelveis matematicamente como sistemas de comunicao, de automveis, de dinmica de barcos, de dinmica de aeronaves, monetrios e at biolgicos podem ser construdos e simulados no SIMULINK. O MATLAB tem a facilidade do auxlio interativo (help-on-line), que pode ser utilizado sempre que necessrio. O comando help, quando executado, mostra uma lista de funes e de operadores predefinidos, para os quais o recurso do auxlio (help) est disponvel. O comando help nome da funo dar informaes sobre a funo especificada. Ex.: >>help roots. O comando help help mostrar como utilizar o auxlio interativo (help-on-line). A janela de comandos Command Window possibilita o usurio digitar os comandos, programas e etc. Porm a mesma no possibilita a gravao dos comandos digitados caso o MATLAB seja encerrado. A soluo criar um arquivo chamado Mfile. Este arquivo possibilita voc salvar os comandos e rotinas desenvolvidas. Assim, sempre que necessrio, o usurio poder usar o arquivo a qualquer hora e em qualquer computador, basta copiar o arquivo. Para criar uma M-file basta clicar no primeiro cone do canto esquerdo superior da tela designado como New M-file ou no Current Directory, pressionando o boto direito do mouse e selecionando a opo New M-flie. Deve-se ter ateno quanto a gravao do arquivo, pois ele deve conter o nome desejado pelo usurio seguido de .m e deve ser salvo na pasta MATLAB, localizada por default no diretrio Meus documentos. Ex:

Nome do arquivo: Lugardasraizes. m

10

Aps esse arquivo ter sido criado, os comandos desenvolvidos ou no na janela Command Window devem ser digitados ou copiados para dentro do M.file. Aps 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 sero mostrados na janela Command Window.

11

CAPTULO 2 - COMANDOS BSICOS DO MATLAB

O sistema MATLAB possui diversas funes predefinidas que podero ser chamadas pelo usurio para resolver uma ampla gama de problemas. Comandos e funes matriciais comumente empregados na soluo de problemas de Engenharia de Controle so: Comandos e funes matriciais Explicaes sobre o que o comando faz, o

comumente usados na soluo de que a funo matricial significa, ou o que a problemas de engenharia de controle. Abs Angle Ans Antan Axis Bode clear clg conj conv cos cosh cov deconv det diag Eig Exit ou quit exp expm eye filter format long format log e format short fromat short e freqs freqz declarao significa. Valor absoluto, magnitude complexa. ngulo de fase Resp. obtida para expresso sem atribuio Arcotangente Escala manual do eixo Traar diagrama de bode Limpar a rea de trabalho Limpar tela grfica Conjugado complexo Convoluo, Multiplicao Co-seno Co-seno hiperblico Co-varincia Deconvoluo, Diviso Determinante Matriz diagonal Autovalores e autovetores Trmino do programa Exponenciao, base e Matriz exponencial Matriz identidade Implementao de filtro Nmero real de 15 dgitos Nmero real de 15 dgitos em notao cientfica Nmero real de 5 dgitos Nmero real de 5 dgitos em notao cientfica Resposta de freq. no domnio da transfor. de laplace Resposta de freqncia no domnio da transf. Z 12

Grid Hold on imag inf inv j ou i Length Linspace Log Loglog Logm Logspace Log10 Lqe Lqr Max Mean Median Min Nan nyquist Ones pi plot polar poly plyt polyval polyvalm prod ramp rand rank real rem residue rlocus roots semilogx semilogy sign sin sinh size sqrt sqrtm std step

Desenhar linhas em uma grade reticulada Manter na tela o grfico corrente Parte imaginria de um nmero complexo Infinito Inversa Raiz quadrada de -1 Tamanho do vetor Vetores linearmente espaados Logaritmo natural Grfico loglog nos eixos x-y Logaritmo da matriz Vetores logariticamente espaados Logaritmo de base 10 Projeto de estimador quadrtico linear Projeto do regulador quadrtico linear Valor mximo Valor mdio Valor da mediana Valor mnimo No-nmero Grfico da resp. em freq. em coordenada de Nyquist Constante Nmero pi Grfico linear em coordenadas cartezianas x-y Grfico em coordenadas polares Polinmio caracterstico Ajuste polinomial de curvas Avaliao polinomial Avaliao de matriz polinomial Produto de elementos Traar a resposta a entrada em rampa Gerar nmeros e matrizes randmicos Calcular o posto (rank) de uma matriz Parte real de um nmero complexo Resto ou mdulo Expanso em fraes parciais Traar lugar das razes Razes polinomiais Grfico semilog x-y (eixo x logartmico) Grfico semilog x-y (eixo y logartmico) Funo sinal Seno Seno hiperblico Dimenses de linhas e colunas de uma matriz Raiz quadrada Raiz quadrada de uma matriz Desvio padro Traar a resposta ao degrau unitrio 13

sum tan tanh text title trace Who Xlabel Ylabel Zeros

Soma de elementos Tangente Tangente hiperblica Texto posicionado arbitrariamente Colocar ttulo em um grfico Trao de uma matriz Lista de todas as variveis atualmente na memria Ttulo do eixo dos x Ttulo do eixo dos y Zero

2.1 - Operadores matriciais

As notaes utilizadas nas operaes envolvendo matrizes so as seguintes:

+ * ^ |

Adio Subtrao Multiplicao Potenciao Transposta conjugada

2.2 - Operadores relacionais e operadores lgicos

O MATLAB utiliza o seguinte conjunto de operadores relacionais e lgicos:

<

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 atribuio, enquanto = = empregado em uma relao. Os operadores lgicos so os seguintes:

& | ~

AND OR NOT

2.3 - Caracteres especiais

O MATLAB usa os seguintes caracteres especiais:

[ ] ( ) ; : ! %

Usado na formao de vetores e de matrizes. Usado para a quebra da precedncia de operadores em expresses. Usado para separar subscrito e argumentos de funes. Usado para encerrar linhas e para suprimir impresso. Usado para subscrever conjuntos e para a gerao de vetores. Usado para forar a execuo de comandos dos sistemas operacionais. Usado para introduzir Comentrios.

15

2.4 - Uso do operador ponto-e-vrgula

O ponto-e-vrgula usado para suprimir impresso. Se o ltimo caractere de um comando for um ponto-e-vrgula, o comando executado, mas sem a impresso dos resultados gerados. Esta uma caracterstica til na medida em que a impresso de resultados intermedirios pode no ser necessria. O ponto-e-vrgula tambm usado como indicador de final de linha quando se entra com os elementos de uma matriz, exceo feita obviamente ltima linha.

2.5 - Uso do operador dois pontos

Os dois pontos tm funo muito importante no MATLAB. Este operador pode ser usado para criar vetores, subscrever matrizes e especificar as iteraes 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 comeando com %

As linhas de programas MATLAB iniciadas por % so linhas de comentrios. A notao % similar ao REM da linguagem BASIC. As linhas de comentrios no so executadas, ou seja, tudo que aparecer depois de um % em uma linha de programa MATLAB ignorado. Se os comentrios precisarem de mais de uma linha, cada uma delas deve comear com o smbolo %. 16

CAPTULO 3 - OPERAES BSICAS COM MATRIZES

3.1 - Operaes Simples com Vetores

Essa uma demonstrao 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. 17

>> 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 nmeros de um vetor, basta colocar o smbolo * ou /, respectivamente. Ex.: >>d=c*2 >>e=c/5

3.2 - Estrutura das Matrizes

Criar Matrizes to fcil quanto fazer um vetor. Usando o operador Ponto-eVrgula ; 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] 18

B= -1 2 3 6

4 -5 7

8 -9

Observao: Caso se queira que a matriz seja mostrada na forma de grfico, basta usar os comandos para plotar grficos que sero mostrados no prximo captulo e analisar o seu comportamento.

3.3 - Operaes 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

19

D= -8 -6 -4 -2 4 0 6 2 8

>> D=B-A D= 8 2 6 4

0 -2

-4 -6 -8

Note que se voc inverter a ordem das matrizes que vo ser subtradas os sinais so trocados.

Multiplicando duas Matrizes: >> E=A*B E= 30 24 18 84 69 54 138 114 90

>> E=B*A; Note que os valores tambm so invertidos nesse caso.

20

Dividindo duas matrizes: >> F=A/B Warning: Matrix is singular to working precision.

F= NaN NaN NaN NaN NaN NaN NaN -Inf Inf

Ao invs de multiplicar matrizes, ns 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)

21

X= 5 2 -2 1 1

-2 -1 0 -2

Para encontrar a Matriz Transposta: >> C= B' C= -1 4 7 8

2 -5 3

6 -9

Para obter os valores prprios de um vetor basta usar o comando eig(): >> eig(A) ans = 3.7321 0.2679 1.0000

>> whos Name A Size 3x3 Bytes Class 72 double Attributes

22

Qualquer momento, ns podemos listar as variveis que ns temos armazenado na memria. Isso possvel 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 C D E F X Y a ans b c d e 2x2 3x3 3x3 3x3 3x3 3x3 1x9 3x1 1x9 1x9 1x9 1x9

32 double 32 double 72 double 72 double 72 double 72 double 72 double 72 double 24 double 72 double 72 double 72 double 72 double

Caso digitarmos a varivel, seu contedo ser mostrado: >> A

23

A= 1 2 2 0

5 -1

4 10 -1

O mesmo pode ser aplicado para as outras variveis.

24

CAPTULO 4 - CRIANDO GRFICOS

4.1 - Grfico em duas dimenses

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 grfico. Vamos plotar o resultado do nosso vetor com grid lines. Digite na Comand window ,ou na M-file criada, os comandos: >>plot(b) >>grid on % Comando para plotar o vetor b. % Comando para aparecer o grid no grfico.

Na Figura 1, apresentado o grfico gerado para os comandos acima:

Figura 1 25

O grfico pode ser modificado facilmente com os comandos: >> plot(b,'p') % A linha do grfico ser substituda por estrelas nos pontos do vetor b. >> plot(b,'g') % A linha do grfico ficar verde. >> plot(b,'r') % A linha do grfico ficar vermelha. >> plot(b,'o') % A linha do grfico ser substituda por bolas. >> plot(b,'x') % A linha do grfico ser substituda por x. >> plot(b,'y') % A linha do grfico ficar amarela. >> plot(b,'*') % Os valores do vetor b so representados por *.

O MATLAB pode gerar outros tipos de grficos utilizando o mesmo vetor b, exemplo: >>bar(b,r)

Na Figura2, apresentado o grfico gerado pelo comando acima:


8 7 6 5 4 3 2 1 0

Figura 2 26

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 grfico gerado pelos comandos acima:


10 9 8 7
velocidade m/s

6 5 4 3 2 1 0

5 6 tempo em s

10

Figura 3

Como podemos ver o termo tempo em segundos foi alocado na coordenada x e o termo velocidade m/s foi alocado na coordenada y. O comando axis tem a funo de limitar as coordenadas. O primeiro 0 e 10 so referentes ao eixo x e os outros 0 e 10 so referentes ao eixo y.

27

Outro exemplo usando o comando stairs: >> b=[1 2 3 4 5 4 3 2 1]; >> stairs(b)

Na Figura 4, apresentado o grfico gerado pelos comandos acima:


8 7.5 7 6.5 6 5.5 5 4.5 4 3.5 3

Figura 4

Outro caso o do comando fill, que preenche o polgono bidimensional definido pelos vetores de coluna x e y com a cor definida por c. Os vrtices do polgono so especificados pelos pares (xi, yi). Se necessrio, o polgono fechado pela conexo do ltimo vrtice ao primeiro. Tente o exemplo: >> t=(1/8:2/8:15/8)*pi; % Vetor de coluna. >> x=sin(t); % Funo seno em funo da varivel t. >> y=cos(t); % Funo cosseno em funo da varivel t.

28

>> fill(x,y,'r') pontos. >> axis('square')

% Um crculo preenchido com vermelho usando somente 8

>> text(-.11,0,'pare') >> title('Placa Vermelha de Pare')

Na Figura 5, apresentado o grfico gerado pelos comandos acima:


Placa Vermelha de Pare 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1 -0.5 0 0.5 1 pare

Figura 5

4.2 - Grficos em trs dimenses

O tipo de grfico em trs dimenses mais utilizado : >> A=[1 2 3;4 5 6;7 8 9]; >>bar3(A)

29

Na Figura 6, apresentado o grfico gerado pelos comandos acima:

10 8 6

4 2 0 3 2 1 1 2 3

Figura 6

As opes de mudana de cor tambm valem para os grficos em 3d, como: >> bar3(A,'g') % O grfico ficar verde. >> bar3(A,'r') % O grfico ficar vermelha. >> bar3(A,'b') % O grfico ficar preto. >> bar3(A,'y') % O grfico ficar amarelo.

4.3 - Grfico polar

Grficos 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, smbolos marcadores e/ ou tipo de linha. Veja o exemplo: 30

>> t = 0:.01:2*pi; >>r = sin(2*t).*cos(2*t); >>polar(t,r)

Na Figura 7, apresentado o grfico gerado pelos comandos acima:

Figura 7

4.4 - Grficos de Rede

Um exemplo simples de grfico 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 grfico de rede da varivel desejada, neste caso z: >>surf(z)

31

Na Figura 8, apresentado o grfico de rede gerado pelos comandos acima:

10

-5

-10 40 30 20 10 0 0 10 30 20 40

Figura 8

32

CAPTULO 5 - COMANDOS PARA DERIVADAS E INTEGRAIS

5.1 - Derivada de expresses matemticas

Para derivar uma expresso que contm mais de uma varivel, voc deve especificar a varivel que voc quer derivar utilizando o comando syms. O comando diff ento calcula a derivada parcial da expresso com a respectiva varivel. 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 variveis utilizadas na diferenciao, basta executar o comando: >> findsym(f,2) 33

ans = t,s

Outros exemplos: >>syms a b x n t theta

A Tabela 1 ilustra os resultados das expresses atribudas a f em cada situao:

Tabela 1

H uma opo 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 tambm em matrizes: >> syms a x >> A = [cos(a*x),sin(a*x);-sin(a*x),cos(a*x)] 34

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 matemticos:

Tabela 2

35

5.2 - Clculo de limite

Da mesma forma que na diferenciao de expresses matemticas, para se calcular o Limite de alguma expresso basta declarar a varivel (como smbolo) usada na expresso 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 opes para o comando limit(f), lembrando que f a funo do objeto simblico x:

Tabela 3 36

5.3 - Integral de expresses matemticas

Se f uma expresso simblica, ento se utiliza o comando int para calcular a integral da mesma: >>int(f)

Veja como comando int funciona na Tabela 4:

Tabela 4

Nem sempre todas as integrais podero ser calculadas, pois existem algumas limitaes. Veja alguns exemplos na Tabela 5: >>syms a b theta x y n u z

37

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

Tabela 6 38

5.4 - Somatrio

A implementao desta funo muito simples, basta declarar as variveis 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 - Razes de uma equao

Para se calcular raiz de uma equao, usa-se o comando roots:

>> roots([5 4 2 ]) % 5*s^2 + 4*s +2 ans = -0.4000 + 0.4899i -0.4000 - 0.4899i

39

CAPTULO 6 - INTERPOLAO

6.1 - Interpolao Unidimensional

A interpolao definida como sendo uma forma de estimar os valores de uma funo entre aqueles dados por um conjunto de pontos de dados. A interpolao uma ferramenta valiosa quando no se pode calcular rapidamente a funo nos pontos intermedirios desejados. Por exemplo, isso ocorre quando os pontos dados resultam nas medies experimentais ou de procedimentos computacionais demorados. Talvez o exemplo mais simples de interpolao sejam os grficos do MATLAB. Por definio, o MATLAB desenha linhas retas interligando os pontos de dados usados para se fazer um grfico. Essa interpolao linear considera que os valores intermedirios caem em uma linha reta entre os pontos definidos. Com certeza, medida que se tm mais pontos de dados e a distncia entre eles diminui, a interpolao 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('interpolao Linear')

40

Na Figura 9 apresentado o grfico gerado pelos comandos acima:


interpolao Linear 1 0.8 0.6 0.4 0.2
sin(x)

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

Figura 9

Dos dois grficos da funo 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 estratgias de interpolao, dependendo das suposies feitas. Alm disso, possvel interpolar em mais de uma dimenso. Isto , se voc tiver dados referentes a uma funo de duas variveis, z=f(x,y), pode interpolar entre os valores tanto de x como de y para encontrar valores intermedirios de z. O MATLAB apresenta diversas opes de interpolao na funo unidimensional interp1 e na funo bidimensional interp2. Cada uma dessas funes ser sempre exemplificada nas subsees seguintes. Para ilustrar a interpolao unidimensional, consideremos o seguinte exemplo:

41

Como parte de um projeto de cincias, Laura registrou a temperatura oficial em Porto Alegre a cada hora, em um perodo de doze horas, para usar esses dados como informao 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 grfico gerado pelos comandos acima:

temperatura em Porte Alegre 35

30

25

Graus celcius

20

15

10

6 hora

10

12

Figura 10

42

Conforme mostrado no grfico 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) % Estima a temperatura em hora = 9.3. t= 22.9000

>> t = interp1(horas,temps,[3.2 6.5 7.1 11.7]) % Estima a temperaturas nos instantes 3.2, 6.5, 7.1, 11.7 horas. t= 10.2 30 30.9 24.9

Esse uso padro de interp1 descrito por interp1(x,y,x0), onde x a varivel independente (abscissa), y a varivel dependente (ordenada) e x0 um conjunto de valores a serem interpolados. Alm disso, esse uso padro pressupe interpolao linear. Para se ter resultados um pouco mais precisos, basta utilizar o comando splines. Ento: >> t = interp1(horas,temps,*3.2 6.5 7.1 11.7+,splines)

43

t= 9.6734 30.0427 31.1755 25.3820

Antes de discutir a interpolao bidimensional, importante reconhecer uma das principais restries impostas por interp1. No se podem pedir resultados fora do limite da varivel independente; por exemplo, interp1(horas,temps,13.5) conduziria a um erro j que varia de 1 a 12.

6.2 - Interpolao Bidimensional

A interpolao bidimensional fundamentada nas mesmas idias bsicas da interpolao unidimensional. Entretanto, como o prprio nome indica, a interpolao bidimensional interpola funes de duas variveis, z =f(x,y). Para ilustrar essa dimenso adicional, consideremos o seguinte problema:

Bernardo conseguiu um emprego no laboratrio de pesquisas da Tangu S.A. L, ele est tentando aperfeioar a receita de um biscoito feito em forno de microondas. Para testar a uniformidade das receitas aps 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

44

desses dados, Bernardo espera determinar a distribuio de temperatura ao longo do tabuleiro.

Figura 11

Bernardo usa o MATLAB para resolver seu problema criando os arquivos Mfiles de instruo: %Meiaaltura.m %Analisa os dados de teste do lote. %Corta o tabuleiro a meia profundidade e examina atravs 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 resoluo para a largura. p=2; % Centro do tabuleiro.

zl=interp2(largura,profund,temp,la,p); % Interpolao linear. 45

zc=interp2(largura,profund,temp,la,p,'cubic') % Interpolao cbica. plot(la,zl,'--',la,zc) % Plota as interpolaes linear e cbica. Xlabel('largura do tabuleiro') Ylabel('graus celcius') Title('Temperatura na profundidade =2')

Na Figura 12, apresentado o grfico da temperatura na profundidade =2:


Temperatura na profundidade =2 85

80

graus celcius

75

70

65

60

1.5

2.5 3 3.5 largura do tabuleiro

4.5

Figura 12

% Meialargura.m % Analisa os dados de teste do lote. % Corta o tabuleiro a meia largura e examina atravs 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];

46

pr=1:0.2:3; l=3;

% Escolhe a resoluo da profundidade. % Centro do tabuleiro.

zl=interp2(largura,profund,temps,l,pr); % Interpolao linear. zc=interp2(largura,profund,temps,l,pr,'cubic') % Interpolao cbica. plot(pr,zl,'-- ',pr,zc) % Plota as interpolaes linear e cbica. xlabel('profundidade do tabuleiro') ylabel('graus celcius') title('Temperatura na largura =3')

Na Figura 13 apresentado o grfico da Temperatura na largura=3:


Temperatura na largura =3 85

80

graus celcius

75

70

65

60

1.5

2 profundidade do tabuleiro

2.5

Figura 13 % tabuleiro.m % Analisa os dados de teste do lote. % Visualiza a distribuio de temperatura em todo o tabuleiro. largura=[1 2 3 4 5] ; % Largura do tabuleiro. 47

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 resoluo para a profundidade. la=0:.2:5; % Escolhe a resoluo para a largura. zc=interp2(largura,profund,temps,la,pr,'linear'); % Interpolao cbica. mesh(la,pr,zc) % Cria um grfico 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:

Figura 14 48

O exemplo acima demonstra claramente que a interpolao bidimensional mais complicada simplesmente porque h mais detalhes com os quais devemos nos preocupar. A forma bsica de interp2 interp2(x,y,z,xi,yi,mtodo). Aqui x e y so as duas variveis independentes, z a matriz da varivel 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 parmetro opcional mtodo pode ser linear, cubic ou nearest. Neste caso, cubic no significa splines cbicas, mas sim outro algoritmo usando polinmios cbicos. Para maiores informaes acerca desses mtodos, pea a ajuda on-line, por exemplo, help interp2.

6.3 - Interpolao pelo mtodo dos mnimos quadrados

Deseja-se construir um novo conjunto de dados a partir de um conjunto discreto de dados pontuais previamente conhecidos. Para isto existem vrios mtodos de interpolao e otimizao matemticas. Vamos utilizar aqui o mtodo de interpolao pelo mtodo dos mnimos quadrados. O Mtodo dos Mnimos Quadrados uma tcnica de otimizao matemtica que procura encontrar o melhor ajustamento para um conjunto de dados tentando minimizar a soma dos quadrados das diferenas entre a curva ajustada e os dados (tais diferenas so chamadas resduos).

49

O comando polyfit calcula um polinmio de ordem N utilizando este mtodo. 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] Faamos: >>coef1=polyfit(x,y,1) % Se quisermos ajustar uma funo de grau 1. >>coef2=polyfit(x,y,2) % Se quisermos ajustar uma funo de grau 2, etc.

Observao: x e y sempre devem ter o mesmo nmero de elementos. Neste caso temos 11 elementos em cada um. E para calcular um polinmio 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

50

O que significa: y2=-0.66x^2+1.3785x-0.2364

Para plotar o grfico das funes coef1 e coef2, digite:

>> plot(coef1) >> hold on >> plot(coef2,'--r')

Na Figura 15 apresentado o grfico gerado pelos comandos acima:

1.4 1.2 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 Funo de primeiro grau Funo de segundo grau

1.2

1.4

1.6

1.8

2.2

2.4

2.6

2.8

Figura 15

51

CAPTULO 7 - MATLAB PARA CONTROLE CLSSICO

7.1 - Determinando plos e zeros da funo de transferncia

H um comando no MATLAB que determina plos e zeros. Este comando o tf2zp, que significa funo de transferncia para plos 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 so os zeros, p so os plos e k a constante que multiplica o num. 52

7.2 - Criando funes de transferncia

Uma funo de transferncia pode ser representada no MATLAB por dois vetores linha, um com os coeficientes dos polinmios do numerador e o outro com os coeficientes do polinmio do denominador. Para criarmos uma funo de transferncia devemos declarar o numerador e o denominador com potncias de s decrescentes. Por exemplo:

Deseja-se declarar a funo de transferncia acima no MATLAB. Na Command Window, digite: >> num=[1 2 3]; >> den=[2 3 -5];

E, ento, utilizar o comando tf (num,den): >> G= tf(num,den) Transfer function: s^2 + 2 s + 3 --------------2 s^2 + 3 s 5

53

Algumas funes de transferncia possuem tempo morto ou retardo de transporte. Para colocar o tempo morto juntamente com a funo de transferncia 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 funo conv:

Para multiplicar dois polinmios com o MATLAB, pode-se utilizar o comando conv. Por exemplo, para multiplicar os polinmios p1= s devemos declara- los da seguinte forma: >>p1=[1 -3 5]; >>p2=[2 4 5]; >>c= conv(p1,p2) c=
2

3s 5 e p2= 2 2 4 5, s s

2 -2

5 25

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

Que so os coeficientes, em ordem decrescente, do polinmio resultante da multiplicao entre p1 e p2.

54

7.4 - Fraes Parciais

Expandindo em fraes parciais temos:

Podemos escrever F(S) como sendo,

Podemos calcular o resduo, os plos e o termo direto da expanso em fraes parciais utilizando o seguinte comando do MATLAB:

55

Outro exemplo:

56

7.5 - Anlise da resposta transitria

7.5.1 - Anlise da resposta transitria de uma entrada de referncia do tipo impulso unitrio:

Para se aplicar uma entrada do tipo impulso unitrio, 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 grfico com resposta da planta a uma entrada do tipo impulso:

Impulse Response 1 0.8 0.6 0.4


Amplitude

0.2 0 -0.2 -0.4 -0.6 -0.8

10

20

30 Time (sec)

40

50

60

Figura 16 57

7.5.2 - Anlise da resposta transitria de uma entrada de referncia do tipo degrau unitrio:

Vamos analisar, agora, a resposta de um sistema entrada do tipo degrau unitrio. Para a seguinte funo de transferncia:

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)

58

Na Figura 17, apresentado o grfico com resposta da planta a uma entrada em degrau unitrio:

Step Response 1.4

1.2

Amplitude

0.8

0.6

0.4

0.2

0.5

1.5 Time (sec)

2.5

Figura 17

7.5.3 - Anlise da resposta transitria de uma entrada de referncia do tipo rampa unitria:

No existe um comando especfico para uma entrada do tipo rampa, porm existe um comando chamado lsim, onde o usurio 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 unitria. >> y=lsim(num,den,r,t); 59

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

A Figura 18 apresenta o grfico com a resposta da planta a uma entrada do tipo rampa unitria.

8 7 6 5 4 3 2 1 0

Figura 18

7.5.4 - Anlise da resposta transitria de uma entrada de referncia do tipo acelerao unitria:

Da mesma forma que o item anterior, o comando usado o lsim. Porm o que muda o tipo de entrada: >> num=[2]; >> den=[1 1 2]; >> t=0:0.1:10;

60

>> r=0.5*t.^2; unitria.

% A entrada r(t)=1/2*t^2 uma entrada em acelerao

>> y=lsim(num,den,r,t); >> plot(t,r,'-',t,y,'o',t,y,'-') >> xlabel('t(s)') >> ylabel('Entrada e Sada')

Na Figura 19, apresentado o grfico com a resposta da planta para uma entrada do tipo acelerao:

50 45 40 35
Entrada e Sada

30 25 20 15 10 5 0

5 t(s)

10

Figura 19

61

7.6 - Obtendo funo de transferncia em srie, paralelo e feedback:

Suponhamos que haja duas funes de transferncia G1(s)=

5 4 s e 2 s 5 4 s
2

G2(s)=

2 5 s e que se deseje obter a funo de transferncia em srie, em 4 s 8 1 s


2

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 funes de transferncia em srie, paralelo e feedback dessas funes de transferncia. Em srie:

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 62

Em paralelo:

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

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

7.7 - Obteno do grfico de lugar das razes

Para desenhar o grfico de lugar das razes deve-se, primeiramente, entrar com os valores de numerador e denominador da funo de transferncia 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 grfico gerado pode ser visualizado na Figura 20:

Root Locus 6

2
Imaginary Axis

-2

-4

-6 -1.4

-1.2

-1

-0.8

-0.6 Real Axis

-0.4

-0.2

0.2

Figura 20

Caso o usurio queira fazer uma anlise mais detalhada do lugar das razes, basta clicar em cima do lugar das razes (linha vermelha, verde ou azul) que as informaes sero mostradas. 64

7.8 - Aproximao de tempo morto

Para tratar o tempo morto e

sT

utilize ao comando pade. Por exemplo, se

T=0.1s e estiver utilizando uma funo de transferncia 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 - Construo de diagrama de bode

Para se obter o grfico de bode de algum sistema so necessrios que sejam inseridos os valores de numerador e denominador e ento digitar o comando bode (num,den) ou bode(A,B,C,D): >> num=[0 4 3]; >> den=[2 4 5 4]; >>bode (num,den)

65

Na Figura 21, apresentado no grfico o diagrama de Bode para F.T. declarada:

Bode Diagram 20 0
Magnitude (dB) Phase (deg)

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


-1

10

10 Frequency (rad/sec)

10

Figura 21

O grfico localizado na parte superior da Figura 21 o grfico de ganho da funo de transferncia e o grfico localizado na parte inferior o de fase. Caso o usurio necessite de mais detalhes, basta clicar em cima do grfico (linha azul) que as informaes exatas da freqncia, magnitude (ganho) e phase (fase) sero mostradas.

7.10 - Diagrama de Nyquist

Para se obter o grfico de Nyquist de algum sistema so necessrios que sejam inseridos os valores de numerador e denominador e ento digitar o comando nyquist (num,den) ou nyquist (A,B,C,D):

66

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

0.5
Imaginary Axis

-0.5

-1

-1.5

-2 -1

-0.5

0 Real Axis

0.5

1.5

Figura 22 Detalhes so mostrados quando se clica em cima da linha azul.

7.11 - Transformao de modelos matemticos

Uma vez declarados os vetores correspondentes ao numerador e denominador (num e den, respectivamente) da funo de transferncia pode-se utilizar a seguinte linha de comando para obter a representao no espao de estados:

67

>>[A,B,C,D]=tf2ss(num,den) % Transforma de funo de transferncia para espao estado. Por exemplo: >>num=[0 4 3] ; >>den=[2 4 5 4]; >>[A,B,C,D]=tf2ss(num,den)

A= -2.0000 -2.5000 -2.0000 1.0000 0 0 0

0 1.0000 B= 1 0 0 C=

0 2.0000 1.5000 D=0

Caso o sistema esteja representado no espao de estados e se deseje represent-lo em funo de transferncia deve-se fazer:

68

>>[num,den]=ss2tf(A,B,C,D) % Onde A a matriz de estado, B a matriz de entrada, C a matriz de sada e D a matriz de transmisso direta.

Caso deseje fazer a Transformada Laplace Inversa de uma funo de transferncia, deve-se utilizar o comando: >> ilaplace( )

Por exemplo: >> syms s >> ilaplace(1/(s-1)) ans = exp(t)

>> syms t >> ilaplace(1/(t^2+1)) ans = sin(x)

7.12 - Anlise da resposta transitria utilizando espao estado

Deseja-se obter a resposta ao degrau unitrio de um sistema no espao de estados. Por exemplo, desejamos analisar respostas para o sistema no espao de

69

estados cujas matrizes de estado, de entrada, de sada e de transmisso direta so, respectivamente: >>A =[-2 -2.5 -2;1 0 0;0 1 0]; >>B =[1;0;0]; >>C =[0 2 1.5]; >>D =0

Para isso deve-se utilizar a seguinte linha de comando: >>step(A,B,C,D) Ou ainda: >>sys=ss(A,B,C,D) >>step(sys)

A Figura 23 apresenta o grfico da resposta em degrau para o sistema em espao estado:

Step Response 1.4

1.2

Amplitude

0.8

0.6

0.4

0.2

10

12

14

16

18

Time (sec)

Figura 23 70

Se desejar a resposta ao impulso unitrio, utilize o comando impulse. A resposta mostrada na Figura 24: >>impulse (A,B,C,D) Ou: >>sys=ss(A,B,C,D) >>impulse(sys)

Impulse Response 1

0.8

0.6

Amplitude

0.4

0.2

-0.2

-0.4

10

12

14

16

18

Time (sec)

Figura 24

7.13 - Comando para clculo de Posto de uma Matriz

Quando se trata de sistemas de Controle no Espao Estados, em alguns casos deve-se verificar o posto de uma dada matriz. Para isto, utiliza-se o comando rank( ). Exemplo:

71

>> M=[1 4 3; 9 3 5; 1 8 2]; >> rank(M) ans = 3

Neste caso, a matriz linearmente independente pois a matriz 3x3 e o posto da matriz deu 3. Vejamos outro exemplo: >> N=[1 4 3; 2 8 6; 1 8 2]; >> rank(N)

ans = 2

Aqui a matriz no linearmente independente, pois a matriz 3x3 e o posto 2. Caracterizando assim uma relao de dependncia entre uma linha ou coluna com outra.

7.14 - Clculo para encontrar a matriz de ganhos e realimentao

Existem trs formas no Livro do K. Ogata de se calcular a Matriz K de ganhos e realimentao no captulo 12. Aqui, veremos uma forma de se calcular a Matriz K de forma computacional atravs do MATLAB. O comando para se calcular a Matriz K de realimentao :

72

>> K=acker(A,B,J)

A composta pelos valores da matriz A do sistema, B composta pelos valores da matriz B do sistema e J composta pelos valores dos plos desejados em malha fechada. Exemplo: >> A=[0 1 0;0 0 1; -6 -11 -6]; >> B=[0;0;1]; >> J=[-2+j*2*sqrt(3) -2-j*2*sqrt(3) -6]; J= -2.0000 + 3.4641i -2.0000 - 3.4641i -6.0000 >> K=acker(A,B,J) K= 90.0000 29.0000 4.0000

7.15 - Clculo de AutoValores de uma Matriz

Para se calcular os autovalores de uma matriz muito simples. O comando o eig(). Exemplo: >> A=[0 1 0;0 0 1; -6 -11 -6]; >> eig(A)

73

ans = -1.0000 -2.0000 -3.0000

7.16 - Comando para atribuir uma letra como smbolo

Em alguns casos, deseja-se usar uma letra para ser manipulada apenas como um smbolo e no como uma varivel. Neste caso, o comando para atribuir uma letra como smbolo syms. Veja o exemplo abaixo:

>> EQ= s^3 +2*s^2 + 5*s + 10 ??? Undefined function or variable 's'.

Caso o usurio deseje declarar a equao como a do exemplo acima, antes ele deve declarar a varivel usada s como smbolo. Veja o exemplo abaixo: >> syms s >> EQ=s^3 +2*s^2 + 5*s + 10 EQ = s^3+2*s^2+5*s+10 >> pretty (EQ) % O comando pretty arruma a equao. 3 2

s + 2 s + 5 s + 10

74

CAPTULO 8 SISOTOOL

8.1 - O que e para que serve o SISOTOOL?

O SISOTOOL uma ferramenta para projeto e anlise de compensadores para sistemas de simples entradas e simples sadas (SISO - Simple-Input Simple-Output). possvel projetar compensadores interagindo graficamente com o Lugar das Razes, Bode e Carta de Nichols de um sistema de malha aberta. Para importar os dados da planta para dentro do SisoTool, selecione o item Import do File Menu. Por default, a configurao do sistema de controle

Figura 25 Onde C e F so compensadores ajustveis.

SISOTOOL(G) especifica o modelo de planta G para ser utilizado na ferramenta SISO, onde G qualquer modelo linear criado como TF, ZPK, ou SS. Este comando deve ser digitado na Command Window.

75

8.2 - Ambientes

O SISOTOOL possui dois ambientes:

Figura 26

Este ambiente mostrado na Figura 26 o Control and Estimation Tools Manager (Gerente de Ferramentas de Estimao e Controle). No SISO Design Task, opes para o projeto so apresentadas como:

Architecture: Pode-se configurar a arquitetura do sistema, modificando nomes dos blocos, configurao de malha (Loop), mudar parmetros do projeto e etc. 76

Compensator Editor: Permite a construo do compensador desejado atravs da adio de plos e zeros. O compensador chamado de C. Para adicionar plos e zeros, basta clicar com o boto direito do mouse no quadrado logo abaixo da palavra Dynamics, aparecendo a opo Add Pole/Zero.

Graphical Tuning: Essa opo permite que o usurio monte o seu SISO Design for SISO Design Task personalizado, onde grficos de rlocus, bode, nichols so plotados de acordo com a escolha do usurio. Depois de selecionadas as opes desejadas, basta clicar em Show Design Plot para vizualizar os grficos.

Analysis Plots: Podem-se visualizar com essa ferramenta vrios tipos de respostas diferentes apenas selecionando a opo desejada de resposta. Onde est escrito Plot 1, Plot 2, ..., Plot 6, so escolhidas os tipos de entradas, como step(degrau), impulse (impulso unitrio), e os tipos de anlises, como Pole/Zero, Bode, Nichols, Nyquist. Aps escolhidas as opes desejadas, deve-se selecionar qual tipo de resposta o usurio deseja adquirir como em malha fechada, malha aberta, no controlador C, no pr-filtro F e etc. Para visualizar os resultados basta marcar os quadrados desejados ou clicar em Show Analysis Plot.

77

Automated Tuning: O usurio pode usar a ferramenta Optimization-Based Tuning para criar fazer o projeto de um controlador inicial ou ajustar um controlador j projetado, ou seja, usando essa opo possvel ajustar automaticamente elementos de um compensador para satisfazer os requerimentos do projeto. Estes elementos so os Plos, Zeros e Ganhos do compensador. Alm deste mtodo, encontramos tambm o PID Tuning, Internal Model Control (IMC) Tuning, LQG Synthesis, Loop Shaping.

O outro ambiente, que funciona juntamente com o Control and Estimation Tool Manager, o SISO Design for SISO Design Task , que permite o usurio visualizar o Root Lcus, o diagrama de Bode e Cartas de Nichols da planta desejada e tambm alterar estes grficos adicionando ou removendo Plos, Zeros , Plos Duplos, Zeros Duplos de forma dinmica e instantnea. A Figura 27 mostra este segundo ambiente:

78

Figura 27

8.3 - Projeto de um Controlador PID para Plantas Estveis.

Quando se tem um sistema que se deseja projetar um controlador do tipo PID, a estabilidade da planta um fator importante quando falamos de SISOTOOL. Para verificar a estabilidade da planta basta plotar o lugar das razes e visualizar se os plos e os zeros esto localizados no semiplano esquerdo do plano cartesiano. Confirmada a estabilidade da planta do sistema em questo, o SISOTOOL tem uma opo que consegue projetar um controlador PID que oferece ao sistema uma resposta muito boa.

79

Exemplo: >> num=[1]; >> den=[1 1 1]; >> G=tf(num,den) Transfer function: 1 ----------s^2 + s + 1

Verificando sua estabilidade: >> rlocus(G)

A Figura 28 apresenta o Root Locus da planta G:

Figura 28

80

Podemos observar que o Lugar das Razes est situado no semi-plano esquerdo, confirmando sua estabilidade. Desta forma, o SISOTOOL dispe de um mtodo de projeto chamado Internal Model Control (IMC) Tuning, que possibilita o projeto de um controlador timo. Projetando o controlador, no MATLAB digite: >> sisotool(G)

V em Control e Estimation Tool Manager/ Automated Tuning. A janela dever conter os itens mostrados na Figura 29:

Figura 29

81

1. 2.

Na opo Design method, escolha o mtodo PID Tuning. Na opo Tuning algorithm, selecione a opo Internal Model Control

(IMC) Tuning. 3. Clique em Update Compensador para projetar o compensador

referente a planta escolhida.

Depois de projetado, a funo de transferncia do compensador aparecer no campo destacado na Figura 30:

Figura 30

82

Aps projetar o controlador, deve-se analisar o seu comportamento em malha fechada na barra Analysis Plots para certificar-se de que as especificaes do projeto foram satisfeitas. A Figura 31 destaca os campos desejados:

Figura 31 Clicando no boto Show Analysis Plot, o grfico mostrado na Figura 32 ser mostrado:

Figura 32 83

8.4 - Projeto de Compensadores para Plantas Instveis.

Quando a planta apresenta caractersticas de instabilidade, ou seja, o lugar das razes ou parte dele se situa no semi-plano direito do plano, no possvel projetar um compensador usando o mtodo Internal Model Control (IMC) Tuning. Neste caso, o prprio usurio ter que construir o controlador desejado, adicionando Plos e Zeros, e o SISOTOOL testar valores para que as especificaes desejadas sejam atendidas.

Exemplo: >> num=[1]; >> den=[1 -10 -20]; >> G=tf(num,den)

Transfer function: 1 --------------s^2 - 10 s - 20 >> rlocus(G)

84

A Figura 33 apresenta o grfico do Lugar das razes de da planta G:

Root Locus 8

2
Imaginary Axis

-2

-4

-6

-8 -4

-2

10

12

14

Real Axis

Figura 33

De acordo com o grfico do Lugar das Razes, A planta G(S) apresenta caractersticas de Instabilidade. Sendo assim, vamos projetar um controlador para esta planta. No MATLAB: >> sisotool(G)

V na janela Control and Estimation Tool Manager/ Automated Tuning, cujo layout pode ser visualizado na Figura 34:

85

Figura 34

Em Design method escolha a opo Optimization Based Tuning e depois clique em Optimize Compensators... Abrir uma aba chamada de Response Optimization, que consiste basicamente em trs passos: Passo 1: Selecionar o compensador que se deseja otimizar e selecionar as especificaes do projeto.

Passo 2: Selecionar as opes de otimizao e comear a otimizao.

Passo 3: Visualizar os resultados. 86

A Figura 35 mostra o layout desejado:

Figura 35 Passo 1:

Para selecionar o Compensador a ser projetado, v em Compensator Editor e adicione os Plos e Zeros do Compensador. A Figura 36 indica o layout desejado:

87

Figura 36

Para selecionar as especificaes do projeto, v para Response Optimization/Design Requirements/Add new design requirement. Estes campos esto destacados na Figura 37:

88

Figura 37

Abrir a janela mostrada na Figura 38 no qual o usurio entrar com as especificaes do projeto (Design requirement type), como tempo de acomodao (Setting time), mximo sobre sinal (Overshoot), limites para resposta em degrau e etc.

Figura 38

89

Deve-se selecionar o compensador. Veja a Figura 39 para fazer corretamente :

Figura 39

90

Passo 2:

Verificar Optimization options. Verifique o layout e os campos destacados na Figura 40:

Figura 40

91

Aparecer uma janela como na Figura 41, onde opes de nmeros de interaes, algoritmo, tipo de gradiente dentre outras podero ser configuradas:

Figura 41

Clicar em Start Optimization na aba Optimization (Figura 40) para analisar os resultados.

Passo 3:

Como o compensador que possui apenas um ganho, o melhor resultado encontrado pode ser visualizado na Figura 42:

92

Figura 42

O que se deve fazer agora alterar o compensador adicionando plos e zeros para tentar melhorar a resposta. Neste caso, adicionaremos um Zero no compensador e fazer novamente a otimizao para ver se os resultados conseguiram ser alcanados. A Figura 43 apresenta a resposta:

93

Figura 43

Depois de calculada, a nova funo de transferncia do compensador

C(s)=285.7*(1 + 4.3e+002s) 1

Concluso: Computacionalmente, foi possvel a obteno de uma resposta perfeita para esta planta G(S). Porm, a implementao e construo de um controlador deste tipo poderia ser muito cara, inviabilizando o projeto. O que se deve fazer ajustar as especificaes do projeto para que a resposta no seja to exigente, to perfeita, fazendo com que se obtenham valores que seja possvel utilizar em compensadores reais ou se possvel, j existentes. 94

CAPTULO 9 MATLAB PARA CONTROLE DIGITAL

Neste captulo as anlises das funes de transferncias sero feitas com a Transformada Z. A Transformada Z, de grande importncia na anlise de sinais digitais, se aplica para sinais discretos tais como aqueles advindos da converso analgicodigital. A Transformada Z utilizada no projeto de filtros e sistemas de controle digitais. Sero feitos projetos de controladores digitais e anlises de desempenho com os sinais digitais. Os controladores utilizados sero do tipo PI, PD e PID. Mas antes teremos uma breve introduo.

9.1 - Comandos introdutrios

As funes de transferncia que antes eram utilizadas em S (sinais contnuos) devem ser convertidas para o domnio Z (sinais discretos). Exemplo: >>num=[1]; >>den=[1 1 1]; >>Gps=tf(num,den) Transfer function: 1 ----------s^2 + s + 1 >>rlocus (Gps) 95

A Figura 44 apresenta o lugar das razes da planta Gps:

Root Locus 4

1
Imaginary Axis

-1

-2

-3

-4 -0.9

-0.8

-0.7

-0.6

-0.5

-0.4 Real Axis

-0.3

-0.2

-0.1

0.1

Figura 44

O comando que deve ser utilizado o c2d (Gps,T,zoh), onde Gps a F.T. em S, T o perodo de amostragem e zoh (para ver as outras opes, basta digitar help c2d e mais detalhes sero mostrados) o hold de ordem zero na entrada. Ento: >> T=0.1; >> Gpd=c2d(Gps,T,'zoh') Transfer function: 0.004833 z + 0.004675 ---------------------z^2 - 1.895 z + 0.9048 Sampling time: 0.1 >>rlocus (Gpd)

96

A Figura 45 apresenta o grfico de lugar das razes da planta Gpd:

Root Locus 2.5 2 1.5 1


Imaginary Axis

0.5 0 -0.5 -1 -1.5 -2 -2.5 -6

-5

-4

-3

-2 Real Axis

-1

Figura 45

Pode-se observar que o rlocus a F.T contnua e a F.T. discreta possuem grficos totalmente diferentes. Agora, vamos aplicar entradas do tipo degrau unitrio e impulso unitrio nos dois casos e analisar a resposta. Na F.T. contnua: >>step(Gps)

Na Figura 46, apresentada a resposta da planta Gps a uma entrada em degrau:

97

Step Response 1.4

1.2

Amplitude

0.8

0.6

0.4

0.2

6 Time (sec)

10

12

Figura 46

>>impulse(Gps)

Na Figura 47, apresentada a resposta da planta Gps a uma entrada em impulso:

Impulse Response 0.6

0.5

0.4

Amplitude

0.3

0.2

0.1

-0.1

6 Time (sec)

10

12

Figura 47

98

Agora vamos analisar a resposta para a planta discreta, com tempo de amostragem de 1 seg. e com hold de ordem zero na entrada: >>T=1; >>Gpd=c2d(Gps,T,zoh); >>step(Gpd)

Na Figura 48, apresentada a resposta da planta Gpd a uma entrada em Degrau:

Step Response 1.4

1.2

Amplitude

0.8

0.6

0.4

0.2

10 Time (sec)

12

14

16

18

20

Figura 48 >>impulse(Gpd)

99

Na Figura 49, apresentada a resposta da planta Gpd a uma entrada em impulso:

Impulse Response 0.6

0.5

0.4

Amplitude

0.3

0.2

0.1

-0.1

10 Time (sec)

15

20

25

Figura 49

Podemos observar claramente no grfico o perodo de amostragem de 1. Quanto menor for o perodo de amostragem, mais prximo ser da resposta no domnio contnuo.

9.2 - Projeto de um controlador PD discreto

O projeto de um controlador PD discreto ser detalhado a seguir. Devero ser atribudas ao projeto as especificaes desejadas, a funo de transferncia da planta e ento uma anlise dos resultados ser feita. % Estes comandos tm por finalidade posicionar os plos complexos conjugados no sistema de malha fechada no plano z, utilizando um controlador do tipo PD, tendo 100

como requisitos de projeto o valor de zeta (coeficiente de amortecimento) e o nmero de amostras por oscilaes amortecidas do sistema para um dado perodo de amostragem T. % OBS.: O smbolo # significa que os dados foram inseridos manualmente.

%Definindo as variveis de projeto.

zeta=0.5; %# Coeficiente de amortecimento do sistema especificado. T=0.1; Wn=4; %# Perodo de amostragem especificado. %# Freqncia natural amortecida especificada.

Wd=Wn*sqrt(1-zeta^2); % Freqncia natural no amortecida do sistema. ang=T*Wd; z.. mod=exp(-T*zeta*Wn); plano z. % Mdulo do plo complexo conjugado na parte superior do % ngulo do plo complexo conjugado na parte superior do plano

% Definindo a posio desejada para os plos complexos conjugados.

re=mod*cos(ang); % Determina a poro real do plo complexo conjugado na parte superior do plano z. im=mod*sin(ang); % Determina a poro imaginaria do plo complexo conjugado na parte superior do plano z. disp('Posio desejada para o plo complexo conjugado na parte superior do plano z')

101

P=complex(re,im) superior do plano z.

% Posio desejada para o plo complexo conjugado na parte

% Definindo o os zeros e os plos do sistema no compensado em malha aberta no plano z.

num=[1]; %# numerador da FT da planta em s. Este valor pode variar de projeto para projeto. den=[1 0 0]; %# denominador da FT da planta em s. Este valor pode variar de projeto para projeto. Gp=tf(num,den); % FT da planta em s. disp('FT da planta digitalizada precedida de zoh') Gpd=c2d(Gp,T,'zoh') % FT da planta digitalizada (em z).

% Determinao dos plos e zeros do sistema digitalizado em malha aberta.

rlocus(Gpd)

% Plos e zeros observados no rlocus de Gpd:p1(a1,0),p2(a2,0) e z1(b1,0). % Determinando a deficincia angular.

a1=1; %# Poro real de p1. a2=1; %# Poro real de p2. b1=-1; %# Poro real de z1.

102

cp1=complex(re-a1,im); % Representao da contribuio angular de p1. cp2=complex(re-a2,im); % Representao da contribuio angular de p2. cz1=complex(re-b1,im); % Representao da contribuio angular de z1. disp('deficincia angular com introduo dos plos complexos conjugados') pi-phase(cp1)-phase(cp2)+phase(cz1) % Deficincia angular.

% Definindo o zero do compensador.

for b=0:0.001:1; % Inicia o loop para definir o valor do zero do compensador. cz=complex(re-b,im); compensador. comp=pi-phase(cp1)-phase(cp2)+phase(cz1)+phase(cz);% sistema compensado. if 0<comp & comp<0.01; % Faixa de valores aceitveis para a deficincia angular. disp('O zero do compensador e a deficincia angular remanescente Condio angular do % Representao da contribuio angular do zero do

respectivamente') [b;comp] % Mostra o zero do compensador e a deficincia angular remanescente. break; % Interrompe o loop. end end

% Obtendo a FT do sistema compensado em malha aberta sem ganho.

103

numc=[1 -b]; % Numerador do compensador PD discreto. denc=[1]; % Denominador do compensador PD discreto.

Gcd=tf(numc,denc,T); % FT do controlador PD digital sem ganho.

% Obtendo a FT do sistema compensado em malha aberta para o calculo do ganho.

disp('FT do sistema compensado em malha aberta sem ganho') GcdGpd=tf(Gcd*Gpd) % FT do sistema compensado em malha aberta sem ganho.

% Calculo do ganho K.

k=abs((P^2-2*P+1)/(0.005*P^2+0.001645*P-0.00355)); disp('FT do controlador digital') tf(k*Gcd) disp('FT do sistema compensado em malha fechada') GcdGpd_f=feedback(k*GcdGpd,1) % FT do sistema compensado em malha fechada.

Ws=2*pi/T; % Freqncia de amostragem. disp('Numero de amostras por ciclo de oscilao amortecida') na=Ws/Wd % Nmero de amostras por ciclo de oscilao amortecida.

% Verificao dos resultados.

104

figure(2) rlocus(GcdGpd_f) zgrid axis('square') figure(3) step(GcdGpd_f)

O grfico da planta compensada apresentado na Figura 50:

Step Response 1.4

1.2

Amplitude

0.8

0.6

0.4

0.2

0.5

1.5 Time (sec)

2.5

3.5

Figura 50

Deve-se observar se todas as especificaes do projeto foram alcanadas. Estes comandos acima podem ser copiados para um arquivo .m ou para a Command Window.

105

9.3 - Projeto de um controlador PI discreto

O projeto de um controlador PI discreto ser detalhado a seguir. Dever ser atribudo ao projeto as especificaes desejadas, a funo de transferncia da planta e ento uma anlise dos resultados ser feita. % Estes comandos tm por finalidade posicionar os plos complexos conjugados no sistema de malha fechada no plano z, utilizando um controlador do tipo PI, tendo como requisitos de projeto o valor de zeta (coeficiente de amortecimento) e a freqncia natural do sistema para um dado perodo de amostragem T. % OBS.: O smbolo # significa que os dados foram inseridos manualmente.

%Definindo as variveis de projeto.

zeta=0.5; %# Coeficiente de amortecimento do sistema. T=5; na=10; %# Perodo de amostragem. %# Nmero de amostras por ciclo de oscilao amortecida.

Ws=2*pi/T; % Freq. de amostragem. Wd=Ws/na; % Freqncia natural no amortecida do sistema. Wn=Wd/sqrt(1-zeta^2); % Freqncia natural do sistema. ang=T*Wd; % ngulo do plo complexo conjugado na parte superior do plano z. mod=exp(-T*zeta*Wn); plano z. % Mdulo do plo complexo conjugado na parte superior do

106

% Definindo a posio desejada para os plos complexos conjugados.

re=mod*cos(ang); % Determina a poro real do plo complexo conjugado na parte superior do plano z. im=mod*sin(ang); % Determina a poro imaginaria do plo complexo conjugado na parte superior do plano z. disp('Posio desejada para o plo complexo conjugado na parte superior do plano z') P=complex(re,im) superior do plano z. % Posio desejada para o plo complexo conjugado na parte

% Definindo o os zeros e os plos do sistema no compensado em malha aberta no plano z.

num=[1]; %# numerador da FT da planta em s. Este valor pode variar de projeto para projeto. den=[1 0.4]; %# denominador da FT da planta em s. Este valor pode variar de projeto para projeto. Gp=tf(num,den,inputdelay,5); % FT da planta em s com tempo morto. disp('FT da planta digitalizada precedida de zoh') Gpd=c2d(Gp,T,'zoh') % FT da planta digitalizada (em z).

% Determinao dos plos e zeros do sistema digitalizado em malha aberta. rlocus(Gpd)

107

% Plos e zeros observados no rlocus de Gpd:p1(a1,0),p2(a2,0) e z1(b1,0). % Determinando a deficincia angular.

a=1; %# Poro real do plo do compensador. a1=0; %# Poro real de p1. a2=0.135; %# Poro real de p2. cp=complex(re-a,im); % Representao da contribuio angular do plo do compensador. cp1=complex(re-a1,im); % Representao da contribuio angular de p1. cp2=complex(re-a2,im); % Representao da contribuio angular de p2. disp('deficiencia angular com introduo dos plos complexos conjugados mais o plo do compensador') pi-phase(cp1)-phase(cp2)-phase(cp) % Deficincia angular.

% Definindo o zero do compensador.

for b=0:0.001:1; % Inicia o loop para definir o valor do zero do compensador. cz=complex(re-b,im); % Representao da contribuio angular do zero do compensador. comp=pi-phase(cp1)-phase(cp2)-phase(cp)+phase(cz); % Condio angular do sistema compensado. if 0<=comp & comp<=0.1; % Faixa de valores aceitveis para a deficincia angular.

108

disp('O zero do compensador e a deficincia angular remanescente respectivamente') [b;comp] % Mostra o zero do compensador e a deficincia angular remanescente. break; % Interrompe o loop. end end

% Obtendo a FT do sistema compensado em malha aberta sem ganho.

numc=[1 -b]; % Numerador do compensador PI. denc=[1 -1]; % Denominador do compensador PI. Gcd=tf(numc,denc,T); % FT do controlador PI digital sem ganho.

% Obtendo a FT do sistema compensado em malha aberta para o calculo do ganho.

disp('FT do sistema compensado em malha aberta sem ganho') GcdGpd=tf(Gcd*Gpd) % FT do sistema compensado em malha aberta sem ganho.

% Calculo do ganho K.

k=abs((P^3-1.135*P^2+0.1353*P)/(2.162*P-0.0281)); %# Obtido da observao de GcdGpd. disp('FT do controlador com o ganho do sistema compensado')

109

tf(k*Gcd) % FT de malha fechada.

disp('FT do sistema compensado em malha fechada') GcdGpd_f=feedback(k*GcdGpd,1) % FT do sistema compensado em malha fechada.

% Verificao dos resultados.

figure(2) rlocus(GcdGpd_f) zgrid axis('square') figure(3) step(GcdGpd_f)

110

A resposta ao degrau unitrio para o sistema compensado apresentado na Figura 51:

Step Response 1.4

1.2

Amplitude

0.8

0.6

0.4

0.2

20

40

60 Time (sec)

80

100

120

Figura 51

Neste projeto podemos observar que o sistema compensado demora bastante para acomodar, porm isto no foi especificado. Portanto, quando projetamos um sistema de controle todas as especificaes devem ser atendidas.

9.4 - Projeto de um controlador PID discreto

Para projetarmos um controlador PID discreto, devemos ficar atento a mudana da funo de transferncia do controlador, da funo de transferncia da planta e das especificaes.

111

% Estes comandos tm por finalidade posicionar os plos complexos conjugados no sistema de malha fechada no plano z, utilizando um controlador do tipo PID, tendo como requisitos de projeto o valor de zeta (coeficiente de amortecimento) e o nmero de amostras por oscilaes amortecidas do sistema para um dado perodo de amostragem T. % OBS.: O smbolo # significa que os dados foram inseridos manualmente.

%Definindo as variveis de projeto.

zeta=0.5; T=0.2; na=8; Ws=2*pi/T;

%# Coeficiente de amortecimento do sistema. %# Perodo de amostragem. %# Nmero de amostras por ciclo de oscilao amortecida. % Freq. de amostragem.

Wd=Ws/na; % Frequncia natural no amortecida do sistema. Wn=Wd/sqrt(1-zeta^2); % Frequncia natural do sistema. ang=T*Wd; % ngulo do plo complexo conjugado na parte superior do plano z. % Mdulo do plo complexo conjugado na parte superior do

mod=exp(-T*zeta*Wn); plano z.

% Definindo a posio desejada para os plos complexos conjugados.

re=mod*cos(ang);

% Determina a poro real do plo complexo conjugado na

parte superior do plano z.

112

im=mod*sin(ang);

% Determina a poro imaginria do plo complexo conjugado

na parte superior do plano z. disp('Posio desejada para o plo complexo conjugado na parte superior do plano z') P=complex(re,im) % Posio desejada para o plo complexo conjugado na parte superior do plano z.

% Definindo os zeros e os plos do sistema no compensado em malha aberta no plano z.

nump=[10]; % # Numerador da planta. denp=conv([1 1],[1 5]); % # Denominador da planta. Gp=tf(nump,denp); % FT da planta em s. disp('Funo de transferncia da planta digitalizada precedida de zoh') Gpd=c2d(Gp,0.2,'zoh') % FT da planta digitalizada.

% Determinao dos plos e zeros do sistema digitalizado em malha aberta. rlocus(Gpd)

% Plos e zeros observados no rlocus de Gpd:p1(a1,0),p2(a2,0) e z1(b1,0). % Determinando a deficincia angular.

a=1; %# Poro real do plo do compensador. a1=0.819; %# Poro real de p1.

113

a2=0.368; %# Poro real de p2. b1=-0.671; cp=complex(re-a,im); % Representao da contribuio angular do plo do compensador. cp1=complex(re-a1,im); % Representao da contribuio angular de p1. cp2=complex(re-a2,im); % Representao da contribuio angular de p2. cz1=complex(re-b1,im); disp('deficincia angular com introduo dos plos complexos conjugados mais o plo do compensador') pi-phase(cp1)-phase(cp2)-phase(cp)+phase(cz1) % Deficincia angular.

% Definindo o zero do compensador.

for b=0:0.001:1; % Inicia o loop para definir o valor do zero do compensador. cz=complex(re-b,im); % Representao da contribuio angular do zero do compensador. comp=pi-phase(cp1)-phase(cp2)-phase(cp)+phase(cz1)+2*phase(cz); % Condio angular do sistema compensado. if 0<=comp & comp<=0.1; % Faixa de valores aceitveis para a deficincia angular. disp('O zero do compensador e a deficincia angular remanescente respectivamente') [b;comp] % Mostra o zero do compensador e a deficincia angular remanescente. break; % Interrompe o loop.

114

end end

% Obtendo a FT do sistema compensado em malha aberta sem ganho.

numc=conv([1 -b],[1 -b]); % Numerador do compensador PID discreto. denc=[1 -1]; % Denominador do compensador PID discreto. Gcd=tf(numc,denc,T);% FT do controlador PID discreto sem ganho.

% Obtendo a FT do sistema compensado em malha aberta para o calculo do ganho.

disp('FT do sistema compensado em malha aberta sem ganho') GcdGpd=tf(Gcd*Gpd) % FT do sistema compensado em malha aberta sem ganho.

% Calculo do ganho K.

k=abs((P^3-2.187*P^2+1.488*P-0.3012)/(0.1371*P^3+0.004029*P^20.04497*P+0.009485)) %# Obtido da observao de GcdGpd. disp('FT do controlador com o ganho do sistema compensado') tf(k*Gcd)

% Ft de malha fechada.

115

disp('FT do sistema compensado em malha fechada') GcdGpd_f=feedback(k*GcdGpd,1) % FT do sistema compensado em malha fechada. % Verificao dos resultados.

figure(2) rlocus(GcdGpd_f) zgrid axis('square') figure(3) step(GcdGpd_f)

A resposta ao degrau unitrio para o sistema compensado apresentado na Figura 52:

Step Response 1.3 1.2 1.1 1


Amplitude

0.9 0.8 0.7 0.6 0.5 0.4

0.5

1.5

2 Time (sec)

2.5

3.5

Figura 52

116

CAPTULO 10 MATLAB PARA CONTROLE AVANADO

Neste captulo aprenderemos a fazer a fazer o treinamento de redes neurais artificiais. As redes neurais artificiais podem ser aplicadas para resolver uma grande quantidade de problemas. Exemplos:

Anlise e processamento de sinais; Controle de processos; Robtica; Classificao de dados; Reconhecimento de padres em linhas de montagem; Filtros contra rudos eletrnicos; Anlise de imagens; Anlise de voz; Avaliao de crdito; Anlise de aroma e odor - um projeto que est em desenvolvimento, buscando a anlise de odor via nariz eletrnico;

As principais aplicaes das R.N.A`s em nosso curso so feitas para identificao de sistemas, ou seja, utilizar dados j conhecidos e utiliz-los na rede artificial para que ela consiga representar o comportamento do sistema em questo. Vejamos alguns casos.

117

10.1 - Modelagem de portas lgicas

Portas lgicas como AND, OR podem ser modeladas utilizando algoritmo de treinamento perceptron. Porm este algoritmo, por ser limitado, no possui a capacidade de modelar, por exemplo, a porta lgica XOR.

Vamos modelar a lgica AND, cuja lgica de funcionamento apresentada na Tabela 7 :

A 0 1 0 1

B 0 0 1 1

A AND B 0 0 0 1

Tabela 7

No MATLAB, vamos atribuir os valores A e B como entrada x do nosso modelo e vamos atribuir o valor de A AND B como sada desejada t:

>> x=[0 0;1 0;0 1;1 1]; ou na horizontal.

% Os valores devem estar dispostos em forma de linha

>> t=[0 0 0 1]; % Deve ser assim pois o tempo (s) est implcito nas variveis. Portanto, no instante 1 os valores x e t no instante 1 so processados.

118

Para treinar uma rede, devemos seguir os seguintes passos:

1. Digitar o comando nntool no MATLAB. 2. Adicionar as variveis: x deve ser adicionada como input e t deve ser adicionada como target. 3. Criar e configurar uma rede (network). 4. Abrir a rede e inicializar os pesos na aba reinitialize weights. 5. Na aba train, verificar os parmetros de treinamento e treinar a rede, clicando em train network.

Com esses passos, vamos treinar a nossa rede para representar o comportamento de uma porta lgica AND. Digitando o comando nntool no MATLAB, a janela mostrada na Figura 53 ir aparecer:

Figura 53 119

Para executar o passo 2, clique em Import... A janela apresentada na Figura 54 ser mostrada. Clique em cima da varivel x e selecione a opo input. Clique em Import. Em seguida, clique em cima da varivel t e selecione a opo target.Clique em Import novamente. Pronto, as variveis foram importadas para serem usadas no nntool.

Figura 54

No terceiro passo, deve-se atribuir um nome rede, definir o algoritmo de treinamento, selecionar o range das entradas, definir o nmero de camadas e as propriedades das mesmas, ou seja, nmero de neurnios e funo de ativao de cada camada. Feito isto, clique em Create para criar a nova rede. A janela mostrada na Figura 55 aparecer na tela:

120

Figura 55

Neste caso, um algoritmo de treinamento perceptron seria suficiente para treinar esta rede. Porm, como o mesmo possui algumas limitaes, vamos utilizar um algoritmo de treinamento Feed-forward backpropagation bsico com 1 neurnio na camada oculta (funo de ativao logsig) e 1 neurnio na camada de sada (funo de ativao purelin).

Agora, vamos selecionar a rede AND e clicar em Open... Uma nova janela ir aparecer. V na aba Reinilialize Weights e clique em Initialize Weights para inicializar os pesos, veja a Figura 56. Agora v aba Train/Train Info e selecione os dados de entrada e sada, como na Figura 57. Em Train/Train Parameters pode-se fazer algumas opes quanto ao treinamento, veja a Figura 58. Por Fim, clique no boto Train Network para treinar a rede.

121

Figura 56

Figura 57

Figura 58

122

No momento em que a rede est sendo treinada, um grfico de desempenho mostrado para o usurio verificar se o treinamento foi feito com xito.

Para verificar se o resultado do treinamento foi satisfatrio, podemos exportar para a Command Window a varivel criada AND_outputs, que contm os valores obtidos do treinamento ou a sada da rede. Veja a Figura 59 para clique nos campos selecionados:

Figura 59

123

A Figura 60 apresenta a janela que ir aparecer:

Figura 60

Aps selecionar AND_outputs e clicar em Export, podemos comparar o valor desejado em t e o valor obtido em AND_outputs. Vamos digitar o seguinte na Command Window:

>> plot(t,'o') % Os valores contidos em t sero mostrados em forma de `o`.

>> hold on % Mantm o grfico.

>> plot(AND_outputs,'+r') % Os valores contidos em AND_outputs sero mostrados em vermelho e em forma de `+`.

124

A Figura 61 apresenta o grfico contendo os valores em t e os valores em AND_outputs:

Figura 61

Podemos observar na Figura 61 que o erro entre a sada desejada e a sada obtida foi nulo, ou seja, a nossa rede conseguiu representar exatamente o comportamento da porta AND.

125

10.2 - Modelagem de funes matemticas

A funo matemtica escolhida foi a Funo Senoidal. No MATLAB digite:

>> x=0:pi/8:8*pi; >> t=sin(x); >> plot(t) >> hold on

O grfico gerado apresentado na Figura 62:

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

20

30

40

50

60

70

Figura 62

126

Utilizando a ferramenta nntool, vamos criar e treinar uma R.N.A. para que modele o comportamento desta funo senoidal, cujo nome ser sin. Foi criada uma R.N.A. multicamadas e utiliza o algoritmo de treinamento feed-forward

backpropagation. As camadas intermedirias utilizam a funo logaritmo sigmide e a camada de sada utiliza uma funo puramente linear. A princpio foram utilizados trs neurnios na camada intermediria, porm a R.N.A. no conseguiu representar o comportamento da funo senoidal. Para resolver este problema, a camada intermediria foi acrescida de dois neurnios. Com isto, a rede conseguiu alcanar seu objetivo principal.

Resultados e Concluses

Aps ter seguido os passos abordados no item anterior, conseguimos uma resposta ideal. Vamos plotar o grfico: >> plot(t) >> hold on >> plot(sin_outputs,'or')

127

Aps o treinamento da rede, a grfico gerado dos valores em t e os valores em sin_outputs so mostrados na Figura 63:

Figura 63

A principal lio que se pde tirar dessa atividade foi que a rede no convergiu com trs neurnios na camada intermediria, mas com cinco neurnios na camada intermediria o resultado foi satisfatrio. O fato de aumentar o nmero de neurnio e a rede funcionar no quer dizer que sempre que aumentarmos o nmero de neurnios o resultado ir ser satisfatrio. Outra observao importante a quantidade de dados na entrada `x`. Com uma quantidade pequena de dados, uma rede com 3 neurnios na camada intermediria pode ser mais do que suficiente para se obter bons resultados. J com uma quantidade considervel de dados ou muitos dados (como no nosso caso), 3 neurnios foi pouco. Portanto, pode-se dizer que a quantidade de neurnios na camada intermediria depende da quantidade de dados em `x`.

128

Vamos agora treinar uma R.N.A para modelar uma funo matemtica quadrtica, cuja funo de transferncia F(x)=x^2. Na Command Window digite:

>> x=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]; >> t=x.^2; >> plot(t)

A Figura 64 apresenta o grfico contendo a funo t:

400 350 300 250 200 150 100 50 0

10

15

20

25

Figura 64

Utilizando a ferramenta nntool, vamos criar e treinar uma R.N.A. para que modele o comportamento desta funo quadrtica, cujo nome ser quad. Foi criada uma R.N.A. multicamadas e utiliza o algoritmo de treinamento feed-forward backpropagation. A camada intermediria possui 3 neurnios e utiliza a funo

129

logaritmo sigmide e a camada de sada possui 1 neurnio utiliza uma funo puramente linear.

Executando os procedimentos ensinados no item 10.1, podemos treinar esta rede e exportar os resultados para o Workspace. Aps o treinamento da rede quad, digite na Command Window:

>> plot(t) >> hold on >> plot(quad_outputs,'r') A Figura 65 apresenta o grfico contento os valores em t e os valores em quad_outputs:

Figura 65

Podemos observar que a R.N.A. quad conseguiu representar o comportamento da funo quadrtica x^2.

130

10.3 - Modelagem de processos industriais utilizando dados reais.

Nesta atividade iremos utilizar dados de simulao de um processo de neutralizao de pH em um volume constante de um tanque de agitao. Estes dados foram adiquiridos no site . O site Daisy disponibiliza base de dados de variados tipos de sistemas reais para identificao de sistemas. O principal objetivo desta tarefa treinar uma rede neural artificial para que represente o comportamento do processo de neutralizao de pH. Este processo composto por duas variveis de entradas e uma de sada:

Entradas:

u1 - Fluxo de soluo cida. u2 Fluxo de soluo bsica.

Sada y Mistura com pH ideal.

A primeira coisa a se fazer o tratamento dos dados adquiridos no site e disponibilizarmos de tal forma que possamos utilizar na rotina tecnologo1.m ( uma rotina que faz a normalizao, reduo da matriz de dados e processa as informaes), no MATLAB. Portanto, foi criado um arquivo .m chamado dados que possui 3 colunas: u1,u2 e y, respectivamente. A rotina tecnologo1.m teve de ser modificada para este 131

caso, ou seja, ao invs de tecnologo1.m utilizar os dados de padraodef2colunas.m (default) agora vai utilizar dados.m. Alm disso, sua estrutura foi parcialmente modificada para que processe duas variveis de entrada ao invs de uma. Aps as modificaes esta rotina recebeu o nome de tecnologo2.m para que no ocorram enganos. Nesta tarefa, faremos dois exemplos com diferentes redues na matriz de dados. Isso servir para fazermos algumas comparaes. Para termos idia, o grfico do sistema com todos os dados apresentado na Figura 66:

Figura 66

Exemplo 1: Na reduo da matriz de dados, i=i+30; Onde 30 o intervalo das amostras. No MATLAB digite: >> plot(Y)

132

A sada desejada pode ser visualizada na Figura 67:

Figura 67 - Sada Y para amostras de 30 em 30.

No MATLAB, utilizei o comando nntool para criar e treinar uma R.N.A. multicamadas e algoritmo de treinamento feed-forward backpropagation. A princpio tentei treinar a rede com trs e cinco neurnios na camada oculta e os resultados no convergiram, mas a medida que eu aumentei o nmero de neurnios os resultados apresentaram algumas melhoras. Ento, projetei duas redes chamadas de a e b. A rede neural a possui oito neurnios na camada oculta e a rede neural b possui dez. Lembrando que a camada oculta utiliza a funo de ativao logaritmo sigmide e a camada de sada utiliza a funo de ativao puramente linear. Os resultados para as redes a e b podem ser visualizados, respectivamente, nas Figuras 68 e 69:

133

Figura 68 Resultado para uma rede com 8 neurnios.

Figura 69 Resultado para uma rede com 10 neurnios

O resultado da rede com oito neurnios pode ser considerado bom, pois os erros so relativamente pequenos, porm a rede com dez neurnios apresentou um erro nulo, conseguindo representar exatamente o comportamento do sistema. importante lembrar que neste exemplo o sistema foi amostrado de 30 em 30. A 134

resposta real do sistema possui uma quantidade de dados muito maior do que este amostrado. O ideal encontrar um nmero de amostragem que preserve o mximo o comportamento do sistema. No exemplo 2, iremos treinar uma R.N.A. para uma reduo da matriz de dados num intervalo de 20 em 20, que aproxima um pouco mais da sada real.

Exemplo 2: Na reduo da matriz de dados, i=i+20; Onde 20 o intervalo das amostras. No MATLAB digite: >> plot(Y)

A sada desejada pode ser visualizada na Figura 70:

Figura 70 Sada Y para amostras de 20 em 20.

No nntool, foram criadas novamente as redes a com oito neurnios e b com dez neurnios. Podemos observar que a rede a no consegue mais representar to

135

bem o comportamento do sistema e a rede b pode se dizer que aceitvel. Mas estas anlises, tanto no exemplo 1 quanto no exemplo 2, dependem das especificaes de resposta do sistema. No posso afirmar que estas respostas servem ou no. Os resultados das redes a e b so mostrados, respectivamente, nas Figuras 71 e 72:

Figura 71 Resultado da rede a.

Figura 72 Resultado para a rede b. 136

O resultado da R.N.A. b muito bom, mas para dar fim a minha curiosidade eu fui aumentando o nmero de neurnios na camada oculta at que o erro fosse nulo. Este nmero de neurnios 15.

137

CAPTULO 11 - COMUNICAO ENTRE O MATLAB E SOFTWARES DE PLATAFORMA WINDOWS

O MATLAB fornece funes que permite o MATLAB acessar outras aplicaes ou serem acessadas por outras aplicaes Windows em uma grande variedade de contextos. Estas funes usam DDE (Troca Dinmica de Dados), que um protocolo de comunicao que permite aplicaes Microsoft Windows se comunicar umas com as outras atravs da troca de dados e tambm pode se comunicar com outras aplicaes utilizando o protocolo OPC (Controle de Processo Aberto), que uma tecnologia para conectar aplicaes Windows e equipamentos de controle de processos. O OPC um protocolo de comunicao aberto que permite um mtodo consistente de acesso aos dados de inmeros equipamentos dos mais diversos fabricantes. Basicamente, o padro OPC estabelece as regras para que sejam desenvolvidos sistemas com interfaces padres para comunicao dos dispositivos de campo (controladores, sensores, etc.) com sistemas de monitorao, superviso e gerenciamento (SCADA, MS, ERP, etc.). (Retirado de DUARTE, 2006). No MATLAB, existe uma ferramenta chamada opctool, que permite o usurio navegar graficamente pelo contedo de um servidor OPC, visualizando as propriedades do item servidor. Clientes, grupos e itens configurados utilizando a ferramenta opctool podem ser exportados para o workspace ou para uma M.file.

138

11.1 - Comunicao entre o MATLAB e o EXCEL utilizando protocolo de comunicao DDE.

Para que possamos fazer a comunicao entre o MATLAB e o EXCEL, precisamos necessariamente conhecer trs comandos. O comando: 1. ddeinit inicia a conversao do MATLAB com outras aplicaes. 2. ddereq solicita os dados da aplicao do servidor DDE. 3. ddepoke envia um dado do MATLAB para a aplicao do servidor DDE. Antes de explicar como estes comandos sero aplicados, criaremos um arquivo no Excel, cujo nome ser Tabela. Este arquivo pode ser salvo em qualquer diretrio do computador, porm aconselho que o mesmo seja salvo na pasta MATLAB. Como default, esse arquivo criado contm planilhas. A planilha1 ou Plan1 deve ser renomeada como Sheet (poderia ser qualquer coisa, at mesmo planilha1 ou plan1). Sheet ser o topico usado na comunicao DDE. Nessa Planilha, foram acrescentados dados referentes ao desempenho dos alunos do curso de engenharia no primeiro semestre de 2010. Estes dados so puramente fictcios e servem apenas para validar a nossa tentativa de comunicao das duas aplicaes (MATLAB e EXCEL). Veja a tabela apresentada na Figura 73:

139

Figura 73

Aps esta planilha ter sido criada e salva, vamos criar no MATLAB uma M.flie chamada Matlab_excel. A primeira coisa que se tem que fazer iniciar a comunicao entre os dois aplicativos utilizando o comando ddeinit. Em Matlab_excel escreva: channel = ddeinit('excel','Sheet') % Onde excel especifica o nome da aplicao e Sheet especifica o tpico da aplicao.

Caso a inicializao seja feita de uma forma correta, a varivel channel receber um valor real diferente de zero. Se no for, channel receber zero. Iniciada a comunicao, vamos solicitar alguns dados da planilha Sheet utilizando o comando ddereq. Os comandos em Matlab_excel agora so:

140

channel = ddeinit('excel','Sheet')

Nota_P1_Ana = ddereq(channel,'l4c2') % A varivel Nota_P1_Ana ir receber o valor armazenado na clula localizada na linha 4 e coluna 2 (B4) do Excel.

Notas_P1_todos = ddereq(channel,'l4c2:l12c2') % A varivel Notas_P1_todos ir receber os valores armazenados na clula localizada na linha 4 e coluna 2 (B4) at a clula localizada na linha 12 e coluna 2 (B12), ou seja, vai receber todos os valores de B4 at B12 do Excel.

Notas_P1_e_P2_todos = ddereq(channel,'l4c2:l12c3') % A varivel Notas_P1_e_P2 todos ir receber os valores armazenados na clula localizada na linha 4 e coluna 2 (B4) at a clula localizada na linha 12 e coluna 3 (C12), ou seja, vai receber todos os valores de B4 at C12 do Excel.

Estas variveis sero criadas no Workspace e na Command Window sero mostrados os valores armazenados nas mesmas:

channel = 4.7836e-299 Nota_P1_Ana = 8.6000

141

Notas_P1_todos = 8.6000 7.5000 4.6000 8.0000 9.5000 5.0000 7.9000 7.3000 6.3000 Notas_P1_e_P2_todos = 8.6000 7.5000 4.6000 8.0000 9.5000 5.0000 7.9000 7.3000 6.3000 4.5000 7.4000 8.5000 7.9000 9.2000 8.2000 4.6000 0 6.0000

Agora, caso deseje enviar dados do MATLAB para o EXCEL, demos utilizar o comando ddepoke. Vamos acrescentar mais alguns comandos ao arquivo Matlab_excel:

142

channel = ddeinit('excel','Sheet'); Notas_P1_Ana = ddereq(channel,'l4c2'); Notas_P1_todos = ddereq(channel,'l4c2:l12c2'); Notas_P1_e_P2_todos = ddereq(channel,'l4c2:l12c3');

Aluno_novo= 'Zander'; % A varivel Aluno_novo recebe o nome Zander. Nota_P1= 8.5; % A varivel Nota_P1 recebe o nmero real 8.5. Nota_P2= 6.5; % A varivel Nota_P2 recebe o nmero real 6.5.

Aluno_Zander= ddepoke(channel,'l13c1',Aluno_novo); % Utilizando o canal de comunicao channel, o comando ddepoke escreve a expresso contida na varivel Aluno_novo na clula localizada na linha 13 e coluna 1 (A13) do Excel.

Aluno_Zander_P1= ddepoke(channel,'l13c2',Nota_P1); % Utilizando o canal de comunicao channel, o comando ddepoke escreve o valor contido na varivel Aluno_Zander_P1 na clula localizada na linha 13 e coluna 2 (B13) do Excel.

Aluno_Zander_P2= ddepoke(channel,'l13c3',Nota_P2); % Utilizando o canal de comunicao channel, o comando ddepoke escreve o valor ou expresso contido(a) na varivel Aluno_Zander_P2 na clula localizada na linha 13 e coluna 3(C13) do Excel.

143

A Tabela se encontra agora da forma destacada na Figura 74:

Figura 74 Observao: A aplicao acima foi feita com EXCEL verso em portugus. Caso seu EXCEL seja verso em Ingls, ao invs de l1c1 ou l3c2:l12c2 voc deve utilizar r1c1 ou r3c2:r12c2.

11.2 - Comunicao entre o MATLAB e o INTOUCH utilizando protocolo de comunicao DDE

A integrao entre os sistemas MATLAB (simulao e controle) e InTouch (superviso do processo) ser realizada em um primeiro momento atravs de comandos DDE do MATLAB. Neste tipo de aplicao especfica o MATLAB funcionar como software cliente da comunicao e o InTouch como servidor. 144

Esta configurao faz-se necessria, pois o InTouch como software de superviso do processo recebe do mesmo os sinais das variveis controladas do processo e de forma anloga pode enviar sinais para as variveis manipuladas do sistema atuando nos elementos finais de controle. Para o estabelecimento inicial da conexo utilizando o protocolo DDE, faz-se necessrio utilizar o comando ddeinit no MATLAB, cuja sintaxe :

a=ddeinit (nome da aplicao, nome da sesso)

Onde a a varivel que armazena a resposta requisio por conexo (afirmativa ou negativa), nome da aplicao o nome da aplicao servidora e nome da sesso se refere sesso da aplicao servidora que ser acessada. Este comando retorna, caso a conexo seja estabelecida, um valor diferente de 0, que certifica que um canal virtual foi estabelecido entre as duas aplicaes. Um segundo comando ser executado para depois de estabelecida a conexo, trata-se do ddereq. Este comando solicita ao servidor o valor contido em uma dada varivel da sua sesso e retorna para a varivel que armazena dentro do MATLAB.

b=ddereq (canal, nome da varivel)

Onde b a varivel que armazena a resposta requisio por valor da varivel controlada, canal o nome da varivel que recebeu o retorno do pedido de conexo e

145

nome da varivel se refere varivel controlada que est sendo medida e disponibilizada no processo. Tendo lido o valor de uma varivel controlada atravs do comando ddereq, fazse necessrio tomar uma ao de controle que gera um valor numrico a ser alterado na aplicao servidora. Desta forma possvel a utilizao de um comando ddepoke que tem a funo de realizar esta alterao, uma vez estabelecida a comunicao atravs do ddeinit.

ddepoke (canal, nome da varivel, valor)

Onde o canal e o nome da varivel j foram esclarecidos anteriormente e o valor o valor que ser escrito na varivel manipulada na sesso da aplicao servidora. Com estes trs comandos bsicos possvel realizar o ciclo bsico de um sistema de controle no qual a funo dos sensores realizada pelo comando ddereq e a funo dos atuadores realizada pelo comando ddepoke. Na Figura 75 apresentada a tela com a seqncia de comandos executada no MATLAB, e respectivos resultados, para abertura de uma conexo, leitura do valor de uma varivel e escrita de um valor em uma varivel, adequados aos softwares envolvidos neste trabalho.

146

Figura 75 Observao: As informaes contidas neste item foram extradas da apostila Sistemas de Comunicao OPC para uma Coluna de Destilao Piloto, elaborada por Adelson S.C., Ronald C.S. e Dnis B.N.

11.3 - Comunicao entre o MATLAB e o SYSCON utilizando a ferramenta opctool

A mesma operao de conexo virtual realizada entre InTouch e MATLAB possvel atravs do protocolo de comunicao OPC. A diferena que as aplicaes envolvidas neste processo sero os softwares MATLAB, operando como cliente na comunicao e o SYSCON funcionando como servidor. Este software responsvel 147

pela configurao de redes Foundation Fieldbus e como tal se conecta aos dispositivos de campo atravs de uma rede de alta velocidade denominada HSE, que trabalha de acordo com o modelo TCP/IP, a DFI (dispositivo que comunica os instrumentos com o PC) possui uma interface de rede padro e um endereo IP. Basta que o IP da mquina que o SYSCON esteja instalado seja da mesma classe e rede que o da DFI para que se comuniquem. Os parmetros e valores dos instrumentos podem ento ser alterados on-line pelo SYSCON atravs de um servidor OPC que se conecta a DFI para aquisio dos dados da rede fieldbus. Aproveitando-se deste servidor OPC instalado e sendo executado no computador que supervisiona o processo, o MATLAB pode estabelecer uma conexo virtual direto com estes servidores, dispensando assim a presena do software de superviso InTouch. Isto possvel graas incorporao do toolbox OPC em verses mais recentes do MATLAB e sua interface grfica denominada opctool, que abre uma sesso de conexo via OPC ao detectar qualquer servidor OPC instalado e executado no computador onde o MATLAB est instalado. Na figura 76 apresentada a tela da ferramenta opctool do MATLAB. Nem sempre esta ferramenta est habilitada, portanto deve-se digitar opcregister e escrever Yes para instalar esta ferramenta.

148

Figura 76

Esta ferramenta trabalha com conceitos como: Hosts Computadores com servidores OPC instalados. OPC servers Servidor de comunicao via protocolo OPC, utilizado em equipamentos industriais. MATLAB OPC Clients Agentes clientes OPC que disponibilizaro os dados no ambiente do MATLAB. Group Conjunto de itens OPC. Item Varivel ou parmetro que ser lido ou escrito pelo MATLAB.

149

Na tela apresentada na Figura 77 est selecionada a opo de gerao de um arquivo do SIMULINK a partir da opo do menu na tela da ferramenta opctool. Tanto a seleo da opo write como na read um novo arquivo .mdl gerado, conforme Figura 78.

Figura 77

150

Figura 78

Os resultados desta aplicao circundam a implementao do sistema de comunicao proposto na coluna de destilao piloto do IFF-Campos. As caractersticas inerentes aos comandos necessrios, bem como a integrao da ferramenta opctool com o SIMULINK para a gerao do modelo de simulao j foram elucidadas acima. Cabe ento a apresentao do modelo de simulao utilizado e os grficos referentes aos sinais enviados e recebidos do processo pelo sistema de comunicao. Na Figura 79 apresentado o modelo de simulao comunicando com o sistema real via protocolo OPC.

151

Figura 79

Na figura 80 so apresentados os sinais registrados pelo sistema de comunicao OPC referente temperatura de topo.

Figura 80

Observao: As informaes contidas neste item foram extradas da apostila Sistemas de Comunicao OPC para uma Coluna de Destilao Piloto, elaborada por Adelson S.C., Ronald C.S. e Dnis B.N.

152

CAPTULO 12 ESTUDO DE CASO

Neste estudo de caso, iremos abordar um assunto muito utilizado em diversos tipos de engenharia, porm as abordagens e ferramentas utilizadas sero voltadas para aplicaes de engenharia de controle e automao industrial. O assunto : Velocidade de um Motor DC. Dentre as aplicaes e ferramentas abordadas, esto:

Modelagem matemtica e utilizao do MATLAB; Controle PID; Lugar das razes; Resposta em freqncia; Espao estado; Controle Digital;

Seguindo esta ordem, vamos comear fazendo uma anlise matemtica dos componentes, funcionamento e das variveis envolvidas para podermos modelar e em seguida vamos utilizar o MATLAB para analisar a resposta do sistema modelado. As informaes contidas neste estudo de caso foram extradas do site: http://www.engin.umich.edu/class/ctms/.

153

12.1 - Modelagem Matemtica e Utilizao do MATLAB

Um atuador comum em sistemas de controle o motor DC. O motor oferece movimento rotativo e, acoplado com rodas ou cabos, pode oferecer movimento de transio. O circuito eltrico da armadura e o diagrama de corpo livre do rotor so mostrados na seguinte Figura 81.

Figura 81

Para este exemplo, sero assumidos os seguintes valores para os parmetros fsicos: Momento de inrcia do rotor (J) = 0.01 kg.m^2/s^2; Taxa de amortecimento do sistema mecnico (b) = 0.1Nms; Fora eletromotriz constante (K=Ke=Kt) = 0.01 Nm/Amp; Resistncia eltrica (R) = 1 ohm; Indutncia eltrica (L) = 0.5 H; Entrada (V) = Fonte de Tenso; Sada (theta) = Posio do eixo; O rotor e o eixo so rgidos;

154

O torque do motor, T, relacionado corrente da armadura, i, pelo fator constante Kt. A fora eletromotriz contrria, e, relacionada velocidade de rotao do motor pelas seguintes equaes: T= Kt*i

Kt=Ke (constante do motor)

Da figura acima ns podemos escrever as seguintes equaes baseadas na lei de Newton combinada com a lei de Kirchhoff:

12.1.1 - Funo de transferncia

Utilizando a transformada de Laplace, as equaes modeladas acima podem ser expressas em termos de s.

155

Substituindo uma equao na outra e eliminando o termo I(s) ns podemos obter a funo de transferncia de malha aberta, onde a velocidade de rotao a sada e a tenso a entrada.

12.1.2 - Espao estado

Na forma de espao estado, as equaes acima podem ser expressas pela escolha da velocidade de rotao e a corrente eltrica como sendo as variveis de estado e a tenso como sendo uma entrada. A sada escolhida para ser a velocidade de rotao.

Especificaes de projeto:

Primeiro, nosso motor no compensado pode rotacionar somente a 0.1 rad/sec com uma entrada em tenso de 1 Volt (isso ser demonstrado depois quando a resposta de malha aberta for simulada). Uma vez que o requisito bsico de um motor que ele deve rodar na velocidade desejada, o erro de estado estacionrio de 156

velocidade deve ser inferior a 1%. O outro requerimento de desempenho que o motor deve atingir a especificao anterior o mais breve possvel, ou seja, em menos de 2 segundos. Porm, seu mximo sobre sinal no deve ser maior que 5%.

12.1.3 - Representao no MATLAB e resposta em malha aberta

Funo de transferncia

Vamos criar uma M.file e escrever os seguintes comandos: J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; % Numerador da F.T. den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; % Denominador da F.T. motor=tf(num,den); step(motor,0:0.1:3); % Comando para aplicar a entrada em degrau no motor. title('Step Response for the Open Loop System');

157

Na Figrua 82, apresentado o grfico gerado pelos comandos acima.

Figura 82

Espao Estado

Ns podemos tambm representar o sistema usando as equaes de espao estado. Crie uma M.file e digite os seguintes comandos: J=0.01; b=0.1; K=0.01; R=1; L=0.5; A=[-b/J K/J -K/L -R/L]; B=[0 1/L]; C=[1 0]; D=0; motor_ss=ss(A,B,C,D); step(motor_ss) 158

Clique em run na M.file e a sada obtida deve ser idntica a da obtida na funo de transferncia. Conhecendo a natureza do sistema, vamos agora utilizar estas informaes para projetar um controlador PID de forma que as especificaes do projeto sejam atendidas.

12.2 - Mtodo de Projeto de um Controlador PID para Controle de Velocidade do Motor DC

Para o problema principal, vamos utilizar a funo de transferncia encontrada e o diagrama esquemtico mostrado na Figura 83.

Figura 83

Para 1 rad/s obtido pelo degrau unitrio, as especificaes do projeto so:

Tempo de acomodao menor que 2 segundos; Overshoot menor que 5%; Erro de regime permanente 1%;

159

Vamos projetar um controlador PID, lembrando que sua funo de transfrencia dada pela equao:

Para entendermos a dinmica do processo, vamos primeiro projetar um controlador proporcional.

12.2.1 - Controle proporcional

Vamos primeiro tentar usar um controlador proporcional com ganho de 100. Para determinar a funo de transferncia de malha fechada, podemos usar o comando feedback. Adicione os seguintes comandos no final da sua M.file: Kp=100; contr=Kp; sys_cl=feedback(contr*motor,1);

Agora vamos analisar a resposta do modelo compensado. Adicione no final da sua M.file e clique em run para rodar os comandos. t=0:0.01:5; step(sys_cl,t) title(Resposta ao degrau unitrio com controle proporcional')

160

O grfico gerado mostrado na Figura 84.

Figura 84

Podemos observar que apenas a especificao de tempo de acomodao foi atendida. Se acrescentarmos um controlador integral, ele ser capaz de eliminar o erro de regime permanente e se acrescentarmos um controlador derivativo, ele ser capaz de diminuir o overshoot. Porm, os valores de P, I e D devem ser otimizados de forma que as especificaes sejam atendidas.

161

12.2.2 - Controle PID

Vamos modificar nossa M.file e disponibiliz-la da seguinte forma:

% Funo de transferncia do motor DC. J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; motor=tf(num,den);

% Funo de transferncia do controlador.

Kp=100; Ki=1; Kd=1; contr=tf([Kd Kp Ki],[1 0]);

% Fechando a malha.

sys_cl=feedback(contr*motor,1);

% Resposta do sistema controlado.

step(sys_cl) title('Controle PID com pequenos valores de Ki e Kd') 162

Com os parmetros escolhidos para o controlador, a resposta obtida apresentada na Figura 85.

Figura 85

12.2.3 - Sintonia fina do controlador

Existem inmeras formas eficientes de se fazer uma sintonia fina. Porm, vamos sintonizar de forma intuitiva, utilizando os conceitos de controle integral e derivativo. Como o tempo de acomodao muito grande, vamos aumentar a constante Ki para 200 e verificar se a especificao de tempo de acomodao foi atingida. A resposta obtida aps alterar a M.file atribuindo Ki=200 pode ser visualizada na Figura 86.

163

Figura 86

Vamos agora aumentar o Kd para que diminua o overshoot. Vamos modificar a M.file atribuindo Kd=10 e analisar a resposta plotada na Figura 87.

Figura 87 164

Ento, ns sabemos que se ns usarmos um controlador PID com:

Kp=100; Ki=200; Kd=10;

Todas as nossas especificaes de projetos sero satisfeitas. Alm disso, podemos fazer algumas anlises do modelo no compensado e do modelo compensado de diferentes formas.

12.3 - Lugar das Razes

Utilizando o comando rlocus, vamos analisar o lugar das razes do modelo no compensado para o modelo compensado. Para plotar o lugar das razes do modelo no compensado digite o comando:

>> rlocus(motor) >> title(Lugar das razes do modelo no compensado)

165

O seguinte grfico apresentado na Figura 88.

Lugar das razes do modelo no compensado 6

2
Imaginary Axis

-2

-4

-6 -12

-10

-8

-6 Real Axis

-4

-2

Figura 88

Agora, para plotar o grfico do lugar das razes do modelo compensado digite os seguintes comandos:

>> rlocus(sys_cl) >> title(Lugar das razes do modelo compensado)

166

Na Figura 89, apresentado o grfico gerado:

Lugar das razes do modelo compensado 100 80 60 40


Imaginary Axis

20 0 -20 -40 -60 -80 -100 -350

-300

-250

-200

-150 Real Axis

-100

-50

50

Figura 89

Caso voc deseje entender mais sobre o assunto, visite o site: http://www.engin.umich.edu/class/ctms/examples/motor/rlocus2.htm. informaes so analisadas passo a passo. Nele, as

12.4 - Resposta em frequncia

Para analisar a resposta do modelo compensado e no compensado no domnio da freqncia, devemos utilizar o comando bode. Para plotar o grfico de bode do modelo no compensado digite os comandos:

167

>>bode(motor) >>title(Grfico de bode do modelo no compensado) >>grid

O grfico gerado pode ser visto na Figura 90.

Grfico de bode do modelo no compensado -20 -40


Magnitude (dB) Phase (deg)

-60 -80 -100 -120 0 -45 -90 -135 -180 10


-1

10

10

10

10

Frequency (rad/sec)

Figura 90

E para plotar o grfico de bode do modelo compensado digite os comandos:

>>bode(sys_cl) >>title(Grfico de bode do modelo compensado) >>grid

168

Na Figura 91, apresentado o grfico gerado pelos comandos acima:

Grfico de bode do modelo no compensado 20 0


Magnitude (dB) Phase (deg)

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


0

10

10

10

10

Frequency (rad/sec)

Figura 91

Para mais informaes sobre os grficos de bode e a resposta em freq., visite o site: http://www.engin.umich.edu/class/ctms/examples/motor/freq2.htm.

169

12.5 - Espao Estado

Para o problema principal, as equaes dinmicas de espao estado so as seguintes:

Lembrando que as especificaes de resposta so: Tempo de acomodao menor que 2 segundos; Overshoot de 5%; Erro de regime permanente menor que 1%;

Crie uma M.file contendo os seguintes comandos:

J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5; A = [-b/J K/J; -K/L -R/L]; B = [0; 1/L]; C = [1 0]; D = [0]; sys = ss(A,B,C,D); % Modelo na forma de espao estado. 170

12.5.1 - Projetando um controlador de realimentao de estado completo

Como ambas as variveis de estado em nosso problema so fceis medir (basta adicionar um ampermetro para corrente e um taqumetro para a velocidade), ns podemos projetar um controlador de realimentao de estado completo para o sistema sem se preocupar em ter que adicionar um observador. O esquema de um sistema de realimentao de estado completo mostrado na Figura 92.

Figura 92

Lembremos que o polinmio caracterstico para este sistema de malha fechada o determinante de [sI-(A B*K)] onde s a varivel de Laplace. Desde que as matrizes A e B * K so matrizes 2x2, deve haver dois plos para o sistema. Projetando um controlador de realimentao de estado completo, podemos passar esses dois plos em qualquer lugar que quisermos. Vamos primeiro tentar coloc-los em -5 + i e 5 - i (observe que isto corresponde a um zeta = 0,98, que d um overshoot de 0,1% e uma sigma = 5, que leva a um tempo de 1 segundo para acomodar). Uma vez que ns vimos acima com os plos que queremos, MATLAB ir encontrar o controlador de matriz, K, para ns. Basta adicionar o seguinte cdigo ao final de seu M.file: 171

p1 = -5 + i; p2 = -5 - i; K = place(A,B,[p1 p2]); % Calcula a matriz de realimentao K.

Agora, observe novamente o esquema (diagrama de blocos) acima. Podemos observar que adicionando a matriz K no modelo, as equaes de espao estado se tornam:

Podemos analisar a resposta do modelo compensado simplesmente adicionando os seguintes comandos no final de nossa M.file: t = 0:0.1:10; sys_cl = ss(A-B*K,B,C,D); step(sys_cl,t) % Aplica degrau unitria na planta compensada.

Clicando no boto run, a resposta do modelo compensado mostrada na Figura 93.

Figura 93 172

12.5.2 - Adicionando uma entrada de referncia

A partir da resposta acima, vemos que o erro de estado estacionrio muito grande. Em contraste com os mtodos de design, onde se realimenta a sada e a compara ao valor de referncia para calcular um erro, aqui estamos devolvendo os dois estados. Precisamos calcular qual o valor de regime permanente que os estados deve ter, que se multiplicam pelo ganho escolhido K, e usar este novo valor como referncia para o clculo da contribuio. Isso pode ser feito em uma nica etapa, adicionando um ganho constante Nbar aps a referncia. Veja o diagrama esquemtico mostrado na Figura 94.

Figura 94 Ns podemos encontrar esse fator Nbar usando o comando do MATLAB rscale:

Nbar = rscale(sys, K);

Este comando rscale no um comando padro do MATLAB. Na verdade, rscale uma function elaborada especialmente para este tipo de caso e deve ser declarada no MATLAB. Crie uma M.file e adicione os seguintes comandos: 173

function[Nbar]=rscale(a,b,c,d,k) % A funo rscale(sys,K) or rscale(A,B,C,D,K) % encontra a constant N na qual eliminar o erro de regime % permanente para uma entrada de referncia do tipo degrau unitrio % no domnio do tempo contnuo. O sistema de simples entrada com % realimentao de estado completo utiliza o esquema mostrado % abaixo: % % /-----------\ % R + u |. | % ---> N --->() ----------->|X=Ax+Bu |-----> y=Cx ---> y % -| \-----------/ % | | % |<---- K <--------- | % % 8/21/96 Yanjie Sun of the University of Michigan % under the supervision of Prof. D. Tilbury % 6/12/98 John Yook, Dawn Tilbury revised error(nargchk(2,5,nargin)); % Determine qual sintaxe est sendo usada nargin1 = nargin; if (nargin1==2), % System form [A,B,C,D] = ssdata(a); K=b; elseif (nargin1==5), % A,B,C,D matrices A=a; B=b; C=c; D=d; K=k; else error('Input must be of the form (sys,K) or (A,B,C,D,K)') end; % Calcular Nbar s = size(A,1); Z = [zeros([1,s]) 1]; N = inv([A,B;C,D])*Z'; Nx = N(1:s); Nu = N(1+s); Nbar=Nu + K*Nx; 174

Observao: No se esquea de salvar o M.file com o nome da function: rscale.

Agora podemos plotar a resposta final digitando os seguintes comandos na nossa M.file (espao estado):

% Espao Estado do motor DC.

J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5; A = [-b/J K/J -K/L -R/L]; B = [0 1/L]; C = [1 0]; D = [0]; t=0:0.1:10; u=ones(size(t)); % Entrada do tipo Degrau unitrio.

sys = ss(A,B,C,D); % Modelo na forma de espao estado. x0=[0 0]; % Esta matriz x0 opcional em alguns caso onde se utiliza o

comando lsim, porm neste caso sua utilizao obrigatria.

% Plos desejados e matriz de realimentao K.

p1 = -5 + i; % O projetista pode escolher os plos desejados em qualquer lugar p2 = -5 - i; K = place(A,B,[p1 p2]); % Calcula a matriz de realimentao K. 175

% Analisando a resposta compensada.

figure(1) sys_cl1 = ss(A-B*K,B,C,D); step(sys_cl1,t) % Resposta ao degrau no sistema compensado.

% Aps analisar a sua resposta, podemos verificar que sua sada em regime % permanente igual a 0.0769.

% Clculo do Nbar.

% O clculo do Nbar consiste basicamente em encontrar o valor de uma % constante. Essa constante ser multiplicada pela entrada em degrau % unitrio para que a sada desejada do sistema compensado seja alcanada. % Caso o usurio dividir o valor desejado (1) pelo valor da sada % compensada (0.0769), o resultado ser 13.003901 e este valor a % constante Nbar que ser calculada. Portanto, pode-se dizer que a funo % rscale(sys,K) ou rscale(A,B,C,D,K) encontra a constante Nbar na qual % eliminar o erro de regime permanente para uma entrada de referncia do % tipo degrau unitrio no domnio do tempo continuo.

Nbar = rscale(sys, K)

176

% Resposta o modelo compensado.

figure(2)

sys_cl=ss(A-B*K,B*Nbar,C,D); % Multiplicamos Nbar pela matriz de entrada. lsim(sys_cl,u,t,x0); % Comando para aplicar qualquer tipo de entrada. Neste caso, vamos aplicar uma entrada em degrau no modelo compensado axis([0 5 0 1.5]); title('Step Response with K Controller and Nbar')

A Figura 95 a seguir apresenta a resposta do modelo compensado com a constante Nbar:

Figura 95

177

12.6 - Controle Digital

Vamos utilizar para fazer o controle digital, os seguintes comandos:

% Funo de transferncia discreta do motor DC.

J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; motor=tf(num,den);

ts=0.12; motor_d=c2d(motor,ts,zoh)

% Funo de transferncia do controlador discreto.

Kp=100; Ki=200; Kd=10; PID=tf([Kd Kp Ki],[1 0]); contr=c2d(PID,ts,Tustin);

178

% Resposta do modelo compensado discreto.

sys_cl = feedback(contr*motor_d,1); [x2,T] = step(sys_cl,12); stairs(T,x2) xlabel('Time (seconds)') ylabel('Velocity (rad/s)') title('Stairstep Response:with PID controller')

O grfico do modelo discreto compensado mostrado na Figura 96.


x 10
36

Stairstep Response:with PID controller

0
Velocity (rad/s)

-1

-2

-3

-4

6 Time (seconds)

10

12

Figura 96

Como voc pode ver acima, o grfico do modelo em malha fechado apresenta instabilidade. Portanto, deve haver algo errado com o sistema de compensao. Assim, devemos dar uma olhada no lugar das razes do sistema compensado. Vamos adicionar o seguinte comando MATLAB no fim de nossa M.file:

179

rlocus(contr*motor_d) title(Lugar das razes do sistema compensado)

O seguinte grfico mostrado na Figura 97:

Lugar das razes do sistema compensado 1 0.8 0.6 0.4


Imaginary Axis

0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -3

-2.5

-2

-1.5

-1

-0.5

0.5

1.5

Real Axis

Figura 97

A partir deste lugar das razes, vemos que o denominador do controlador PID tem um plo em z -1. Sabemos que, se um plo de um sistema est fora do crculo unitrio, o sistema ser instvel. Este sistema compensado ser sempre instvel para qualquer ganho positivo, porque h um nmero par de plos e zeros direita do plo em -1. Por isso que o plo vai sempre se mover para a esquerda e de fora do crculo unitrio. O plo em -1 provm do compensador, e podemos mudar sua posio, alterando o projeto compensador. Ns escolhemos para cancelar o zero em -0,62. Isso far com que o sistema estvel por pelo menos alguns ganhos. Alm disso, podemos

180

escolher um ganho apropriado a partir do lugar das razes para satisfazer os requisitos de design usando rlocfind. Digite o cdigo MATLAB seguinte ao nosso M.file:

contr.den = conv([1 -1],[1/.62 1]); figure(1) rlocus(contr*motor_d) % Encontrar local onde o ganho 0.2425. figure(2) rlocus(contr*motor_d) % Selecionar o local o ganho.

title('Root Locus of Compensated System'); [K,poles] = rlocfind(contr*motor_d) sys_cl = feedback(K*contr*motor_d,1);

[x3,T] = step(sys_cl,12); stairs(T,x3) xlabel('Time (seconds)') ylabel('Velocity (rad/s)') title('Stairstep Response:with PID controller')

O novo plo de malha fechada ser um plo em -0.625 ao invs de -1, o que quase anula o zero do sistema no compensado. Na janela do MATLAB, voc ver o comando pedindo para selecionar um ponto no lugar das razes. Voc deve clicar sobre o grfico cujo ganho aproximadamente 0.2425. A Figura 98 mostra a resposta.

181

Figura 98

O grfico mostra que o tempo de acomodao menor que 2 segundos e o overshoot de cerca de 3%. Em adio, o erro de estado estacionrio zero. O ganho, K, 0.2425. Portanto, esta resposta satisfaz todos os requisitos de concepo. Para que no haja dvidas, a M.file ficou assim:

% Funo de transferncia discreta do motor DC. J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K;

182

den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; motor=tf(num,den); ts=0.12; motor_d=c2d(motor,ts,'zoh')

% Funo de transferncia do controlador discreto. Kp=100; Ki=200; Kd=10; PID=tf([Kd Kp Ki],[1 0]); contr=c2d(PID,ts,'Tustin');

% Resposta do modelo compensado discreto.

contr.den = conv([1 -1],[1/.62 1]); % Permite modificar o denominador do controlador. figure(1) rlocus(contr*motor_d) % Encontrar o local onde o ganho igual a 0.2425. figure(2) rlocus(contr*motor_d) % Selecionar o local. title('Root Locus of Compensated System'); [K,poles] = rlocfind(contr*motor_d) sys_cl = feedback(K*contr*motor_d,1);

183

[x3,T] = step(sys_cl,12); stairs(T,x3) xlabel('Time (seconds)') ylabel('Velocity (rad/s)') title('Stairstep Response:with PID controller')

184

ADENDO RESUMO DOS COMANDOS MAIS UTILIZADOS NO CURSO

Como este trabalho composto por muitos tipos de comandos espalhados por diferentes partes, este adendo foi elaborado com intuito de diminuir o tempo de procura por algum comando desejado. A tabela abaixo contm os mais importantes comandos utilizados neste trabalho e sua descrio. Caso o usurio no se recorde de como utilizar um determinado comando, basta digitar o comando help nome do comando na Command Window.

Comandos e funes matriciais

Descrio sobre o que o comando faz, o que

comumente usados na soluo de a funo matricial significa, ou o que a declarao problemas de engenharia de controle. abs acker angle ans antan axis bode bar bar3 c2d clear clf clg complex conj conv cos cosh cov ctrb significa. Valor absoluto, magnitude complexa. Matriz de realimentao K ngulo de fase Resp. obtida para expresso sem atribuio Arcotangente Escala manual do eixo Traar diagrama de bode Plota grficos no formato de barras Plota grficos em trs dimenses Transforma domnio contnuo para domnio discreto Limpar a rea de trabalho Limpar figura Limpar tela grfica Localizao complexa de um nmero Conjugado complexo Convoluo, multiplicao Co-seno Co-seno hiperblico Co-varincia A matriz de controlabilidade 185

ddeinit ddereq ddepoke deconv det diag diff disp dlqr eps eig exit ou quit exp expm eye feedback filter fill figure format long format log e format short fromat short e freqs freqz grid hold on help ilaplace imag impulse inf inv int interp1 j ou i length linspace limit linspace log loglog logm logspace log10 lqe

Inicia conversao do MATLAB com outras aplica. Solicita os dados da aplicao do servidor DDE Envia um dado do MATLAB para a aplicao Deconvoluo, Diviso Determinante Matriz diagonal Derivada de uma funo Mostra uma mensagem Regulador linear quadrtico para sistemas discretos Tolerncia numrica do MATLAB Autovalores e autovetores Trmino do programa Exponenciao, base e Matriz exponencial Matriz identidade Fechar a malha Implementao de filtro Preencher uma rea com uma cor desejada Escolhe a figura que se deseja utilizar Nmero real de 15 dgitos Nmero real de 15 dgitos em notao cientfica Nmero real de 5 dgitos Nmero real de 5 dgitos em notao cientfica Resposta de freq. no domnio da transfor. de laplace Resposta de freqncia no domnio da transf. Z Desenhar linhas em uma grade reticulada Manter na tela o grfico corrente Ajuda com a utilizao dos comandos Transformada inversa de Laplace Parte imaginria de um nmero complexo Traar a resposta ao impulso unitrio Infinito Inversa Calcular integral de uma funo Interpolar Raiz quadrada de -1 Tamanho do vetor Vetores linearmente espaados Calcular limite de uma funo Interpolao linear Logaritmo natural Grfico loglog nos eixos x-y Logaritmo da matriz Vetores logariticamente espaados Logaritmo de base 10 Projeto de estimador quadrtico linear 186

lqr lsim max margin mean median min nan nntool nyquist ones opctool obsv parallel pi phase place plot polar poly ployfit plyt polyval polyvalm pretty printsys prod pzmap ramp rand rank real rem residue rlocus roots semilogx semilogy series sign sin sinh sisotool size sqrt sqrtm

Projeto do regulador quadrtico linear Traar a resposta a qualquer tipo de entrada Valor mximo Margem de ganho, fase e freq. de cruzamento Valor mdio Valor da mediana Valor mnimo No-nmero Ferramenta para projeto de rede neural artificial Grfico da resp. em freq. em coordenada de Nyquist Constante Conectar MATLAB a uma aplicao usando OPC Calcula matriz de observabilidade Funes de transferncias em paralelo Nmero pi Calcula a fase de um nmero complexo Matriz de realimentao K Grfico linear em coordenadas cartezianas x-y Grfico em coordenadas polares Polinmio caracterstico Interpolao por mnimos quadrados Ajuste polinomial de curvas Avaliao polinomial Avaliao de matriz polinomial Arrumar a resposta Arrumar a resposta em funo de uma varivel Produto de elementos Mapa com plos e zeros de um sistema linear Traar a resposta a entrada em rampa Gerar nmeros e matrizes randmicos Calcular o posto (rank) de uma matriz Parte real de um nmero complexo Resto ou mdulo Expanso em fraes parciais Traar lugar das razes Razes polinomiais Grfico semilog x-y (eixo x logartmico) Grfico semilog x-y (eixo y logartmico) Funes de transferncias em srie Funo sinal Seno Seno hiperblico Editor de compensadores Dimenses de linhas e colunas de uma matriz Raiz quadrada Raiz quadrada de uma matriz 187

ss2tf std stairs step subplot sum syms symsum tan tanh text tf tf2ss tf2zp title trace who xlabel ylabel zeros zgrid

Transforma de espao estado para funo de transf. Desvio padro Plota grficos em formato de escada Traar a resposta ao degrau unitrio Dividir a janela plotada em partes Soma de elementos Atribuir uma letra como smbolo Somatrio Tangente Tangente hiperblica Texto posicionado arbitrariamente Funo de transferncia Transforma de funo de transf. para espao estado Determina plos e zeros de uma funo de transfer. Colocar ttulo em um grfico Trao de uma matriz Lista de todas as variveis atualmente na memria Ttulo do eixo dos x Ttulo do eixo dos y Zero Grid no domnio discreto

188