Commande d’actionneurs à l’aide d’un microprocesseur

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

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;