Funções de Transferência

Ver Todos os Exercícios

Teoria

Introdução

E aí, pequeno gafanhoto? Se você já passou por alguma disciplina de Controle, com certeza viu o que era uma função de transferência. Relembrando rapidamente, uma função de transferência é uma forma de representar a dinâmica de um sistema linear e invariante no tempo. Ela é a relação entre a transformada de Laplace do sinal de saída pela transformada de Laplace do sinal de entrada, com todas as condições iniciais nulas.

Para ilustrar essa definição, considere o diagrama de blocos abaixo:

Nele, a transformada de Lapalce do sinal de entrada é representada por X ( s ) , já a transformada do sinal de saída é representado por Y ( s ) . H ( s ) representa a função de transferência, dada por:

H s = Y ( s ) X ( s )

Funções de transferência são utilizadas na criação de controladores de sistemas como servomotores, suspensões ativas, circuitos elétricos, entre outros. Caso queira dar mais uma refrescada na memória, o Responde Aí tem um conteúdo completinho sobre Sistemas de Controle ;)

O MATLAB possui algumas funções para criar funções de transferência e modelar sinais de entrada. Na aula de hoje, você terá o prazer de conhecer algumas delas.

Criando uma função de transferência no MATLAB

No MATLAB, usamos a função t f para criar funções de transferência de tempo contínuo ou discreto no domínio da frequência (representado pela variável s da transformada de Laplace, para tempo contínuo). Nesta aula, veremos apenas funções de transferência de tempo contínuo, que podem ser criadas no MATLAB usando t f com a sintaxe:

s i s t e m a = t f ( n u m e r a d o r , d e n o m i n a d o r )

A função t f tem como entrada dois vetores, um contendo os coeficientes do numerador da função de transferência e outro contendo os coeficientes do denominador. t f retorna um objeto representando a função de transferência.

Vamos ver como a função t f funciona com um exemplo. Digamos que você queira entrar, no MATLAB, a função de transferência:

H s = 2 s + 1 4 s 2 + 2 s + 1

Em um novo script, crie dois vetores, um contendo os coeficientes do numerador e outro contendo os coeficientes do denominador:

Em seguida, entre com a função t f :

Utilizamos como entrada os vetores n u m e r a d o r e d e n o m i n a d o r e a função t f   vai nos retornar a função de transferência, armazenando-a na variável s i s t e m a .

Para ver a cara da função de transferência, rode o programa e imprima no Command Window a variável s i s t e m a :

Bem legal, né? O MATLAB já imprime ela bonitinha pra gente e indica que s i s t e m a representa uma função de transferência de tempo contínuo. Repare que, por padrão, o MATLAB adota a letra s na transformada de Laplace.

Função de transferência e sinais de entrada

Podemos ver a resposta de um sistema, tendo criado no MATLAB sua função de transferência usando o comando t f , considerando alguns sinais de entrada. Nesta aula, veremos três sinais de entrada diferentes: degrau unitário, impulso e entrada arbitrária.

Para ver a resposta ao degrau unitário, utilize o comando s t e p :

s t e p ( s i s t e m a )

Onde s i s t e m a é a função de transferência criada usando o comando t f . A função s t e p com a sintaxe acima plota o gráfico da resposta ao degrau unitário.

Para vermos como o s t e p funciona, vamos usar o script da seção anterior, com a função de transferência H s = 2 s + 1 4 s 2 + 2 s + 1 e que, por enquanto, tem as seguintes linhas de código:

Adicione ao script o comando:

Rode o programa e você verá este lindo gráfico:

Caso você queira um degrau de amplitude A em vez de 1 , você pode multiplicar a entrada de s t e p por A :

s t e p ( A * s i s t e m a )

Digamos que, no nosso exemplo, você queira usar um degrau de amplitude A = 2 em vez de um degrau unitário. Para ver a resposta do sistema, adicione no script a linha de código:

Rodando o programa, você terá um gráfico muito parecido com o de cima, mudando apenas a amplitude do sinal:

O comando s t e p também pode ter a seguinte sintaxe:

y = s t e p ( s i s t e m a , t )

Neste formato, s t e p tem uma segunda entrada, um vetor t representando o intervalo de tempo em que quero calcular a resposta ao degrau unitário. Repare que o MATLAB deu a resposta para um intervalo de 20   s , pode acontecer de eu querer ver a resposta em um intervalo de tempo específico.

Além disso, neste formato, a função s t e p me retorna um vetor contendo a resposta ao degrau para cada elemento de t . Esse recurso pode ser útil caso você tenha que trabalhar com a resposta depois. Quando usamos essa sintaxe, o gráfico não é gerado automaticamente. Para vermos o gráfico da resposta ao degrau, devemos usar o comando p l o t ( t , y ) .

Para o nosso exemplo, digamos que eu queira ver a resposta ao degrau unitário por 30   s em vez de 20   s . Para isto, eu utilizo as três linhas de código:

Na primeira linha, um vetor t é criado: ele vai de 0 a 30   s , com um passo de 0,1   s .

Na segunda linha, é usado comando s t e p com a sintaxe y = s t e p ( s i s t e m a , t ) .

Na terceira linha, usamos o comando p l o t   pra gerar o gráfico.

Ao rodarmos o programa, temos:

Note que esse gráfico é igualzinho ao gráfico gerado usando apenas s t e p ( s i s t e m a ) , ele apenas vai até 30   s em vez de 20   s .

O comando para ver a resposta ao impulso tem a sintaxe igualzinha ao s t e p . A resposta ao impulso é calculada usando o comando i m p u l s e :

i m p u l s e ( s i s t e m a )

Novamente, s i s t e m a é a função de transferência criada usando o comando t f e, usando a sintaxe acima, plota-se automaticamente o gráfico da resposta ao impulso.

Para o nosso exemplo, adicione o comando:

Rodando o programa, você terá o seguinte gráfico:

Assim como s t e p , o comando i m p u l s e também pode ter a sintaxe y = i m p u l s e ( s i s t e m a , t ) , com as mesmas utilidades.

Finalmente, para uma entrada arbitrária, temos o comando:

l s i m ( s i s t e m a , u , t )

Onde s i s t e m a é a função de transferência criada com t f ; u é um vetor representando a entrada arbitrária para cada elemento do vetor t , que representa o tempo. O comando l s i m , com a sintaxe acima, gera o gráfico da resposta à entrada u quando rodamos o programa.

Digamos que, para nosso exemplo, queremos ver qual é a resposta para a entrada u ( t ) em função do tempo t :

u t = 2 e - 0,5 t

No script do MATLAB onde criamos a função de transferência H s = 2 s + 1 4 s 2 + 2 s + 1 (armazenada na variável s i s t e m a ), adicione os comandos:

Na primeira linha, criamos o vetor t : ele vai de 0 a   20 , com um passo de 0,1   s .

Na segunda linha, calculamos u ( t ) para cada elemento de t e armazenamos o resultado no vetor u .

Na terceira linha, usamos o comando o l s i m .

Rodando o programa, temos um gráfico bem legal:

A curva vermelha é a entrada u e a curva azul, a resposta do sistema a u .

Assim como s t e p e i m p u l s e , l s i m pode ser usada no formato y = l s i m ( s i s t e m a , u ,   t ) , para armazenar a resposta do sistema no vetor y . Mas, assim como os outros, com essa sintaxe, não temos o gráfico diretamente, temos que usar a função p l o t em seguida.

Vimos bastante coisa, né? Bora praticar para fixar bem esse conteúdo ;D

Função de transferência e sinais de entrada

Exercícios Resolvidos

Exercício Resolvido #1

Crie no MATLAB a função de transferência:

G s = s + 2 s 2 + s + 10

Passo 1

O exercício pede para entrarmos no MATLAB com a função de transferência dada o enunciado. Para isto, usaremos a função t f do MATLAB.

Como a função de transferência é em função de s e o enunciado não especifica mais nada, isso quer dizer que ela foi obtida por meio da transformada de Laplace a partir de funções no domínio de tempo contínuo.

Passo 2

Antes de começar o código, vamos relembrar a sintaxe da função t f :

s i s t e m a = t f ( n u m e r a d o r , d e n o m i n a d o r )

A função t f tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por n u m e r a d o r ) e outro contendo os coeficientes do polinômio do denominador (representado por d e n o m i n a d o r ). t f retorna um objeto representando a função de transferência, que será armazenada em s i s t e m a .

Para G ( s ) , o polinômio do numerador é s + 2 . Já o polinômio do denominador é s 2 + s + 10 .

Abra um script novo no MATLAB e crie dois vetores, um contendo os coeficientes de s + 2 e outro contendo os coeficientes de s 2 + s + 10 , indo do elemento com maior expoente ao de menor expoente:

O vetor n u m contém os coeficientes do numerador e o vetor d e n , do denominador.

Passo 3

Em seguida, utilize a função t f para criar a função de transferência G ( s ) no MATLAB:

A função de transferência é armazenada na variável s i s , isto é, s i s é igual a G ( s ) .

Ao executar o programa, você terá implementado G ( s ) no MATLAB. Você pode vê-la pedindo ao MATLAB para imprimir s i s no Command Window.

Resposta

Exercício Resolvido #2

Um circuito RLC série tem a seguinte função de transferência:

G s = V c ( s ) V ( s ) = 1 L C s 2 + R L s + 1 L C

Defina a função de transferência no MATLAB para os seguintes parâmetros: R = 6   Ω , C = 0,04   F e L = 1   H .

Passo 1

O exercício pede para definirmos no MATLAB a função de transferência de um circuito RLC. Para isto, entraremos com os parâmetros do circuito ( R , L e C ) e em seguida usaremos a função t f do MATLAB.

Como a função de transferência é em função de s e o enunciado não especifica mais nada, isso quer dizer que ela foi obtida por meio da transformada de Laplace a partir de funções no domínio de tempo contínuo.

Passo 2

Primeiramente, vamos entrar com parâmetros do circuito RLC dados pelo enunciado. Em um novo script do MATLAB, digite:

Agora devemos criar as entradas da função t f para definirmos no MATLAB G ( s ) . Vamos relembrar a sintaxe da função t f :

s i s t e m a = t f ( n u m e r a d o r , d e n o m i n a d o r )

A função t f tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por n u m e r a d o r ) e outro contendo os coeficientes do polinômio do denominador (representado por d e n o m i n a d o r ). t f retorna um objeto representando a função de transferência, que será armazenada em s i s t e m a .

Para G ( s ) , o polinômio do numerador é 1 / L C . Já o polinômio do denominador é s 2 + R L s + 1 L C .

No nosso script, vamos criar duas variáveis representando os coeficientes dos polinômios. Como o polinômio do numerador tem somente um elemento correspondendo a 1 L C ∙ s 0 = 1 L C ∙ 1 = 1 / L C , a variável representando seus coeficientes pode ser um número real. Chamaremos essa variável de n u m e ela é igual a 1 / L C .

A outra variável é um vetor chamado d e n , contendo os coeficientes de s 2 + R L s + 1 L C , indo do elemento com maior expoente ( s 2 ) ao de menor expoente ( 1 / L C , pois ele multiplica s 0 = 1 ):

Passo 3

Em seguida, utilize a função t f para criar a função de transferência do circuito RLC no MATLAB:

A função de transferência é armazenada na variável G , isto é, G é igual a G ( s ) .

Ao executar o programa, você terá definido G ( s ) no MATLAB. Você pode vê-la pedindo ao MATLAB para imprimir G no Command Window.

Resposta

Exercício Resolvido #3

Seja

F s = 8 ( s + 1 ) ( s + 3 ) s + 2 s + 4 s + 6 2

Plote a resposta ao degrau de amplitude 2 de F ( s ) .

Passo 1

O exercício pede para gerarmos o gráfico da resposta ao degrau de amplitude 2 para uma função de transferência F ( s ) . Para isto, usaremos a função t f para criarmos F ( s ) no MATLAB e, em seguida, usaremos a função s t e p , que plota a resposta ao degrau de uma função de transferência.

Como F ( s ) é em função de s e o enunciado não especifica mais nada, isso quer dizer que ela foi obtida por meio da transformada de Laplace a partir de funções no domínio de tempo contínuo.

Passo 2

Vamos relembrar a sintaxe da função t f :

s i s t e m a = t f ( n u m e r a d o r , d e n o m i n a d o r )

A função t f tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por n u m e r a d o r ) e outro contendo os coeficientes do polinômio do denominador (representado por d e n o m i n a d o r ). t f retorna um objeto representando a função de transferência, que será armazenada em s i s t e m a .

Precisamos criar os vetores com os coeficientes dos polinômios, mas repare que o numerador e o denominador de F ( s ) estão fatorizados. Logo, precisamos expandi-los (isto é, multiplicar os termos) para termos uns polinômios bem bonitos para pegar os coeficientes.

Vamos fazer isso no MATLAB mesmo. Em um script, digite as linhas de código:

Na primeira linha, criamos uma variável simbólica s .

Na segunda linha, entramos com o numerador de F ( s ) , armazenando-o na variável n u m _ o r i g i n a l .

Na terceira linha, usamos o comando e x p a n d do MATLAB em n u m _ o r i g i n a l . Este comando multiplicará os termos de n u m _ o r i g i n a l e gerará o polinômio que precisamos, armazenando-o em n u m _ p o l .

Rodando o programa, temos:

Adicione ao seu script as duas linhas de código abaixo, para fazer exatamente a mesma coisa com o denominador de F ( s ) :

Na primeira linha, entramos com denominado de F ( s ) , armazenando-o em d e n _ o r i g i n a l . Em seguida, usamos e x p a n d em d e n _ o r i g i n a l para gerar o polinômio do denominador, armazenando-o em d e n _ p o l .

Rodando o programa, temos os polinômios do numerador e do denominador de F ( s ) :

Passo 3

Agora que conhecemos os polinômios do numerador e do denominador de F ( s ) , podemos criar os vetores que servirão de entrada para f t .

O polinômio do numerador é 8 s 2 + 32 s + 24 . Já o polinômio do denominador é s 4 + 18 s 3 + 116 s 2 + 312 s + 288 .

No nosso script, vamos criar dois vetores contendo os coeficientes dos polinômios. O primeiro vetor conterá os coeficientes do polinômio do numerador e será chamado de n u m . O segundo vetor se chamará d e n e terá os coeficientes do polinômio do denominador.

Ambos os vetores vão do elemento com maior expoente ( s 2 para o numerador e s 4 para o denominador) ao de menor expoente ( 24 para o numerador e 288 para o denominador, pois multiplicam s 0 = 1 ):

Em seguida, utilize a função t f para criar a função de transferência F ( s ) no MATLAB:

A função de transferência é armazenada na variável F , isto é, F é igual a F ( s ) .

Vamos ver a carinha dela? Rode o programa e você terá:

Passo 4

Agora que já entramos com F ( s ) no MATLAB, vamos ver qual é a resposta de F ( s ) a um degrau de amplitude 2 . Para isto, usaremos a função s t e p , que tem a sintaxe:

s t e p ( f u n ç ã o   d e   t r a n s f e r ê n c i a )

A função s t e p com a sintaxe acima plota o gráfico da resposta ao degrau unitário de f u n ç ã o   d e   t r a n s f e r ê n c i a , que é uma função de transferência criada usando o comando t f .

Se quiséssemos a resposta ao degrau unitário, bastaria incluir o comando s t e p ( F ) em nosso código. Contudo, queremos ver a resposta para um degrau de amplitude 2 . Por isso, devemos multiplicar F por 2 ao utilizarmos s t e p . Isto quer dizer que você deve adicionar no script o seguinte comando:

Ao rodar o programa, você terá o gráfico da resposta de F ( s ) a um degrau de amplitude 2 .

Resposta

Exercício Resolvido #4

Seja

X s = s + 1 s 2 + 2 s + 5

Plote a resposta de F ( s ) à entrada r ( t ) = e - 0.7 t .

Passo 1

O exercício pede para gerarmos o gráfico da resposta à entrada de uma função exponencial para uma função de transferência X ( s ) . Para isto, usaremos a função t f para criarmos X ( s ) no MATLAB e, em seguida, usaremos a função l s i m , que plota a resposta a uma entrada arbitrária de uma função de transferência.

Como X ( s ) é em função de s e o enunciado não especifica mais nada, isso quer dizer que ela foi obtida por meio da transformada de Laplace a partir de funções no domínio de tempo contínuo.

Passo 2

Primeiramente, vamos rever a sintaxe da função t f :

s i s t e m a = t f ( n u m e r a d o r , d e n o m i n a d o r )

A função t f tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por n u m e r a d o r ) e outro contendo os coeficientes do polinômio do denominador (representado por d e n o m i n a d o r ). t f retorna um objeto representando a função de transferência, que será armazenada em s i s t e m a .

O polinômio do numerador de X ( s ) é s + 1 . Já o polinômio do denominador é s 2 + 2 s + 5 .

Em um novo script, vamos criar dois vetores contendo os coeficientes dos polinômios. O primeiro vetor conterá os coeficientes do polinômio do numerador e será chamado de n u m . O segundo vetor se chamará d e n e terá os coeficientes do polinômio do denominador.

Ambos os vetores vão do elemento com maior expoente ( s para o numerador e s 2 para o denominador) ao de menor expoente ( 1 para o numerador e 5 para o denominador, pois multiplicam s 0 = 1 ):

Tendo criado os vetores de entrada de t f , podemos incluir o comando abaixo para criar a função de transferência X ( s ) :

A função de transferência é armazenada na variável X , isto é, X é igual a X ( s ) . Podemos conferir isso rodando o programa e pedindo ao MATLAB para imprimir X no Command Window:

Passo 3

Agora que já entramos com X ( s ) no MATLAB, vamos ver qual é a resposta de X ( s ) à entrada r ( t ) = e - 0.7 t . Para isto, usaremos a função l s i m , que tem a sintaxe:

l s i m ( f u n ç ã o   d e   t r a n s f e r ê n c i a , r , t )

Onde f u n ç ã o   d e   t r a n s f e r ê n c i a é uma função de transferência criada com t f ; r é um vetor representando uma entrada arbitrária (pode ser qualquer expressão em função do tempo) para cada elemento do vetor t , que representa o tempo. O comando l s i m , com a sintaxe acima, gera o gráfico da resposta à entrada r quando rodamos o programa.

No exercício, queremos ver qual é a resposta para a entrada r ( t ) em função do tempo t :

r t = e - 0,7 t

No nosso script, adicione os comandos:

Na primeira linha, criamos o vetor t : ele vai de 0 a   20 , com um passo de 0,01   s .

Na segunda linha, calculamos r ( t ) para cada elemento de t e armazenamos o resultado no vetor r .

Na terceira linha, usamos o comando o l s i m para a função de transferência X criada no passo anterior.

Ao executar o programa, você terá o gráfico da resposta de X ( s ) a r ( t ) .

Resposta

A entrada r ( t ) = e - 0.7 t é representada pela curva vermelha.

A resposta de X ( s ) a r ( t ) é representada pela curva azul.

Exercício Resolvido #5

Plotar a resposta ao impulso de

G s = 3 e - 2 s 10 s + 1

Passo 1

O exercício pede para gerarmos o gráfico da resposta ao impulso de G ( s ) . Para isto, usaremos a função t f do MATLAB para criarmos a função de transferência G ( s ) e, em seguida, usaremos a função i m p u l s e para ver sua resposta ao impulso.

Contudo, você deve ter reparado que G ( s ) tem um formato um pouco diferente do que estamos acostumados: existe um exponencial no numerador. Um exponencial no numerador de uma função de transferência representa matematicamente um atraso entre o sinal de entrada e o de saída. É uma forma de modelar matematicamente atrasos em sistemas de controle reais. Por exemplo, em um reator químico ou em aeronaves, pode haver uma demora de alguns segundos do sinal de saída, devido a atuadores ou sensores.

Normalmente, funções de transferência que modelam atrasos no sinal tem o seguinte formato:

G s = H ( s )   e - τ s

Onde H ( s ) seria uma função de transferência no formato que estamos acostumados (polinômios no numerador e no denominador) e e - τ s modela um atraso de τ segundos entre o sinal de entrada e o sinal de saída.

No exercício, temos τ = 2 segundos e

H s = 3 10 s + 1

Veremos que, para incluirmos e - τ s em uma função de transferência usando o f t do MATLAB, basta adicionarmos mais uma entrada em f t indicando o tempo de atraso τ .

Passo 2

Para entendermos bem como funciona esse conceito de tempo de atraso entre os sinais de entrada e de saída, vamos primeiro trabalhar somente com H ( s ) e ver sua resposta ao impulso.

Usaremos a função f t para criarmos H ( s ) no MATLAB, que tem a sintaxe:

s i s t e m a = t f ( n u m e r a d o r , d e n o m i n a d o r )

A função t f tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por n u m e r a d o r ) e outro contendo os coeficientes do polinômio do denominador (representado por d e n o m i n a d o r ). t f retorna um objeto representando a função de transferência, que será armazenada em s i s t e m a .

O polinômio do numerador de H ( s ) é 3 . Já o polinômio do denominador é 10 s + 1