3. Le cas distribué
Nous souhaitons vous faire implémentez le cas d’un contrôleur déporté pour illustrer les
problèmes pouvant exister entre les différentes étapes de conceptions d’un contrôleur.
Nous allons considérer que le chariot embarque deux cartes à partir de maintenant. Une carte
est destinée à calculer l’accélération à appliquer au moteur pour maintenir le pendule dans une
position d’équilibre instable. La seconde carte recevra via une ligne série connecté au connecteur
SMC2 les valeurs de la commande U(t) de manière échantillonnée.
Il faudra que vous implémentiez le driver de ce contrôleur. Pour vous aider vous disposez du
fichier console.c qui implémente l’écriture sur le contrôleur série SMC1 (suffit de changer certains
index)
Vous implémenterez l’écriture et la lecture en mode polling cf la documentation RTEMS et
MPC860.
Vous pourrez utiliser un débit de l’ordre de 111000 bauds ce qui vous assure d’être capable de
transférer la commande suffisamment vite. Pour la période d’échantillonnage choisie (20 ms ou 10
ms si le contrôle est instable.)
Vous devrez configurer la ligne série, l’initialiser et afficher sur chaque console respective les
valeurs transmises à l’autre carte :
Carte contrôleur :
Reçoit : position et angle (du simulateur)
Envoie : commande (sous la forme d’une force)
Carte « simulateur » :
Reçoit : commande de la force induite par le moteur.
D) Implémentez la liaison de communication série moteur / contrôleur
E) Fonctionnement Multifréquence : changer les fonctions d’échantillonnage pour prendre en
compte une fréquence de fonctionnement du simulateur du moteur deux fois plus rapide que celle
du contrôleur.
4. Annexe
a. Constantes Numérique
% Manipulation du pendule inversé
T s=0.01;
M=6; % masse du chariot : 1,6 Kg + J/R^2
m=0.31; % masse du pendule : 0,310 Kg
l=0.5; % longueur du pendule : 0,5 m
g=9.81;
% Coefficients de frottement
f=210; % chariot
k=0.003; % pendule
I=0; % inertie
Ks=225; % rail
b. Matrice du système linéarisé
AH = | 0 1.0000 0 0
| 0 -35.0000 -0.5069 0.0010
| 0 0 0 1.0000