Professional Documents
Culture Documents
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 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
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
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:
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.
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.
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.
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:
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
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
+ * ^ |
<
Menor que
Observe que o sinal = utilizado em um comando de atribuio, enquanto = = empregado em uma relao. Os operadores lgicos so os seguintes:
& | ~
AND OR NOT
[ ] ( ) ; : ! %
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
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.
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.
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
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
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
Caso queira multiplicar ou dividir todos os nmeros de um vetor, basta colocar o smbolo * ou /, respectivamente. Ex.: >>d=c*2 >>e=c/5
Criar Matrizes to fcil quanto fazer um vetor. Usando o operador Ponto-eVrgula ; para separar as linhas da matriz podemos fazer:
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.
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
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.
20
Dividindo duas matrizes: >> F=A/B Warning: Matrix is singular to working precision.
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
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
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
23
A= 1 2 2 0
5 -1
4 10 -1
24
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.
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)
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])
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)
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
Figura 5
O tipo de grfico em trs dimenses mais utilizado : >> A=[1 2 3;4 5 6;7 8 9]; >>bar3(A)
29
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.
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
Figura 7
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
10
-5
-10 40 30 20 10 0 0 10 30 20 40
Figura 8
32
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
Caso se deseje saber quais foram as variveis utilizadas na diferenciao, basta executar o comando: >> findsym(f,2) 33
ans = t,s
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 Tabela 2 mostra de uma forma resumida os comandos usados no MATLAB associados aos seus respectivos operadores matemticos:
Tabela 2
35
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
A Tabela 3 explora as opes para o comando limit(f), lembrando que f a funo do objeto simblico x:
Tabela 3 36
Se f uma expresso simblica, ento se utiliza o comando int para calcular a integral da mesma: >>int(f)
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)
39
CAPTULO 6 - INTERPOLAO
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
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)
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
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.
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
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.
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')
80
graus celcius
75
70
65
60
1.5
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;
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')
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
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.
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
50
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
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
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
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
54
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.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:
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:
1.2
Amplitude
0.8
0.6
0.4
0.2
0.5
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
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
5 4 s e 2 s 5 4 s
2
G2(s)=
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
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)
Root Locus 6
2
Imaginary Axis
-2
-4
-6 -1.4
-1.2
-1
-0.8
-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
sT
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
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
Bode Diagram 20 0
Magnitude (dB) Phase (deg)
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.
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
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
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)
0 1.0000 B= 1 0 0 C=
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( )
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)
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
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
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.
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
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
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
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
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
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
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
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
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
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.
84
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.
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
Figura 39
90
Passo 2:
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
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
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.
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
Root Locus 4
1
Imaginary Axis
-1
-2
-3
-4 -0.9
-0.8
-0.7
-0.6
-0.5
-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
-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)
97
1.2
Amplitude
0.8
0.6
0.4
0.2
6 Time (sec)
10
12
Figura 46
>>impulse(Gps)
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)
1.2
Amplitude
0.8
0.6
0.4
0.2
10 Time (sec)
12
14
16
18
20
Figura 48 >>impulse(Gpd)
99
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.
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.
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
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
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).
rlocus(Gpd)
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.
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
103
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.
104
1.2
Amplitude
0.8
0.6
0.4
0.2
0.5
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
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.
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
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
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).
107
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.
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
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.
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
disp('FT do sistema compensado em malha fechada') GcdGpd_f=feedback(k*GcdGpd,1) % FT do sistema compensado em malha fechada.
110
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.
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.
%# 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.
re=mod*cos(ang);
112
im=mod*sin(ang);
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.
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.
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.
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
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.
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.
0.5
1.5
2 Time (sec)
2.5
3.5
Figura 52
116
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
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.
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:
>> 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
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
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(AND_outputs,'+r') % Os valores contidos em AND_outputs sero mostrados em vermelho e em forma de `+`.
124
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
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:
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
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:
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
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
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)
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:
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
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
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:
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
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
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.
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 :
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.
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.
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.
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
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
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
Da figura acima ns podemos escrever as seguintes equaes baseadas na lei de Newton combinada com a lei de Kirchhoff:
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.
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%.
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
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.
Para o problema principal, vamos utilizar a funo de transferncia encontrada e o diagrama esquemtico mostrado na Figura 83.
Figura 83
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:
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
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
% 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);
% Fechando a malha.
sys_cl=feedback(contr*motor,1);
Com os parmetros escolhidos para o controlador, a resposta obtida apresentada na Figura 85.
Figura 85
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
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.
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:
165
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:
166
-300
-250
-200
-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
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
10
10
10
10
Frequency (rad/sec)
Figura 90
168
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
Lembrando que as especificaes de resposta so: Tempo de acomodao menor que 2 segundos; Overshoot de 5%; Erro de regime permanente menor que 1%;
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
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
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.
Figura 93 172
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:
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
Agora podemos plotar a resposta final digitando os seguintes comandos na nossa M.file (espao estado):
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
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
% 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
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')
Figura 95
177
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)
178
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')
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
-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.
[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
% Funo de transferncia do controlador discreto. Kp=100; Ki=200; Kd=10; PID=tf([Kd Kp Ki],[1 0]); contr=c2d(PID,ts,'Tustin');
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
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.
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