ETER 2010
Travaux Dirigés et Pratiques
Conception et Réalisation
de Systèmes Embarqués
Ce sujet comporte une partie théorique et une partie de mise en œuvre pratique sur les cartes
SPIF accessible depuis la machine Xuri.
Le but de ce TP/TD est de concevoir et implémenter un système composé d’une fonction de
contrôle permettant de piloter les mouvement d’un véhicule, et d’un simulateur permettant de
calculer la variation de l’état physique du véhicule.
1. Description du problème physique
Le véhicule dont nous souhaitons contrôler le mouvement est un chariot muni d’un moteur
monté sur un rail suffisamment long pour que l’on puisse le considérer « infini ». Sur ce chariot,
une rotule relie un pendule au chariot. On suppose que ce pendule se déplace dans le plan vertical
contenant le rail sur lequel le chariot se déplace. On supposera que le pendule peut effectuer une
rotation complète autour de sa rotule (cf figure).
Si le chariot est immobile le pendule fini toujours par « tomber » et se stabilise en position
basse.
Rôle du contrôleur de vitesse du chariot : on suppose que le déplacement du chariot est
« piloter » par un composant logiciel qui adapte l’accélération du chariot de façon à maintenir le
pendule en position haute.
Mise en œuvre et test par Simulation : le but est d’implémenter le code contrôlant l’accélération
du chariot en langage synchrone puis d’intégrer ce code dans une structure de tâche temps réel.
Dans un second temps, vous devez implémenter une tâche qui est capable de simuler la variation de
l’état physique du chariot composer de sa position et l’angle du pendule en autre. (Aider vous des
équation physique pour déterminer quelles valeurs doivent être calculées.
F(t) = Ks*U
Intégration : l’objectif est de déployer la loi de contrôle et le simulateur dans des tâches différentes
qui par la suite pourront être déployées sur des cartes différentes. A vous de prévoir une interface
de communication permettant de faciliter ce développement incrémental du simulateur de pendul
inversé.
Dans la théorie du contrôle linaire, le but est d’obtenir un système d’équations liant les
commandes (ici F(t) correspondant à l’accélération induite par le moteur, les observation sont les
Y, et les paramètres physiques sont X ) :
dX/dt= A.X+ B.F(t)
Y= C.X+D.F(t)
F(t)= Ks*U(t)
Pour des détails consultez : http://fr.wikipedia.org/wiki/Représentation_d%27état
Les règles de discrétisation sont données dans la page en question mais nous poursuivrons
l’étude comme si nous étions dans le cas continu.
Après analyse et linéarisation des équations physiques, on obtient les relations suivantes pour
un pendule en position haute (thêta = 0 => position verticale haute d’équilibre instable). Ici x1=x ;
x2=dx/dt ; x3=thêta ; x4 = dx3+dt ;
La loi de contrôle s’exprime de la manière suivante : U (t) = - K. X. (donc F(t)= -Ks*K*X
La matrice K est une matrice contenant des facteurs de pondération sur les valeurs de X.
La détermination de ces valeurs est très sensibles (nous utiliserons un jeu de valeurs qui
pourra être adapté dans la prochaine séance en cas dʼinstabilité).
K = [-0.6325 -2.1740 -5.4559 -1.2233]
Nous allons échantillonner le fonctionnement du contrôleur.
Simulation du mouvement du pendule :
X obéit à la loi Xʼ=AX+BF en supposant F constant sur la période t, il est possible de faire
une approximation numérique permettant de déduire la nouvelle valeur de X à t+t à partir de
X à t :
1) On calcule Xʼ à t en fonction de X à t et U à t, puis on utilise lʼapproximation suivante Xʼ
constant entre t et t : Xʼ(t)=AX(t) + B.F(t).
2) Application dʼune intégration : Xʼ(t)=(X(t) X(t-t))/T0=AX(t)+BF(t)
3) Dʼla relation X(t+t)=(I-At)^(-1)*(X(t)+ B.Ks.U(t)*t) si on suppose U constant sur
]t,t+t]. Attention t intervient dans la mise à jour faîte en 1)
Le détail de la matrice (I-At)^-1 (appelée AH) est donné en annexe. On pourra utiliser la
même période de mise à jour de U et celle de mise à jour de X
2. Le cas centralisé
Utilisez les paramètres donnés dans ce sujet tels quels.
A) Implémenter les fonctions de simulation et de calcul de la fonction de contrôle dans des
fonctions séparées n’utilisant aucune variable globale (uniquement des paramètres) via la
génération de bloc lustre et le compilateur lus2c.
B) Intégrer le code du simulateur et du contrôleur dans des tâche RTEMS-RMS comme dans le
premier tp.
C) Penser à protéger le canal de communication entre les deux tâches par un sémaphore
D) Vérification de lordonnancement : utiliser le code du premier tp (RMS) pour évaluer le
nombre de tick par période et donc le temps d’exécution associé à la tâche de contrôle et à la
tâche de simulation. Calculer la période max de fonctionnement du système
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éari
AH = | 0 1.0000 0 0
| 0 -35.0000 -0.5069 0.0010
| 0 0 0 1.0000
| 0 -70.0000 20.6337 -0.0407
BH = | 0
| 0.1667
| 0
| -0.3333
Références :
http://fr.wikipedia.org/wiki/Automatique
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !