Contrôle de système physique

Le but de ce TP est de faire fonctionner une expérience de physique virtuelle.

L'expérience

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.

Réalisation

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.

Tests

Faites tourner votre programme en tant qu'utilisateur normal, en temps que root et en tant que root sous RT PREEMPT.

Travail à rendre

Vous devez faire une démonstration à la fin de la séance.