1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Reglage de boucle PID comment faire ?

Discussion dans 'EMC2 / LinuxCNC' créé par lavalding, 7 Septembre 2010.

  1. lavalding

    lavalding Nouveau

    Messages:
    15
    Inscrit:
    14 Décembre 2009
    Localité:
    lavaldens
    Reglage de boucle PID comment faire ?
    Bonjour,

    J'utilise EMC2.3 avec les cartes MESA 5i20 et 4i33 pour la commande de servos tous fonctionne mais je galère pour la mise au point, je but sur le réglage de la boucle PID.


    si quelqu'un pouvait m'aider ?

    Z1.jpg
    ↑  Voici la bete:
     
  2. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Reglage de boucle PID comment faire ?
    Bonjour lavalding,

    Autant que je te dise de suite ta machine tu n'en fera rien, si tu veux je t'en débarrasse :wink: .

    Sérieusement, pour ton histoire de PID as-tu essayé avec ça : http://linuxcnc.org/docs/html/motion_pid_theory_fr.html

    Sinon il y a un utilitaire depuis la version 2.4 (il faut mettre à jour) : http://linuxcnc.org/docs/html/config_pncconf.html

    "Halscope" (l'oscilloscope des signaux HAL) peut t'aider à voir l'erreur statique, le dépassement, temps d'établissement... Un bon outil.

    Il existe aussi un module d'auto-tuning du pid "at_pid" (anglais) :
    http://linuxcnc.org/docs/html/man/man9/at_pid.9.html

    Tiens moi au courant ça m'intéresse.

    Xavier

    PS : ta carte opto doit être une 7i33 et non 4i33.
     
  3. JULES 21

    JULES 21 Apprenti

    Messages:
    126
    Inscrit:
    27 Novembre 2009
    Localité:
    F 21430 LIERNAIS
    Reglage de boucle PID comment faire ?
    Je ne connais pas le type de variable que tu dois contrôler , mais voici la méthode qu'on utilisait en thermique quand on se retrouvait perdu dans la brousse sans aucun équipement:

    1-mettre l'intégrale et la dérivée à zéro et diminuer la bande proportionnelle jusqu'à obtenir un léger "pompage".
    2-doubler la bande proportionnelle puis augmenter progressivement l'action intégrale qui éliminera le statisme

    l'action dérivée n'était guère utilisée que dans des boucles très rapides ..('échangeurs vapeur)

    tout cela est très rudimentaire mais permet des résultats immédiats.
     
  4. lavalding

    lavalding Nouveau

    Messages:
    15
    Inscrit:
    14 Décembre 2009
    Localité:
    lavaldens
    Reglage de boucle PID comment faire ?
    merci pour vos réponses.

    J'ai déjà utilisé pncconf mais il comporte des bugs et je n'ai pas réussi le réglage avec cet utilitaire (il me mais un message d'erreur lors de la config).

    j'ai lu les méthode sur linuxcnc et des site de fac mais sur la MESA on a pas le delta entre la position commandé et la position réel dans halscope, il faut peut être le crée dans la config de hal ? pour le moment j'ai reglé la proportionnel juste avec la pin d'erreure de positionnement pid.

    JULES 21, j'essaie ta méthode dés ce WE.

    je vous posterais les résultats
     
  5. Foxtrot

    Foxtrot Compagnon

    Messages:
    1 044
    Inscrit:
    18 Février 2008
    Localité:
    Ath (BE)
    Reglage de boucle PID comment faire ?
    Bonjour à tous,

    Pour Jules, Qu'entends tu par pompage? Une oscillation?

    Est-il possible avec ta méthode de régler sommairement le PID sans instrument? rien qu'en regardant les servos tourner?
    Si non, que faut-il comme minimum comme outils quand on n'a pas d'oscillo?

    Merci pour ta réponse. :wink:
     
  6. JULES 21

    JULES 21 Apprenti

    Messages:
    126
    Inscrit:
    27 Novembre 2009
    Localité:
    F 21430 LIERNAIS
    Reglage de boucle PID comment faire ?
    oui, pompage = oscillations,
    pour le reste de ta question je voudrais en savoir un peu plus sur la variable à contrôler et/ou une description sommaire de la boucle de régulation et de son contexte.
     
  7. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Reglage de boucle PID comment faire ?
    Bonjour,

    Je n'ai jamais utilisé EMC2 avec des servo (n'en ayant pas à disposition) mais je règle des PID régulièrement pour le boulot (électronique haute tension).

    Le système asservi est un servomoteur chargé, en bref un système du second ordre. La commande moteur est généré via un PWM (vers le driver moteur) et le retour se fait par un encodeur à quadrature tout deux géré par la carte mesa 5i20.

    L'erreur dont je parlais est visuelle dans "halscope" entre la consigne et le retour de position par les encodeurs. Si tu veux visualiser l'erreur il faut que tu regardes le signal "pid.N.error" où "N" est le numéro de ton axe, ce n'est pas ta carte mesa qui fait le PID mais EMC2 en logiciel, mesa gère les signaux rapides que sont les encodeurs et le PWM.

    As tu essayé avec l'utilitaire dans le menu d'Axis "Machine->Calibrer" (ou "Calibration" de mémoire)? Si j'ai tout compris, il permet de calibrer les servos sans se poser trop de questions existentielles. Pensez à reporter les valeurs du PID dans votre fichier ini de la machine, il semble que ce ne soit pas fait par défaut (?).

    Le pompage est en effet une oscillation auto-entretenue (un sinus dans les systèmes linéaires). La méthode JULES 21 ressemble à la méthode de Ziegler-Nichols. Elle permet de régler les termes PID en ayant mesuré le gain d'auto-oscillation "Kc" et et la période d'auto-oscillation "Pc" (voir le premier lien que j'ai donné en fond de page). Ces termes peuvent donner une bonne base que l'on peut affiner.

    Pour un correcteur plus sophistiqué, il y a aussi les termes FF0, FF1, FF2 qui permettent de gagner en rapidité sur un changement de consigne (cas de la CNC). Voir la doc du module pid d'EMC2. Le triplet P I FF1 peut être intéressant.

    Pour récupérer les infos sur la position du moteur (et la période d'oscillation) il faut regarder ce que sort l'encodeur (qui est là pour ça!) avec halscope (l'oscilloscope des signaux hal).

    Pour pncconf, il est probable qu'il y ai des bugs surtout sur la branche 2.3.x où il venait d'être inséré... Je te conseille fortement de passer à la branche 2.4.x si ce n'est déjà fait.

    Bonne après-midi

    Xavier
     
  8. JULES 21

    JULES 21 Apprenti

    Messages:
    126
    Inscrit:
    27 Novembre 2009
    Localité:
    F 21430 LIERNAIS
    Reglage de boucle PID comment faire ?
    j'avais appris après quelques années de pratique que la méthode que j'utilisais était en effet due à ZIEGLER ET NICHOLS, j'en avais été tout content ,comme celui qui faisait de la prose sans le savoir!

    soyons clair, mon expérience date de bientôt 30ans, au temps du "tout analogique".quelques années avant mon départ en retraite (en 2002)j'avais vu arriver les systèmes numériques auto adaptatifs et on parlait de plus en plus de logique floue ..
    bon les choses ne vont pas aussi vite que j'espérais.

    Je comprend que dans le cas actuel un servo-moteur est piloté par des impulsions modulées et que sa position est donnée par un encodeur.
    question:quelle est le type de variable contrôlée? excusez moi,je ne connais pas du tout EMC2!
    ceci pour dire qu'il m'était arrivé à plusieurs reprises devant un mauvais retour de position du moteur de supprimer cette entrée et de fermer la boucle uniquement par la mesure de la variable à contrôler (les systèmes les plus simples.....)ceci n'était appliquable que pour des systèmes ayant une capacité d'accumulation suffisante (d'où ma question)
     
  9. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Reglage de boucle PID comment faire ?
    Je ne suis pas sûr de comprendre la question, il me semble que la grandeur à contrôler est la position dans le cas du déplacement des chariots. Il est possible d'asservir la vitesse dans le cas d'une broche par exemple mais je ne pense que que lavalding parle de ça?

    De manière simplifié dans EMC2, le "trajectory planner" lit le gcode et le converti en mouvements de base qu'il donne au "motion contrôler". Ce dernier les transforme en consignes de déplacements en temps réel à chacuns des générateur de signaux moteur (PID+encodeurs+PWM pour les servos, génrateurs de step/dir pour les moteurs pas à pas).

    C'était la question? :?:

    Xavier
     
  10. JULES 21

    JULES 21 Apprenti

    Messages:
    126
    Inscrit:
    27 Novembre 2009
    Localité:
    F 21430 LIERNAIS
    Reglage de boucle PID comment faire ?
    oui,horsot,tu as bien compris ma question et tu y as répondu bien clairement.
    du coup je ne pense pas avoir raconté trop de bêtises avec mon approche simplificatrice .
    il me semble que, comme dans toute boucle de contrôle la clef du succès réside dans la qualité de la mesure (sa résolution,sa linéarité,sa répétabilité,son hystérésis,etc ).
    pour le reste je renifle comme ça, à distance qu'une simple action P+I devrait faire l'affaire.
     
  11. lavalding

    lavalding Nouveau

    Messages:
    15
    Inscrit:
    14 Décembre 2009
    Localité:
    lavaldens
    Reglage de boucle PID comment faire ?
    horsot tu a tres bien decrit le fonctionnement de ma config.
    En fait j'utilise EMC 2.4.3, désolé je me suis trompé dans le post précèdent.
    Voici la methode que j'ai employé:

    1/ mettre I et D a 0
    2/augmenter P jusqu'à oscillation de l'axe
    3/diminuer de 20% P

    de cette façon j'obtiens des erreurs de suivit de l'ordre de 0.03mm pour une vitesse de 10mm/s, sauf sur l'axe Y qui dépasse les 0.4mm d'erreurs (inertie peut etre, car sur la Z1 cette axe déplace l'ensemble axe Z, moteur et boite de broche)

    Comment faire mieux ?
    Comment régler I (et D si besoin).

    FF1 semble intéressant si j'ai bien compris il permet un ajustement en fonction de l'inertie.
    et FF2 pour l'apesanteur (utile pour l'axe Z ?).
    cet paramètre se règle a la fin et comment ?

    ci-joint copie d'ecran de l'erreur obtenue sur Y, on y voie une petite oscillation est ce bien ca ? ( echelle 100milieme de mm par div. ).


    Pour info j'utilise une carte fille 7i33 pour la commande d'ampli Alstom Pavex RTR60 (analogique).

    Capture.png
     
  12. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Reglage de boucle PID comment faire ?
    Ok

    L'erreur statique (tes 0.03mm) sont compréhensibles pour un correcteur P mais devrait disparaitre avec le terme intégral.

    As-tu essayé l'utilitaire dans "machine->calibrer" ?

    J'ai un peu l'impression que tu ne lis pas ce que j'écris. Es-tu sûr d'avoir lu (et essayé) : http://linuxcnc.org/docs/html/motion_pid_theory_fr.html

    Pas de recettes "magiques", les méthodes du lien te donneront un système stable mais non optimisé. Il faut régler à la main ou utiliser l'algorithme de "at_pid" ou "machine->calibrer" par exemple.

    Si tu lis l'anglais il y a ça avec des captures d'écran : http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?PWM_Servo_Amplifiers

    En fait la grandeur corrigée est proportionnelle à la dérivée de la commande. Ici la commande est un position donc proportionnelle à une vitesse (de commande). La doc explique que dans ce cas on compense les frictions (visqueuses?) et les FCEM du moteur.

    FF2 pour un asservissement de position est proportionnelle à une accélération donc peut compenser l'inertie. Quant à savoir si ça peux compenser l'accélération de la pesanteur (par un biais), c'est une bonne question, il faudrait creuser plus.

    Je n'ai jamais utilisé ces correcteurs (FFx) donc ce que je te dis est théorique!

    Si l'oscillation est auto-entretenue à consigne fixe (elle ne s'atténue pas) c'est ça. Il faut que tu relèves la période (temps entre 2 pics) et utilise la méthode décrit dans le premier lien.

    Xavier
     
  13. lavalding

    lavalding Nouveau

    Messages:
    15
    Inscrit:
    14 Décembre 2009
    Localité:
    lavaldens
    Reglage de boucle PID comment faire ?
    merci horsot ton explication sur l'oscillation ma permit de mieux comprendre les methodes de reglage. Je viens juste de mettre en application la Méthode de Ziegler-Nichols, et sans effort j'obtient du premier cout une erreure infierieure au centieme à 50mm/s.
    dés que j'ai le temps je poursuis sur les autres axes.
    par contre le Z a un comportement different suivant le sens ?
    dans ce cas il faut Kc du sens le plus critique ?
     
  14. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Reglage de boucle PID comment faire ?
    Content que ça ai marché,

    Je viens de regarder plus sérieusement la doc du PID de EMC2, il y a bien une variable pour compenser le poids de ton chariot Z par le paramètre "pid.N.bias" N étant le N° de ton axe (2 pour le Z). Ce paramètre rajoute une constante à la commande moteur donc génère un couple "de base" pouvant servir à compenser le poids du chariot Z.

    J'étais parti pour compenser avec un terme d'ordre 2 car on dit "l'accélération" de l'apesanteur. C'est certes une accélération (merci Einstein :wink: ) mais elle est indépendante du mouvement ou de sa commande (ou de l'erreur) : cette force est constante (logique... :smt017 ). Lorsqu'on agit sur le PWM du moteur on joue sur le couple moteur il faut donc compenser le poids de ton chariot par un "biais" (offset, cad ajout d'une constante) dans la commande moteur (couple) à la sortie du PID.

    Pour le réglage, il faut que j'y réfléchisse! Le but étant d'annuler l'action de l'apesanteur par ce paramètre. Le système obtenu sera linéaire et donc le réglage du PID pourra se faire normalement.

    L'idée c'est de trouver ce fameux "couple" de compensation peut être la moyenne de la commande moteur "pid.N.output" entre un déplacement (lent et constant) vers le haut et vers le bas. Je pense que les frottements statiques seraient alors compensés par cette méthode. Tu peux l'essayer?

    Xavier
     
  15. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
Chargement...
Articles en relation
  1. nathan33240
    Réponses:
    9
    Affichages:
    470
  2. biduleur34
    Réponses:
    3
    Affichages:
    1 281

Partager cette page