You are on page 1of 12

Instrumentação e Controle

Prof. Rodrigo Miranda 1

COMANDOS MATLAB

Principais funções relacionadas
1
:
Seja:
G(s)
X(s) Y(s)

) ( ) ( ) ( s X s G s Y · =
Onde G(s) é uma função transferência com numerador e denominador:
) (
) (
) (
s D
s N
s G =
Onde: N(s) é o numerador da função transferência e D(s) é o denominador da função
transferência.

a) Como definir uma função transferência 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 Função de Transferência 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 função, verifique o que ela significa com o comando
>> help NOME_DA_FUNÇÃO <ENTER> ou >>doc NOME_DA_FUNÇÃO <ENTER>


Instrumentação e Controle

Prof. Rodrigo Miranda 2

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

b) Comando printsys – exibe a função transferência 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 raízes de um polinômio:
>> zeros_sistema = roots(num) % raízes do numerador ou zeros do sistema
zeros_sistema =
-0.6000
>> polos_sistema = roots(den) % raízes do denominador ou pólos do sistema
polos_sistema =
-3.0000
-2.0000
-1.0000

d) Comando pole e zero – se a Função de Transferência foi definida usando-se o
operador de Laplace („s‟), os comandos acima são utilizados para cálculo dos pólos e
zeros respectivamente:
>> polos_sistema = pole(G)
polos_sistema =
-3.0000
-2.0000
-1.0000
>> zeros_sistema zero(G)
zeros_sistema =
-0.6000

Instrumentação e Controle

Prof. Rodrigo Miranda 3

e) Comando pzmap – Exibe graficamente o mapa de pólos e zeros da função
transferência. Ocorre a utilização do plano complexo de coordenadas, os zeros são
indicados como „O‟ e os pólos são indicados por „X‟
2
.
>> num = [1 36];
>> den = [1 4.8 36];
>> pzmap(num,den)

f) Comando residue – realiza a decomposição em frações parciais. Os coeficientes são
retornados de acordo com a ordem dos pólos obtidos no comando roots. Se ocorrer
multiplicidade os resíduos 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 funções transferência:
?? ) (
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
Também funciona diretamente com Funções de Transferência. Faça esse exercício!
3
Comando residue não pode ser utilizado diretamente com Funções de Transferência.

Instrumentação 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


Também pode ser feito através da utilização de Funções de Transferência:
>> 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


Instrumentação e Controle

Prof. Rodrigo Miranda 5

h) Comando parallel – calcula o resultado da soma de duas funções transferência
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
Também funciona diretamente com Funções de Transferência. Faça esse exercício!

Instrumentação e Controle

Prof. Rodrigo Miranda 6

i) Comando feedback – calcula a função transferência equivalente a um laço com
realimentação (padrão: supõe realimentação 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
Também funciona diretamente com Funções de Transferência. Faça esse exercício!

Instrumentação e Controle

Prof. Rodrigo Miranda 7

j) Comando impulse – calcula a resposta ao impulso do sistema, ou seja, gera a função
y(t) a partir de Y(s) supondo a entrada X(s) ser a transformada do impulso unitário. A
transformada de Laplace do impulso unitário é 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 gráfico de y
>> stem(0,1,'r') % exibe gráfico discreto – mostra a entrada ao impulso no
gráfico
>> hold on % segura o gráfico
>> grid on % ativa linhas de grade
>> plot(t,y) % exibe gráfico contínuo
>> legend('Impulso Unitário','Resposta ao Impulso') % insere legenda

Também pode ser feito através da utilização de Funções de Transferência:
>> 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 gráfico de y
>> stem(0,1,'r') % exibe gráfico discreto – mostra a entrada ao impulso no
gráfico
>> hold on % segura o gráfico
>> grid on % ativa linhas de grade
>> plot(t,y) % exibe gráfico contínuo
>> legend('Impulso Unitário','Resposta ao Impulso') % insere legenda

Instrumentação e Controle

Prof. Rodrigo Miranda 8

k) Comando step – calcula a resposta ao degrau do sistema, ou seja, gera a função y(t) a
partir de Y(s) supondo a entrada X(s) ser a transformada do degrau unitário
6
. A
transformada de Laplace do degrau unitário é 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 gráfico de y
>> degrau = ones(size(t)); % cria o vetor degrau
>> plot(t,degrau,'r') % exibe o degrau em vermelho
>> hold on % segura o gráfico
>> 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 gráfico de y
>> plot(t,t,'r') % exibe a rampa em vermelho
>> hold on % segura o gráfico
>> grid on % ativa linhas de grade
>> plot(t,y)
>> legend('Rampa','Resposta à Rampa') % insere legenda



6
Também funciona diretamente com Funções de Transferência. Faça esse exercício!

Instrumentação 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); % função que gera onda triangular
>> plot(t,x1,'r') % exibe o gráfico da onda triangular
>> grid on;
>> hold on;
>> y1 = lsim(num,den,x1,t); % simula o sistema
>> figure(1)
>> plot(t,y1) % exibe a simulação do sistema
>> legend('Onda Triângular','Resposta do Sistema') % exibe legenda


>> x2 = square(2*pi*1.5*t); % função que gera onda quadrada
>> y2 = lsim(num,den,x2,t);
>> figure(2)
>> plot(t,x2,'r') % exibe o gráfico 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
Também funciona diretamente com Funções de Transferência. Faça esse exercício!

Instrumentação e Controle

Prof. Rodrigo Miranda 10

EXERCÍCIOS:

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);%função exponencial

a) Simule alguns gráficos para valores de a > 0;
b) Simule alguns gráficos para valores de a < 0;

2. Repita o exercício 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.: não é
necessário 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, idênticos 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, idênticos 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 idêntica 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 idêntica e maior que zero (ex.: a = 1 +
1*i e b = 1 - 1*i)

Instrumentação e Controle

Prof. Rodrigo Miranda 11

 Quem interfere na oscilação? A parte real ou imaginária? Quando aumenta? Quando
diminui?
 Existe diferença 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 imaginária?
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

 É possível obter K e T a partir do gráfico?

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 funções no MATLAB para calcular os seguintes critérios 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 questão 5.

a) U.P. (ultrapassagem percentual ou sobre-sinal/overshoot)
c) U.P = 100*(VALOR_MÁXIMO – VALOR_FINAL)/VALOR_FINAL
d) Tempo de acomodação (Ts) – Tempo que a saída do sistema leva para entrar na
faixa de ± 2% do valor final e não sair mais.
e) Tempo de pico (Tp) – Tempo que a saída leva para alcançar seu valor máximo
f) Erro em estado estacionário (ess) – Depois de decorrido Ts, é a diferença absoluta
entre o valor do degrau e o valor da saída (desejável < 2 % do valor do degrau).

Instrumentação e Controle

Prof. Rodrigo Miranda 12

g) ITAE – Somatório do erro absoluto do erro vezes o tempo. (dica: crie um vetor
para calcular o valor absoluto do erro entre setpoint (X(s)) menos saída (Y(s))
ponto a ponto, faça 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
~