Quelles sont les bonnes stratégies pour ajuster les boucles PID?


55

Il peut être difficile d'optimiser les gains de contrôleur. Quelles stratégies générales fonctionnent bien pour obtenir un système stable qui converge vers la bonne solution?


1
Une question ciblée sur une question plus spécifique serait plus utile. Sinon, vous devriez simplement regarder l’ article de PID , avec une section sur l’accord
ronalchn

2
J'ai toujours trouvé que le réglage des PID était très dépendant des caractéristiques du système. C'est pourquoi je n'ai jamais trouvé les systèmes de réglage automatique extrêmement utiles. Ils sont corrects pour un premier passage, un ensemble de paramètres peu performants, mais ils sont loin d’être optimaux, 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écanique, électrique et de contrôle d’un système donné.
Mark Booth

Réponses:


66

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

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

  1. Définissez 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’est-à-dire qu’il est amorti de manière critique).
  4. Répétez les étapes 2 et 3 jusqu'à ce que l'augmentation du gain D n'arrête pas les oscillations.
  5. Réglez P et D sur les dernières valeurs stables.
  6. Augmentez le gain I jusqu'à atteindre le point de consigne avec le nombre d'oscillations souhaitées (normalement zéro mais une réponse plus rapide peut être obtenue si vous ne craignez pas 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 du point de consigne à la main et le lâcher est suffisant. Si les oscillations deviennent de plus en plus grandes, vous devez réduire le gain de P.

Si vous réglez le gain D sur une valeur trop élevée, le système commence à émettre des bruits de vibration (vibre à une fréquence plus élevée que les oscillations du gain P). Si cela se produit, réduisez le gain D jusqu'à ce qu'il s'arrête.

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



1
@ Throwback1986, Ce n'est 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 d'
oscillation

Avez-vous des conseils supplémentaires pour optimiser un bras de robot doté de plusieurs articulations nécessitant un ajustement? Commencez-vous à partir de la base pour aller vers l’effecteur final, ou l’inverse, ou est-ce que cela compte?
adamconkey

1
Dans un contexte académique ou industriel, vous souhaiterez une méthode de contrôle plus sophistiquée. Pour un hobbiest; la gravité a un effet d'amortissement, réglez donc chaque joint à l'angle où la gravité affecte le moins les moteurs. Par exemple, avec le bras dirigé vers le haut, de manière à ce que la gravité agisse sur les roulements et non sur le moteur. L'ordre n'a pas d'importance. L'ajout d'un terme de compensation de gravité directe à votre contrôle est probablement l'amélioration la plus simple (utilisez Newton-Euler récursif pour un bras série) si vous ne parvenez pas à obtenir la performance souhaitée.
hauptmech

L' outil pidtuner.com m'a 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/…
Juan Gonzalez Burgos Le

13

Une méthode expérimentale similaire à la réponse de hauptmech qui m'a été enseignée au collège:

  1. Définissez tous les gains sur 0.
  2. Augmentez K d jusqu'à ce que le système oscille.
  3. Réduisez K d par un facteur de 2-4.
  4. Fixer K p à environ 1% de K d .
  5. Augmentez K p jusqu'au début des oscillations.
  6. Diminuer K p d'un facteur 2-4.
  7. Fixer K i à environ 1% de K p .
  8. Augmentez K i jusqu'au début des oscillations.
  9. Diminuer K i par un facteur de 2-4.

La méthode de Ziegler-Nichols est plus précise si vous pouvez obtenir un nombre précis pour la période d'oscillation. Cela provoque généralement des oscillations en utilisant les nombres "classiques PID", ce qui n’est donc pas toujours optimal.

Pour des règles générales sur l’effet de chaque terme sur le temps de montée, le dépassement, le temps de stabilisation, l’erreur permanente et la stabilité, voir le tableau 1 dans "Analyse et conception du système de contrôle PID" , par Li, Ang et Chong dans les systèmes de contrôle IEEE. Magazine.


2
Kd en premier? J'ai toujours pensé qu'il valait mieux commencer par Kp.
Rocketmagnet

Je retranscris d'anciennes diapositives de conférences. S'il y a une bonne raison de ne pas le faire de cette façon, je serais curieux de l'entendre.
Joe Baker

1
C'est l'algorithme que je préconise pour le réglage du "siège du pantalon". Cela vous rapprochera le plus possible sans modéliser le système ni en mesurer la 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).
TimWescott

Régler Kd d'abord n'a aucun sens pour moi, car dans chaque PID j'ai implémenté le signe que Kd est négatif. Il est utilisé pour réduire le signal de contrôle lorsque de très grands changements dans les erreurs se produisent, en atténuant essentiellement le système. Si vous ne disposez que de Kd, le système se déplacera dans le sens opposé, ce qui augmentera l'erreur et aggravera le problème. Si Kd est positif, chaque fois qu'un grand changement dans l'erreur se produit dans la bonne direction, vous allez le faire changer encore plus rapidement et dépasser votre cible.
Andrew Capodieci le

En fait, accorder le gain D a tout d’abord un sens, mais je suppose que "l’augmentation" du gain D signifie l’augmentation de la valeur absolue et ne fait qu’accroître l’amortissement. Le plus gros problème avec le gain D est qu'il amplifie le bruit haute fréquence et il est agréable de voir cet effet sans le gain P. Vous commencez donc essentiellement par rechercher les gains auxquels il cesse de se comporter comme un amortissement et commence à amplifier le bruit et les signaux d'erreur retardés. Je suppose que pour l'étape 2, vous devez fouiller votre plante pour voir si elle oscille.
DrRobotNinja

7

Embedded.com a déplacé mon article encore une fois, mais voici où il se trouve maintenant. Cela vous montre à la fois comment écrire une boucle PID (savoir comment le faire avec autre chose que la virgule flottante reste comme un exercice pour le lecteur) et comment l’accorder.

PID sans doctorat

Le meilleur moyen dépend beaucoup de vos capacités. Pour obtenir le meilleur réglage , en supposant que vous soyez un utilisateur expérimenté du système de contrôle, vous devez généralement mesurer la réponse de la plante ("plante" == "la chose que vous contrôlez"), puis en fonction de la manière dont vous avez procédé. Les mesures permettent d’extraire un modèle de l’usine et sa conception, ou bien de concevoir directement les mesures.

Pour certaines plantes difficiles, vous constaterez que vous ne pouvez jamais faire de mesures satisfaisantes, auquel cas vous devez utiliser uniquement des modèles. Celles-ci sont rares, mais satisfaisantes quand vous les faites travailler.


5

Sebastian Thrun a présenté un algorithme simple pour ajuster PID dans sa classe "Comment programmer une voiture robotique". Ça s'appelle "twiddle", il le décrit ici .

Twiddle est très enclin à trouver des minima locaux. Cela signifie que vous pouvez créer un ensemble de trois constantes correctes, mais pas optimales pour la situation. Le problème de réglage des constantes PID est un sous-ensemble d'un problème de recherche plus général permettant de trouver certains paramètres afin de maximiser l'utilité (dans ce cas, minimiser l'erreur de l'algorithme PID). Vous pouvez rechercher d'autres solutions générales à ce problème, telles que l'escalade, le recuit simulé, les algorithmes génétiques, etc., qui pourraient éventuellement permettre de trouver des solutions plus optimales.


4

Contrairement aux deux autres réponses, je dirais qu'un bon moyen de régler manuellement un PID consiste à ignorer le Kd. Commencez donc à 0 et augmentez le nombre de Kp jusqu'à atteindre la cible, puis augmentez le Ki pour éliminer les erreurs d'état stable.

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

Une autre chose qui doit m'embrouiller est de savoir si l'équation PID est sous la forme standard ou sous une forme indépendante (parallèle dans wikipedia). L'effet de Ki semble s'inverser lorsque la forme est dans le mauvais sens par rapport à ce que vous pensez. Les deux types sont utilisés dans l'automatisation, avec parfois la possibilité de basculer entre eux.


4

Modélisation du système

Bien sûr, le réglage expérimental peut être effectué comme indiqué 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 si vous êtes capable d’ identifier ses paramètres , vous devriez pouvoir concevoir votre contrôleur en vous basant sur de bonnes bases. - critères définis tels que dépassement , temps de montée , temps de stabilisation , erreur d' état stable , etc.

Il existe même des outils dans MATLAB capables d’ajuster votre contrôleur afin de l’optimiser pour une combinaison de ces critères, ce qui le rend encore plus pratique.

Connaissez votre contrôleur

Il est également très utile d’apprendre ce que fait chaque paramètre du contrôleur PID. Tous les algorithmes expérimentaux sont basés sur ce type de connaissance. Si vous suivez non seulement les instructions, mais pouvez également obtenir ce sentiment vous-même, il vous sera peut-être plus facile de régler manuellement votre contrôleur.

Problèmes du monde réel

Il est possible que l'une de ces choses, parmi d'autres, vous dérange lorsque vous réglez votre contrôleur: déroulement , 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 en savoir plus sur son fonctionnement et sur le type d’expérimentation à mener. La meilleure chose à faire est d’en apprendre davantage sur les contrôleurs PID et la théorie du contrôle en général, IMO, mais je suis partial :)


Je ne comprends pas pourquoi les gens continuent de suggérer des heuristiques pour le réglage des PID alors qu'aujourd'hui nous disposons de nombreux outils automatiques d'identification de la plante et de conception de contrôleurs ne nécessitant pas de connaissances théoriques approfondies. Thumb up pour cette réponse alors.
Ugo Pattacini le

3

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 de contrôle qui est quelque peu inaccessible (et parfois inutile) et ensuite nous avons des règles empiriques qui supposent des hypothèses sur des systèmes qui sont souvent inexactes.

La stabilité

Parlons d'abord de la raison pour laquelle 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 commande est une onde sinusoïdale à une fréquence donnée, votre sortie observée est à la même fréquence et si vous modifiez l'amplitude de votre système de commande, votre sortie répondra au même rapport. Cette hypothèse est une bonne approximation pour de nombreux systèmes du monde réel et nous permet d’examiner 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 (également appelé "Plant"), puis votre capteur. Imaginez un point de consigne fixe et une onde sinusoïdale de votre capteur (cela équivaut à une perturbation réelle du capteur, renvoyée). Dans un système instable, votre retour d'information force la boucle de contrôle à amplifier l'erreur plutôt que de la réduire de sorte que l'amplitude augmente avec le temps. Ceci s’explique par un retard ou par un décalage de phase pour cette fréquence entre l’entrée et la sortie. Pour une fréquence donnée, nous pouvons regarder le décalage et l'amplitude de la sortie en boucle ouverte (c'est-à-dire sans retour) et lorsque nous dessinons tous ceux sur un graphique, nous obtenons quelque chose comme un diagramme de Bode. Si nous avons une situation dans ce graphique en boucle ouverte où l'erreur continue à s'amplifier, nous avons un système instable. Si le retard est inférieur à la moitié de la longueur d'onde ou si le gain est inférieur à x1, le système sera stable . En pratique, nous voulons une marge à partir de ce point (marge de gain et marge de phase), raison pour laquelle vous constaterez ce "recul" dans de nombreuses méthodes manuelles / heuristiques.

Le principal problème de ces méthodes manuelles est que vous pilotez à l'aveugle et que vous êtes pratiquement assuré de disposer d'un système de contrôle médiocre.

N'oubliez pas non plus que la signification P, I et D est liée à ce que votre capteur mesure et au contrôle que vous appliquez. Une erreur courante dans les contrôleurs maison est de faire croire aux gens qu'ils appliquent P alors qu’ils ne le font pas. Les contrôleurs de moteur ont souvent une boucle de position fonctionnant sur une boucle de vitesse sur une boucle de couple. (Une cascade )

OK mais comment cela nous aide-t-il?

Le premier point que je voudrais dire est que si vous construisez votre propre contrôleur PID, vous devez également créer un moyen de mesurer la réponse en boucle ouverte. Effectuez un balayage de fréquence à l'entré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 d’échanger les divers contrôles. Il est également utile de mesurer la réponse en boucle fermée. Vous pouvez le faire avec n’importe quel système en balayant la fréquence de votre point de consigne lorsque la boucle est fermée. Les deux ne sont pas si difficiles et ne nécessitent pas beaucoup de connaissances théoriques.

Si vous ajustez simplement les commandes sans comprendre ce qui se passe sous le capot, vous ne pourrez pas optimiser votre système. Construire une certaine intuition sur ces systèmes n’est pas si difficile. Par exemple, le gain proportionnel n'a pas d'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, c'est de trouver la fréquence où la phase passe à -180. Consultez cette section pour avoir une idée plus précise de l’impact des différentes commandes sur votre réponse en fréquence.

Assez souvent, obtenir les meilleures performances en boucle fermée implique de peaufiner le système et pas uniquement les gains du contrôleur. Ce que vous voulez, c'est rendre le système aussi "rigide" que possible. Cela vous permettra d’augmenter les paramètres de contrôle et d’obtenir la meilleure bande passante en boucle ouverte et fermée. D'après mon expérience dans les applications de contrôle moteur, le gain proportionnel est celui qui devrait faire le plus "du travail" et l'intégrateur le "reste". Je ne pense pas que vous ayez besoin d'un terme D du tout. Avoir un filtre passe-bas et un filtre coupe-bande aide beaucoup dans les situations où vous pouvez avoir une résonance mécanique mais il est très difficile de les régler sans tracé de Bode (la fréquence d'oscillation que vous observez en boucle fermée peut être différente de celle en boucle ouverte).

Si la sécurité vous préoccupe (moteurs très puissants ou système qui pourrait être détruit par une perte de contrôle du moteur), vous devez définir certaines limites avant de commencer le réglage (par exemple, limite de courant, erreur de position maximale) afin de protéger le système. Ensuite, vous devez avoir une idée de l’éventail des paramètres. Si votre retour a 40 comptes par rotation ou 4000 comptes par rotation, vos paramètres seront multipliés par 100 pour un système donné. Mon approche serait d’abord de trouver une plage dans laquelle vous avez une mauvaise contrôlabilité, puis d’augmenter à partir de là, en commençant par P, puis par I (même si, à nouveau, vous volez à l’aveugle). Le recul crée cette marge de stabilité.

Au-delà de la boucle fermée

Boucle fermée tente de supprimer l'erreur du système. Cela aura toujours une performance quelque peu limitée. Ce que vous voulez faire est de minimiser l’erreur de votre contrôleur de boucle fermée et une façon de le faire consiste à utiliser une technique appelée feed forward.. Dans Feed-Forward, vous contournez le contrôleur et envoyez une commande directement au système. Un exemple de cela serait le feed-forward de l'accélération. Si vous savez que le couple de votre moteur est constant et que vous connaissez la charge, vous pouvez dire à peu près combien de courant vous devez conduire pour obtenir une certaine accélération de la charge. Vous devez simplement prendre l'accélération d'entrée de commande, la multiplier par une constante et l'ajouter à la commande de contrôle de l'automate. En gros, vous faites ce qu'il faudrait pour conduire le système s'il n'y avait pas de contrôleur et plus vous pouvez vous rapprocher, moins votre boucle aura d'erreur et plus votre système sera performant. Cela fait une énorme différence dans la pratique.


"D'après mon expérience dans les applications de contrôle moteur, le gain proportionnel est celui qui devrait faire l'essentiel du" travail "et l'intégrateur le" reste ". Je ne pense pas que vous ayez besoin d'un terme D. du tout." Je suis d'accord avec cela pour une application typique de contrôle moteur. Le P fait le travail principal et je compense les erreurs / dérives à long terme. Mais ici, le quadricoptère sera soumis à beaucoup de turbulences externes, le terme D est donc important pour obtenir une réponse rapide. Quant au terme I, à moins que le quad ne soit en mode de navigation autonome, ce n’est pas si crucial.
dm76

@ dm76: La plupart de mon expérience concerne le contrôle moteur, et je fais cet avertissement ;-) Mon intuition me dit qu'il reste encore de la place pour l'application quadricoptère I et que si P est très élevé, il pourrait gérer les perturbations externes (comme il le fait en contrôle moteur). J'aurais 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 s'applique (en particulier votre réglage dans le domaine des fréquences et la réponse en boucle ouverte du système )
Guy Sirton

1
@ dm76: Et vraiment, ces réglages "normaux" permettent d'obtenir 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 d'ordre de magnitude ...
Guy Sirton

0

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 (optimisation analytique, itérative, etc.)

Au-delà, google "PID à réglage automatique" pour certaines techniques automatisées. Mon préféré est l’application des réseaux de neurones au réglage PID.


0

Si vous voulez avoir un coefficient PID précis:

  • Obtenez vos données d'actionneur statistique (c'est-à-dire collecting input voltages+ encoder pulsesdans un temps constant fréquemment ( 0.01sec) pour 20secsune matrice 3x 2000)
  • Obtenir la fonction de transfert (TF) de votre actionneur (à l'aide de la boîte à outils Ident dans MATLAB).
  • Enfin, utilisez la 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 la description de l'image ici

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.