Lugar das Raízes
Teoria
Introdução
E aí, controleiro de plantão, tudo joia? Já ouviu falar de lugar das raízes?
“Sim! As raízes das plantas ficam debaixo da terra!”
Não, jovem gafanhoto, estou falando de outro tipo de raiz. Se você já assistiu alguma disciplina de Controle na sua graduação, você provavelmente aprendeu como esboçar o “lugar geométrico das raízes” a partir de alguma função de transferência. Na aula de hoje, vamos aprender como se faz isso no MATLAB.
Se você não lembra, não se preocupe, vamos dar uma revisada nos conceitos principais. E caso você queira se aprofundar mais ou precise dar uma reforçada no conteúdo, aqui no Responde Aí temos um capítulo só sobre lugar das raízes para você dar uma olhada ;D
Em controle, usamos o lugar das raízes para encontrar quais valores um ganho pode assumir no meu controlador para que meu sistema continue estável.
Vamos de exemplo. Digamos que estamos projetando uma malha de controle representada pelo diagrama de blocos abaixo:
Queremos saber quais valores o ganho pode assumir de forma que a malha permaneça estável.
Para determinar o lugar das raízes, usamos a função de transferência de malha aberta, deixando o de lado, que vou chamar de :
Chamamos de zeros as raízes do polinômio do numerador da função de transferência. No caso de , temos apenas um zero, que é .
Já as raízes do denominador da função de transferência são os polos. Em , temos três polos: , e .
O lugar das raízes é esboçado em um plano complexo, onde o eixo horizontal representa a parte real das raízes e o eixo vertical, a parte imaginária. A figura abaixo apresenta o lugar das raízes de :
Na figura, o zero é representado por uma bolinha e os polos, por xisinhos. As linhas em vermelho são chamadas de ramos e representam os valores que as raízes assumem ao variarmos de a . Os ramos começam nos polos (onde temos ) e terminam nos zeros (onde ).
Uma malha de controle é estável se as raízes forem números reais negativos ou se forem números complexos com a parte real negativa. No lugar das raízes, isso significa que as raízes devem estar à esquerda do eixo vertical. Este é o caso do nosso exemplo : repare que o zero, os polos e as linhas em vermelho estão todos à esquerda do eixo Im. Isso significa que K pode assumir qualquer valor entre e que a malha continuará estável.
Depois dessa revisadinha básica sobre lugar das raízes, vamos aprender a esboçá-lo no MATLAB e como descobrir quais valores pode assumir.
Traçando o lugar das raízes no MATLAB
Para traçarmos o lugar das raízes no MATLAB, usamos o comando:
A função tem como entrada uma função de transferência criada a partir do comando . Ao executarmos o programa, gera um gráfico com o lugar das raízes.
Para vermos direitinho como o funciona, vamos aplicá-lo no nosso exemplo. Crie um novo script no MATLAB e adicione os comandos abaixo para criar a função de transferência :
Na primeira linha, criamos um vetor chamado com os coeficientes do polinômio do numerador de .
Na segunda linha, criamos um vetor chamado com os coeficientes do polinômio do denominador de .
Na terceira linha, criamos usando a função do MATLAB, armazenando na variável .
Para gerar o lugar das raízes de , digite o comando:
Ao rodar seu script, aparecerá o gráfico do lugar das raízes:
Como na figura da introdução, a bolinha representa os zeros e os xisinhos, os polos. No MATLAB, cada ramo é traçado com uma cor diferente.
Podemos ver o valor de clicando sobre os ramos. Aparecerá um quadradinho preto com uma janelinha apresentando algumas propriedades da função de transferência naquele ponto:
O ganho é dado pelo valor ao lado de na janelinha. Por exemplo, onde cliquei, . A janelinha apresenta ainda outras propriedades que estudamos normalmente na disciplina de Controle, mas não precisamos entrar em detalhes aqui.
Posso arrastar o quadradinho preto em direção ao polo, onde terei :
E também posso arrastar em direção ao zero, onde terei :
No nosso exemplo, vimos que, como o lugar das raízes se encontra todo à esquerda do eixo vertical do gráfico, as raízes sempre terão parte real negativa, não importa o valor do ganho . Por isso, pode assumir qualquer valor entre e .
Contudo, existem casos em que parte do lugar das raízes estará à direita do eixo vertical, indicando que existem ganhos que fazem com que as raízes tenham parte real positiva, tornando a malha instável. A funcionalidade do MATLAB de arrastar o quadradinho preto para vermos os valores do ganho no lugar das raízes, isto é, os valores de , ajuda a determinar a faixa de valores que pode assumir de forma a manter a estabilidade.
Por exemplo, este é o lugar das raízes para a função de transferência :
Se encaixa bem na situação descrita acima, né? Arrastando o quadradinho preto, vemos que tem que ser no mínimo . Se for menor que isso (arrastando o quadradinho preto mais para a direita, em direção ao xis), a parte real das raízes torna-se positiva e a malha, instável.
E aí? Curtiu a aula? Agora é fazer alguns exercícios para praticar e se tornar um controleiro nota 10 ;D
Traçando o lugar das raízes no MATLAB
Exercícios Resolvidos
Exercício Resolvido #1
“Adaptado de Smith & Corripio, Princípios e Prática do Controle Automático de Processos, 3ª ed. Rio de Janeiro: LTC, 2012, p. 254, problema 8-1b.”
Esboce o lugar geométrico das raízes para o sistema mostrado abaixo:
Passo 1
O exercício pede para traçar o lugar das raízes de . Para fazermos o que o exercício pede, usaremos duas funções do MATLAB. Primeiro, vamos usar a função para entrar com . Em seguida, usaremos para plotar o lugar das raízes de .
Passo 2
O primeiro passo para resolver o exercício é entrar com no MATLAB. Para isto, usaremos a função , que cria funções de transferência e tem a seguinte sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Para , o polinômio do numerador é . Já o polinômio do denominador é .
Abra um script novo no MATLAB e crie dois vetores, um contendo os coeficientes de e outro contendo os coeficientes de , indo do elemento com maior expoente ao de menor expoente:
O vetor contém os coeficientes do numerador e o vetor , do denominador de .
Em seguida, adicione o comando abaixo para criar :
A função de transferência é armazenada na variável . Você pode ver como ficou ao rodar o programa e pedir ao MATLAB para imprimir no Command Window:
Passo 3
Após criar , usaremos a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de trasnferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de .
Resposta
Exercício Resolvido #2
“Adaptado de Smith & Corripio, Princípios e Prática do Controle Automático de Processos, 3ª ed. Rio de Janeiro: LTC, 2012, p. 254, exemplo 8-2.1.”
Esboce o lugar geométrico das raízes para o sistema mostrado abaixo:
Passo 1
O exercício pede para traçar o lugar das raízes de . Para fazermos o que o exercício pede, usaremos duas funções do MATLAB. Primeiro, vamos usar a função para entrar com . Em seguida, usaremos para plotar o lugar das raízes de .
Passo 2
Para entrarmos com no MATLAB, usaremos a função , que tem como sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Para , o polinômio do numerador é . Já o polinômio do denominador é .
Em um novo script, vamos criar duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para . Como o polinômio do numerador tem somente um elemento correspondendo a , a variável representando seus coeficientes pode ser um número real. Chamaremos essa variável de e ela é igual a .
A outra variável é um vetor chamado , contendo os coeficientes de , indo do elemento com maior expoente ao de menor expoente:
Em seguida, adicione o comando abaixo para criar :
A função de transferência é armazenada na variável . Você pode ver como ficou ao rodar o programa e pedir ao MATLAB para imprimir no Command Window:
Passo 3
Após criar , usaremos a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de trasnferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de .
Resposta
Exercício Resolvido #3
“Adaptado de UnB – 107506: Laboratório de Controle de Processos. Aula: MATLAB. Prof. Eduardo Stockler Tognetti (2018) – Exercício 4”
Seja
Plote o lugar das raízes e ache os polos e os zeros de .
Passo 1
O exercício pede para plotar o lugar das raízes de e, a partir do gráfico do lugar das raízes, identificar os polos e os zeros da função de transferência. Lembrando que os zeros são as raízes do numerador de , isto é, de . Como se trata de um polinômio de grau, temos que identificar dois zeros no lugar das raízes.
Já os polos são as raízes do denominador de , isto é, de . Como se trata de um polinômio do grau, existem quatro polos no lugar das raízes.
Para plotarmos o lugar das raízes, usaremos duas funções do MATLAB. Primeiro, vamos usar a função para entrar com no MATLAB. Em seguida, usaremos para plotar o lugar das raízes de .
Passo 2
O primeiro passo para resolver o exercício é entrar com no MATLAB. Para isto, usaremos a função , que cria funções de transferência e tem a seguinte sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Para , o polinômio do numerador é . Já o polinômio do denominador é .
Em um novo script do MATLAB, crie dois vetores, um chamado de que contém os coeficientes de e outro chamado , contendo os coeficientes de . Ambos os vetores vão do coeficiente do elemento com maior expoente ao coeficiente de menor expoente:
Em seguida, adicione o comando abaixo para criar :
A função de transferência é armazenada na variável , isto é, é igual a . Você pode confirmar isso rodando o programa e pedindo ao MATLAB para imprimir no Command Window:
Passo 3
Após criar , usaremos a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de trasnferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de :
Passo 4
Podemos identificar os zeros e os polos no gráfico do lugar das raízes. Os zeros são representados por bolinhas e os polos, por xizinhos. Para sabermos quanto os zeros e os polos valem, podemos clicar sobre os ramos do gráfico. Aparecerá um quadradinho preto com um quadro com dados sobre o ponto onde você clicou. Esse quadradinho pode ser arrastado ao longo dos ramos até atingir um polo ou um zero.
Vamos começar com os zeros, que vou chamar de e . Repare que o gráfico tem duas bolinhas: isso porque o numerador é um polinômio de grau, logo, ele possui duas raízes. Vamos clicar nos ramos vermelho e azul piscina para aparecer o quadradinho preto e vamos arrastá-lo até as bolinhas:
Você terá certeza que chegou no zero quando o dado for igual a . Temos que os zeros de são:
Vamos agora identificar os polos. Temos quatro xizinhos no gráfico, representando os quatro polos de , que vou chamar de , , e . Existem quatro polos pois o denominador de é um polinômio de grau, isto é, ele possui quatro raízes. Clique nos quatro ramos para aparecer o quadradinho preto e arraste-o até cada um dos xizinhos:
Você terá certeza que chegou no polo quando o dado for igual a . Temos que os polos de são:
Os polos e estão sobre o eixo vertical, logo, eles são números puramente complexos, com parte real igual a . Pelo que está indicado na figura acima, eles têm um resíduo na parte real de . É um número tão pequenininho, que podemos considerar igual a . Logo, os outros dois polos de são:
Resposta
Os zeros de são: e
Os polos de são:
Exercício Resolvido #4
“Adaptado de Norman N. Nise, Engenharia de sistemas de controle, 6ª ed., Rio de Janeiro, 2012, Exercício 8.3”
Esboce o lugar geométrico das raízes para o sistema mostrado abaixo:
Passo 1
O exercício pede para traçar o lugar das raízes de . Para fazermos o que o exercício pede, usaremos duas funções do MATLAB. Primeiro, vamos usar a função para entrar com . Em seguida, usaremos para plotar o lugar das raízes de .
Lembra da função ? 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 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 , faremos uma manipulação algébrica com o denominador de .
Passo 2
Primeiramente, vamos obter o polinômio do denominador de , multiplicando seus termos. Vamos fazer isso no MATLAB mesmo. Em um novo script, digite as linhas de código:
Na primeira linha, criamos uma variável simbólica .
Na segunda linha, entramos com o denominador de , armazenando-o na variável .
Na terceira linha, usamos o comando do MATLAB em . Este comando multiplicará os termos de e gerará o polinômio que precisamos, armazenando-o em .
Rodando o programa, temos:
Passo 3
Agora que temos o polinômio do denominador de , podemos criar os vetores que servirão de entrada para . Lembrando que que tem como sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Para , o polinômio do numerador é . Já o polinômio do denominador é .
Em um novo script ou no mesmo script onde você obteve , crie duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para . Como o polinômio do numerador tem somente um elemento correspondendo a , a variável representando seus coeficientes pode ser um número real. Chamaremos essa variável de e ela é igual a .
A outra variável é um vetor chamado , contendo os coeficientes de , indo do elemento com maior expoente ao de menor expoente:
Em seguida, adicione o comando abaixo para criar :
A função de transferência é armazenada na variável . Você pode ver como ficou ao rodar o programa e pedir ao MATLAB para imprimir no Command Window:
Passo 4
Após criar , usaremos a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de trasnferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de .
Resposta
Exercício Resolvido #5
“Adaptado de Smith & Corripio, Princípios e Prática do Controle Automático de Processos, 3ª ed. Rio de Janeiro: LTC, 2012, p. 254, problema 6-10.”
Um processo pode ser definido pela seguinte função de transferência:
Onde e são as constantes de tempo da válvula de controle e do transmissor, respectivamente. Encontre a faixa de ganho da malha para a qual a malha é estável se e .
Passo 1
O enunciado nos dá uma função de transferência e nos pede para determinar a faixa de valores que o ganho de um controlador proporcional pode assumir, de forma que a malha seja estável.
Para determinarmos os valores de , plotaremos o lugar das raízes de no MATLAB, usando a função , e acharemos os valores de no próprio gráfico.
Antes disso, entraremos com no MATLAB, por meio da função .
Passo 2
Antes de tudo, vamos informar ao MATLAB as constantes de tempo das válvulas: e . Abra um script novo e digite:
A variável armazena e a variável , .
Agora, vamos entrar com a função de transferência , usando , que tem a sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Contudo, repare que o denominador de 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 , faremos uma manipulação algébrica com o denominador de .
Passo 3
Faremos a manipulação algébrica do denominador no MATLAB mesmo. No script onde você definiu e , digite as linhas de código:
Na primeira linha, criamos uma variável simbólica .
Na segunda linha, entramos com o denominador de , armazenando-o na variável .
Na terceira linha, usamos o comando do MATLAB em . Este comando multiplicará os termos de e gerará o polinômio que precisamos, armazenando-o em .
Rodando o programa, temos:
Passo 4
Agora que temos o polinômio do denominador de , podemos criar os vetores que servirão de entrada para . Para , o polinômio do numerador é . Já o polinômio do denominador é .
No mesmo script onde você obteve , crie duas variáveis representando os coeficientes dos polinômios, para servirem de entrada para . Como o polinômio do numerador tem somente um elemento correspondendo a , a variável representando seus coeficientes pode ser um número real. Chamaremos essa variável de e ela é igual a .
A outra variável é um vetor chamado , contendo os coeficientes de , indo do elemento com maior expoente ao de menor expoente:
Em seguida, adicione o comando abaixo para criar :
A função de transferência é armazenada na variável . Você pode ver como ficou ao rodar o programa e pedir ao MATLAB para imprimir no Command Window:
Note que as frações do denominador foram convertidas em números decimais, por isso que o denominador está um pouquinho diferente de . Apesar da forma diferente, é exatamente a mesma coisa.
Passo 5
Após criar , usaremos a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de trasnferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de :
Passo 6
Podemos encontrar a faixa de valores que pode assumir no gráfico gerado no passo . Para isto, devemos relembrar o critério de estabilidade: uma malha de controle é estável se as raízes forem números reais negativos ou se forem números complexos com a parte real negativa. No lugar das raízes, isso significa que as raízes devem estar à esquerda do eixo vertical.
Isso quer dizer que, para encontrarmos os valores do ganho que garantem a estabilidade, devemos analisar os ramos que cruzam o eixo vertical. Logo, no nosso gráfico, a área de interesse é essa aqui:
Por isso, recomendo você ampliar o gráfico, dando um zoom nessa região, pra ver bem certinho os polos e os ramos. Você pode dar o zoom clicando no botão destacado em vermelho abaixo:
Para ver os valores de ganho, selecione o botão “Data Cursor” (destacado em azul acima) e clique sobre um dos ramos. Aparecerá um quadradinho preto com uma janelinha contendo informações sobre na naquele ponto:
O dado “Gain” é o que nos interessa. Ele representa o ganho nesse ponto. Se você arrastar o quadradinho até um xizinho, que representa um polo, você verá que quando o cursor estiver sobre o polo. Logo, quanto mais perto do polo, menor o .
Repare que existe um polo à direita do eixo vertical, equivalente a :
Como em esse polo é um número real positivo, que leva à instabilidade, a faixa de valores que o ganho deve assumir para que a malha seja estável não pode começar em . Para definirmos qual o valor mínimo de , devemos ver quanto ele vale exatamente sobre o eixo vertical, ou o mais próximo possível do eixo vertical que o MATLAB nos permita. Arraste o quadradinho preto sobre o ramo vermelho, sobre sua parte horizontal, e você terá:
No ponto marcado acima, o polo se torna um número real negativo com um ganho .
Para identificar o valor máximo que pode assumir, continue arrastando o quadradinho preto sobre o ramo vermelho até que o ramo cruze novamente o eixo vertical, no limite em que a parte real do polo continue negativa:
Temos que o valor máximo que pode assumir é .
Resposta
Exercício Resolvido #6
“UNICAMP – EA-721: Princípios de Controle e Servomecanismo. 2ª lista de exercícios, de José C. Geromel e Rubens H. Korogui. Exercício 12”
Considere a função de transferência de um sistema a tempo contínuo:
Para os valores do parâmetro , esboce no plano complexo o lugar das raízes da equação característica , em função do ganho .
Passo 1
O exercício pede para esboçar o lugar das raízes de , usando dois valores distintos de : e . Para fazermos o que o exercício pede, usaremos duas funções do MATLAB. Primeiro, vamos usar a função para entrar com . Em seguida, usaremos para plotar o lugar das raízes de .
Faremos esse procedimento duas vezes: uma vez para e outra vez para .
Passo 2
O primeiro passo é definir no MATLAB, usando a função , que tem a sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Contudo, repare que o denominador de está fatorizado. Para definirmos , vamos dividi-la em duas partes, e , de forma que :
Vamos começar definindo em um script novo do MATLAB, cujo numerador é e o denominador é . Vamos criar duas variáveis contendo os coeficientes dos polinômios de . A primeira variável representará os coeficientes do polinômio do numerador e será chamada de . A segunda variável será um vetor chamado e terá os coeficientes do polinômio do denominador. Após criar as duas variáveis de entrada de , digite o comando :
Desta forma, a função de transferência é criada e armazenada na variável
Vamos fazer a mesma coisa para , começando com , definido por meio do comando :
Os vetores e contêm os coeficientes dos polinômios do numerador e do denominador de , respectivamente. Com a função , cria-se a funções de transferência .
Finalmente, para definir , inclua em seu código o produto abaixo:
Execute o programa para ver a cara de , com :
Passo 3
Após definir para , use a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de transferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de , quando :
Passo 4
Vamos fazer o mesmo procedimento para . No seu código, troque o valor da variável de para , lá onde você criour :
Desta forma, ficará com essa cara:
E o lugar das raízes ficará assim:
Resposta
:
:
Exercício Resolvido #7
“Adaptado de UNICAMP – EA-721: Princípios de Controle e Servomecanismo. 2ª lista de exercícios, de José C. Geromel e Rubens H. Korogui. Exercício 14”
Considere um sistema de controle a tempo contínuo com realimentação unitária de acordo com a figura abaixo, na qual a planta é representada pela função de transferência
- Considerando um controlador , esboce o lugar das raízes e determine os valores de para os quais o sistema em malha fechada seja estável.
- Para o controlador do item anterior, determine o parâmetro de modo que o sistema em malha fechada possua dois polos complexos conjugados com fator de amortecimento igual a .
- Utilizando uma rotina computacional, obtenha a resposta ao degrau para o sistema em malha fechada, empregando o parâmetro encontrado no item anterior.
Passo 1
O enunciado nos dá uma função de transferência e nos pede para esboçar o lugar das raízes, determinar a faxa de valores do ganho em que o sistema é estável, encontrar o valor de que dê um fator de amortecimento igual a e, usando o encontrado, determinar a saída do sistema para o degrau unitário.
Para plotar o lugar das raízes de no MATLAB e resolver a letra a do exercício, usaremos a função . A partir do lugar das raízes plotado, resolveremos as letras a e b, achando os valores de no próprio gráfico. Com a resposta da letra b, faremos a letra c, gerando o sistema em malha fechada por meio do comando e plotando a resposta ao degrau unitário usando a função .
Passo 2
O primeiro passo é definir no MATLAB, usando a função , que tem a sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Contudo, repare que o numerador e o denominador de estão fatorizados. Para definirmos , vamos dividi-la em duas partes, e , de forma que :
Vamos começar definindo em um script novo do MATLAB, cujo numerador é e o denominador é . Vamos criar duas variáveis contendo os coeficientes dos polinômios de . A primeira variável representará os coeficientes do polinômio do numerador e será chamada de . A segunda variável será um vetor chamado e terá os coeficientes do polinômio do denominador. Após criar as duas variáveis de entrada de , digite o comando :
Desta forma, a função de transferência é criada e armazenada na variável
Vamos fazer a mesma coisa para :
Os vetores e contêm os coeficientes dos polinômios do numerador e do denominador de , respectivamente. Com a função , cria-se a funções de transferência .
Finalmente, para definir , inclua em seu código o produto abaixo:
Execute o programa para ver a cara de :
Passo 3
Após definir , podemos resolver a letra a do exercício usando a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de transferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de :
Passo 4
Podemos encontrar a faixa de valores que pode assumir no gráfico gerado no passo . Para isto, devemos relembrar o critério de estabilidade: uma malha de controle é estável se as raízes forem números reais negativos ou se forem números complexos com a parte real negativa. No lugar das raízes, isso significa que as raízes devem estar à esquerda do eixo vertical.
Isso quer dizer que, para encontrarmos os valores do ganho que garantem a estabilidade, devemos analisar os ramos que cruzam o eixo vertical. Logo, no nosso gráfico, a área de interesse é essa aqui:
Por isso, recomendo você ampliar o gráfico, dando um zoom nessa região, pra ver bem certinho os polos e os ramos. Você pode dar o zoom clicando no botão destacado em vermelho abaixo:
Para ver os valores de ganho, selecione o botão “Data Cursor” (destacado em azul acima) e clique sobre um dos ramos. Aparecerá um quadradinho preto com uma janelinha contendo informações sobre na naquele ponto:
O dado “Gain” é o que nos interessa para responder à letra a. Ele representa o ganho nesse ponto. Se você arrastar o quadradinho até um xizinho, que representa um polo, você verá que quando o cursor estiver sobre o polo. Logo, quanto mais perto do polo, menor o .
O polo bem na fronteira da estabilidade são polos iguais a . Nesses polos, e quando nos afastamos deles, aumenta. O valor de em um ponto bem em cima do eixo vertical é o valor mínimo que tem que ter para que o sistema seja estável. O ganho pode assumir qualquer valor acima desse mínimo, pois o restante do lugar das raízes encontra-se à esquerda do eixo vertical.
No seu gráfico do lugar das raízes, clique sobre um ponto bem em cima do eixo vertical, para encontrar o valor mínimo de :
Para que o sistema em malha fechada seja estável, . Letra a respondida ;)
Passo 5
A partir do gráfico do lugar das raízes, vamos resolver a letra b do exercício, que pede para encontrarmos o ganho para termos um fator de amortecimento igual a .
No gráfico do lugar das raízes do MATLAB, clique sobre os ramos para ver as propriedades da função de transferência no ponto onde você clicou. Aqui, além do parâmetro “Gain”, que nos dá o valor de , vamor ver o parâmetro “Damping”, que dá o fator de amortecimento.
Arraste o quadradinho preto que apareceu onde você clicou até encontrar um ponto onde o parâmetro “Damping” seja igual a :
Temos que um ganho nos dá um fator de amortecimento igual a . Letra b resolvida ;D
Passo 6
A letra c pede para encontrarmos a resposta do sistema em malha fechada para um degrau unitário, considerando o ganho encontrado na letra b. Para isto, usaremos o comando , que tem a sintaxe:
A função plota o gráfico da resposta ao degrau unitário de , que é uma função de transferência criada usando o comando .
Contudo, precisamos aplicar no sistema em malha fechada, como o diagrama do enunciado:
Para criar um sistema em malha fechada no MATLAB, usamos o comando , que tem a sintaxe:
O comando tem como entrada duas funções de transferência e retorna a função de transferência equivalente ao diagrama de blocos abaixo:
A primeira entrada de é a função de transferência da parte de cima do diagrama e a segunda entrada, é a função de transferência da parte de baixo.
No caso do exercício, quando usarmos a função , teremos que a primeira entrada é e a segunda entrada é , pois se trata de um sistema com realimentação unitária.
Insira no seu código as duas linhas abaixo:
Na primeira linha, definimos o ganho encontrado na letra b.
Na segunda linha, usamos o comando para plotar a resposta ao degrau do sistema com realimentação unitário, modelado por meio do comando .
Execute o programa e você terá a resposta da letra c.
Resposta
Exercício Resolvido #8
“Adaptado de UNICAMP – EA-721: Princípios de Controle e Servomecanismo. 2ª lista de exercícios, de José C. Geromel e Rubens H. Korogui. Exercício 17”
Considere o sistema de controle com realimentação unitária apresentado abaixo, no qual se assume . Para a função de transferência definida a seguir:
- Esboce o lugar das raízes em função do ganho .
- Determine de maneira que os polos dominantes do sistema em malha fechada apresentem fator de amortecimento igual a .
- Para determinado no item anterior, encontre a saída para uma entrada degrau unitário.
Passo 1
O enunciado nos dá uma função de transferência e nos pede para esboçar o lugar das raízes, determinar o ganho de modo que os polos dominantes tenham fator de amortecimento igual a (lembrando que os polos dominantes são aqueles que estão mais próximos do eixo imaginário do lugar das raízes, ou seja, do eixo vertical) e, usando o encontrado, determinar a saída do sistema para o degrau unitário.
Para plotar o lugar das raízes de no MATLAB e resolver a letra a do exercício, usaremos a função . A partir do lugar das raízes obtido na letra a, resolveremos a letra b, achando o valor de no próprio gráfico. Com a resposta da letra b, faremos a letra c, gerando o sistema em malha fechada por meio do comando e plotando a resposta ao degrau unitário por meio da função .
Passo 2
O primeiro passo é entrar com por meio da função , que tem a sintaxe:
A função tem como entrada dois vetores, o primeiro contendo os coeficientes do polinômio do numerador da função de transferência (representado por ) e outro contendo os coeficientes do polinômio do denominador (representado por ). retorna um objeto representando a função de transferência, que será armazenada em .
Contudo, repare que o numerador e o denominador de estão fatorizados. Para definirmos no MATLAB, vamos quebrá-la em três partes, , e , de forma que :
Vamos começar definindo em um script novo do MATLAB, cujo numerador é . Já o denominador é o polinômio . Vamos criar duas variáveis contendo os coeficientes dos polinômios de . A primeira variável representará os coeficientes do polinômio do numerador e será chamada de . A segunda variável será um vetor chamado e terá os coeficientes do polinômio do denominador. Após criar as duas variáveis de entrada de , digite o comando :
Desta forma, a função de transferência é criada e armazenada na variável
Vamos fazer a mesma coisa para e :
Os vetores e contêm os coeficientes do polinômio do numerador de e , respectivamente. Já os vetores e contêm os coeficientes do polinômio do denominador de e , respectivamente. Com a função , criam-se as funções de transferência e .
Finalmente, para definir , inclua em seu código o produto abaixo:
Execute o programa para ver como ficou:
Passo 3
Após definir , podemos resolver a letra a do exercício usando a função para plotar o lugar das raízes. tem a sintaxe:
A função tem como entrada uma função de transferência criada a partir do comando (no nosso caso, é a variável ). Ao executarmos o programa, gera um gráfico com o lugar das raízes da função de transferência.
Adicione no seu script o comando:
Ao executar o programa, você terá o gráfico do lugar das raízes de :
Pronto! Esta é a resposta da letra a =D
Passo 4
A partir do gráfico do lugar das raízes, vamos resolver a letra b do exercício, que pede para encontrarmos o ganho de maneira que os polos dominantes do sistema em malha fechada apresentem fator de amortecimento igual a .
No gráfico do lugar das raízes do MATLAB, as bolinhas representam os zeros e os chizinhos, os polos. Para vermos os parâmetros de nos polos dominantes, devemos clicar sobre os ramos partindo dos chizinhos mais próximos do eixo vertical, como no print abaixo:
Veja que abriu uma janelinha apresentando algumas propriedades da função de transferência no ponto onde clicamos. É nessa janelinha que vamos ver o valor de , dado pelo parâmetro “Gain”, e o fator de amortecimento, que é dado pelo parâmetro “Damping”. No caso do print acima, para um ganho , temos um fator de amortecimento de .
Arraste o quadradinho preto que apareceu onde você clicou até encontrar um ponto onde o parâmetro “Damping” seja igual a :
Temos que um ganho nos dá um fator de amortecimento igual a nos polos dominantes. Letra b resolvida ;D
Passo 5
A letra c pede para encontrarmos a resposta de para um degrau unitário, considerando o ganho encontrado na letra b. Para isto, usaremos o comando , que tem a sintaxe:
A função plota o gráfico da resposta ao degrau unitário de , que é uma função de transferência criada usando o comando .
Contudo, precisamos aplicar no sistema em malha fechada, como o diagrama do enunciado:
Para criar um sistema em malha fechada no MATLAB, usamos o comando , que tem a sintaxe:
O comando tem como entrada duas funções de transferência e retorna a função de transferência equivalente ao diagrama de blocos abaixo:
A primeira entrada de é a função de transferência da parte de cima do diagrama e a segunda entrada, é a função de transferência da parte de baixo.
No caso do exercício, quando usarmos a função , teremos que a primeira entrada é e a segunda entrada é , pois se trata de um sistema com realimentação unitária.
Insira no seu código as duas linhas abaixo:
Na primeira linha, entramos com o ganho encontrado na letra b.
Na segunda linha, usamos o comando para plotar a resposta ao degrau do sistema com realimentação unitário, modelado por meio do comando .
Execute o programa e você terá a resposta da letra c.