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?
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?
Réponses:
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:
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.
Une méthode expérimentale similaire à la réponse de hauptmech qui m'a été enseignée au collège:
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.
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.
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.
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.
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.
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 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.
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.01sec
) pour 20secs
une matrice 3
x 2000
)Il existe une approche plus rapide appelée Ziegler – Nichols :
Et dans cette image, démontrez les effets des paramètres PID :