From ad45b4df5face15604b44f47f9b086063df477bb Mon Sep 17 00:00:00 2001 From: burg Date: Sun, 1 May 2005 11:42:31 +0000 Subject: Modification de l'automate de l'ascenseur pour qu'il détect plus de cas d'erreurs --- n/es/src/ascenseur.c | 41 +++++++++++++++++++++++++++++++++++------ n/es/src/ascenseur.h | 2 ++ 2 files changed, 37 insertions(+), 6 deletions(-) (limited to 'n') diff --git a/n/es/src/ascenseur.c b/n/es/src/ascenseur.c index 01fb7d2..baf0881 100644 --- a/n/es/src/ascenseur.c +++ b/n/es/src/ascenseur.c @@ -76,12 +76,26 @@ void ascenseur_update () ascenseur_update_vitesse (); asc_haut (ascenseur_vitesse); asc_message = 255; - if (capteur_haut()) + asc_ordre = 0; // annulle l'éventuelle ordre utilisateur + if (capteur_bas()) + ascenseur_state = CMD_Mgrande; + else + ascenseur_state = CMD_Mgrande_c; + break; + case CMD_Mgrande_c: + asc_ordre = 0; // annulle l'éventuelle ordre utilisateur + ascenseur_update_vitesse (); + asc_haut (ascenseur_vitesse); + asc_message = 255; + if (capteur_bas()) + ascenseur_state = ERR; + else if (capteur_haut()) ascenseur_state = CMD_Mpetite; else ascenseur_state = CMD_Mgrande; break; case CMD_Mpetite: // monter en réduisant la vitesse + asc_ordre = 0; // annulle l'éventuelle ordre utilisateur ascenseur_vitesse_voulue = ascenseur_min; ascenseur_update_vitesse (); asc_haut (ascenseur_vitesse); @@ -106,19 +120,34 @@ void ascenseur_update () else ascenseur_state = TENIR; break; - case CMD_D: // descente du mobile + case CMD_D_c: + asc_ordre = 0; // annulle l'éventeuelle ordre utilisateur ascenseur_vitesse_voulue = ascenseur_max; ascenseur_update_vitesse (); asc_bas (ascenseur_vitesse); asc_message = 255; - if (!capteur_bas() || capteur_milieu()) - ascenseur_state = CMD_D; + if (capteur_haut()) + ascenseur_state = CMD_D_c; else - ascenseur_state = WAIT; + ascenseur_state = CMD_D; + break; + case CMD_D: // descente du mobile + asc_ordre = 0; // annulle l'éventuelle ordre utilisateur + ascenseur_vitesse_voulue = ascenseur_max; + ascenseur_update_vitesse (); + asc_bas (ascenseur_vitesse); + asc_message = 255; + if (capteur_bas()) + ascenseur_state = ERR; + else + if (!capteur_milieu()) + ascenseur_state = CMD_D; + else + ascenseur_state = WAIT; break; case WAIT: // attente mobile normalement en bas asc_libre(); - if (asc_message != 0) asc_message = 255; + if (asc_message != 0) asc_message = 3; if (capteur_bas() && (asc_ordre ==0x01 )) { ascenseur_state = CMD_Mgrande; diff --git a/n/es/src/ascenseur.h b/n/es/src/ascenseur.h index 31783c8..cfec9f9 100644 --- a/n/es/src/ascenseur.h +++ b/n/es/src/ascenseur.h @@ -27,9 +27,11 @@ #include #define CMD_Mgrande 0 +#define CMD_Mgrande_c 6 #define CMD_Mpetite 1 #define TENIR 2 #define CMD_D 3 +#define CMD_D_c 7 #define WAIT 4 #define ERR 5 -- cgit v1.2.3