Liens :
|
: | Sujet en version normale |
|
: | Degré d'aide |
Séquence 8 : Performances SLCI
& correcteur numérique
| | ① |
Séquence 6 : Ingénierie numérique
|
Sujet au format Jupyter NoteBook |
Séquence 5 : Rendement
Séquence 4 : Identification de l'inertie
| | ① | | | ② | |
| | ① | | | ② | |
| | ① | | | ② | |
| | ① | | | ② | |
| | ① | | | ② |
Séquence 2 : Loi entrée-sortie
| | ① | | | ② | |
| | ① | | | ② | |
| | ① | | | ② | |
| | ① | | | ② | |
| | ① | | | ② |
Séquence 8 : Double commande moteur
Travail préparatoire
Introduction
Comme vous pouvez le constater sur le site du constructeur de ce motoréducteur, les meilleures informations que nous puissions trouver sur les caractéristiques se trouvent dans ce document dont nous pouvons extraire les courbes ci-dessous :
Cliquer sur l'image pour l'agrandir
Les caractéristiques du moteur ne sont pas directement fournies et elles sont pourtant indispensables à la modélisation.
La première partie de ce TP sera consacrée à la caractérisation du moteur.
Modélisation d'un motoréducteur sous forme d'un schéma bloc
Modèle électrique d'un moteur à courant continu
En bleu, les variables électriques et en en vert les variables mécaniques
Pour cela, il est indispensable de connaître entre autre toutes les caractéristiques du motoréducteur.
Constantes caractéristiques
- \( K_e \) : Constante de force contre électromotrice
- \( K_c \) : Constante de couple avec \( K_c = K_e \) (comme dans la plupart des moteurs à courant continu modernes)
- \( R \) : Résistance de l'induit
- \( C_r \) : Couple de frottement sec ramené au rotor du moteur
- \( f_v \) : Coefficient de frottement visqueux ramené au rotor du moteur
- \( k \) : Rapport de réduction du réducteur avec \( k = \dfrac{\omega_m(t)}{\omega_{mr}(t)} \)
- \( L \) : Inductance de l'induit négligée (comme dans la plupart des moteurs à courant continu modernes)
- \( J_{eq} \) : Moment d'inertie équivalent ramené au rotor du moteur
Seul, le rapport de réduction du réducteur est connu \( k = 9.68 \). En réalité, il est négatif mais dans un esprit de simplification d'utilisation de matériel expérimental, nous prendrons la valeur absolue.
Variables
- \( u(t) \) : Tension d'alimentation aux bornes du moteur
- \( e(t) \) : Tension contre électromotrice développée dans l'induit
- \( i(t) \) : Intensité du courant dans le moteur
- \( \omega_m(t) \) : Vitesse de rotation du moteur (rotor du moteur par rapport au stator)
- \( \omega_{mr}(t) \) : Vitesse de rotation du motoréducteur (arbre de sortie du réducteur par rapport au stator)
- \( \omega_c(t) \) : Vitesse de rotation de consigne du motoréducteur
- \( C_m(t) \) : Couple généré par le moteur
- \( C_{mr}(t) \) : Couple généré par le motoréducteur
Spécificité propre à ce TP
On pourra éventuellement utiliser les constantes suivantes :
- \( delai \) : La consigne \( u(t) \) et la perturbation \( C_r \) seront envoyées avec un délai.
Modélisation
Donner les 4 équations caractéristiques du moteur à courant continu :
- l'équation électrique (loi des mailles)
- les deux équations de couplage électro-mécanique
- l'équation de mouvement du comportement mécanique dans sa forme généralisée issue d'une étude dynamique (PFD ou TEC)
Réaliser sur feuille le schéma bloc (modèle causal) du motoréducteur à courant continu.
Vous pourrez utiliser un des PC de la salle de TP, de TIPE ou d'informatique dans le secteur CPGE SI pour utiliser un des deux logiciels. Sinon, vous pouvez l'utiliser depuis chez vous :
- Scilab : vous pouvez utiliser une version portable.
- MatLab : vous pouvez utiliser une version en ligne mais vous avez besoin d'obtenir une licence Matlab : pour cela, il faut m'en faire la demande. Cependant la demande ne doit pas être faite à la dernière minute car je dois passer par la personne ressource du lycée pour obtenir la licence et de plus, je dois faire une demande unique groupée.
Tester votre schéma bloc sur une durée de 0.9 seconde avec un décalage temporel \( delai \) de 50 ms sur la commande \( u(t) \) et le couple résistant \( C_r \) en affichant la réponse en vitesse \( \omega_{mr}(t) \) pour un saut échelon de tension de \( u(t) \) avec les valeurs fictives suivantes :
// Consigne delai = 0.05 // s U = 10 // V // Caractéristiques moteur R = 2 // Ohm Kc = 1e-3 // (N.m)/A Ke = Kc // (rad/s)/volt fv = 1e-3 // (N.m)/(rad/s) Cr = 1e-3 // N.m L = 0 // H Jeq = 100e-6 // kg.m² // Caractéristique réducteur k = 2 // sans unite
On rappelle qu'aucun valeur numérique ne doit être directement mise sur le schéma bloc.
Importer le fichier de mesure
- pour Scilab : mesure.txt en utilisant le bloc READ CSV (chapitre 5.2) et une horloge cadencée a une période de 1 ms.
- pour MatLab : mesure.xls en utilisant bloc From Spreadsheet
et l'afficher avec la simulation.
Il ne doit y avoir aucun écart si vous n'avez pas commis d'erreur.
Environnement nécessaire pour le déroulement de la séquence
Matériel nécéssaire pour le système
Vous devez normalement avoir à votre disposition une feuille pour noter les caractéristiques trouvées.
Vous aurez besoin de ce matériel :
Si cela n'a pas déjà été fait, il faut d'abord brancher le câble série :
Si cela n'a pas déjà été fait, il faut ensuite brancher le câble réseau :
Pour finir, si cela n'a pas déjà été fait, il faut brancher l'alimentation :
Il faut attendre quelques instants avant que la carte raspberry Pi ait démarré.
Présentation du système
Domaine du commanditaire
Le robot Geeros pcDuino est un robot gyropode d'exploration. Il intègre une liaison Wi-Fi vous permettant de le piloter à distance à partir d'un ordinateur, d'un smartphone ou d'une tablette. Il embarque une Webcam capable de faire de la transmission vidéo en temps-réel des images prises par le robot. Le robot est fragile. Il est à manipuler avec le plus grand soin ! |
Domaine du laboratoire
La motorisation du robot Geeros a été extraite pour être implantée sur une platine.
Ce système, basé sur une carte Raspberry Pi associée à une carte micro-contrôleur Teensy 3.6 montée sur un shield de commande moteur, permet de réaliser différentes expériences de commande de deux machines à courant continu avec codeur incrémental associé, identiques, l’un fonctionnant en moteur et l’autre en générateur de couple.
En absence de commande de génération de couple par le générateur, le générateur est piloté de manière à ce qu'elle ne soit pas ressentie par le moteur. En fin de compte, dans cette situation, si l'on désaccouplait le générateur du moteur, le moteur a exactement le même comportement et nous pouvons considérer que le générateur n'est pas présent !
Problématique
L'asservissement de la verticalité du robot Geeros exige d'avoir une motorisation réactive.
Nous allons nous intéresser de manière qualitative1 à Comment peut-on arriver à faire cela ?
Pour cela, vous allez :
- identifier des caractéristiques du motoréducteur
- modéliser l'asservissement de la vitesse de rotation du moteur
- modéliser un correcteur numérique (proportionnel, proportionnel intégral et à avance de phase)
Démarche de l'ingénieur
Rôle de chacun des membres de l'équipe
Mission spécifique au groupe projet
Un groupe projet est composé d’un expérimentateur, d’un modélisateur travaillant conjointement.
Les groupes projet doivent mettre en oeuvre les compétences suivantes :
Normalement je vous ai donnée une feuille pour que vous sachiez quelle platine utilisée à la prochaine séance mais également de faire une synthèse des caractéristiques trouvées.
Veuillez noter vos noms sur cette feuille.
Introduction
Comme vous pouvez le constater sur le site du constructeur de ce motoréducteur, les meilleures informations que nous puissions trouver sur les caractéristiques se trouvent dans ce document dont nous pouvons extraire les courbes ci-dessous :
Cliquer sur l'image pour zoomer
Les caractéristiques du moteur ne sont pas directement fournies et elles sont pourtant indispensables à la modélisation.
Logiciel de commande et d'acquisition MyViz
Le logiciel MyViz permet de piloter la platine mais aussi de récupérer les données issues de l'expérimentation.
Normalement, la platine devrait être déjà branchée sinon veuillez suivre cette procédure.
Lancer l'application avec le fichier MyViz.exe .
La première chose à faire est de vérifier que le port série soit bien configuré : Pour cela,
- Cliquer sur le menu Paramètres
- Cliquer sur le sous menu Port série par défaut
- Sélectionner COMx - Microsoft (x pouvant être un nombre différent d'un ordinateur à l'autre)
Cette opération n'est possible que si la platine est alimentée.
Il faut ensuite accéder à l'environnement de travail. Pour cela :
- Cliquer sur le menu Applications
- Cliquer sur le sous menu Systèmes didactiques
- Cliquer sur le sous sous menu Double commande de moteur à courant continu
- Sélectionner Tableaux de bords
Pour l'identification, nous utiliserons la commande en tension par le port série bien plus rapide que par le port réseau. Pour cela,
- Cliquer sur Ouvrir de Commande en tension série (acquisition rapide)
Noter que par la suite, il est possible de passer directement d’une application à une autre en utilisant la zone Applications intégrée dans chaque tableau de bord.
La première chose à faire est de réaliser la connexion en cliquant sur OFF de Connexion au port série de Contrôle de l'application. L'interrupteur commute alors sur ON.
Une led orange doit s'allumer sur la platine.
Par la suite, l'utilisation du logiciel est assez intuitive.
Environnement python : Jupyter Notebook
Pour toute cette séquence de TP, vous aurez besoin d'utiliser le logiciel Jupyter Lab dont les fichiers utilisés ont l'extension ipynb.
Vous devrez sauvegarder tous vos fichiers dans un seul dossier. De préférence, sur votre clé USB afin de les récupérer à la fin de votre séance pour les réutiliser à la prochaine séance.
Pour utiliser vos fichiers, vous devez, depuis l'explorateur Windows, double cliquer une seule fois sur le premier fichier ipynb à utiliser. Par la suite, les fichiers seront accessibles depuis l'environnent Jupyter Notebook.
Si vous rencontrez des difficultés de lancement, n'hésitez à appler votre professeur.
Identification des caractéristiques du motoréducteur
La résistance \( R \)
l'inductance \( L \)
Cette identification se fait le rotor bloqué en tenant à la main la roue aimantée du codeur incrémental du codeur. Prenez garde à ne pas toucher le capteur effet hall.
La procédure est la suivante :
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 0.01 s
- Choisir un signal de type Rectangle avec une amplitude de 3.75 V (c’est la moitié de la tension d’alimentation du système) et un délai avant le démarrage de 2 ms
- Tenir fixe la roue du codeur en la pinçant fortement mais sans s'appuyer sur le capteur à effet hall
- Commuter le bouton du générateur de signal sur ON
Nous vous invitons à cliquer sur le bouton " EXPLORER " pour extraire rapidement des informations sur les courbes.
Enregistrer les données sous le nom RL.csv dans le dossier que vous avez choisi en cliquant sur le bouton Enregistrer dans Contrôle de l'application.
Constante de force contre électromotrice \( K_e \)
Constante de couple \( K_c \)
Cette identification se fait le rotor libre, sur une période de temps plus longue.
Il est inutile de désaccoupler le moteur du générateur. En effet, le générateur est piloté de manière à ne pas être ressenti par le moteur.
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 0.9 s
- Choisir un signal de type Rectangle avec une amplitude de 6 V et un délai avant le démarrage de 50 ms
- Commuter le bouton du générateur de signal sur ON
Nous vous invitons à cliquer sur le bouton " EXPLORER " pour extraire rapidement des informations sur les courbes.
- Enregistrer les données sous le nom Ke.csv en cliquant sur le bouton Enregistrer dans Contrôle de l'application
Dans les moteurs modernes, \( K_c = K_e \) en terme de grandeur. Les unités ne sont pas comparables.
Identification du frottement sec et du frottement visqueux
Cette identification nécessite la réalisation de plusieurs essais (identique de l'expérience précédente) avec plusieurs tensions d’alimentation différentes (1V, 2V, 3V, 4V, 5V et 6V).
Vous nommerez les différents fichiers CrFvi.csv avec \( i \) la tension appliquée au moteur.
Par exemple pour l'expérience avec une tension de 1 volt, nous nommerons le fichier CrFv1.csv.
Vous pouvez, éventuellement, faire plusieurs fois le même essai mais cette fois-ci vous nommerez votre fichier CrFvi-j.csv avec \( i \) la tension appliquée au moteur et \( j \) le numéro de l'expérience à cette tension.
Couple de frottement visqueux
Coefficient de frottement sec
A partir des expériences précédentes, déterminer le courant de seuil \( i_0 \).
En déduire le couple de frottement sec \( C_r \) associé.
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 0 s
- Choisir un signal de type Rectangle avec une amplitude de 0 V et un délai avant le démarrage de 0 ms
- Commuter le bouton du générateur de signal sur ON
- Augmenter petit à petit la tension de commande jusqu'à ce que le rotor se mette en mouvement
Déterminer expérimentalement le courant de seuil \( i_0 \) à partir de l'expérience précédente.
En déduire le couple de frottement sec \( C_r \) associé.
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 0 s
- Choisir un signal de type Rectangle avec une amplitude de 1 V et un délai avant le démarrage de 0 ms
- Commuter le bouton du générateur de signal sur ON
- Diminuer petit à petit la tension de commande jusqu'à ce que le rotor s'immobilise
Déterminer expérimentalement le courant de seuil \( i_0 \) à partir de l'expérience précédente.
En déduire le couple de frottement sec \( C_r \) associé.
Nous vous invitons à faire une recherche bibliographique sur le frottement sec statique et dynamique.
Le modèle de " Coulomb, sec et visqueux " peut se représenter ainsi :
On pourrait se pose la question de " Où se trouve les différents couples de frottement évoqués précédemment ? "
Identification du moment d'inertie équivalente
Validation du modèle par la réponse temporelle
- Récupérer les résultats expérimentations pour une commande de 6V.
- Utiliser le fichier conversionCommandeEnTension_Serie.ipynb (pour scilab ou pour MatLab) pour convertir les résultats expérimentaux en données compatibles le modèle causal choisi.
- Ouvrir votre modèle causal et saisir vos constantes caractéristiques
Valider votre modèle
Commenter les écarts constatés
Validation du modèle par la réponse fréquentielle
La procédure est la suivante :
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 0 s
- Choisir un signal de type Sinus avec une amplitude de 3 V, une fréquence de 1 Hz et un délai avant le démarrage de 0 ms
- Commuter le bouton du générateur de signal sur ON
- Commuter le bouton du générateur de signal sur OFF une fois que les courbes commencent à défiler (le temps de réponse ne doit plus apparaitre sur la courbe)
Compléter, avec les relevés expérimentaux, les variables :
wm
: la pulsation mesuréegainm
: le gain mesuréphasem
: le déphase mesuré
Valider votre modèle
Commenter les écarts constatés
Modélisation de l'asservissement de la vitesse de rotation du moteur
Modélisation
Donner, dans sa généralité, le schéma-blocs organique d'un système asservi.
Justifier que l'on puisse se ramener à ce schéma-blocs ci-dessous :
La première chose à faire est de fermer la connexion en cliquant sur ON de Connexion au port série de Contrôle de l'application. L'interrupteur commute alors sur OFF.
Une led orange doit s'éteindre sur la platine.
Si vous ne réalisez pas cette étape, par la suite vous pourriez avoir des problèmes de communication.
Pour l'identification des composants de gain inconnu (hacheur, capteur, etc.), nous utiliserons l'asservissement en vitesse par le port série bien plus rapide que par le port réseau. Pour cela,
- Cliquer sur Ouvrir de Asservissement en vitesse série (acquisition rapide)
Noter que par la suite, il est possible de passer directement d’une application à une autre en utilisant la zone Applications intégrée dans chaque tableau de bord.
La procédure est la suivante :
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 0.9 s
- Choisir un signal de type Rectangle avec une amplitude de 40 rad/s et un délai avant le démarrage de 50 ms
- Régler le correcteur PID en correcteur proportionnel
- \( Kp = 0.1 \)
- \( Ki = 0 \)
- \( Kd = 0 \)
- Commuter le bouton du générateur de signal sur ON
Identifier le gain \( Kautre \) à partir de la mesure
- la tension de commande \( u(t) \)
- la vitesse de rotation du motoréducteur \( \omega_{mr}(t) \)
et à partir des informations
- la vitesse de rotation de consigne du motoréducteur \( \omega_c(t) \)
- du gain du correcteur \( K_p \)
Compléter votre schéma bloc.
Valider votre modèle
Commenter les écarts constatés
Amélioration / dégradation du comportement
En vue d’analyser les performances (la stabilité, la robustesse, la rapidité et la précision) avec ou sans l’effet de la perturbation de couple extérieur au motoréducteur, lancer des échelons de vitesse avec l'acquisition des courbes de vitesse, pour chacune des situations ci-dessous :
Situation | \(Kp\) | \(Ki\) | \(Kd\) | couple extérieur | Nom du fichier |
---|---|---|---|---|---|
Correction proportionnelle sans perturbation |
0.05 | 0 | 0 | Désactivé | kp005ki000cr000.csv |
0.1 | kp010ki000cr000.csv | ||||
0.2 | kp020ki000cr000.csv | ||||
0.4 | kp040ki000cr000.csv | ||||
Correction proportionnelle avec perturbation |
0.05 | 0 | 0 | Activé | kp005ki000cr001.csv |
0.1 | kp010ki000cr001.csv | ||||
0.2 | kp020ki000cr001.csv | ||||
0.4 | kp040ki000cr001.csv | ||||
Correction proportionnelle intégrale sans perturbation |
0.1 | 0.1 | 0 | Désactivé | kp010ki001cr000.csv |
2 | kp010ki020cr000.csv | ||||
10 | kp010ki100cr000.csv | ||||
Correction proportionnelle intégrale avec perturbation |
0.1 | 0.1 | 0 | Activé | kp010ki001cr001.csv |
2 | kp010ki020cr001.csv | ||||
10 | kp010ki100cr001.csv |
Pour cela, dans l'application Asservissement en vitesse série (acquisition rapide),
- Si cela n'est pas déjà fait, commuter sur ON le bouton de connexion au port série
- Choisir une durée d’acquisition de 2.25 s
- Choisir un signal de type Rectangle avec
- un offset de 0 rad/s
- une amplitude de 40 rad/s
- une fréquence de 0.5 Hz
- un rapport cyclique de 80%
- un délai avant le démarrage de 500 ms
- Régler le correcteur PID selon les différentes situations ci-dessus.
- Régler la consigne de couple à -0.01 N.m que l'on activera selon les besoins
- Commuter le bouton du générateur de signal sur ON quand vous êtes prêt
- Enregistrer l'expérience sous le nom du fichier imposé.
Afficher les courbes dans la situation Correction proportionnelle avec et sans perturbation.
Commenter l'évolution des performances au cause de la présence de la perturbation.
Afficher les courbes dans la situation Correction proportionnelle
Commenter l'évolution des performances grâce l'augmentation du gain du correcteur proportionnel.
Afficher les courbes dans la situation Correction proportionnelle intégrale.
Commenter l'évolution des performances grâce à l'introduction de l'intégrateur dans le correcteur proportionnel.
Le cours à venir sur les correcteurs fera la synthèse de vos observations.
A la suite de ce cours, nous irons plus loin en proposant et en mettant en œuvre une démarche de réglage d’un correcteur.
Correction numérique
Mise en garde
Malheureusement dans cette partie, nous ne pouvons plus utiliser le port série. Il nous faut utiliser le port réseau afin de pouvoir écrire son propre correcteur.
La vitesse de communication par le port réseau est beaucoup plus lente que par le port série. Cela implique un retard dans la chaine de communications que nous n'avions pas auparavant. De ce fait, le comportement de la platine n'est plus le même et le modèle que nous avions établi n'est plus valable !
Correcteur numérique
L'implémentation d'un correcteur numérique dans un micro-contrôleur ou dans un ordinateur se fait grâce à un programme dont vous pouvez voir la structure ci dessous.
Il faut garder à l'esprit que ce script est itératif. Il est exécuté à intervalle de temps régulier avec une période de l'échantillonnage Te
.
Nous rappelons que l'erreur est la différence de la consigne avec la réponse. Dans notre cas, la grandeur physique asservie est la vitesse de rotation du motoréducteur.
I_x = 0. # Etat de l'intégrateur
D_x = 0. # Etat de la dérivée
erreurprec = 0. # Mesure de l'erreur au pas précédent
def PID(cons, mes, Kp, Ki, Kd, Tf, umax, umin, Te):
# cons : Consigne de vitesse
# mes : Mesure de la vitesse
# Kp : gain de l'action proportionnelle
# Ki : gain de l'action intégrale
# Ti : constante de temps de l'action intégrale
if Ki == 0:
Ti = 0 # Attention à la division par zéro...
else:
Ti = 1 / Ki
# Kd : gain de l'action dérivée
# Tf : Non utilise
# umax : commande maximale
# umin : commande minimale
# Te : période de l'échantillonnage
global I_x, D_x, erreurprec
## Calcul du PID
## Calcul de l'erreur
erreur = cons - mes
## Terme proportionnel de gain Kp
P_x = 0.
## Terme intégral de gain Ki ou de constante de temps Ti
I_x = 0.
## Terme dérivé de gain Kd
D_x = 0.
## Calcul de la commande avant saturation
if (Kp == 0): P_x = 0.
if (Ki == 0): I_x = 0.
if (Kd == 0): D_x = 0.
commande_avant_sat = P_x + I_x + D_x
## Application de la saturation sur la commande
if (commande_avant_sat > umax):
commande = umax
elif (commande_avant_sat < umin):
commande = umin
else:
commande = commande_avant_sat
## Stockage de l'erreur courante pour utilisation lors du pas d'échantillonnage suivant
erreurprec = erreur
return commande
Implémentation de l'action proportionnelle
La correction proportionnelle est caractérisée par cette relation : la commande \( u(t) = Kp \cdot erreur(t) \).
La commande \( u(t) \) de l'action proportionnelle sera appelée dans le programme P_x
.
Modifier le programme ci-dessus pour implanter l'action proportionnelle.
La première chose à faire est de fermer la connexion en cliquant sur ON de Connexion au port série de Contrôle de l'application. L'interrupteur commute alors sur OFF.
Une led orange doit s'éteindre sur la platine.
Nous allons implanter votre programme dans la platine et tester dans la foulée votre programme.
- Ouvrir l'application Asservissement en vitesse (réseau)
- Si cela n'est pas déjà fait, commuter sur ON le bouton de Marche / Arrêt
- Implanter votre correcteur :
- Téléverser votre fichier PID.py
- Commuter le bouton Utiliser le fichier téléchargé sur
- Régler le correcteur PID à votre convenance
- Choisir une durée d’acquisition de 2.25 s
- Choisir un signal de type Rectangle avec
- un offset de 0 rad/s
- une amplitude de 40 rad/s
- une fréquence de 0.5 Hz
- un rapport cyclique de 80%
- un délai avant le démarrage de 500 ms
- Commuter le bouton du générateur de signal sur ON quand vous êtes prêt
- Refaire au choix une seule des situations Correction proportionnelle avec ou sans perturbation avec le correcteur personnalisé. Sauvegarder l'acquisition sous correcteurProportionnelPersonnalise.csv.
- Refaire la même situation avec le correcteur par défaut. Sauvegarder l'acquisition sous correcteurProportionnelparDefaut.csv
- Afficher les courbes dans la situation Correction proportionnelle.
- Commenter la différence entre le correcteur par défaut et le vôtre.
Implémentation de l'action intégrale
La correction intégrale est caractérisée par cette relation : la commande \( u(t) = \dfrac{1}{Ti} \cdot \int\limits_{0}^{t} erreur(\theta) \cdot d\theta \) avec \( \dfrac{1}{Ti} = Ki \).
La commande \( u(t) \) de l'action intégrale sera appelée dans le programme I_x
.
Recopier sur une feuille le schéma ci-dessous
Représenter sur cette courbe \( \int\limits_{0}^{t} erreur(\theta) \cdot d\theta \) pour \( t = 2 \cdot Te \).
On suppose qu'à l'instant \( t \) que \( u(t) = \dfrac{1}{Ti} \cdot \int\limits_{0}^{t} erreur(\theta) \cdot d\theta \) est connu. D'ailleurs sur le programme ci-dessus, cela correspond à la variable globale I_x
.
Le temps est échantillonné sur un intervalle de temps Te
. A la prochaine itération, nous devons réévaluer \( u(t+Te) = \dfrac{1}{Ti} \cdot \int\limits_{0}^{t+Te} erreur(\theta) \cdot d\theta \) qui vaut en fait \( \dfrac{1}{Ti} \cdot \int\limits_{0}^{t} erreur(\theta) \cdot d\theta + \dfrac{1}{Ti} \cdot \int\limits_{t}^{t+Te} erreur(\theta) \cdot d\theta \).
Sur le schéma recopié, représenter d'une autre couleur \( \int\limits_{t}^{t+Te} erreur(\theta) \cdot d\theta \) pour \( t = 2 \cdot Te \).
Eventuellement, à partir de l'approximation numérique de l'intégrale par la méthode des rectangles, donner une approximation numérique de cette intégrale en fonction des variables disponibles dans le programme ci-dessus.
Un correcteur proportionnel intégrale peut s'écrire \( u(t) = Kp \cdot erreur(t) + \dfrac{1}{Ti} \cdot \int\limits_{0}^{t} erreur(\theta) \cdot d\theta \), c'est-à-dire, commande_avant_sat = P_x + I_x
.
Modifier le programme précédent pour implanter l'action intégrale.
Téléverser votre nouveau programme.
- Refaire au choix une seule des situations Correction proportionnelle intégrale avec ou sans perturbation avec le correcteur personnalisé. Sauvegarder l'acquisition sous correcteurProportionnelIntegralPersonnalise.csv.
- Refaire la même situation avec le correcteur par défaut. Sauvegarder l'acquisition sous correcteurProportionnelIntegralparDefaut.csv
- Afficher les courbes dans la situation Correction proportionnelle.
- Commenter la différence entre le correcteur par défaut et le vôtre.