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.
Modèle du système: moteur CC Equations d’état de l’entraînement
Système à régler (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 !
Système à régler (Moteur CC)
Fonction de transfert: régulateur de courant Grandeur de commande Grandeur de perturbation Grandeur à régler Transformation de Laplace ui i u
Réponse indicielle
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
Structure
Réglage pseudo-continu: Simplification
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 T1 t
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
Dimensionnement: critère méplat
Critère symétrique Pour un système à comportement intégral
Réponse indicielle
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
Discrétisation du régulateur
Calcul des coefficients du régulateur
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;