Você está na página 1de 12

Instrumentao e Controle

Prof. Rodrigo Miranda 1



COMANDOS MATLAB

Principais funes relacionadas
1
:
Seja:
G(s)
X(s) Y(s)

) ( ) ( ) ( s X s G s Y =
Onde G(s) uma funo transferncia com numerador e denominador:
) (
) (
) (
s D
s N
s G =
Onde: N(s) o numerador da funo transferncia e D(s) o denominador da funo
transferncia.

a) Como definir uma funo transferncia no MATLAB?
Exemplo: Definindo
6 11 6
3 5 0 0
6 11 6
3 5
) (
2 3
3
2 3
+ + +
+ + +
=
+ + +
+
=
s s s
s s s
s s s
s
s G
Existem duas maneiras distintas de se definir uma Funo de Transferncia no MATLAB.

1. Armazenar os coeficientes do numerador e denominador em vetores separados:
>> num = [0 0 5 3]
num =
0 0 5 3
>> den = [1 6 11 6]
den =
1 6 11 6

2. Trabalhar diretamente com a letra s utilizada para representar a Transformada
de Laplace:
>> s = tf('s')
Transfer function:
s
>> G =(5*s+3)/(s^3+6*s^2+11*s+6)

1
Obs.: antes de executar qualquer funo, verifique o que ela significa com o comando
>> help NOME_DA_FUNO <ENTER> ou >>doc NOME_DA_FUNO <ENTER>


Instrumentao e Controle

Prof. Rodrigo Miranda 2

Transfer function:
5 s + 3
----------------------
s^3 + 6 s^2 + 11 s + 6

b) Comando printsys exibe a funo transferncia do sistema:
>> printsys(num,den)
num/den =
5 s + 3
----------------------
s^3 + 6 s^2 + 11 s + 6
>> printsys([1],[1 0 0])
num/den =
1
---
s^2

c) Comando roots calcula as razes de um polinmio:
>> zeros_sistema = roots(num) % razes do numerador ou zeros do sistema
zeros_sistema =
-0.6000
>> polos_sistema = roots(den) % razes do denominador ou plos do sistema
polos_sistema =
-3.0000
-2.0000
-1.0000

d) Comando pole e zero se a Funo de Transferncia foi definida usando-se o
operador de Laplace (s), os comandos acima so utilizados para clculo dos plos e
zeros respectivamente:
>> polos_sistema = pole(G)
polos_sistema =
-3.0000
-2.0000
-1.0000
>> zeros_sistema zero(G)
zeros_sistema =
-0.6000

Instrumentao e Controle

Prof. Rodrigo Miranda 3

e) Comando pzmap Exibe graficamente o mapa de plos e zeros da funo
transferncia. Ocorre a utilizao do plano complexo de coordenadas, os zeros so
indicados como O e os plos so indicados por X
2
.
>> num = [1 36];
>> den = [1 4.8 36];
>> pzmap(num,den)

f) Comando residue realiza a decomposio em fraes parciais. Os coeficientes so
retornados de acordo com a ordem dos plos obtidos no comando roots. Se ocorrer
multiplicidade os resduos aparecem em ordem CRESCENTE de expoente (VIDE
HELP)
3
.
1 2 3
) (
6 11 6
3 5
) (
3 2 1
2 3
+
+
+
+
+
=
+ + +
+
=
s
J
s
J
s
J
s G
s s s
s
s G

>> J = residue(num,den)
J =
-6.0000
7.0000
-1.0000

g) Comando series calcula o resultado do produto entre duas funes transferncia:
?? ) (
2
5
1
1
) (
=
+

+
=
s G
s s
s G

>> num1 = [1]; den1 = [1 1];
>> printsys(num1,den1) % exibe o sistema, s para conferir
num/den =
1
-----
s + 1
>> num2 = [5]; den2 = [1 2];
>> printsys(num2,den2) % exibe o sistema, s para conferir



2
Tambm funciona diretamente com Funes de Transferncia. Faa esse exerccio!
3
Comando residue no pode ser utilizado diretamente com Funes de Transferncia.

Instrumentao e Controle

Prof. Rodrigo Miranda 4

num/den =
5
-----
s + 2
>> [num3,den3] = series(num1,den1,num2,den2);
>> printsys(num3,den3) % exibe o resultado
num/den =
5
-------------
s^2 + 3 s + 2


Tambm pode ser feito atravs da utilizao de Funes de Transferncia:
>> s = tf('s')
Transfer function:
s
>> g1=1/(s+1)
Transfer function:
1
-----
s + 1
>> g2=5/(s+2)
Transfer function:
5
-----
s + 2
>> g3=series(g1,g2)
Transfer function:
5
-------------
s^2 + 3 s + 2


Instrumentao e Controle

Prof. Rodrigo Miranda 5

h) Comando parallel calcula o resultado da soma de duas funes transferncia
4

?? ) (
2
5
1
1
) (
=
+
+
+
=
s G
s s
s G


>> num1 = [1]; den1 = [1 1];
>> printsys(num1,den1) % exibe o sistema, s para conferir
num/den =
1
-----
s + 1
>> num2 = [5]; den2 = [1 2];
>> printsys(num2,den2) % exibe o sistema, s para conferir
num/den =
5
-----
s + 2
>> [num3,den3] = parallel(num1,den1,num2,den2)
>> printsys(num3,den3)
num/den =

6 s + 7
-------------
s^2 + 3 s + 2


4
Tambm funciona diretamente com Funes de Transferncia. Faa esse exerccio!

Instrumentao e Controle

Prof. Rodrigo Miranda 6

i) Comando feedback calcula a funo transferncia equivalente a um lao com
realimentao (padro: supe realimentao negativa)
5




??
) ( ) ( 1
) (
2
5
) ( ;
1
1
) (
=
+
+
=
+
=
s H s G
s G
s
s H
s
s G


>> num1 = [1]; den1 = [1 1];
>> num2 = [5]; den2 = [1 2];
>> [num3,den3] = feedback(num1,den1,num2,den2)
>> printsys(num3,den3)
num/den =

s + 2
-------------
s^2 + 3 s + 7


5
Tambm funciona diretamente com Funes de Transferncia. Faa esse exerccio!

Instrumentao e Controle

Prof. Rodrigo Miranda 7

j) Comando impulse calcula a resposta ao impulso do sistema, ou seja, gera a funo
y(t) a partir de Y(s) supondo a entrada X(s) ser a transformada do impulso unitrio. A
transformada de Laplace do impulso unitrio igual a 1.

1 ) ( ) (
) ( ) ( ) (
=
=
s G s Y
s X s G s Y

>> num = [36];
>> den = [1 4.8 36];
>> t = linspace(0,3,100); % gera o vetor de tempo
>> y = impulse(num,den,t); % calcula o grfico de y
>> stem(0,1,'r') % exibe grfico discreto mostra a entrada ao impulso no
grfico
>> hold on % segura o grfico
>> grid on % ativa linhas de grade
>> plot(t,y) % exibe grfico contnuo
>> legend('Impulso Unitrio','Resposta ao Impulso') % insere legenda

Tambm pode ser feito atravs da utilizao de Funes de Transferncia:
>> s = tf('s')
Transfer function:
s
>> G=36/(s^2+4.8*s+36)

Transfer function:
36
----------------
s^2 + 4.8 s + 36
>> t = linspace(0,3,100);
>> y=impulse(G,t); % calcula o grfico de y
>> stem(0,1,'r') % exibe grfico discreto mostra a entrada ao impulso no
grfico
>> hold on % segura o grfico
>> grid on % ativa linhas de grade
>> plot(t,y) % exibe grfico contnuo
>> legend('Impulso Unitrio','Resposta ao Impulso') % insere legenda

Instrumentao e Controle

Prof. Rodrigo Miranda 8

k) Comando step calcula a resposta ao degrau do sistema, ou seja, gera a funo y(t) a
partir de Y(s) supondo a entrada X(s) ser a transformada do degrau unitrio
6
. A
transformada de Laplace do degrau unitrio igual a
s
1
.
s
s G s Y
s X s G s Y
1
) ( ) (
) ( ) ( ) (
=
=


>> num = [36];
>> den = [1 4.8 36];
>> t = linspace(0,3,100); % gera o vetor de tempo
>> y = step(num,den,t); % calcula o grfico de y
>> degrau = ones(size(t)); % cria o vetor degrau
>> plot(t,degrau,'r') % exibe o degrau em vermelho
>> hold on % segura o grfico
>> grid on % ativa linhas de grade
>> plot(t,y)
>> legend('Degrau','Resposta ao Degrau') % insere legenda

IMPORTANTE: Como calcular resposta rampa? x(t) = t ou
2
1
) (
s
s X = . Basta multiplicar o
denominador por s e executar o mesmo comando da resposta ao degrau.

>> num = [36];
>> den = [1 4.8 36 0]; % denominador multiplicado por 's'
>> t = linspace(0,3,100); % gera o vetor de tempo
>> y = step(num,den,t); % calcula o grfico de y
>> plot(t,t,'r') % exibe a rampa em vermelho
>> hold on % segura o grfico
>> grid on % ativa linhas de grade
>> plot(t,y)
>> legend('Rampa','Resposta Rampa') % insere legenda



6
Tambm funciona diretamente com Funes de Transferncia. Faa esse exerccio!

Instrumentao e Controle

Prof. Rodrigo Miranda 9

l) Comando lsim calcula a resposta do sistema a qualquer sinal de entrada X(s)
7


>> num = [36];
>> den = [1 4.8 36];
>> t = linspace(0,3,100); % gera o vetor de tempo
>> x1 = sawtooth(2*pi*1.5*t); % funo que gera onda triangular
>> plot(t,x1,'r') % exibe o grfico da onda triangular
>> grid on;
>> hold on;
>> y1 = lsim(num,den,x1,t); % simula o sistema
>> figure(1)
>> plot(t,y1) % exibe a simulao do sistema
>> legend('Onda Tringular','Resposta do Sistema') % exibe legenda


>> x2 = square(2*pi*1.5*t); % funo que gera onda quadrada
>> y2 = lsim(num,den,x2,t);
>> figure(2)
>> plot(t,x2,'r') % exibe o grfico da onda quadrada
>> hold on; grid on;
>> plot(t,y2)
>> legend('Onda Quadrada','Resposta do Sistema')
>> axis([0 3 -1.5 1.5]) % [XMIN XMAX YMIN YMAX]



7
Tambm funciona diretamente com Funes de Transferncia. Faa esse exerccio!

Instrumentao e Controle

Prof. Rodrigo Miranda 10

EXERCCIOS:

1. Simular a resposta ao impulso para o sistema de 1.a ordem:
t a
e t y
a s
s G
Para
s G s Y
s X s G s Y

=

=
=
=
) (
1
) (
:
1 ) ( ) (
) ( ) ( ) (

>> a = 5;
>> t = linspace(0,3,100); % gera o vetor de tempo
>> y1 = impulse([1],[1 -a],t);%ou y1 = exp(-a*t);%funo exponencial

a) Simule alguns grficos para valores de a > 0;
b) Simule alguns grficos para valores de a < 0;

2. Repita o exerccio anterior, mas aplicando uma entrada em degrau. Calcule a
Transformada Inversa de Laplace.

3. Simular a resposta ao impulso e ao degrau para o sistema de 2.a ordem (obs.: no
necessrio calcular a transformada inversa):
) )( (
1
) (
:
1 ) ( ) (
) ( ) ( ) (
b s a s
s G
Para
s G s Y
s X s G s Y

=
=
=

a) a e b reais, idnticos e menores que zero (ex.: a = -1 e b = -1)
b) a e b reais, distintos e menores que zero (ex.: a = -1 e b = -2)
c) a e b nulos (a = 0 e b = 0)
d) a e b reais, idnticos e maiores que zero (ex.: a = 1 e b = 1)
e) a e b reais, distintos e maiores que zero (ex.: a = 1 e b = 2)
f) a e b complexos conjugados, com parte real idntica e menor que zero (ex.: a = -1
+ 1*i e b = -1 - 1*i)
g) a e b reais e distintos, um negativo e outro positivo (ex.: a = -2 e b = 1)
h) a e b complexos conjugados de parte real nula (ex.: a = 0 + 1*i e b = 0 - 1*i)
i) a e b complexos conjugados, com parte real idntica e maior que zero (ex.: a = 1 +
1*i e b = 1 - 1*i)

Instrumentao e Controle

Prof. Rodrigo Miranda 11

Quem interfere na oscilao? A parte real ou imaginria? Quando aumenta? Quando
diminui?
Existe diferena entre o sistema com a e b reais e iguais e o sistema de 1.a ordem?
Quem interfere no decaimento/crescimento exponencial? A parte real ou imaginria?
Quando aumenta? Quando diminui?

4. Simular a resposta ao degrau para o sistema de 1.a ordem
1
) (
+
=
s
K
s G
t


a) Para = 1, varie K de 0 a 10 e observe os resultados
b) Para K = 1, varie de 0.1 at 10 e observe os resultados

possvel obter K e T a partir do grfico?

5. Simular a resposta ao degrau para o sistema de 2.a ordem
2 2
2
2
) (
n n
n
w s w s
w
s G
+ +
=
,

a) Para
5 , 0 = ,
, varie
n
w
de 0 a 50 e observe os resultados
b) Para
1 =
n
w
, varie , de 0.01 at 3 e observe os resultados

6. Crie funes no MATLAB para calcular os seguintes critrios de desempenho da
resposta ao degrau para um sistema de 2.a ordem sub-amortecido (, < 1). Obs.: Antes
de tudo, simule um sistema semelhante ao da questo 5.

a) U.P. (ultrapassagem percentual ou sobre-sinal/overshoot)
c) U.P = 100*(VALOR_MXIMO VALOR_FINAL)/VALOR_FINAL
d) Tempo de acomodao (Ts) Tempo que a sada do sistema leva para entrar na
faixa de 2% do valor final e no sair mais.
e) Tempo de pico (Tp) Tempo que a sada leva para alcanar seu valor mximo
f) Erro em estado estacionrio (ess) Depois de decorrido Ts, a diferena absoluta
entre o valor do degrau e o valor da sada (desejvel < 2 % do valor do degrau).

Instrumentao e Controle

Prof. Rodrigo Miranda 12

g) ITAE Somatrio do erro absoluto do erro vezes o tempo. (dica: crie um vetor
para calcular o valor absoluto do erro entre setpoint (X(s)) menos sada (Y(s))
ponto a ponto, faa o produto entre erro e tempo. A soma de todos os valores no
vetor resultante definido como ITAE).
h) Calcule U.P. desse sistema e tente recuperar o valor de
,
numericamente,
lembrando que:

2
1
100 . .
,
t,

= e P U


i) Baseado no T
s
e , encontrados numericamente, obtenha w
n
. Lembrando que:

n
s
w
T
,
4
~