Le but de ce TP est de faire fonctionner une expérience de physique virtuelle.
L'ordinateur doit envoyer ou non du courant à l'electro-aimant afin de maintenir la pièce de métal en l'air sans qu'elle touche quoi que ce soit.
Comme nous ne disposons pas du système physique, nous allons simuler l'expérience de la manière la plus fiable qui soit. C'est-à-dire avec un pas de calcul très court et la tâche la plus prioritiaire.
On vous fourni controle.c dans lequel il ne reste plus qu'à insérer le code qui contrôle l'electro-aimant. "controle.c" contient 3 threads. La plus prioritaire fait la simulation du système physique. La moins prioritaire fait l'affichage de l'état du système physique et l'intermédiaire assure le contrôle de l'électro-aimant.
Le contrôleur essaye de deviner pendant combien de temps (durée_aimant_allumé) il faut allumer l'électro-aimant que le système soit stable. Voici l'algorithme du contrôleur :
On initialise durée_aimant_allumé à 0.011 secondes. Boucle périodique : Si le capteur passe à l'état 0 (la pièce vient de couper la lumière) : On active l'aimant Si la durée passée avec le capteur à 1 est supérieure à TAuDessus Alors enlever DtControle à durée_aimant_allumé Sinon ajouter DtControle à durée_aimant_allumé Si le capteur passe à l'état 1 : On éteint l'aimant. Si l'aimant est resté allumé pendant plus que durée_aimant_allumé : On éteint l'aimant.
Faites tourner votre programme en tant qu'utilisateur normal, en temps que root et en tant que root sous RT PREEMPT.
Vous devez faire une démonstration à la fin de la séance.