Os ganhos do controlador de ajuste podem ser difíceis. Quais estratégias gerais funcionam bem para obter um sistema estável que converge para a solução certa?
Os ganhos do controlador de ajuste podem ser difíceis. Quais estratégias gerais funcionam bem para obter um sistema estável que converge para a solução certa?
Respostas:
Para motores pequenos e de baixo torque, com pouca ou nenhuma engrenagem, um procedimento que você pode usar para obter uma boa sintonia da linha de base é sondar sua resposta a uma perturbação.
Para ajustar um PID, use as seguintes etapas:
A perturbação que você usa depende do mecanismo ao qual o controlador está conectado. Normalmente, basta mover o mecanismo manualmente para longe do ponto de ajuste e liberá-lo. Se as oscilações aumentarem cada vez mais, será necessário reduzir o ganho de P.
Se você definir o ganho D muito alto, o sistema começará a vibrar (vibre com uma frequência mais alta que as oscilações do ganho P). Se isso acontecer, reduza o ganho D até que ele pare.
Eu acredito que essa técnica tem um nome. Vou colocá-lo aqui quando o encontrar.
Um método experimental semelhante à resposta do hauptmech que me ensinaram na faculdade:
O método Ziegler-Nichols é mais preciso se você puder obter um número exato para o período de oscilação. Geralmente, causa oscilações usando os números "clássicos do PID" dados, portanto nem sempre é o ideal.
Para regras gerais sobre o efeito de cada termo no tempo de subida, superação, tempo de acomodação, erro no estado estacionário e estabilidade, consulte a Tabela 1 de "Análise e Projeto do Sistema de Controle PID" , de Li, Ang e Chong nos Sistemas de Controle IEEE Revista.
O Embedded.com mudou meu artigo mais uma vez, mas aqui é onde está agora. Isso mostra como escrever um loop PID (descobrir como fazê-lo em algo diferente de ponto flutuante é deixado como exercício para o leitor) e como ajustá-lo.
A melhor maneira depende muito de suas habilidades. A maneira de obter o melhor ajuste , supondo que você seja um experiente sistema de controle, é geralmente medir a resposta da planta ("planta" == "a coisa que você está controlando") e, em seguida, dependendo de como você fez o procedimento. as medições extraem um modelo da planta e o design para isso, ou apenas o design diretamente para as medições.
Para certas plantas difíceis, você descobrirá que nunca pode fazer medições satisfatórias; nesse caso, você deve seguir apenas os modelos. Essas são raras, mas satisfatórias quando você as faz trabalhar.
Sebastian Thrun apresentou um algoritmo simples para ajustar o PID em sua classe "Como programar um carro robótico". É chamado "twiddle", ele descreve aqui .
Twiddle é muito propenso a encontrar mínimos locais - isso significa que você pode criar um conjunto de três constantes que são boas, mas não ideais para a situação. O problema de ajustar as constantes do PID é um subconjunto de um problema de pesquisa mais geral para encontrar determinados parâmetros para maximizar a utilidade (nesse caso, minimizar o erro do algoritmo do PID). Você pode procurar outras soluções gerais para esse problema, como escaladas, recozimento simulado, algoritmos genéticos etc. que podem acabar encontrando soluções mais ideais.
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 Kp até chegar ao alvo e aumente Ki para se livrar do erro em estado estacionário.
O Kd pode confundir o problema, uma vez que responde mal ao ruído, então você começa a adicionar filtros na entrada analógica e, em seguida, questiona o que isso faz além de diminuir o controle e tornar a coisa toda mais difícil de resolver ...
Outra coisa que me confunde é se a equação do PID está na forma padrão ou em uma forma independente (paralela na wikipedia). O efeito de Ki parece inverso quando a forma está no caminho errado para o que você pensa que é. Ambos os tipos são usados na automação, às vezes com a opção de alternar entre eles.
Modelagem do sistema
É claro que o ajuste experimental pode ser feito conforme mencionado nas outras respostas, mas se você conseguir definir um modelo dinâmico razoável para o que quiser controlar e identificar seus parâmetros , poderá projetar seu controlador com base em critérios definidos, como ultrapassagem , tempo de subida , tempo de acomodação , estado estacionário erro e assim por diante.
Existem até ferramentas no MATLAB que podem ajustar seu controlador para otimizar uma combinação desses critérios, o que o torna ainda melhor.
Conheça o seu controlador
Aprender o que cada parâmetro no controlador PID faz também é bastante útil. Todos os algoritmos experimentais são baseados nesse tipo de conhecimento de alguma forma. Se você não apenas seguir as instruções, mas conseguir sentir isso por conta própria, poderá achar mais fácil ajustar seu controlador manualmente.
Problemas do mundo real
Há uma chance de que uma dessas coisas, entre outras, fique no seu caminho ao ajustar seu controle: conclusão , taxa de amostragem inadequada , saturação .
Conclusão
No final, tudo depende do que você pode realmente fazer com seu sistema para obter algum conhecimento sobre como ele funciona e que tipo de experimentação pode ser feita. A melhor coisa é realmente aprender mais sobre controladores PID e teoria de controle em geral, IMO, mas sou tendenciosa :)
Vou tentar expandir um pouco da minha experiência para aqueles que possam estar interessados. Acho que o problema é que temos muita teoria de controle que é um tanto inacessível (e às vezes não é útil) e, em seguida, temos regras práticas 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 o seu sinal de controle é uma onda senoidal em uma determinada frequência, 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. Essa suposição é uma boa aproximação para muitos sistemas do mundo real e permite observar isoladamente diferentes frequências.
Se você observar o caminho de controle, terá um ponto de ajuste, seu controlador PID, seu sistema (aka "Plant") e, em seguida, seu sensor. Imagine um ponto de ajuste fixo e uma onda senoidal do seu sensor (isso é igual a uma perturbação do mundo real no sensor, realimentada). Em um sistema instável, seu feedback faz com que o loop de controle amplifique o erro, em vez de reduzi-lo, de modo que, à medida que o tempo aumenta, sua amplitude aumenta. A razão pela qual isso ocorre é devido a um atraso ou, para essa frequência específica, uma mudança de fase entre a entrada e a saída. Para uma dada frequência, podemos observar o deslocamento e a amplitude do circuito aberto (ou seja, sem feedback) e, quando desenhamos todos aqueles em um gráfico, obtemos algo como um gráfico de Bode. Se temos uma situação neste gráfico de malha aberta em que o erro continua sendo amplificado, 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 permanecerá estável . Na prática, queremos uma margem a partir desse ponto (margem de ganho e margem de fase) e é por isso que você verá isso "recuando" em muitos dos métodos manuais / heurísticos.
O principal problema com esses métodos manuais é que você está voando às cegas e está praticamente garantido para obter um sistema de controle ruim.
Lembre-se também de que o significado P, I e D está relacionado ao que seu sensor está medindo e a qual controle você está aplicando. Um erro comum em controladores construídos em casa é que as pessoas pensem que estão aplicando P quando na verdade não estão. Os controladores de motor geralmente têm um loop de posição, passando por um loop de velocidade, passando por um loop de torque. (Uma cascata )
OK, mas como isso nos ajuda?
O primeiro ponto que eu gostaria de destacar é que, se você estiver construindo seu próprio controlador PID, também deve criar uma maneira de medir a resposta de loop aberto. Faça uma varredura de frequência na entrada do seu controlador e meça a saída do sensor com o feedback desconectado. Em seguida, você pode desenhar o gráfico Bode de loop aberto e ver por que seu sistema é estável e pode trocar os 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 do seu ponto de ajuste enquanto o loop está fechado. Ambos não são tão difíceis e não exigem muito conhecimento teórico.
Se você estiver simplesmente ajustando os controles sem entender o que está acontecendo sob o capô, não poderá otimizar seu sistema. Construir alguma intuição sobre esses sistemas não é tão difícil. Por exemplo, o ganho proporcional não afeta a fase, mas simplesmente aumenta o ganho de malha aberta em todas as frequências. Então, o que você está fazendo quando aumenta o ganho proporcional em todos esses métodos de ajuste manual é encontrar a frequência em que a fase vai para -180. Veja isso para ter mais uma idéia do impacto dos vários controles na sua resposta de frequência.
Muitas vezes, obter o melhor desempenho do circuito 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á aumentar os parâmetros de controle e obter a melhor largura de banda de malha aberta e fechada. Na minha experiência em aplicações de controle motor, o ganho proporcional é aquele que deveria estar fazendo a maior parte do "trabalho" e o integrador o "descanso". Eu não acho que você precise de um termo D. Ter um filtro passa-baixo e um filtro de entalhe ajuda muito em situações em que 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 observada no circuito fechado pode ser diferente da malha aberta).
Se a segurança é uma preocupação (motores muito potentes ou um sistema que pode ser destruído pelo motor fora de controle), você precisa colocar alguns limites antes de iniciar o ajuste (por exemplo, limite de corrente, erro máximo de posição) para proteger o sistema. Então você precisa ter algum tipo de percepção do alcance dos parâmetros. Se o seu feedback tiver 40 contagens por rotação ou 4000 contagens por rotação, seus parâmetros serão um fator de 100 para um determinado sistema. Minha abordagem seria primeiro encontrar um intervalo em que você tenha pouca capacidade de controle e, a partir daí, começar com P e depois eu (embora novamente você esteja voando às cegas). Recuar cria essa margem de estabilidade.
Além do circuito fechado
O loop fechado tenta remover o erro do sistema. Sempre terá um desempenho um pouco limitado. O que você deseja 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 forward. No feed-forward, você percorre o controlador e aciona um comando diretamente no sistema. Um exemplo disso seria o feed-forward da aceleração. Se você sabe que o torque do motor é constante e conhece a carga, é possível saber a quantidade de corrente necessária para obter uma certa aceleração da carga. Você simplesmente pega a aceleração da entrada de comando, multiplica-a por uma constante e a adiciona ao comando de unidade do controlador. Você está basicamente fazendo o que seria necessário para conduzir o sistema se não houvesse um controlador e, quanto mais próximo você pudesse obter, menos erro seu loop levaria e melhor o desempenho do sistema. Faz uma enorme diferença na prática.
Ziegler-Nichols é um método manual fácil. Métodos mais robustos também existem - eles geralmente se baseiam em soluções matemáticas (analítica, otimização iterativa etc.)
Além disso, o Google "PID auto-ajustável" para algumas técnicas automatizadas. O meu favorito é a aplicação de redes neurais ao ajuste PID.
0.01sec
) durante 20secs
um tempo como matriz 3
x 2000
)Existe uma abordagem mais rápida chamada Ziegler – Nichols :