Diagrama de Nyquist

Ver Todos os Exercícios

Teoria

Introdução

E aí, controleiros de plantão? Tudo sob controle? Em uma graduação de engenharia as coisas ficam meio instáveis de vez em quando, né?

Se você estiver cursando alguma disciplina de Controle, vou tentar deixar as coisas um pouquinho mais estáveis para você. Hoje vamos aprender outra forma de usar o MATLAB para avaliar a estabilidade de um sistema dinâmico. Aprenderemos a plotar um gráfico de Nyquist e vamos relembrar o critério de Nyquist.

Primeiramente, vamos dar uma rápida revisada no que é o gráfico de Nyquist. Se quiser saber mais sobre o assunto ou precisar de uma revisão mais profunda, aqui no Responde Aí temos uma seção só sobre o critério de Nyquist, no capítulo Resposta em Frequência, no assunto Projeto de Controlador Clássico.

A análise do diagrama de Nyquist nos permite verificar a estabilidade de um modelo em malha fechada a partir da resposta do modelo em malha aberta. Normalmente, ele tem uma cara parecida com esta:

O diagrama de Nyquist é um gráfico no plano complexo, com a componente real no eixo horizontal e a componente imaginária no eixo vertical. Repare que as curvas do gráfico têm umas flechinhas, indicando um sentido de rotação (horário ou anti-horário). Essas flechinhas são importantes para o critério de Nyquist, que veremos mais adiante.

Plotando diagramas de Nyquist com o MATLAB

Agora que relembramos o que é um diagrama de Nyquist, vamos aprender a plotá-lo usando o MATLAB. O comando para gerar um diagrama de Nyquist a partir de uma função de transferência em malha aberta é bem diretão:

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

Ele tem como entrada uma função de transferência, criada usando o comando t f do MATLAB, e ele gera um gráfico com o diagrama de Nyquist para a f u n ç ã o   d e   t r a n s f e r ê n c i a .

Vamos fazer um exemplo no MATLAB, onde vamos gerar o diagrama de Nyquist da função de transferência:

G s = s - 6 s + 1

Em um script novo, entre com G ( s ) no MATLAB usando a função t f , digitando as seguintes linhas de código:

Na primeira linha, criamos um vetor n u m em que cada elemento é um coeficiente do polinômio do numerador de G ( s ) , indo do componente com maior expoente ( s 1 = s ) ao de menor expoente ( s 0 = 1 ).

Na segunda linha, criamos um vetor d e n em que cada elemento é um coeficiente do polinômio do denominador de G ( s ) .

Na terceira linha, usamos a função t f para criar G ( s ) .

Para plotar o diagrama de Nyquist de G ( s ) , incluímos no script o comando:

Ao executar o programa, teremos o diagrama de Nyquist de G ( s ) :

Foi pá-pum, né?

Reparou que o gráfico tem um cruzinha vermelha, bem no ponto com coordenadas ( - 1,0 ) ? É bem legal que o MATLAB nos dê essa cruzinha, pois ela vai ser essencial para avaliarmos a estabilidade do sistema pelo critério de Nyquist.

Estabilidade e critério de Nyquist

No critério de Nyquist, estabelecemos quantos polos positivos da função de transferência em malha fechada existem. O critério de Nyquist é dado pela equação:

Z = N + P

Onde:

  • Z é o número de polos positivos da função de transferência em malha fechada;
  • N é o número de voltas que o diagrama de Nyquist dá em torno de ( - 1,0 ) , exatamento o ponto marcado pela cruzinha vermelha no MATLAB;
  • P é o número de polos positivos da função de transferência em malha aberta.

O P é obtido calculando as raízes do denominador da função de transferência em malha aberta e N é obtido pelo diagrama de Nyquist. Há uma regrinha que diz que N é positivo se a volta for no sentido horário. Se for no sentido anti-horário, N é negativo.

Tendo P e N , calculamos Z . Lembra que um sistema estável não possui polos em malha fechada com parte real positiva? Logo, pelo critério de Nyquist, para que um sistema seja estável, Z deve ser igual a 0 .

Vamos ver como o critério funciona com o nosso exemplo. Nossa função de transferência em malha aberta é:

G s = s - 6 s + 1

O denominador de G ( s ) é s + 1 , que tem como raiz - 1 . Logo, o único polo de G ( s ) é - 1 e ele é negativo. Portanto, G ( s ) não tem polos positivos e P = 0 .

Vamos rever o diagrama de Nyquist de G ( s ) que geramos no MATLAB:

Note que o diagrama dá uma volta em sentido horário em torno da cruzinha vermelha, que marca o ponto ( - 1,0 ) . Portanto, N = 1 .

Usando o critério de Nyquist, temos que Z = N + P = 1 + 0 = 1 . Como Z é diferente de 0 , o sistema é instável.

Depois de aprender como plotar um diagrama de Nyquist no MATLAB e a avaliar estabilidade de um sistema usando o diagrama, tá na hora de praticar! Bora fazer os exercícios para fixar bem a aula de hoje ;D

Plotando diagramas de Nyquist com o MATLAB

Estabilidade e critério de Nyquist

Exercícios Resolvidos

Exercício Resolvido #1

Usando o MATLAB, plote o diagrama de Nyquist da função de transferência:

G s = 1 1 2 s 2 + 3 2 s + 1

Passo 1

O exercício pede para plotarmos o diagrama de Nyquist de G ( s ) usando o MATLAB. Para isto, devemos primeiro entrar com G ( s ) no MATLAB usando a função t f . Em seguida, usaremos a função n y q u i s t para plotar o diagrama de Nyquist de G ( s ) .

Passo 2

O primeiro passo para resolver o exercício é entrar com G ( s ) no MATLAB. Para isto, usaremos a função t f , que cria funções de transferência e tem a seguinte 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 .

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

Em um novo script, vamos criar duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para t f . Como o polinômio do numerador tem somente um elemento correspondendo a 1 ∙ s 0 = 1 ∙ 1 = 1 , 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 .

A outra variável é um vetor chamado d e n , contendo os coeficientes de 1 2 s 2 + 3 2 s + 1 , indo do elemento com maior expoente ao de menor expoente:

Logo abaixo, já digitamos o comando G = t f ( n u m ,   d e n )   para criar G ( s ) , que será armazenado na variável G .

Se quiser conferir se você entrou G ( s ) certinho, rode o programa que você tem até agora e peça para o MATLAB imprimir G no Command Window. Se estiver tudo certo, você terá:

Passo 3

Tendo entrado com G ( s ) no MATLAB, podemos plotar seu diagrama de Nyquist, usando a função n y q u i s t , que tem como sintaxe:

n y q u i s t ( f u n c a o _ t r a n s f e r e n c i a )

Ela tem como entrada uma função de transferência, criada usando o comando t f do MATLAB (representada por f u n c a o _ t r a n s f e r e n c i a acima), e ela gera um gráfico com o diagrama de Nyquist para f u n c a o _ t r a n s f e r e n c i a .

Adicione em seu código o comando:

Ao executar o programa, você terá o diagrama de Nyquist pedido pelo enunciado.

Resposta

Exercício Resolvido #2

Use o critério de Nyquist para determinar a estabilidade de um sistema com realimentação unitária e função de transferência mostrada abaixo:

G s = 1 s + 1

Passo 1

O exercício pede para vermos se um sistema é estável ou não usando o critério de Nyquist. Para isto, usaremos a função n y q u i s t do MATLAB para plotar o diagrama de Nyquist de G ( s ) e determinaremos a estabilidade do sistema usando o critério de Nyquist no gráfico gerado pelo MATLAB.

Passo 2

O primeiro passo para resolver o exercício é entrar com G ( s ) no MATLAB. Para isto, usaremos a função t f , que cria funções de transferência e tem a seguinte 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 .

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

Em um novo script, vamos criar duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para t f . Como o polinômio do numerador tem somente um elemento correspondendo a 1 ∙ s 0 = 1 ∙ 1 = 1 , 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 .

A outra variável é um vetor chamado d e n , contendo os coeficientes de s + 1 , indo do elemento com maior expoente ao de menor expoente:

Logo abaixo, já incluimos o comando G = t f ( n u m ,   d e n ) para criar G ( s ) , que será armazenado na variável G .

Se quiser conferir se você entrou G ( s ) certinho, rode o programa que você tem até agora e peça para o MATLAB imprimir G no Command Window. Se estiver tudo certo, você terá:

Passo 3

Tendo entrado com G ( s ) no MATLAB, podemos plotar o diagrama de Nyquist, usando a função n y q u i s t , que tem como sintaxe:

n y q u i s t ( f u n c a o _ t r a n s f e r e n c i a )

Ela tem como entrada uma função de transferência, criada usando o comando t f do MATLAB (representada por f u n c a o _ t r a n s f e r e n c i a acima), e ela gera um gráfico com o diagrama de Nyquist para f u n c a o _ t r a n s f e r e n c i a .

Adicione em seu código o comando:

Execute o programa e você terá o diagrama de Nyquist de G :

Passo 4

Com o diagrama de Nyquist em mãos, podemos avaliar a estabilidade do sistema usando o critério de Nyquist, que é dado pela equação:

Z = N + P

Onde:

  • Z é o número de polos positivos da função de transferência em malha fechada;
  • N é o número de voltas que o diagrama de Nyquist dá em torno de ( - 1,0 ) ;
  • P é o número de polos positivos da função de transferência em malha aberta.

Pelo critério de Nyquist, para que um sistema seja estável, Z deve ser igual a 0 .

O P é obtido calculando as raízes do denominador da função de transferência em malha aberta, no caso, G ( s ) . Neste exercício, o denominador de G ( s ) é s + 1 , que tem como raiz - 1 . Logo, o único polo de G ( s ) é - 1 e ele é negativo. Portanto, G ( s ) não tem polos positivos e P = 0 .

N é obtido pelo diagrama de Nyquist. Vamos rever o diagrama de Nyquist gerado no passo anterior:

Tem uma cruzinha vermelha na extremidade esquerda do gráfico, reparou? Essa cruzinha marca o ponto de coordenadadas ( - 1,0 ) . Como a cruzinha está fora do diagrama de Nyquist (que é o círculo azul com flechinhas), o diagrama não dá volta alguma em torno de ( - 1,0 ) , logo, N = 0 .

Tendo P e N , calculamos Z . Temos que Z = N + P = 0 + 0 = 0 . Como Z = 0 , o sistema é estável.

Resposta

Sistema estável

Exercício Resolvido #3

Use o critério de Nyquist para determinar a estabilidade de um sistema com realimentação unitária e função de transferência mostrada abaixo:

G s = 30 s + 2 ( s + 10 )

Passo 1

O exercício pede para vermos se um sistema é estável ou não usando o critério de Nyquist. Para isto, usaremos a função n y q u i s t do MATLAB para plotar o diagrama de Nyquist de G ( s ) e determinaremos a estabilidade do sistema usando o critério de Nyquist no gráfico gerado pelo MATLAB.

Antes de usar n y q u i s t , vamos entrar com G ( s ) no MATLAB usando a função t f . Lembra dela? Ela tem como entrada dois vetores com os coeficientes dos polinômios do numerador e do denominador da função de transferência. Repare que o denominador de G ( s ) está fatorizado. Logo, para podermos pegar os coeficientes dele, precisamos expandi-lo (isto é, multiplicar os termos) para gerarmos o polinômio. Por isso, antes de usarmos t f , faremos uma manipulação algébrica com o denominador de G ( s ) .

Passo 2

Para obter o polinômio do denominador de G ( s ) , vamos multipicar seus termos usando o MATLAB. Em um novo script, digite as linhas de código:

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

Na segunda linha, entramos com o denominador de G ( s ) , armazenando-o na variável d e n _ o r i g i n a l .

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

Rodando o programa, temos:

Passo 3

Agora que temos o polinômio do denominador de G ( s ) , podemos criar os vetores que servirão de entrada para t f . Lembrando que t f que tem como 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 .

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

Em um novo script ou no script onde você obteve d e n _ p o l , vamos criar duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para t f . Como o polinômio do numerador tem somente um elemento correspondendo a 30 ∙ s 0 = 30 ∙ 1 = 30 , a variável representando seus coeficientes pode ser um número real. Chamaremos essa variável de n u m e ela é igual a 30 .

A outra variável é um vetor chamado d e n , contendo os coeficientes de s 2 + 12 s   +   20 , indo do elemento com maior expoente ao de menor expoente:

Logo abaixo, já incluimos o comando G = t f ( n u m ,   d e n ) para criar G ( s ) , que será armazenado na variável G .

É bom dar uma conferida em G antes de continuar. Para isto, rode o programa que você tem até agora e imprima G no Command Window:

Aparentemente, está tudo certinho. Podemos continuar :)

Passo 4

Tendo entrado com G ( s ) no MATLAB, podemos plotar o diagrama de Nyquist, usando a função n y q u i s t , que tem como sintaxe:

n y q u i s t ( f u n c a o _ t r a n s f e r e n c i a )

Ela tem como entrada uma função de transferência, criada usando o comando t f do MATLAB (representada por f u n c a o _ t r a n s f e r e n c i a acima), e ela gera um gráfico com o diagrama de Nyquist para f u n c a o _ t r a n s f e r e n c i a .

Adicione em seu código o comando:

Execute o programa e você terá o diagrama de Nyquist de G :

Passo 5

Com o diagrama de Nyquist em mãos, podemos avaliar a estabilidade do sistema usando o critério de Nyquist, que é dado pela equação:

Z = N + P

Onde:

  • Z é o número de polos positivos da função de transferência em malha fechada;
  • N é o número de voltas que o diagrama de Nyquist dá em torno de ( - 1,0 ) ;
  • P é o número de polos positivos da função de transferência em malha aberta.

Pelo critério de Nyquist, para que um sistema seja estável, Z deve ser igual a 0 .

O P é obtido calculando as raízes do denominador da função de transferência em malha aberta, no caso, G ( s ) . Para isto, é mais fácil a gente pegar o G ( s ) dado diretamente no enunciado, onde os termos do denominador não foram multiplicados:

G s = 30 s + 2 ( s + 10 )

Neste exercício, o denominador de G ( s ) é s + 2 ( s + 10 ) , que tem como raizes - 2 e - 10 . Logo, G ( s ) não tem polos positivos e P = 0 .

N é obtido pelo diagrama de Nyquist. Vamos rever o diagrama de Nyquist gerado no passo anterior:

Tem uma cruzinha vermelha na extremidade esquerda do gráfico, reparou? Essa cruzinha marca o ponto de coordenadadas ( - 1,0 ) . Como a cruzinha está fora do diagrama de Nyquist (que é a curva azul com flechinhas), o diagrama não dá volta alguma em torno de ( - 1,0 ) , logo, N = 0 .

Tendo P e N , calculamos Z . Temos que Z = N + P = 0 + 0 = 0 . Como Z = 0 , o sistema é estável.

Resposta

Sistema estável

Exercício Resolvido #4

Use o critério de Nyquist para determinar a estabilidade de um sistema com realimentação unitária e função de transferência mostrada abaixo:

G s = 70 s + 1 ( s + 2 ) ( s + 3 )

Passo 1

O exercício pede para vermos se um sistema é estável ou não usando o critério de Nyquist. Para isto, usaremos a função n y q u i s t do MATLAB para plotar o diagrama de Nyquist de G ( s ) e determinaremos a estabilidade do sistema usando o critério de Nyquist no gráfico gerado pelo MATLAB.

Antes de usar n y q u i s t , vamos entrar com G ( s ) no MATLAB usando a função t f . Lembra dela? Ela tem como entrada dois vetores com os coeficientes dos polinômios do numerador e do denominador da função de transferência. Repare que o denominador de G ( s ) está fatorizado. Logo, para podermos pegar os coeficientes dele, precisamos expandi-lo (isto é, multiplicar os termos) para gerarmos o polinômio. Por isso, antes de usarmos t f , faremos uma manipulação algébrica com o denominador de G ( s ) .

Passo 2

Para obter o polinômio do denominador de G ( s ) , vamos multipicar seus termos usando o MATLAB. Em um novo script, digite as linhas de código:

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

Na segunda linha, entramos com o denominador de G ( s ) , armazenando-o na variável d e n _ o r i g i n a l .

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

Rodando o programa, temos:

Passo 3

Agora que temos o polinômio do denominador de G ( s ) , podemos criar os vetores que servirão de entrada para t f . Lembrando que t f que tem como 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 .

Para G ( s ) , o polinômio do numerador é 7 0 . Já o polinômio do denominador é s 3 + 6 s 2 + 11 s + 6 .

Em um novo script ou no script onde você obteve d e n _ p o l , vamos criar duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para t f . Como o polinômio do numerador tem somente um elemento correspondendo a 7 0 ∙ s 0 = 7 0 ∙ 1 = 7 0 , a variável representando seus coeficientes pode ser um número real. Chamaremos essa variável de n u m e ela é igual a 7 0 .

A outra variável é um vetor chamado d e n , contendo os coeficientes de s 3 + 6 s 2 + 11 s + 6 , indo do elemento com maior expoente ao de menor expoente:

Logo abaixo, já incluimos o comando G = t f ( n u m ,   d e n ) para criar G ( s ) , que será armazenado na variável G .

É bom dar uma conferida em G antes de continuar. Para isto, rode o programa que você tem até agora e imprima G no Command Window:

Tudo certinho, bora plotar o diagrama de Nyquist ;)

Passo 4

Para plotar o diagrama de Nyquist, use a função n y q u i s t , que tem como sintaxe:

n y q u i s t ( f u n c a o _ t r a n s f e r e n c i a )

Ela tem como entrada uma função de transferência, criada usando o comando t f do MATLAB (representada por f u n c a o _ t r a n s f e r e n c i a acima), e ela gera um gráfico com o diagrama de Nyquist para f u n c a o _ t r a n s f e r e n c i a .

Adicione em seu código o comando:

Execute o programa e você terá o diagrama de Nyquist de G :

Passo 5

Com o diagrama de Nyquist em mãos, podemos avaliar a estabilidade do sistema usando o critério de Nyquist, que é dado pela equação:

Z = N + P

Onde:

  • Z é o número de polos positivos da função de transferência em malha fechada;
  • N é o número de voltas que o diagrama de Nyquist dá em torno de ( - 1,0 ) . N é positivo se a volta for no sentido horário. Se for no sentido anti-horário, N é negativo.
  • P é o número de polos positivos da função de transferência em malha aberta.

Pelo critério de Nyquist, para que um sistema seja estável, Z deve ser igual a 0 .

O P é obtido calculando as raízes do denominador da função de transferência em malha aberta, no caso, G ( s ) . Para isto, é mais fácil a gente pegar o G ( s ) dado diretamente no enunciado, onde os termos do denominador não foram multiplicados:

G s = 70 s + 1 ( s + 2 ) ( s + 3 )

Neste exercício, o denominador de G ( s ) é s + 1 ( s + 2 ) ( s + 3 ) , que tem como raizes - 1 , - 2 e - 3 . Logo, G ( s ) não tem polos positivos e P = 0 .

N é obtido pelo diagrama de Nyquist. Vamos rever o diagrama de Nyquist gerado no passo anterior:

Tem uma cruzinha vermelha no gráfico, reparou? Essa cruzinha marca o ponto de coordenadadas ( - 1,0 ) . Vamos dar um zoom na região da cruzinha, para ver quantas voltas o diagrama de Nyquist dá em torno dela:

O diagrama de Nyquist (representado pela curva azul) dá duas voltas em torno da cruzinha, ambas em sentido horário, logo, N   =   2 .

Tendo P e N , calculamos Z . Temos que Z = N + P = 2 + 0 = 2 . Como Z é diferente de 0 , o sistema é instável.

Resposta

Sistema instável

Exercício Resolvido #5

Use o critério de Nyquist para determinar a estabilidade de um sistema com realimentação unitária e função de transferência mostrada abaixo:

G s = 200 ( s + 5 ) ( s 2 + 10 s + 50 )

Passo 1

O exercício pede para vermos se um sistema é estável ou não usando o critério de Nyquist. Para isto, usaremos a função n y q u i s t do MATLAB para plotar o diagrama de Nyquist de G ( s ) e determinaremos a estabilidade do sistema usando o critério de Nyquist no gráfico gerado pelo MATLAB.

Antes de usar n y q u i s t , vamos entrar com G ( s ) no MATLAB usando a função t f . Lembra dela? Ela tem como entrada dois vetores com os coeficientes dos polinômios do numerador e do denominador da função de transferência. Repare que o denominador de G ( s ) está fatorizado em parte. Logo, para podermos pegar os coeficientes dele, precisamos expandi-lo (isto é, multiplicar os termos) para gerarmos o polinômio. Por isso, antes de usarmos t f , faremos uma manipulação algébrica com o denominador de G ( s ) .

Passo 2

Para obter o polinômio do denominador de G ( s ) , vamos multipicar seus termos usando o MATLAB. Em um novo script, digite as linhas de código:

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

Na segunda linha, entramos com o denominador de G ( s ) , armazenando-o na variável d e n _ o r i g i n a l .

Na terceira linha, usamos o comando e x p a n d do MATLAB em d e n _ o r i g i n a l . Este comando multiplicará os termos de d e n _ o r i g i n a l