DC Motor Speed: PID Controller Design
https://ctms.engin.umich.edu/CTMS/index.php?example=MotorSpeed§ion=ControlPID Comandos usados: tf, step, feedback, controlSystemDesigner
Conteúdo
- Controle Proporcional - Controle PID
- Ajustar os ganhos
Dos problemas principais, as equações dinâmicas no domínio de Laplace e a função de transferência malha aberta do motor DC são as seguintes:
A estrutura do sistema de controle tem a forma mostrada abaixo:
Para a configuração original do problema e a derivação das equações acima, favor consular a página DC Motor Speed: System Modeling
Para referência de degrau 1 rad/seg , o critério de design os os seguintes:
- Settling time menos de 2 segundos - Overshoot menos de 5%
- Erro no estado estacionário menor que 1% (|Steady-state erro)
Agora vamos projetar um controlador usando os métodos introduzidos na página Introdution: PID Controller Design. Crie um novo m-file e digite os seguintes comandos:
Lembre-se que a função de transferência para um controlador PID é:
Controle Proporcional
Primeiro vamos tentar empregar um controlador Proporcional com ganho de 100, isto é, C(s) = 100.
Para determinar a função de transferência de malha fechada , vamos usar o comando feedback.
Adicionar o seguinte código no fim do m-file:
Agora vamos examinar a resposta ao degrau de malha fechada. Adicione os seguintes comandos ao final do seu m-file e execute-o na janela de comando. Você deve gerar o gráfico mostrado abaixo.
Você pode visualizar algumas das características do sistema clicando com o botão direito na figura e escolhendo Characteristics do menu resultante. Na figura a seguir, anotações foram adicionadas especificamente para Settling time, Peak Response e Steady State.
No gráfico acima, vemos que tanto o erro em estado estacionário quanto o overshoot são muito grandes. Lembre-se que na página Introduction: PID Controller Design que aumentando o ganho proporcional Kp irá reduzir o erro steady-state. Entretanto , também lembre-se que aumentando Kp , possivelmente irá resultar em aumento do overshoot, portanto, parece que nem todos os requisitos de projeto podem ser atendidos com um simples controlador proporcional. Este fato pode ser verificado experimentando diferentes valores de Kp. Especificamente, você pode empregar o Control System Designer informando o comando controlSystemDesigner(P_motor) ou indo a tab APPS e clicando no ícone app sob Control System Design and Analysis e então abrindo um plot em resposta de degrau de malha-fechada na tab da janela New Plot do Control System Designer como a figura abaixo:
Depois que você der um duplo clique no plot e selecionar Edit Compensator. Você pode então variar o ganho de controle na janela Compensator Editor e ver o efeito do resultado na resposta ao degrau em malha-fechada como pode ver na figura abaixo:
Um pouco de experimento verifica o que antecipamos: um controlador proporcional é insuficiente para atender os requisitos de projeto determinados; termos derivativos e/ou integrativos devem ser adicionados ao controlador.
CONTROLE PID
Relembrando na página INTRODUTION: PID CONTROLLER DESIGN adicionar um termo integral irá eliminar o erro steady-state para a referência do degrau e um termo derivativo muitas vezes reduzirá o overshoot.
Vamos tentar um controlador PID com pequenos Ki e Kd. Modifique o seu m-file para que as linhas definindo seu controle como segue. A execução do novo m-file fornece o gráfico abaixo:
A inspeção acima indica que o erro em estado estacionário realmente vai para zero para uma entrada em degrau. No entanto, o tempo necessário para atingir o estado estacionário é muito maior do que o tempo de estabilização necessária de 2 segundos.
AJUSTANDO OS GANHOS
Neste caso, a cauda longa no gráfico de resposta ao degrau se deve ao fato de que o ganho integral é pequeno e, portanto, leva muito tempo para que a ação integral se acumule e elimine o erro em estado estacionário. Este processo deve ser acelerado aumentando o valor de Ki. Volte a seu m-file e mude Ki para 200 como segue o código abaixo. Execute novamente o arquivo e deverá obter o gráfico mostrado abaixo.
Como esperado, o erro em estado estacionário é agora eliminado muito mais rapidamente do que antes. No entanto, o grande Ki aumentou muito o overshoot. Vamos aumentar o Kd para tentar reduzir o overshoot. Voltando para m-file e mude Kd para 10 conforme código abaixo. Execute novamente e plot o seguinte:
Como esperávamos, o Kd aumentado reduziu o resultado do overshoot. Agora sabemos que ao usarmos o controlador PID com Kp = 100, Ki = 200, Kd =10, todos os requisitos de seu projeto serão satisfeitos.