Quelles sont les bonnes stratégies pour régler les boucles PID?

Le réglage des gains du contrôleur peut être difficile, quel general les stratégies fonctionnent-elles bien pour obtenir un système stable qui converge vers la bonne solution?

Commentaires

  • Une question ciblée sur une question plus spécifique serait plus utile. Sinon, vous devriez simplement regarder larticle PID , avec une section sur le réglage
  • I ‘ a toujours trouvé que les PID de réglage dépendaient beaucoup des caractéristiques du système, cest pourquoi je ‘ nai jamais trouvé de systèmes auto-tune terriblement utile. Ils conviennent bien pour un ensemble de paramètres de première passe, à faible performance, mais ils sont loin d’optimal, et vous aurez le même problème avec toute stratégie générale qui n’est pas optimisée pour les aspects mécaniques, électriques et de contrôle dun système donné.

Réponse

Pour les petits moteurs à faible couple avec peu ou pas de vitesse, une procédure que vous pouvez utiliser pour obtenir un bon réglage de base est de sonder sa réponse à une perturbation.

Pour régler un PID, procédez comme suit:

  1. Réglez tous les gains à zéro.
  2. Augmentez le gain P jusquà ce que la réponse à une perturbation soit une oscillation constante.
  3. Augmentez le gain D jusquà ce que les oscillations disparaissent (c.-à-d. il est considérablement amorti).
  4. Répétez les étapes 2 et 3 jusquà ce que laugmentation du gain D narrête pas les oscillations.
  5. Réglez P et D sur les dernières valeurs stables.
  6. Augmentez le gain I jusquà ce quil vous amène au point de consigne avec le nombre doscillations souhaité (normalement zéro, mais une réponse plus rapide peut être obtenue si vous ne vous souciez pas de quelques oscillations de dépassement)

La perturbation que vous utilisez dépend du mécanisme auquel le contrôleur est attaché. Normalement, éloigner le mécanisme à la main du point de consigne et le lâcher est suffisant. Si les oscillations deviennent de plus en plus grandes, vous devez réduire le Gain P.

Si vous réglez le gain D trop élevé, le système commencera à bavarder (vibrer à une fréquence plus élevée que les oscillations de gain P). Si cela se produit, réduisez le gain D jusquà ce quil sarrête.

Je crois que cette technique a un nom. Je la mettrai ici quand je la trouverai.

Commentaires

  • On dirait Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
  • @ Throwback1986, cest certainement pas Ziegler-Nichols qui utilise uniquement le gain P et où Les gains I et D sont ensuite calculés en conséquence à partir du gain P oscillant et de la période doscillation
  • Avez-vous des conseils supplémentaires pour régler spécifiquement un bras de robot qui a plusieurs articulations qui nécessitent un réglage? Est-ce que vous partez de la base et travaillez vers lextérieur jusquà leffecteur final, ou linverse, ou est-ce que cela a même une importance?
  • Dans un contexte académique ou industriel, vous souhaiterez une méthode de contrôle plus sophistiquée. Pour un amateur; la gravité a un effet damortissement, donc réglez chaque joint à langle où la gravité affecte le moins les moteurs. Par exemple, avec le bras pointant droit vers le haut de sorte que la gravité agit sur les roulements et non sur le moteur. Lordre na pas dimportance. Lajout dun terme de compensation de gravité par anticipation à votre commande est probablement lamélioration la plus simple (utilisez Newton-Euler récursif pour un bras série) si vous pouvez ‘ obtenir les performances souhaitées.
  • Loutil pidtuner.com ma donné de meilleurs résultats que la méthode Ziegler-Nichols, qui présente plusieurs inconvénients connus; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…

Réponse

Une méthode expérimentale similaire à la réponse de hauptmech qui ma été enseignée à luniversité:

  1. Réglez tous les gains sur 0.
  2. Augmentez Kd jusquà ce que le système oscille.
  3. Réduisez K d par un facteur de 2 à 4.
  4. Réglez Kp à environ 1% de K d .
  5. Augmenter Kp jusquà ce que les oscillations commencent.
  6. Diminuer Kp par un facteur de 2 à 4.
  7. Définissez Ki sur environ 1% de Kp .
  8. Augmentez Ki jusquà ce que les oscillations commencent.
  9. Diminuer Ki par un facteur de 2 à 4.

Le La méthode de Ziegler-Nichols est plus précise si vous pouvez obtenir un nombre précis pour la période doscillation. Elle provoque généralement des oscillations en utilisant le « cla ssic PID « donnés, donc ce nest pas toujours optimal.

Pour les règles générales sur leffet de chaque terme sur le temps de montée, le dépassement, le temps de stabilisation, lerreur en régime permanent et la stabilité, voir le tableau 1 de « PID Control System Analysis and Design » , par Li, Ang et Chong dans IEEE Control Systems Magazine.

Commentaires

  • Kd en premier? Jai toujours pensé quil valait mieux commencer par Kp.
  • Je ‘ transcrire à partir danciennes diapositives de cours, sil y a ‘ est une bonne raison de ne pas le faire de cette façon Je ‘ serais curieux de l’entendre.
  • Que ‘ est lalgorithme que je préconise pour le réglage  » du pantalon « . Il ‘ va vous rapprocher le plus possible sans modéliser le système ni mesurer sa réponse. (La modélisation et / ou la mesure est la seule façon de procéder si vous avez vraiment besoin du bon réglage).
  • Le réglage de Kd en premier ne ‘ na aucun sens pour moi , comme dans chaque PID que jai ‘ mis en œuvre, le signe de Kd est négatif. Il ‘ est utilisé pour réduire le signal de commande lorsque de très grands changements derreurs se produisent, ce qui atténue essentiellement le système. Si vous navez que Kd, le système se déplacera dans la direction opposée, augmentant lerreur et aggravant le problème. Si Kd est positif, alors chaque fois quun changement important de lerreur se produit dans la bonne direction, vous ‘ allez le faire changer encore plus rapidement et dépasser votre cible.
  • En fait, régler dabord le gain D a du sens, mais je ‘ m en supposant que  » augmente  » Gain D signifie augmenter la valeur absolue et ‘ ne fait quaugmenter lamortissement. Le plus gros problème avec le gain D est quil amplifie le bruit haute fréquence et il est ‘ de voir cet effet sans le gain P. Ainsi, vous ‘ commencez essentiellement par rechercher les gains auxquels il cesse de se comporter comme un amortissement et commence à amplifier le bruit et les signaux derreur retardés. Je ‘ m en supposant que pour létape 2, vous devez pousser votre plante pour voir si elle oscille.

Réponse

Embedded.com a de nouveau déplacé mon article, mais voici où il en est maintenant. Cela vous montre à la fois comment écrire une boucle PID (déterminer comment le faire dans autre chose que la virgule flottante est laissé comme exercice au lecteur) et comment lajuster.

PID sans doctorat

Le meilleur moyen dépend beaucoup de vos capacités. Le moyen d’obtenir le meilleur réglage , en supposant que vous « êtes un système de contrôle expérimenté, est généralement de mesurer la réponse de l’usine ( » plant « == » ce que vous « contrôlez »), puis en fonction de la façon dont vous avez fait les mesures, extrayez un modèle de la plante et la conception à cela, ou simplement concevez directement les mesures.

Pour certaines plantes difficiles, vous constaterez que vous ne pouvez jamais donner satisfaction mesures, auquel cas vous devez vous fier uniquement aux modèles. Ceux-ci sont rares, mais satisfaisants quand vous les faites fonctionner.

Réponse

Sebastian Thrun a présenté un algorithme simple pour régler le PID dans son Cours «Comment programmer une voiture robotique». Il « s appelle » twiddle « , il le décrit ici .

Twiddle est très enclin à trouver des minima locaux – cela signifie que vous pourrait proposer un ensemble de trois constantes qui sont correctes, mais pas optimales pour la situation. Le problème du réglage des constantes PID est un sous-ensemble dun problème de recherche plus général pour trouver certains paramètres pour maximiser lutilité ( dans ce cas, minimiser lerreur de lalgorithme PID). Vous pouvez rechercher dautres solutions générales à ce problème, comme lescalade, le recuit simulé, les algorithmes génétiques, etc. qui pourraient finir par trouver des solutions plus optimales.

Réponse

Contrairement aux deux autres réponses, je dirais quune bonne manière manuelle de régler un PID est dignorer le Kd. Commencez donc à 0 et augmentez Kp jusquà ce que vous arriviez à la cible, puis augmentez Ki pour éliminer lerreur détat stable.

Kd peut confondre le problème car il répond mal au bruit, puis vous commencez à ajouter des filtres sur votre entrée analogique, puis demandez-vous ce que cela fait en plus de ralentir votre contrôle et de rendre le tout plus difficile à travailler …

Une autre chose qui me confondra est si léquation PID est sous la forme standard ou sous une forme indépendante (parallèle dans wikipedia). Leffet de Ki semble sinverser lorsque la forme est dans le mauvais sens de ce que vous pensez quelle est. Les deux types sont utilisés dans lautomatisation, parfois avec la possibilité de basculer entre eux.

Réponse

Modélisation du système

Bien sûr, le réglage expérimental peut être effectué comme mentionné dans les autres réponses, mais si vous êtes capable de définir un modèle dynamique raisonnable pour tout ce que vous voulez contrôler et que vous êtes capable de identifier ses paramètres , vous devriez être en mesure de concevoir votre contrôleur en fonction de critères bien définis tels que dépassement , temps de montée , temps de stabilisation , fixe -state erreur et ainsi de suite.

Il existe même des outils dans MATLAB qui sont capables de régler votre contrôleur pour loptimiser pour une combinaison de ces critères, ce qui le rend encore meilleur à utiliser.

Connaissez votre contrôleur

Apprendre ce que chaque paramètre dans le Le contrôleur PID est également très utile. Tous les algorithmes expérimentaux sont basés sur ce type de connaissances en quelque sorte. Si non seulement vous suivez les instructions, mais que vous êtes capable de ressentir vous-même ce sentiment, vous trouverez peut-être plus facile de régler votre manette manuellement.

Problèmes du monde réel

Il y a une chance que lune de ces choses, entre autres, se produise lors du réglage de votre manette: windup , taux déchantillonnage inadéquat , saturation .

Conclusion

En fin de compte, tout dépend de ce que vous pouvez réellement faire avec votre système pour connaître son fonctionnement et le type d’expérimentation qui peut être fait Le mieux est den savoir plus sur les contrôleurs PID et la théorie du contrôle en général, IMO, mais je suis biaisé 🙂

Commentaires

  • I ne ‘ ne comprenez pas pourquoi les gens continuent de suggérer des heuristiques pour le réglage du PID alors que de nos jours, nous disposons de nombreux outils automatiques pour lidentification des installations et la conception de contrôleurs qui ne ‘ t nécessitent des connaissances théoriques approfondies. Bravo pour cette réponse alors.

Réponse

Je vais essayer de développer un peu mon expérience pour ceux qui pourraient être intéressés. Je pense que le problème est que nous avons beaucoup de théorie du contrôle qui sont quelque peu inaccessibles (et parfois inutiles), puis nous avons des règles empiriques qui font des hypothèses sur les systèmes qui sont souvent inexactes.

Stabilité

Parlons dabord des raisons pour lesquelles les boucles de contrôle deviennent instables. Pour cette discussion, je supposerai un système linéaire . De manière informelle, cela signifie que si votre signal de contrôle est une onde sinusoïdale à une fréquence donnée, votre sortie observée est à la même fréquence et si vous modifiez lamplitude de votre système de contrôle, votre sortie répond au même rapport. Cette hypothèse est une bonne approximation pour de nombreux systèmes du monde réel et nous permet de regarder différentes fréquences isolément.

Si vous regardez le chemin de contrôle, vous avez un point de consigne, votre contrôleur PID, votre système (aka « Plant »), puis votre capteur. Imaginez un point de consigne fixe et une onde sinusoïdale de votre capteur (cela équivaut à une perturbation du monde réel au niveau du capteur, renvoyée). Dans un système instable, votre rétroaction amène la boucle de contrôle à amplifier lerreur au lieu de la réduire de telle sorte que, à mesure que le temps augmente, votre amplitude augmente. La raison pour laquelle cela se produit est dû à un retard, ou pour cette fréquence particulière un déphasage entre lentrée et la sortie. Pour une fréquence donnée, nous pouvons regarder ce décalage en boucle ouverte (cest-à-dire sans retour) et lamplitude de la sortie et lorsque nous dessinons tous ceux sur un graphique, nous obtenons quelque chose comme un Bode Plot . Si nous avons une situation dans ce graphe en boucle ouverte où lerreur ne cesse de samplifier, alors nous avons un système instable. Si le retard est inférieur à la moitié de la longueur donde ou si le gain est inférieur à x1, le système sera stable . En pratique, nous voulons une certaine marge à partir de ce point (marge de gain et marge de phase), cest pourquoi vous « verrez ce » recul « dans de nombreuses méthodes manuelles / heuristiques.

Le principal problème avec ces manuels méthodes, cest que vous « volez à laveugle » et que vous êtes pratiquement assuré davoir un mauvais système de contrôle.

Gardez également à lesprit que la signification P, I et D est liée à ce que votre capteur mesure et quel contrôle vous appliquez. Une erreur courante dans les contrôleurs maison est que les gens pensent quils «appliquent P alors quils ne le sont pas. Les contrôleurs de moteur ont souvent une boucle de position, passant sur une boucle de vitesse passant sur une boucle de couple. (Une cascade )

OK, mais en quoi cela nous aide-t-il?

Le premier point que je voudrais souligner est que si vous « construisez votre propre contrôleur PID, vous devez également créer un moyen de mesurer la boucle ouverte. réponse. Faites un balayage de fréquence à lentrée de votre contrôleur et mesurez la sortie du capteur avec le retour déconnecté. Ensuite, vous pouvez dessiner le tracé de Bode en boucle ouverte et voir pourquoi votre système est stable et être en mesure de négocier Il est également utile de mesurer la réponse en boucle fermée et vous pouvez le faire avec nimporte quel système en effectuant un balayage de fréquence de votre point de consigne pendant que la boucle est fermée. Ces deux éléments ne sont pas si difficiles et ne nécessitent pas beaucoup de connaissances théoriques.

Si vous modifiez simplement les commandes sans aucune compréhension de ce qui se passe sous le capot, vous ne pourrez pas pour optimiser votre système. Construire une certaine intuition sur ces systèmes nest pas si difficile. Par exemple. le gain proportionnel na aucun effet sur la phase mais augmente simplement le gain en boucle ouverte sur toutes les fréquences. Donc, ce que vous faites lorsque vous augmentez le gain proportionnel dans toutes ces méthodes de réglage manuel est de trouver la fréquence à laquelle la phase passe à -180. Consultez ceci pour avoir une idée plus précise de limpact des différentes commandes sur votre réponse en fréquence.

Obtenir les meilleures performances en boucle fermée implique souvent peaufiner le système et pas seulement les gains du contrôleur. Ce que vous voulez, cest rendre le système aussi «rigide» que possible. Cela vous permettra daugmenter les paramètres de contrôle et dobtenir la meilleure bande passante en boucle ouverte et fermée. Daprès mon expérience dans les applications de commande de moteurs, le gain proportionnel est celui qui devrait faire la plupart du «travail» et lintégrateur le «reste». Je ne pense pas que vous ayez besoin du tout dun terme D. Avoir un filtre passe-bas et un filtre coupe-bande aide beaucoup dans les situations où vous pouvez avoir une certaine résonance mécanique, mais les régler sans Bode Plot est très difficile (la fréquence doscillation que vous observez en boucle fermée peut être différent de celui en boucle ouverte).

Si la sécurité est un problème (des moteurs très puissants ou un système qui pourrait être détruit par le moteur hors de contrôle), vous devez en mettre limites avant de commencer le réglage (par exemple, limite de courant, erreur de position maximale) pour protéger le système. Ensuite, vous devez avoir une idée de la plage des paramètres. Si votre rétroaction comporte 40 points par rotation ou 4000 points par rotation, vos paramètres sera un facteur de 100 pour un système donné. Mon approche serait de trouver dabord une plage où vous avez une faible contrôlabilité, puis augmenter à partir de là en commençant par P et ensuite I (même si encore une fois vous volez à laveugle). Le recul crée cette marge de stabilité.

Au-delà de la boucle fermée

Boucle fermée tente de supprimer lerreur du système. Les performances seront toujours quelque peu limitées. Ce que vous voulez faire est de minimiser lerreur que voit votre contrôleur en boucle fermée et une façon de le faire est dutiliser une technique appelée feed en avant . En mode anticipation, vous faites le tour du contrôleur et transmettez une commande directement au système. Un exemple de cela serait l’action anticipée de l’accélération. Si vous savez que vous « re-constant » du charge, vous pouvez à peu près dire combien de courant vous avez besoin de conduire pour obtenir une certaine accélération de la charge. Il vous suffit de prendre la commande d’accélération d’entrée, de la multiplier par une constante et de l’ajouter à la commande d’entraînement du contrôleur. Vous faites essentiellement ce quil faudrait pour piloter le système sil ny avait pas de contrôleur et plus vous pouvez vous rapprocher, moins votre boucle doit éliminer lerreur et meilleures seront vos performances. Cela fait une énorme différence dans la pratique.

Commentaires

  •  » Daprès mon expérience des applications de contrôle de moteur, le gain proportionnel est celui qui devrait être faire la majeure partie du  » travail  » et lintégrateur le  » reste « . Je ‘ ne pense pas que vous ayez besoin dun terme D du tout.  » Je serais daccord avec cela pour une application de contrôle moteur typique. Le P fait le travail principal et le I compense les dérives / erreurs à long terme. Mais ici, le quadcoptère sera soumis à beaucoup de turbulences externes, le terme D est donc important pour obtenir une réponse rapide. Comme pour le terme I, sauf si le quad est en mode de navigation autonome, il nest pas si crucial.
  • @ dm76: La plupart de mon expérience est avec le contrôle du moteur, et je fais cette clause de non-responsabilité 😉 Mon intuition dit cependant quil y a ‘ a encore de la place pour moi dans une application quadricoptère et je pense que si P est très élevé, il pourrait faire face à des perturbations externes (tout comme il le fait dans le contrôle moteur). Jaurais vraiment besoin de regarder de plus près ces systèmes pour dire quelque chose de précis sur les quadricoptères …Je pense que beaucoup de ce que je dis ici sapplique (surtout faites votre réglage dans le domaine fréquentiel et ayez la réponse en boucle ouverte du système).
  • @ dm76: Et vraiment ceux  » règle de base  » Le réglage PID se traduit par des performances très médiocres dans les moteurs et vraisemblablement les mêmes dans les quadricoptères. Parfois, un filtre coupe-bande bien placé peut faire une différence dordre de grandeur …

Réponse

Ziegler-Nichols est une méthode manuelle simple. Des méthodes plus robustes existent également – elles reposent généralement sur des solutions mathématiques (analytique, optimisation itérative, etc.).

Au-delà de cela, google « auto-réglage PID » pour certaines techniques automatisées. Mon préféré est lapplication des réseaux de neurones au réglage PID.

Réponse

Si vous voulez avoir un coefficient PID précis:

  • Obtenez vos données dactionneur statistique (cest-à-dire collecte des tensions dentrée + impulsions dencodeur dans un const fréquemment (0.01sec) heure pour 20secs comme matrice 3 x 2000)
  • Obtenez la fonction de transfert (TF) de votre actionneur (en utilisant la boîte à outils Ident dans MATLAB).
  • Enfin, utilisez boîte à outils PIDTool dans MATLAB et téléchargez votre fonction de transformation.

Ou de manière simple et rapide:

Il existe une approche plus rapide appelée Ziegler – Nichols : entrez description de limage ici

Et dans cette image, montrez effets des paramètres PID :
Effets des paramètres PID

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *