Você está na página 1de 35

I.S.E.L.

D.E.E.A.

Seco de Controlo

Ref.: Folhas de Apoio

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Iniciao ao Matlab verso 6.5 e Simulink

Por: Carla Viveiros


Folhas de Apoio

Semestre Inverno 2006/2007

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Captulo 1 Introduo ao Matlab 1.1 Introduo


O Matlab uma ferramenta de computao numrica sofisticada e de simulao que pode ser utilizada para modelizar e analisar sistemas dinmicos. Trabalha com sistemas contnuos, discretos, lineares e no lineares e tem extensas caractersticas para a manipulao de matrizes. Possui um conjunto vasto de bibliotecas (toolbox), que permitem resolver classes particulares de problemas, tais como: - Biblioteca de Controlo de Sistemas; - Biblioteca de Processamento de Sinal; - Biblioteca de Optimizao; - Etc. Estas bibliotecas fornecem ao utilizador um conjunto poderoso de ferramentas de anlise em cada rea especfica. O sucesso da biblioteca de controlo de sistemas levou ao desenvolvimento do Simulink. O Simulink uma ferramenta grfica que serve para modelizar e simular sistemas dinmicos utilizando diagramas de blocos.

1.2 Inicio de uma sesso em Matlab


Para se dar inicio a uma sesso do Matlab, clica-se 2 vezes no cone do Matlab (figura 1.1) e de seguida aparece uma janela principal (figura 1.2) dividida em 3 sub-janelas.

Figura 1.1 cone do Matlab

Figura 1.2 Janela principal do Matlab

Introduo ao Matlab

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Workspace: Espao onde so guardadas as variveis utilizadas. Command Window: Todos os comandos so emitidos por esta janela. Command History: Esta janela lista os ltimos comandos utilizados no Matlab. Current Directory: Esta janela mostra o directrio em que se est a trabalhar. User Variables: A entidade bsica no Matlab a matriz rectangular (parte real e complexa). Cada matriz tem de estar associada a um nome ou varivel, tem de se ter cuidado na atribuio do nome pois o Matlab distingue entre maisculas e minsculas. Por ex: se existir no workspace uma matriz com o nome teste, esta matriz no pode ser referida como Teste.

1.3

Ficheiros do Matlab
O Matlab utiliza 4 tipos de ficheiros, sendo os mais utilizados os seguintes:

Ficheiros M: Os ficheiros tipo .m so simplesmente ficheiros de texto que so escritos na linguagem de programao do Matlab, podem conter instrues(script-files) e funes(functions). Para executar as instrues de um ficheiro, basta escrever o nome do ficheiro no command window e clicar na tecla enter. Ficheiro de dados do Matlab: So ficheiros binrios usados para guardar variveis para poderem ser utilizados mais tarde. So ficheiros tipo .dat e .mat. Para guardar as variveis existentes na sesso faz-se save sessao. Para aceder s variveis faz-se load sessao. Exemplo 1.1 Criao de um ficheiro tipo .m Para criar um novo ficheiro tipo.m basta aceder a FileNewM-File. Depois de efectuada esta sequncia aparece a janela do editor (figura 1.3).

Figura 1.3 Janela do editor

1.4 Programao em Matlab


O Matlab j tem pr definido um conjunto de rotinas e funes, mas por vezes necessrio criar rotinas e funes novas. Para tal utilizam-se instrues de sintaxe existentes no Matlab, algumas dessas instrues sero descritas de seguida.

Introduo ao Matlab

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Atribuio de valores a variveis no Matlab

A atribuio de variveis pode ser feita atravs da seguinte instruo varivel = valor (ex.: a = 2), ou seja, varivel a atribudo o valor 2. Outra forma de atribuir valores a variveis atravs da funo input. A instruo a = input(introduza um valor :) faz aparecer no command window a mensagem introduza um valor :, e o valor introduzido atribudo varivel a. Se no introduzir nenhum valor, a varivel a fica vazia. Se colocarmos um s como segundo argumento na funo input, a varivel j pode receber valores alfanumricos. Exemplo 1.2 Uso da instruo input

Figura 1.4 Utilizao da funo input

Apresentao de resultados com a funo fprintf e disp

A funo fprintf apresenta-se na forma fprintf(fid,format,A), formata os dados apenas da parte real da matriz A num formato especfico e escreve para o ficheiro associado ao fid(file identifier). Fid um identificador de ficheiros obtido atravs da funo fopen, se for omitido o resultado aparece no ecr.

Figura 1.5 Utilizao da funo fprint

Introduo ao Matlab

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

O resultado de pi aparece apenas com 3 casas decimais (%.3f). Para saber o significado de %f, consulte o quadro seguinte: Quadro 1.1 Caracteres comuns para formatos usando a funo fprintf Caracteres %d %e %f %g \n Resultado Apresenta valores como inteiros Apresenta valores em formato exponencial Apresenta valores em formato de ponto flutuante Apresenta valores em formato de ponto flutuante ou exponencial usando o formato mais curto Permite a deslocao para uma nova linha

A funo disp mostra o contedo de uma varivel sem aparecer o nome dessa varivel.

Figura 1.6 Utilizao da funo disp

Estruturas de controlo de fluxo

As instrues de controlo de fluxo que permitem alterar a sequncia de execuo de uma funo e/ou rotina so as estruturas condicionais if...end e as estruturas de ciclo so for...end e while...end. Exemplo 1.3 Exemplo das estruturas if...end e for...end na forma de script-file
% Esta e uma linha para escrever comentarios. % O Matlab ignora a linha quando existe o simbolo %. %Definiao de constantes ou variaveis t=linspace(0,1,5); % gera um vector de 5 pontos entre 0 e 1 %Calculos dentro de um ciclo "for". %Assume-se que os valores de a,b e c sao definidos no workspace for n=1:5 f(n)=t(n)^5 + a*t(n)^3 + b*t(n) + c; end; %Demonstraao de declaraao "if" if (any(f==0)) % se existir alguma raiz exacta disp('Foi encontrada uma raiz exacta de f(t) no intervalo [0,1].') Introduo ao Matlab 4

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas


elseif (any(f<0) & any(f>0)) % se existe alguma raiz disp('f(t)tem uma raiz no intervalo [0,1].') else % se nenhuma das condioes acima se verificar disp('f(t) nao tem raizes no intervalo [0,1].') end plot(t,f),grid % Mostra resultados

Data: Setembro 2006

Exemplo 1.4 Exemplo das estruturas if...end e for...end na forma de funo (function)
function exemplo14(a,b,c) %esta funao apenas recebe os parametros a, b e c e % nao fornece nenhuma saida %Definiao de constantes ou variaveis t=linspace(0,1,5); % gera um vector de 5 pontos entre 0 e 1 %Calculos dentro de um ciclo "for" %Assume-se que os valores de a,b e c sao definidos no workspace for n=1:5 f(n)=t(n)^5 + a*t(n)^3 + b*t(n) + c; end; %Demonstraao de declaraao "if" if (any(f==0)) % se existir alguma raiz exacta disp('Foi encontrada uma raiz exacta de f(t) no intervalo [0,1].') elseif (any(f<0) & any(f>0)) % se existe alguma raiz disp('f(t)tem uma raiz no intervalo [0,1].') else % se nenhuma das condioes acima se verificar disp('f(t) nao tem raizes no intervalo [0,1].') end plot(t,f),grid % Mostra resultados return

Exemplo 1.5 Exemplo das estruturas if...end e for...end na forma de funo com retorno de uma sada
function [saida]=exemplo15(a,b,c) %esta funao recebe os parametros a, b e c % e fornece o valor 0,1 ou 2 conforme a situaao %Definiao de constantes ou variaveis t=linspace(0,1,5); % gera um vector de 5 pontos entre 0 e 1 %Calculos dentro de um ciclo "for" %Assume-se que os valores de a,b e c sao definidos no workspace for n=1:5 f(n)=t(n)^5 + a*t(n)^3 + b*t(n) + c; end; %Demonstraao de declaraao "if" if (any(f==0)) % se existir alguma raiz exacta saida=0; elseif (any(f<0) & any(f>0)) % se existe alguma raiz saida=1; else % se nenhuma das condioes acima se verificar saida=2; end plot(t,f),grid % Mostra resultados return Introduo ao Matlab 5

I.S.E.L.
D.E.E.A.
Exerccios:

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

1. Considere o exemplo 1.3 a) No command window defina os seguintes coeficientes: a=-40; b=-20; c=5; b) Corra o programa escrevendo no command window exemplo13 e veja o que acontece; c) Faa c=100 e corra o programa novamente; d) Faa c=0 e corra o programa novamente; 2. Considere o exemplo 1.4 a) Corra o programa escrevendo no command window exemplo14(-40,-20,5); 3. Considere o exemplo 1.5 a) Corra o programa escrevendo no command window [saida]=exemplo15(-40,-20,5);

1.5

Manipulao Matrizes/ Vectores no Matlab

Nesta seco vamos dar incio a alguns aspectos bsicos referentes introduo de matrizes.

1.5.1 Entrada de matrizes simples


As matrizes podem ser introduzidas de vrias formas, como se pode observar a seguir: Entrada como lista de elementos, utilizam-se os delimitadores [ ] para introduzir uma matriz, como por exemplo: a. A= [1,2,3] que equivalente a A=[1 2 3] b. A=[1,2,3;4,5,6] que equivalente a A= [1 2 3 4 5 6]

Figura 1.7 Entrada de matrizes

Nota: Se colocarmos um ponto e virgula (;) no fim de uma instruo, o resultado no aparece no command window, mas fica gravado na varivel atribuda. Introduo ao Matlab 6

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Entrada atravs de M-Files, se o ficheiro matriz.m tiver a seguinte informao A=[1,2,3;3,4,5], e se escrevermos no command window matriz, aparece:

Figura 1.8 Entrada de matrizes atravs de m-files

Matrizes geradas por funes do Matlab, por exemplo a matriz identidade:

Figura 1.9 Matriz identidade

Exemplos: 1. Os elementos constituintes de uma matriz podem ser expresses matemticas, x = [-1.3 sqrt(3) (1+2+3)*4/5] resulta em x= -1.3000 1.7321 4.8000

2. Para definir elementos individuais de uma matriz, use o nome da varivel e parnteses, x(5) = abs(x(1)) resulta em x= -1.3000 1.7321 4.8000 0 1.3000
Nota: O vector x foi aumentado para 5 elementos, o 4 elemento uma vez que no foi atribudo nenhuma expresso, assume automaticamente o valor zero. Introduo ao Matlab 7

%significa que o 5 elemento da matriz ser igual ao valor absoluto do 1 elemento

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

3. possvel construir matrizes de elevada dimenso a partir de matrizes de menor dimenso, r = [1 2 3 4 5]; y = [x;r] resulta em y= -1.3000 1.0000 1.7321 2.0000 4.8000 3.0000 0 4.0000 1.3000 5.0000

4. possvel extrair matrizes de menor dimenso a partir de matrizes de maior dimenso, A=[2,6,8;10,12,14;16,18,20] z = A(2:3,1:2) %extrai a 2 e 3 linha referente 1 e 2 coluna resulta em z= 10 16 12 18

1.5.2 Nmeros no Matlab


O Matlab utiliza a notao decimal convencional, ou seja, 0.0002, 2e-3 ou 2E-3 so todas vlidas e iguais. O Matlab retorna Inf (infinite) se o nmero der infinito, retorna Nan (not a number) no clculo de 0 / 0 ou Inf / Inf. Os nmeros complexos representam-se por i ou j, exemplo: z = 3+4*i ou z = 3+4*j

A = [1+5*i 2+6*i ; 3+7*i 5+2*i] % Matriz complexa resulta em A= 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 5.0000 + 2.0000i

1.5.3 Operaes Matriciais


Transposio Para realizar a operao de transposio, utiliza-se o smbolo . Exemplo: A=[1 2 3; 5 8 1; 2 9 3 ] resulta em A= 1 2 3

5 8 1

2 9 3

Introduo ao Matlab

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Adio, Subtraco e Multiplicao As operaes de adio e subtraco s so efectuadas se as matrizes forem da mesma dimenso, sendo a operao realizada elemento a elemento. No caso da multiplicao o nmero de colunas da primeira matriz tem de ser igual ao nmero de linhas da segunda coluna. No esquecer que importa a ordem pela qual se efectua a subtraco e a multiplicao. Considere: A = [1 2 3; 5 8 1; 2 9 3] e B = A, Exemplo 1.6 Adio e Subtraco de Matrizes

Figura 1.10 Exemplo de adio e subtraco de matrizes

Exemplo 1.7 Multiplicao de Matrizes

Figura 1.11 Exemplo de multiplicao de matrizes

Introduo ao Matlab

I.S.E.L.
D.E.E.A.
Diviso

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Na realidade a diviso a melhor soluo encontrada num sistema linear. Existe a diviso esquerda e direita. X = A \ B equivalente a X = inv(A)*B. a soluo de AX=B; X = A / B equivalente a X = A*inv(B). a soluo de XA=B; Exemplo 1.8 Diviso da matriz A pela matriz B

Figura 1.12 Exemplo diviso de matrizes

Potncia Para realizar potncia de matrizes, a matriz tem de ser quadrada. Mas tambm se pode aplicar a potncia a elementos de uma matriz. Considere a=[2 6 4; 3 2 1; 9 5 7]. Exemplo 1.9 a^2 equivalente a a*a

Figura 1.13 Potncia de matrizes

Introduo ao Matlab

10

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Exemplo 1.10 Elevar os elementos da matriz a, a uma potncia de 2

Figura 1.14 Potncia de elementos de uma matriz

1.6 Funes trigonomtricas e matemticas


O Matlab apresenta um conjunto de funes j programadas. De seguida apresentam-se algumas dessas funes. Quadro 1.2 Funes trigonomtricas e matemticas Funes Trigonomtricas sin Seno cos tan asin acos atan sinh cosh tanh asinh acosh atanh Cosseno Tangente Arco-seno Arco-cosseno Arco-tangente Seno hiperblico Cosseno hiperblico Tangente hiperblica Arco-seno hiperblico Arco-cosseno hiperblico Arco-tangente hiperblico Funes Matemticas Elementares abs valor absoluto angle sqrt real imag conj exp log log10 sign ngulo de fase raiz quadrada parte real parte imaginria complexo conjugado exponencial base e logaritmo natural logaritmo base 10 funo sinal

Introduo ao Matlab

11

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Exemplo 1.11 Funes seno, cosseno, logaritmo natural e de base 10 O Matlab por definio trabalha com radianos, portanto para se trabalhar em graus, tem de se multiplicar por (2*pi/360),

Figura 1.15 Clculo de seno e cosseno

Figura 1.16 Clculo de logaritmo natural e de base 10

1.7 Polinmios
Os polinmios representam-se na forma de vectores estando os coeficientes ordenados por decrescente de potncia. Exemplo 1.12 Calcule as razes do seguinte polinmio x2+3x+2

Figura 1.17 Clculo das razes de um polinmio de segunda ordem

O comando roots calcula as razes do polinmio. O comando poly usado para formar um polinmio a partir do conhecimento de razes. Retorna os coeficientes na forma de vector linha. Exemplo: p=poly([-2 -1]) resulta em p = 1 3 2
Introduo ao Matlab 12

I.S.E.L.
D.E.E.A.
Exerccio:
Considere,

Seco de Controlo

Ref.: Introduo ao Matlab

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

3 1 4 A= 2 0 1 1 2 2
resolva: a) 2A e) AB

0 2 1 B = 3 1 1 2 4 1

b) A+B f) BA

c) 2A-3B g) ATBT

d) (2A)T-(3B)T h) (BA)T

Introduo ao Matlab

13

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Manipulao Grfica

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Captulo 2 Manipulao Grfica


O Matlab tem uma capacidade grfica muito poderosa, sendo por isso utilizado na rea cientfica e na rea da engenharia.

2.1 Criar grficos a 2 dimenses


Existem vrias instrues para criar grficos, de seguida apresenta-se um quadro com algumas dessas instrues: Quadro 2.1 Instrues para criao de grficos plot(x,y) loglog(x,y) Grfico linear x-y Grfico loglog x-y polar( , ) bar(x,y) hist(x,n) pie(x) Grfico polar Grfico de barras Histograma com n classes Grfico em forma de bolo (%)

semilogx(x,y) Grfico semi-logartmico (x-log) semilogy(x,y) Grfico semi-logartmico (y-log)

Exemplo 2.1 Criao de grficos com uma e duas linhas Introduza as seguintes instrues no command window: t=(0:pi/36:2*pi); y1=2*sin(6*t); y2=3*cos(2*t); Para traar o grfico em funo de y1, introduza a instruo plot(t,y1),para traar o grfico em funo de y1 e y2, introduza a instruo plot(t,y1,t,y2) ou plot(t, [y1 y2]). As respectivas figuras apresentam-se de seguida:

Figura 2.1 Visualizao de y1 em funo de t

Figura 2.2 Visualizao de y1e y2 em funo de t

2.2 Aperfeioamento de grficos


Os grficos quando apresentados, devem conter toda a informao necessria referente figura, ou seja, ttulo, identificao dos eixos, etc., e por uma questo de visualizao podemos querer mudar o tipo e a cor da linha. A introduo da informao no grfico e as alteraes do mesmo podem ser feitas de duas formas, a primeira atravs dos menus existentes na janela da figura, por exemplo, para introduzir o ttulo da figura, faz-se InsertTitle. A segunda forma atravs do uso de instrues e opes existentes no Matlab.
Manipulao Grfica 14

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Manipulao Grfica

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

De seguida apresentam-se dois quadros, o primeiro referente introduo de informao e o segundo referente s alteraes. Quadro 2.2 Instrues para introduo de informao no grfico title(Ttulo) xlabel(x) ylabel(y) text(x,y,texto) Titulo do grfico Legenda do eixo xx Legenda do eixo yy Coloca texto posio (x,y) na gtext(texto) grid on grid off subplot(m,n,p) Posiciona de texto com o rato Coloca grelhas Retira grelhas Coloca vrios mesma janela grficos numa

Quadro 2.3 Opes para alterao no grfico Tipos de linha Slida Tracejado 2 Pontos Trao-ponto -: -. Ponto Circulo Marca x Mais Estrela Quadrado Diamante Estilos . + s d Cor Amarelo Vermelho Verde Azul Branco Preto Magenta y r g b w k m

Exemplo 2.2 Grfico com identificao e alterao das linhas A linha da curva y1 slida, de cor preta e marca nos pontos. A linha da curva y2 slida, de cor vermelha e marca + nos pontos. O grfico est identificado com o ttulo e com os eixos de referncia.

Figura 2.3 M-file do grfico X-Y

Figura 2.4 Visualizao de y1e y2 com as respectivas alteraes

Manipulao Grfica

15

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Manipulao Grfica

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Exemplo 2.3 Janela com vrios grficos A instruo subplot(m,n,p) mostra vrios grficos em apenas uma janela. Divide a janela em m por n janelas e p indica qual a sub-janela onde vai ser colocado o grfico. As janelas so numeradas da esquerda para a direita e de cima para baixo.

Figura 2.5 Exemplo de M-file utilizando a instruo subplot

Figura 2.6 Janela com dois grficos

O primeiro grfico situa-se na coordenada (211), ou seja, o grfico tem 2 linhas, 1 coluna e vai-se situar na 1 posio. O segundo grfico situa-se na coordenada (212), ou seja, o grfico tem 2 linhas, 1 coluna e vai-se situar na 2 posio.

Manipulao Grfica

16

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Captulo 3 Funes de Transferncia


O Matlab em conjunto com a toolbox de controlo de sistemas, torna-se bastante til na anlise e simulao de sistemas, atravs do uso de funes de transferncia. Tem de se ter em ateno que as funes de transferncia tm de estar na forma polinomial

3.1 Funes de Transferncia no Matlab 3.1.1 Representao das funes de transferncia


Para podermos manusear as funes de transferncia, ela tm de estar representadas segundo um formato especfico. Sendo G(s) a funo de transferncia apresentada na seguinte forma (m zeros e n plos):

G (s ) =

B(s ) b 0 s m + b1s m 1 + + b m 1s + b m = X(s ) a 0 s n + a 1s n 1 + + a n 1s + a n

ser representada no Matlab por dois vectores, contendo os coeficientes do numerador e do denominador, na forma descendente de potncia: B = [b0 b1 bm-1 bm] A = [a0 a1 an-1 an] Exemplo 3.1 Introduo de uma funo transferncia no Matlab Considere a seguinte F.T: G (s) =

s2 + 1 , no Matlab o resultado ser: s 3 + 2s 2 + 3s + 4

Figura 3.1 Introduo de uma funo de transferncia

Nota: Uma vez que o numerador no tem termo em s, tem de se colocar um zero nesse lugar.

3.1.2 Encontrar plos e zeros


Uma vez que os plos e zeros so simplesmente as razes do denominador e numerador respectivamente, podemos calcular as razes de um sistema atravs do comando roots. Considere o exemplo 3.1 e calcule os plos e zeros da F.T

Funes de Transferncia

17

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

zeros=roots(gnum) zeros = 0 + 1.0000i 0 - 1.0000i

poles=roots(gden) poles = -1.6506 -0.1747 + 1.5469i -0.1747 - 1.5469i

3.2 Modelos LTI (Linear Time Invariant)


Podemos especificar sistemas lineares invariantes no tempo como funes de transferncia, modelo de espao de estados, modelos zero-plo-ganho e modelos de resposta em frequncia. Para tal podemos usar as seguintes instrues: sys = tf(num,den) sys = zpk(z,p,k) sys = ss(a,b,c,d) sys = frd(response, frequencies) %transfer function %zero/plo/ganho %state space %frequency response data

Exemplo 3.2 Escreva no command window, h = tf(1, [1 1]) O resultado ser: Transfer function: 1 ----s+1

Exemplo 3.3 Introduo de um sistema na forma zero/plo/ganho (ZPK) A funo de transferncia tambm pode ser introduzida na seguinte forma:

G (s) =

(s Z(1))(s Z(2)) (s Z(m )) Z(s) =k (s p(1))(s p(2)) (s p(n )) p(s)


z=[-2]; p=[-1 -3]; sys=zpk(z,p,k)

Introduza no command window: k=[1]; O resultado ser: Zero/pole/gain: (s+2) ----------(s+1) (s+3)

Exemplo 3.4 Introduo de um sistema na forma de espao de estados (SS) O sistema na forma de variveis de estado pode ser representado na seguinte forma,

= AX + BU X Y = CX + DU
As matrizes A, B, C e D so facilmente representadas no Matlab, como se verifica a seguir:
Funes de Transferncia 18

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Figura 3.2 M-File com introduo de sistema na forma SS

Figura 3.3 Resposta a um escalo

3.3 Converso entre os vrios modelos


Por vezes pode ser necessrio passar de um modelo para outro de modo a facilitar a anlise de um sistema, para tal, podemos usar funes existentes no Matlab, tais como: ss2tf Converso de espaos de estado para funo de transferncia, ss2zp Converso de espao de estados para zero/plo/ganho, tf2ss Converso de funo de transferncia para espao de estados, zp2tf Converso de zero/plo/ganho para funo de transferncia, zp2ss Converso de zero/plo/ganho para espao de estados, Exemplo 3.5 Converso de espao de estados para funo de transferncia

Figura 3.4 M-File utilizando a converso ss2tf

Figura 3.5 Resultado do exemplo

Exerccio:
que Y(s)=G(s)*U(s), a F.T. pode ser descrita da seguinte forma: G (s) = C(sI A) B + D , calcule G(s) atravs da lgebra de matrizes e confirme o resultado.
1

1.

Sabendo

Funes de Transferncia

19

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

3.4 Converso entre modelos contnuos e discretos


c2d Converso de contnuo para discreto, d2c Converso de discreto para contnuo, c2dt Converso de discreto para contnuo com atraso, A instruo sysd=c2d(sys,ts,metodo) converte um modelo no domnio contnuo para o domnio discreto, com um tempo de amostragem ts e o mtodo de discretizao mais utilizado o de ordem zero (zoh). sys=tf(gnum,gden) Transfer function: s^2 + 1 --------------s^2 + 0.3 s + 1 sysd=c2d(sys,0.5,'zoh') Transfer function: z^2 - 1.767 z + 0.9943 ---------------------z^2 - 1.633 z + 0.8607

3.5 Construo de sistemas


Existem vrios comandos que servem para efectuar ligaes entre os diversos blocos de um sistema. Esses comandos so: series feedback parallel append ord2 Liga duas F.T em srie Liga duas F.Ts em retroaco Liga duas F.T.s paralelamente Faz a concatenao de vrios sistemas simples Gera um sistema de 2 ordem a partir da frequncia natural e o factor de amortecimento

Exemplo 3.6 Associao de duas F.Ts em srie

Figura 3.6 M-File da associao srie

Figura 3.7 Resultado da associao srie

Funes de Transferncia

20

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

3.6 Grficos para anlise das funes de transferncia


Existem vrios comandos para fazer a anlise de uma funo de transferncia, os mais utilizados so: rlocus bode nyquist margin Grfico do diagrama do lugar geomtrico das razes Grfico do diagrama de Bode (amplitude e fase) Grfico de Nyquist Margem de ganho e de fase

Exemplo 3.7 Anlise da resposta em frequncia atravs do Diagrama de Bode

Figura 3.8 M-File de um exemplo de diagrama de Bode

Figura 3.9 Diagrama de Bode de amplitude e fase do sistema anterior

Funes de Transferncia

21

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

3.7 Simulao da resposta de um sistema


Existem vrios algoritmos disponveis para ajudar a caracterizar a resposta de um sistema a uma determinada entrada. Existem trs comandos principais que podemos usar: step impulse lsim Determina a resposta de um sistema a uma entrada escalo Determina a resposta de um sistema a uma entrada impulso Simulao contnua face a condies iniciais arbitrrias

Figura 3.10 M-File de uma entrada escalo

Figura 3.11 Resposta de um sistema a uma entrada escalo

Funes de Transferncia

22

I.S.E.L.
D.E.E.A.
Exerccio:

Seco de Controlo

Ref.: Funes de Transferncia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Imagine que tem a seguinte funo de transferncia: G (s) =

s+5 . s + 4,01s + 13,04s + 0,13


3 2

a) Calcule o root locus; b) Calcule o diagrama de bode de cadeia aberta; c) Simule a resposta de cadeia fechada deste sistema a uma entrada escalo, considere retroaco unitria;

Funes de Transferncia

23

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Simulink

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Captulo 4 Simulink 4.1 Introduo ao Simulink


O Simulink uma extenso do Matlab que permite a construo e a simulao de sistemas. Os modelos do Simulink so criados tal como os diagramas de blocos, ou seja, atravs da ligao de blocos e subsistemas. Para se dar inicio ao Simulink, clica-se uma vez no smbolo indicado a seguir:

Figura 4.1 cone do Simulink

4.2 Estrutura do Simulink


Para podermos usar o Simulink de forma eficiente, temos de compreender a forma como o programa est estruturado.

Blocos

Os blocos do Simulink so subsistemas com entradas e sadas e dentro do bloco, existem algumas regras relativas s entradas e s sadas. Os blocos correspondem a vrias categorias (modelos contnuos, discretos, funes matemticas, etc.) e cada bloco tem vrios sub-blocos que realizam tarefas especficas.

Figura 4.2 Janela com os vrios blocos

Figura 4.3 Sub-bloco continuous

Simulink

24

I.S.E.L.
D.E.E.A.
Modelos

Seco de Controlo

Ref.: Simulink

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Um modelo do Simulink um agrupamento de blocos individuais ligados entre si de forma a simular um determinado modelo ou tarefa.

Figura 4.4 Exemplo de um modelo

Figura 4.5 Resultado do exemplo_modelo

Workspace

O workspace utilizado no Matlab importante no Simulink. Permite criar uma interface com o Simulink de forma a recolher informao e dados para mais tarde poderem ser manipulados. No workspace tambm podem ser controladas variveis de simulao importantes.

Simulao

Para se levar a cabo a simulao de um diagrama de blocos, tem de se escolher um mtodo de integrao. Essa escolha depende do tipo de sistema a ser simulado.

4.3 Construo de um modelo no Simulink


1. Para criar um modelo clica-se na folha branca que aparece na figura 4.2 ou ento clica-se em FileNewModel. A partir daqui abre-se uma janela (Model Window) e estamos prontos a construir um modelo. 2. Para colocar os blocos pretendidos na janela, basta arrast-los do Simulink Library Browser e coloc-los dentro da janela. 3. Se houver necessidade de copiar vrias vezes o mesmo bloco, basta clicar com o boto do lado direito em cima do bloco pretendido, arrastar para outra rea da janela e largar. 4. Para apagar um bloco, basta clicar com o boto do lado esquerdo em cima do bloco e apagar com a tecla delete.
Simulink 25

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Simulink

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

5. Para ligar os blocos, clique na seta de sada do 1 bloco e arraste a cruz at entrada do 2 bloco, quando a cruz ficar na forma de dupla cruz largue o boto e est feita a ligao. Se a cruz for largada a meio, fica na forma de uma seta vermelha, apague a ligao e volte a tentar. 6. Para alterar o nome dos blocos, basta clicar uma vez no texto em baixo do bloco e escrever o novo nome. Cada bloco tem de ter um nome e tem de ser nico.

Exerccio: Construa o seguinte modelo,

Figura 4.6 Modelo personalizado

4.4 Simulao de modelos


Nesta seco iremos explicar os passos necessrios para a realizao de uma simulao.

Alterao dos parmetros dos blocos

Cada bloco tem um conjunto de parmetros que podem ser alterados, para se proceder sua alterao clica-se duas vezes com o boto do lado esquerdo no bloco pretendido e aparece uma janela com o nome block parameters: nome do bloco. Por exemplo, vejamos os parmetros do bloco gerador de sinais:

Figura 4.7 Parmetros do bloco gerador de sinais

Podemos ver que existem vrias opes de escolha referente forma de onda, podemos alterar a amplitude e a frequncia da onda, etc.
Simulink 26

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Simulink

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Controlar a simulao

Antes de se dar incio a uma simulao, convm escolher os parmetros de simulao adequados, tais como: tempo de simulao, o mtodo de resoluo das equaes algbricodiferenciais (o ode45 o mais utilizado), etc. Para tal selecciona-se SimulationSimulation parameters e de seguida aparece a seguinte janela:

Figura 4.8 Parmetros de simulao

Depois de procedermos configurao dos parmetros, podemos dar incio simulao, para tal selecciona-se SimulationStart ou ento clica-se em , para parar a simulao clica-se em .

4.5 Utilizao do Workspace


Nesta seco iremos demonstrar como se passa informao do Simulink para o Matlab e vice-versa. Para exemplificar iremos criar um novo modelo.

Figura 4.9 Modelo em que a sada vai para o workspace

Simulink

27

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Simulink

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Considere as seguintes alteraes de parmetros: 1. Bloco Signal Generator (sources), escolha a onda quadrada com amplitude 1 e frequncia 0.5 rad/sec; 2. Bloco Sum (math), coloque + -; 3. Bloco Gain (math), coloque 5; 4. Bloco Transfer fcn (continuous), numerador com [1 5] e denominador com [1 4 13 0]; 5. Bloco Mux(signal routing), serve para associar mais uma matriz a apenas uma varivel, ou seja, a varivel y vai mostrar dois sinais. 6. Bloco To Workspace (sinks), mude o nome da varivel para y e o formato para array. Corra a simulao, automaticamente o tempo total de simulao guardado na varivel tout , no command window escreva plot(tout,y). O resultado ser:

Figura 4.10 Resultado da simulao do modelo da figura 4.9

4.6 Criao de subsistemas


Quando temos sistemas grandes, convm transform-los em sistemas mais pequenos, ou seja, subsistemas, para ser mais fcil a sua visualizao e compreenso. Considere o modelo da figura 4.9: 1. Seleccione todos os blocos excepo da entrada e da sada; 2. Seleccione EditCreate subsystem e ento o novo modelo fica com o seguinte aspecto:

Simulink

28

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Simulink

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Figura 4.11 Novo modelo com a introduo de um subsistema

3. Para visualizar o que est dentro do subsistema, basta clicar duas vezes em cima do bloco subsystem:

Figura 4.12 Modelo contido no subsistema

Simulink

29

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Resultados dos exerccios

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Captulo 5 Resultado dos exerccios Resultados do captulo 1


Pgina 6, 1b) Aparece no command window : f(t)tem uma raiz no intervalo [0,1]. e a seguinte figura:

1c) Aparece no command window : f(t) nao tem raizes no intervalo [0,1]. e a seguinte figura:

1d) Aparece no command window : Foi encontrada uma raiz exacta de f(t) no intervalo [0,1]. e a seguinte figura:

Resultado dos exercicios

30

I.S.E.L.
D.E.E.A.
6

Seco de Controlo

Ref.: Resultados dos exerccios

Laboratrio de Controlo de Sistemas


2 8 4 4

Data: Setembro 2006

Pgina 13, a) 4 0 2
2 15 11 4 3 1 6 6 8

b) 5
3

1 6 1 2 2 3

c) 5

2 3 1 4 16 1 2

d) 2 3 16 2 1 1

e) 0

5 8 5 f) 10 1 9 15 4 6

5 10 15 g e h) 5 1 4 8 9 6

Resultados do captulo 3
Pgina 19,

0.3 1 A= 0 1

1 B= 0

C = [0 1]

Sabendo que G (s) = C

adj(sI A) B: det(sI A)

s + 0.3 1 sI A = s 1

det(sI A) = s 2 + 0.3s + 1

1 s adj(sI A) = 1 s + 0.3

G (s) =

1 1 s 1 [ ] 0 1 1 s + 0.3 0 s 2 + 0.3s + 1 1 1 [1 s + 0.3] = 2 0 s + 0.3s + 1 1 = 2 s + 0.3s + 1

Resultado dos exercicios

31

I.S.E.L.
D.E.E.A.

Seco de Controlo

Ref.: Resultados dos exerccios

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Pgina 23, a) Aparece a seguinte figura:

b)

Resultado dos exercicios

32

I.S.E.L.
D.E.E.A.
c)

Seco de Controlo

Ref.: Resultados dos exerccios

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

Resultados do captulo 4
Pgina 26, Bloco Signal Generator (sources), Bloco Gain (math) Bloco Mux(signal routing), Bloco Scope (sinks)

Resultado dos exercicios

33

I.S.E.L.
D.E.E.A.
Bibliografia

Seco de Controlo

Ref.: Bibliografia

Laboratrio de Controlo de Sistemas

Data: Setembro 2006

1. Martins, F. G..; Pronturio do MATLAB , FEUP Edies , 2003 2. Graig, Kevin.; Matlab tutorials for mechatronics;

Bibliografia

34