Laboratório de Controle Prof. Alexandre Brincalepe Campo www.cefetsp.br/edu/brinca/engenharia.html Roteiro 1 - Introdução ao MATLAB Tela principal Ajuda do Matlab >> helpwin Comandos para programação em linguagem MATLAB Control flow: if - Conditionally execute statements. else - IF statement condition. elseif - IF statement condition. end - Terminate scope of FOR, WHILE, SWITCH, TRY and IF statements. for - Repeat statements a specific number of times. while - Repeat statements an indefinite number of times. Comandos para inicialização de variáveis e gráficos: close all : fecha todas as janelas de figuras clear all : limpa o espaço de trabalho (“Workspace”) clc : limpa a janela de comandos (“Command Window”) Exemplos: 1) for N=3; for I = 1:N, for J = 1:N, A(I,J) = 1/(I+J-1); end end >> help if >> help while Laboratório de Controle – N7 – Prof. Alexandre Brincalepe Campo www.cefetsp.br/edu/brinca/engenharia.html Parte 1 – Programa introdutório Exemplo: % Introduçao a programacao Matlab % Inicializaçao das variaveis do Matlab close all clear all clc % Desenho de uma funçao t=0:0.1:10; tamanho=length(t); for i=1:tamanho, y1(i)=(t(i))^2; y2(i)=1/((t(i))^2); end figure(1) plot(t,y1,'r'); hold on plot(t,y2,'b'); xlabel('tempo') ylabel('y1(t)-verm e y2(t)-azul') title('Graficos das funcoes t2 e 1/t2') grid % Grafico - tres eixos figure(2) ezsurf('1/(x^4) + 1/(y^4)',[0.5,1,0.5,1]) grid Análise 1 – Verifique o conteúdo da janela de ajuda do MATLAB. - Verifique o item: matlab\lang - Verifique o item: matlab\elfun 2 – Execute o programa. Exercícios Exercício 1.1 – Altere a faixa de valores do eixo das abscissas para -10 a 10 e desenhe o novo gráfico. Altere o código do programa substituindo o comando for pelo comando while. Faça as alterações necessárias para garantir a execução do programa. Exercício 1.2 – Faça um programa que desenhe o gráfico da função: v(t) = 100 sen(2πt) num intervalo de tempo suficiente para que sejam apresentados dois períodos completos. 2 Laboratório de Controle – N7 – Prof. Alexandre Brincalepe Campo www.cefetsp.br/edu/brinca/engenharia.html Exemplo de Aplicação – Série de Fourier %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Serie Trigonometrica de Fourier %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % x=linspace(0,4*pi,100); y=5-10/pi*sin(x)-10/(2*pi)*sin(2*x)-10/(3*pi)*sin(3*x); figure(1) plot(x,y,'b') title('Serie de Fourier - Dente de Serra com 3 harmonicos') xlabel('tempo') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % y=5-10/pi*sin(x)-10/(2*pi)*sin(2*x)-10/(3*pi)*sin(3*x)-10/(4*pi)*sin(4*x)... -10/(5*pi)*sin(5*x)-10/(6*pi)*sin(6*x)-10/(7*pi)*sin(7*x)-10/(8*pi)*sin(8*x)... -10/(9*pi)*sin(9*x)-10/(10*pi)*sin(10*x)-10/(11*pi)*sin(11*x)- ... + 10/(12*pi)*sin(12*x)-10/(13*pi)*sin(13*x); hold on plot(x,y,'r') title('Serie de Fourier - Dente de Serra com 13 harmonicos') xlabel('tempo') grid Control Systems Toolbox Parte 2 – Manipulação com polinômios no Matlab % Inicializaçao das variaveis do Matlab close all clear all clc % Criaçao de um polinomio a partir de suas raizes % poly(A): Funcao que cria o polinomio com as raízes armazenadas no vetor A % Exemplo: % B=[-4] % P=poly(B) % Resulta em P=[1 4], pois terá como conteúdo % os coeficientes do polinômio: (x+4) A=[-1]; B=[-2 -1]; P1=poly(A) P2=poly(B) % Construção dos polinômios P1=(x+1) e P2=(x2+3x+2) P1=[1 1] P2=[1 3 2] % Produto entre dois polinomios PP=conv(P1,P2); % Calculo das Raizes de um polinomio qualquer raizes_1=roots(PP); 3 Laboratório de Controle – N7 – Prof. Alexandre Brincalepe Campo www.cefetsp.br/edu/brinca/engenharia.html % Criacao de um polinomio a partir de um conjunto de dados X=[0 1 2 3 4 5 6 7 8 9 10]; Y=[0 1 2 3 3.5 4.5 5 5.5 5.5 5 4 ]; % Grau do polinomio que sera gerado N=5 % Geracao de um polinomio relacionado com os dados Y=f(X) [P,S] = polyfit(X,Y,N) % Verificacao de alguns valores de P P(1,1) P(1,2) % Desenho do grafico dos valores experimentais figure(1) plot(X,Y); hold on % Desenho do grafico dos valores obtidos a partir do polinomio construido t=0:0.1:10; tamanho=length(t); for i=1:tamanho, y1(i)=polyval(P,t(i)); end plot(t,y1); grid Exercícios Exercício 2 – Dada a função de transferência abaixo, escreva um programa que calcule as raízes do polinômio do denominador (pólos) assim como as raízes do polinômio do numerador. O sistema é estável? F ( s) = 3s 2 + 2 s 6 + s 5 + 2 s 4 + 3s 3 + s 2 + s + 1 Parte 3 Estudo sobre funções de transferência. Manipulação de sinais aplicados a sistemas dinâmicos. Programa exemplo: % Inicializaçao das variaveis do Matlab close all clear all clc % Criaçao de uma funcao de transferencia - Metodo 1 s = tf('s'); F = (s+1)/(s^2+3*s+1) % Aplicaçao de um degrau ao sistema figure(1) step(F) grid % Criaçao de uma funcao de transferencia - Metodo 2 NUM1=[1 1]; DEN1=[1 3 1]; F=tf(NUM1,DEN1) % Dada a seguinte F = 1/(3*s+1) % Aplicaçao de um figure(2) step(F) grid % Aplicacao de um % Com a definicao figure(3) tempo=10; impulse(F,tempo) grid funcao de transferencia degrau ao sistema impulso ao sistema do intervalo de tempo que sera apresentado 4 Laboratório de Controle – N7 – Prof. Alexandre Brincalepe Campo www.cefetsp.br/edu/brinca/engenharia.html % Aplicacao de uma funcao qualquer ao sistema t=0:0.01:10; U=sin(2*pi*t); figure(4) lsim(F,U,t) grid Exercício 3.1 – Faça um programa que apresente o gráfico do sinal da tensão de saída ( vo(t) ) dos circuitos abaixo: Obs.: Em todos os casos abaixo a chave mudou da posição B para a posição A no instante t = 0 s e os dispositivos que armazenam energia estavam com energia inicial igual a zero. Nos exercícios a seguir considere sempre β igual à 12. a) Vo ( s ) = F ( s) Vi ( s ) Z eq = R1 + R2 + Z C1 = R1 + R2 + I TOT ( s ) = 1 sC1 Vi ( s ) 1 sC1 Divisor de tensão: Vi ( s ) 1 Vo ( s ) = Z C1 I TOT = 1 sC1 R1 + R2 + sC1 Vo ( s ) 1 = Vi ( s ) sC1 ( R1 + R2 ) + 1 R1 + R2 + b) 5 Laboratório de Controle – N7 – Prof. Alexandre Brincalepe Campo www.cefetsp.br/edu/brinca/engenharia.html Exercício 3.2 – Desenhe o gráfico da tensão de saída supondo que a frequência do gerador senoidal de entrada foi ajustada para ω = 0,1 rad/s e posteriormente faça o mesmo gráfico supondo que ω = 10 rad/s. Exercício 3.3 – Aplique um sinal senoidal ao sistema pêndulo invertido apresentado na página da Carneggie Mellon: (http://www.engin.umich.edu/class/ctms/examples/pend/invpen.htm). 6