Quais são as boas estratégias para ajustar os loops PID?

Ajustar os ganhos do controlador pode ser difícil, o que general as estratégias funcionam bem para obter um sistema estável que converge para a solução certa?

Comentários

  • Uma pergunta direcionada a uma pergunta mais específica seria mais útil. Caso contrário, você deve apenas olhar o artigo PID , com uma seção sobre ajuste
  • I ‘ sempre achei que os PIDs de ajuste são muito dependentes das características do sistema, e é por isso que ‘ nunca descobri que sistemas autoajuste terrivelmente útil. Eles são bons para uma primeira passagem, conjunto de parâmetros de baixo desempenho, mas estão longe do ótimo, e você terá o mesmo problema com qualquer estratégia geral que não seja otimizada para os aspectos mecânicos, elétricos e de controle de um determinado sistema.

Resposta

Para motores pequenos e de baixo torque com pouca ou nenhuma engrenagem, um procedimento que você pode usar para obter um bom ajuste de linha de base é sondar sua resposta a um distúrbio.

Para ajustar um PID, use as seguintes etapas:

  1. Defina todos os ganhos como zero.
  2. Aumente o ganho P até que a resposta a uma perturbação seja uma oscilação constante.
  3. Aumente o ganho D até que as oscilações desapareçam (ou seja, está criticamente amortecido).
  4. Repita as etapas 2 e 3 até que o aumento do ganho D não pare as oscilações.
  5. Defina P e D com os últimos valores estáveis.
  6. Aumente o ganho I até que ele o leve ao ponto de ajuste com o número de oscilações desejadas (normalmente zero, mas uma resposta mais rápida pode ser obtida se você não se importar com algumas oscilações de overshoot)

A perturbação que você usa depende do mecanismo ao qual o controlador está conectado. Normalmente, mover o mecanismo com a mão para longe do ponto de ajuste e deixá-lo ir é suficiente. Se as oscilações ficarem cada vez maiores, você precisa reduzir o Ganho P.

Se você definir o ganho D muito alto, o sistema começará a vibrar (vibrar em uma frequência mais alta do que as oscilações do ganho P). Se isso acontecer, reduza o ganho D até que ele pare.

Acredito que esta técnica tem um nome. Vou colocá-la aqui quando a encontrar.

Comentários

  • Parece Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
  • @ Throwback1986, Definitivamente não Ziegler-Nichols que usa apenas o ganho P e onde Os ganhos I e D são então calculados de acordo com o ganho P oscilante e o período de oscilação
  • Você tem conselhos adicionais para ajustar especificamente um braço de robô que tem várias articulações que precisam de ajuste? Você começa da base e segue para o executor final, ou vice-versa, ou isso importa?
  • Em um ambiente acadêmico ou industrial, você desejará um método de controle mais sofisticado. Para um hobbiest; a gravidade tem um efeito de amortecimento, portanto, ajuste cada junta no ângulo em que a gravidade afeta menos os motores. Por exemplo, com o braço apontando para cima de forma que a gravidade atue sobre os rolamentos e não sobre o motor. A ordem não importa. Adicionar um termo de compensação de gravidade feedforward ao seu controle é provavelmente a melhoria mais fácil (use Newton-Euler recursivo para um braço serial) se você puder ‘ obter o desempenho que deseja.
  • A ferramenta pidtuner.com me deu resultados melhores do que o método Ziegler-Nichols, que tem várias desvantagens conhecidas; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…

Resposta

Um método experimental semelhante à resposta do hauptmech que me ensinaram na faculdade:

  1. Defina todos os ganhos como 0.
  2. Aumente Kd até que o sistema oscile.
  3. Reduza K d por um fator de 2-4.
  4. Defina Kp para cerca de 1% de K d .
  5. Aumentar Kp até o início das oscilações.
  6. Diminuir Kp por um fator de 2-4.
  7. Defina Ki para cerca de 1% de Kp .
  8. Aumente Ki até o início das oscilações.
  9. Diminua Ki por um fator de 2-4.

O O método de Ziegler-Nichols é mais preciso se você puder obter um número preciso para o período de oscilação. Ele geralmente causa oscilações usando o “cla números SIC PID “dados, portanto, nem sempre é ideal.

Para regras gerais sobre o efeito de cada termo no tempo de subida, ultrapassagem, tempo de estabilização, erro de estado estacionário e estabilidade, consulte a Tabela 1 de “Análise e projeto do sistema de controle PID” , por Li, Ang e Chong na IEEE Control Systems Magazine.

Comentários

  • Kd primeiro? Sempre pensei que era melhor começar com Kp.
  • Eu ‘ m transcrevendo slides de palestras antigas, se houver ‘ um bom motivo para não fazer dessa forma, eu ‘ d estaria curioso para ouvir.
  • Isso ‘ é o algoritmo que defendo para ” assento das calças ” ajuste. Isso ‘ vai levá-lo o mais perto possível, sem modelar o sistema ou medir sua resposta. (Modelar e / ou medir é a única maneira de fazer se você realmente precisa do ajuste correto).
  • Ajustar Kd primeiro não ‘ não faz sentido para mim , como em todo PID que ‘ ve implementado, o sinal de Kd é negativo. Ele ‘ é usado para reduzir o sinal de controle quando grandes mudanças nos erros estão ocorrendo, basicamente amortecendo o sistema. Se você tiver apenas Kd, o sistema se moverá na direção oposta, aumentando o erro e agravando o problema. Se Kd for positivo, sempre que ocorrer uma grande mudança no erro na direção certa, você ‘ fará com que ele mude ainda mais rápido e ultrapassará seu objetivo.
  • Na verdade, ajustar o ganho D primeiro faz algum sentido, mas eu ‘ m assumindo que ” aumentando ” O ganho D significa aumento do valor absoluto e ‘ s apenas aumentando o amortecimento. O maior problema com o ganho D é que ele amplifica o ruído de alta frequência e ‘ é bom ver esse efeito sem o ganho P. Portanto, você ‘ está essencialmente começando procurando os ganhos nos quais ele para de se comportar como amortecimento e começa a amplificar o ruído e os sinais de erro defasados. Eu ‘ estou supondo que para a etapa 2, você precisa cutucar sua planta para ver se ela oscila.

Resposta

Embedded.com moveu meu artigo mais uma vez, mas é aqui que ele está agora. Isso mostra como escrever um loop PID (descobrir como fazê-lo em algo diferente de ponto flutuante é deixado como um exercício para o leitor) e como ajustá-lo.

PID sem PhD

A melhor maneira depende muito de suas habilidades. A maneira de obter o melhor ajuste , supondo que você seja um experiente sistema de controle, é normalmente medir a resposta da planta (“planta” == “a coisa que você” está controlando “), então, dependendo de como você fez as medições, extraia um modelo da planta e projete para isso, ou apenas projete diretamente para as medições.

Para certas plantas difíceis, você descobrirá que nunca será satisfatório medições, caso em que você tem que ir apenas por modelos. Esses são raros, mas satisfatórios quando você os faz funcionar.

Resposta

Sebastian Thrun apresentou um algoritmo simples para ajustar o PID em seu Aula “Como programar um carro robótico”. É chamado de “twiddle”, ele o descreve aqui .

Twiddle é muito propenso a encontrar mínimos locais – isso significa que você pode vir com um conjunto de três constantes que são boas, mas não ideais para a situação. O problema de ajustar constantes PID é um subconjunto de um problema de pesquisa mais geral para encontrar certos parâmetros para maximizar a utilidade ( neste caso, minimizando o erro do algoritmo PID). Você pode procurar outras soluções gerais para esse problema, como escalada, recozimento simulado, algoritmos genéticos etc., que podem acabar encontrando soluções mais ideais.

Resposta

Em contraste com as outras duas respostas, eu diria que uma boa maneira manual de ajustar um PID é ignorar o Kd. Portanto, comece em 0 e aumente o Kp até chegar ao alvo, depois aumente o Ki para se livrar do erro de estado estacionário.

O Kd pode confundir o problema, pois responde mal ao ruído, então você começa a adicionar filtros em sua entrada analógica e depois questionar o que isso faz além de desacelerar seu controle e tornar tudo mais difícil de resolver …

Outra coisa que pode me confundir é se a equação PID está na forma padrão ou em uma forma independente (paralela na wikipedia). O efeito do Ki parece se inverter quando a forma é o caminho errado para o que você pensa que é. Ambos os tipos são usados em automação, às vezes com a opção de alternar entre eles.

Resposta

Modelagem do sistema

É claro que o ajuste experimental pode ser feito conforme mencionado nas outras respostas, mas se você for capaz de definir um modelo dinâmico razoável para tudo o que deseja controlar e for capaz de identificar seus parâmetros , você deve ser capaz de projetar seu controlador com base em critérios bem definidos, como overshoot , tempo de subida , tempo de acomodação , estável -state erro e assim por diante.

Existem até ferramentas no MATLAB que são capazes de ajustar seu controlador para otimizar uma combinação desses critérios, o que o torna ainda melhor para usar.

Conheça o seu controlador

Aprendendo o que cada parâmetro no O controlador PID também é bastante útil. Todos os algoritmos experimentais baseiam-se de alguma forma neste tipo de conhecimento. Se você não apenas seguir as instruções, mas também conseguir ter essa sensação, poderá achar mais fácil ajustar o controlador manualmente.

Problemas do mundo real

Há uma chance de uma dessas coisas, entre outras, atrapalhar ao ajustar seu controlador: windup , taxa de amostragem inadequada , saturação .

Conclusão

No final, tudo depende do que você pode realmente fazer com o seu sistema para obter algum conhecimento sobre como funciona e que tipo de experimentação pode ser feito. A melhor coisa é realmente aprender mais sobre controladores PID e teoria de controle em geral, IMO, mas sou tendencioso 🙂

Comentários

  • I não ‘ não entendo por que as pessoas continuam sugerindo heurísticas para ajustar o PID, enquanto hoje em dia temos muitas ferramentas automáticas para identificação de plantas e projeto de controladores que não id = “fc18e3c2d2”>

t requer um conhecimento teórico profundo. Gostei desta resposta, então.

Resposta

Tentarei expandir um pouco minha experiência para aqueles que possam estar interessados. Acho que o problema é que temos muitas teorias de controle que são um tanto inacessíveis (e às vezes inúteis) e, então, temos regras básicas que fazem suposições sobre sistemas que geralmente são imprecisos.

Estabilidade

Vamos falar primeiro sobre por que os loops de controle se tornam instáveis. Para esta discussão, assumirei um sistema linear . Informalmente, isso significa que se seu sinal de controle é uma onda senoidal em uma determinada frequência, então sua saída observada está na mesma frequência e se você alterar a amplitude do seu sistema de controle, sua saída responde na mesma proporção. Esta suposição é uma boa aproximação para muitos sistemas do mundo real e nos permite olhar para diferentes frequências de forma isolada.

Se você olhar para o caminho de controle, você tem um ponto de ajuste, seu controlador PID, seu sistema “Planta”) e, em seguida, seu sensor. Imagine um ponto de ajuste fixo e uma onda senoidal de seu sensor (isso é igual a uma perturbação do mundo real no sensor, realimentada). Em um sistema instável, seu feedback faz com que a malha de controle amplifique o erro em vez de reduzi-lo de forma que, conforme o tempo aumenta, sua amplitude aumenta. A razão pela qual isso acontece é devido a um atraso, ou para esta frequência particular, uma mudança de fase entre a entrada e a saída. Para uma determinada frequência, podemos observar o deslocamento de malha aberta (ou seja, sem feedback) e a amplitude da saída e, quando desenhamos todos em um gráfico, obtemos algo como um Gráfico de Bode . Se tivermos uma situação neste gráfico de malha aberta em que o erro continua sendo amplificado, então temos um sistema instável. Se o atraso for menor que 1/2 do comprimento de onda ou o ganho for menor que x1, o sistema será estável . Na prática, queremos alguma margem a partir desse ponto (margem de ganho e margem de fase) e é por isso que você “verá este” recuo “em muitos dos métodos manuais / heurísticos.

O principal problema com esses manuais métodos é que você está voando às cegas e com certeza terá um sistema de controle ruim.

Também tenha em mente que o significado de P, I e D está relacionado ao que seu sensor está medindo e que controle você está aplicando. Um erro comum em controladores construídos em casa é as pessoas pensarem que estão aplicando P, quando na verdade não estão. Os controladores de motor costumam ter uma malha de posição, passando por uma malha de velocidade passando por uma malha de torque. (Uma cascata )

OK, mas como isso nos ajuda?

O primeiro ponto que gostaria de fazer é que se você estiver construindo seu próprio controlador PID, você também deve construir uma maneira de medir o circuito aberto resposta. Faça uma varredura de frequência na entrada de seu controlador e meça a saída do sensor com o feedback desconectado. Em seguida, você pode desenhar o gráfico de Bode de loop aberto e ver por que seu sistema está estável e ser capaz de negociar fora dos vários controles. Também é útil medir a resposta do loop fechado e você pode fazer isso com qualquer sistema, fazendo uma varredura de frequência de seu ponto de ajuste enquanto o loop está fechado. Ambos não são tão difíceis e não requerem muito conhecimento teórico.

Se você estiver simplesmente ajustando os controles, sem qualquer compreensão do que está acontecendo por baixo do capô, não será capaz para otimizar seu sistema. Construir alguma intuição sobre esses sistemas não é tão difícil. Por exemplo. o ganho proporcional não tem efeito na fase, mas simplesmente aumenta o ganho de malha aberta em todas as frequências. Portanto, o que você está fazendo ao aumentar o ganho proporcional em todos esses métodos de ajuste manual é encontrar a frequência em que a fase vai para -180. Veja isto para ter mais ideia sobre o impacto dos vários controles em sua resposta de frequência.

Muitas vezes, obter o melhor desempenho de loop fechado envolve ajustar o sistema e não apenas os ganhos do controlador. O que você deseja é tornar o sistema o mais “rígido” possível. Isso permitirá que você aumente os parâmetros de controle e obtenha a melhor largura de banda de malha aberta e fechada. Na minha experiência em aplicações de controle de motor, o ganho proporcional é o que deve fazer a maior parte do “trabalho” e o integrador o “resto”. Eu não acho que você precise de um termo D. Ter um filtro passa-baixo e um filtro notch ajuda muito em situações onde você pode ter alguma ressonância mecânica, mas configurá-los sem um gráfico de Bode é muito difícil (a frequência de oscilação que você observa em malha fechada pode ser diferente de malha aberta).

Se a segurança for uma preocupação (motores muito potentes ou um sistema que pode ser destruído pelo motor saindo do controle), você precisa colocar alguns limites antes de começar a sintonizar (por exemplo, limite de corrente, erro de posição máximo) para proteger o sistema. Em seguida, você precisa ter algum tipo de noção do intervalo dos parâmetros. Se o seu feedback tiver 40 contagens por rotação ou 4000 contagens por rotação, seus parâmetros será um fator de 100 para um determinado sistema. Minha abordagem seria primeiro encontrar um intervalo em que você tenha alguma capacidade de controle insatisfatória e, em seguida, aumentar a partir daí começando com P e depois com I (embora, novamente, você esteja voando às cegas). Recuar cria esta margem de estabilidade.

Além do circuito fechado

Ciclo fechado tenta remover o erro do sistema. Sempre terá um desempenho um tanto limitado. O que você quer fazer é minimizar o erro que seu controlador de loop fechado vê e uma maneira de fazer isso é através de uma técnica chamada feed para a frente . No feed-forward, você contorna o controlador e direciona um comando diretamente para o sistema. Um exemplo disso seria o feed-forward de aceleração. Se você sabe que “representa a constante de torque do motor” e sabe o load você pode dizer quanta corrente você precisa dirigir para obter uma certa aceleração da carga. Você simplesmente pega a aceleração de entrada do comando, multiplica por uma constante e adiciona isso ao comando de movimentação do controlador. Você está basicamente fazendo o que seria necessário para conduzir o sistema se não houvesse um controlador e quanto mais perto você chegar, menos erros seu loop terá que eliminar e melhor o desempenho do sistema. Isso faz uma grande diferença na prática.

Comentários

  • ” Em minha experiência em aplicações de controle de motor, o ganho proporcional é aquele que deveria ser fazendo a maior parte do ” trabalho ” e o integrador o ” resto “. Não ‘ acho que você precisa de um termo D. ” Eu concordaria com isso para aplicação típica de controle de motor. O P faz o trabalho principal e o I compensa os desvios / erros de longo prazo. Mas aqui, o quadricóptero estará sujeito a muita turbulência externa, então o termo D é importante para obter uma resposta rápida. para o termo I, a menos que o quad esteja no modo de navegação autônomo, ele não é tão crucial.
  • @ dm76: A maior parte da minha experiência é com o controle motor, e faço essa ressalva 😉 Porém, minha intuição diz que há ‘ ainda há espaço para I na aplicação de quadricóptero e acho que se P for muito alto, ele poderia lidar com distúrbios externos (assim como faz no controle do motor). Eu realmente precisaria dar uma olhada nesses sistemas para dizer algo definitivo sobre quadricópteros …Acho que muito do que eu digo aqui se aplica (especialmente faça o seu ajuste no domínio da frequência e tenha a resposta de loop aberto do sistema).
  • @ dm76: E realmente aqueles ” regra prática ” O ajuste do PID resulta em um desempenho muito medíocre em motores e provavelmente o mesmo em quadricópteros. Às vezes, um filtro de entalhe bem colocado pode fazer uma diferença de ordem de magnitude …

Resposta

Ziegler-Nichols é um método manual fácil. Métodos mais robustos também existem – eles geralmente dependem de soluções matemáticas (analítica, otimização iterativa, etc.)

Além disso, google “PID de autoajuste” para algumas técnicas automatizadas. Meu favorito é a aplicação de redes neurais para ajuste de PID.

Resposta

Se você deseja ter um coeficiente de PID preciso:

  • Obtenha seus dados estatísticos do atuador (ou seja, coletando tensões de entrada + pulsos do codificador em uma const com frequência (0.01sec) tempo para 20secs como uma 3 x 2000 matriz)
  • Obtenha a função de transferência (TF) do seu atuador (usando a caixa de ferramentas Ident no MATLAB).
  • Finalmente, use PIDTool caixa de ferramentas no MATLAB e carregue sua função de transformação.

Ou de uma maneira rápida e simples:

Há uma abordagem mais rápida chamada Ziegler – Nichols : digite descrição da imagem aqui

E nesta imagem demonstra efeitos dos parâmetros PID :
Efeitos dos parâmetros PID

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *