310 likes | 546 Views
Commande d’actionneurs à l’aide d’un microprocesseur. 7 Réglage Christian Koechli. Objectifs du cours. Méthodologie de conception Equations d’état Fonction de transfert Identification Dimensionnement Implémentation du régulateur. Méthodologie.
E N D
Commande d’actionneurs à l’aide d’un microprocesseur 7 Réglage Christian Koechli
Objectifs du cours • Méthodologie de conception • Equations d’état • Fonction de transfert • Identification • Dimensionnement • Implémentation du régulateur
Méthodologie • Identification du système:- décomposition en sous-systèmes;- détermination des constantes de temps. • Choix du système de réglage:- réglage direct ou en cascade;- dimensionnement analogique ou digital. • Implémentation du régulateur sur le contrôleur.
Equations d’état de l’entraînement Modèle du système: moteur CC
Fonction de transfert: régulateur de vitesse Grandeur de perturbation Grandeur à régler Grandeur de commande Transformation de Laplace We i
Réponse indicielle Attention seule la partie linéaire est intéressante !
Fonction de transfert: régulateur de courant Grandeur de commande Grandeur de perturbation Grandeur à régler Transformation de Laplace ui i u
Variante: réglage en tension • On néglige l’effet de l’inductance sur le courant • On néglige les frottements visqueux
Fonction de transfert: régulateur de vitesse Grandeur de perturbation Grandeur de commande Grandeur à régler Transformation de Laplace We u
Buts du réglage • Suivi de consigne: asservissement • Rejet de perturbation: régulation Le réglage doit être le plus rapide possible sans présenter de statisme.
Choix du type de régulateur • Classique (PI, PID) • Réglage d’état • RST • Mode de glissement • Logique floue • …
Dimensionnement du régulateur Méthodes: • Tournevis • Ziegler Nichols (Prof. Longchamp) • Design dans le domaine continu puis discrétisation (Prof. Bühler) • Design dans le domaine discret (Prof. Longchamp)
Méthode tournevis • Commencer par augmenter le terme P -> instabilité • Réduire d’au moins 1/3 • Augmenter le terme I jusqu’à ce que le statisme et le dépassement soit tolérables • Pas très scientifique !
Dimensionnement dans le domaine continu puis discrétisation • Identification du système à régler (réponse indicielle)=> constantes de temps • Synthèse du régulateur dans le domaine continu (en s) • Critère sur la réponse harmonique méplate • Critère symétrique • Discrétisation du régulateur
Identification du système • Comportement intégral y Régulateur PI t
Identification du système • 1 constante de temps dominante y Régulateur PI t T1
Identification du système • 2 constantes de temps dominantes y Régulateur PID t
Petite constante de temps équivalente Le produit de ces fonctions de transferts et de celle liée à la discrétisation du régulateur peut être approché par: Avec k=0 pur un régulateur I, 0.5 pour un PI, 1 pour un PID
Critère symétrique Pour un système à comportement intégral
Quel critère ? • Méplat: bon comportement en asservissement (dépassement très limité). OK en régulateur (grandeur de perturbation) si T1 et T2 pas trop élevées par rapport à TpE • Symétrique: comportement intégral du système ou régulateur avec bonnes performances dynamiques
Implémentation • DoCapture(); //lit le périph de mesure du temps entre 2 impulsions du capteur incrémental • if (i==100) { //période d'échantillonnage • i=0; • vcons=AdcResult.ADCRESULT0; • vmes = CalcSpeed(); //en tours par minute • //régulateur de vitesse • SpeedError = vcons- vmes; • if(SpeedError>2000)SpeedError=2000; // limitation to avoid overflow • if(SpeedError<-2000)SpeedError=-2000; // limitation to avoid overflow • //intégrateur • SpeedIntegr += SpeedError; • if (SpeedIntegr > MaxSpeedIntegr) SpeedIntegr = MaxSpeedIntegr; • if (SpeedIntegr < -MaxSpeedIntegr) SpeedIntegr = -MaxSpeedIntegr; • taux = (((int32)Speed_KP * SpeedError) >> Speed_KP_div) + ( (SpeedIntegr*Speed_KI)>>Speed_KI_div); • //comme on fait du pwm double croisé, un taux de 50% correspond à une tension moyenne nulle • taulim = taux + (PERIPWM>>1); • //il faut aussi limiter le taux • if (taulim > PERIPWM) taulim = PERIPWM; • if (taulim < 0) taulim = 0; • EPwm1Regs.CMPA.half.CMPA=taulim; • EPwm2Regs.CMPA.half.CMPA=taulim; • }
Code de mesure du saut indiciel //à déclarer int16 dump[1400]; int16 im=-1; // A utiliser pour déterminer le régulateur de vitesse taux =0; if ((im>=0)&&(im<1400)){ taux=PERIPWM>>2; dump[im]=vmes;//vmes_moyen; im++; } if (im==-1){ im=0; taux=PERIPWM>>2; }