Version initiale
Dependencies: mbed
Fork of Le_Pont_V10116 by
Gemma.cpp@2:a10c8133d71c, 2018-03-29 (annotated)
- Committer:
- CS
- Date:
- Thu Mar 29 15:41:22 2018 +0000
- Revision:
- 2:a10c8133d71c
- Parent:
- 1:570ba62fab91
Publish of "Le_Pont_V11003" in the team folder
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
CS | 0:8b3c6f593515 | 1 | //****************************************************************** |
CS | 0:8b3c6f593515 | 2 | // |
CS | 0:8b3c6f593515 | 3 | // Gemma |
CS | 0:8b3c6f593515 | 4 | // |
CS | 0:8b3c6f593515 | 5 | // Logiciel de gestion des modes de marche et d'arret du Pont Bacalan |
CS | 0:8b3c6f593515 | 6 | // |
CS | 0:8b3c6f593515 | 7 | // |
CS | 0:8b3c6f593515 | 8 | // |
CS | 0:8b3c6f593515 | 9 | //******************************************************************** |
CS | 0:8b3c6f593515 | 10 | |
CS | 0:8b3c6f593515 | 11 | #include "Gemma.h" |
CS | 0:8b3c6f593515 | 12 | |
CS | 0:8b3c6f593515 | 13 | Serial PC3(USBTX, USBRX) ; |
CS | 0:8b3c6f593515 | 14 | // Chronomètre |
CS | 0:8b3c6f593515 | 15 | Timer Chrono_Param ; |
CS | 0:8b3c6f593515 | 16 | AnalogOut Consigne_aout (p18) ; |
CS | 0:8b3c6f593515 | 17 | |
CS | 0:8b3c6f593515 | 18 | U8 No_Parametre ; |
CS | 0:8b3c6f593515 | 19 | S16 *pParametres_Console_RG ; |
CS | 0:8b3c6f593515 | 20 | S16 *pParametres_Console_RD ; |
CS | 0:8b3c6f593515 | 21 | |
CS | 0:8b3c6f593515 | 22 | void vGemma_Init () |
CS | 0:8b3c6f593515 | 23 | { |
CS | 0:8b3c6f593515 | 24 | Chrono_Param.start () ; |
CS | 0:8b3c6f593515 | 25 | pParametres_Console_RG = &Param_Version_RG ; |
CS | 0:8b3c6f593515 | 26 | pParametres_Console_RD = &Param_Version_RD ; |
CS | 0:8b3c6f593515 | 27 | No_Parametre = 0 ; |
CS | 0:8b3c6f593515 | 28 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 29 | } |
CS | 0:8b3c6f593515 | 30 | |
CS | 0:8b3c6f593515 | 31 | void vGemma ( Pilote* pRive_Droite , Pilote* pRive_Gauche ) |
CS | 0:8b3c6f593515 | 32 | { |
CS | 0:8b3c6f593515 | 33 | // Fonctionnement des differents modes |
CS | 0:8b3c6f593515 | 34 | PC3.printf("\r\n Mode: %i", Mode_Fonctionnement) ; |
CS | 0:8b3c6f593515 | 35 | if ( Mode_Fonctionnement == MODE_MANUEL ) |
CS | 0:8b3c6f593515 | 36 | // En mode manuel, pas d'action maintenue, les 2 rives sont indépendantes |
CS | 0:8b3c6f593515 | 37 | { |
CS | 0:8b3c6f593515 | 38 | //Raz des parametres de synchronisation |
CS | 0:8b3c6f593515 | 39 | vSynchro_Initialise ( ) ; |
CS | 0:8b3c6f593515 | 40 | |
CS | 0:8b3c6f593515 | 41 | if ( BTN_Monte_RD ) |
CS | 0:8b3c6f593515 | 42 | {// Montée rive droite |
CS | 2:a10c8133d71c | 43 | if ( ( Hauteur_RD - Hauteur_RG ) < Defaut_Critique_Manu_mm ) |
CS | 0:8b3c6f593515 | 44 | { |
CS | 0:8b3c6f593515 | 45 | PC3.printf("\t Monte RD") ; |
CS | 0:8b3c6f593515 | 46 | pRive_Droite->Marche ( MODE_MANUEL, MONTE, Hauteur_maxi , Consigne_Vitesse_Manu ) ; |
CS | 0:8b3c6f593515 | 47 | } |
CS | 2:a10c8133d71c | 48 | else |
CS | 2:a10c8133d71c | 49 | { |
CS | 2:a10c8133d71c | 50 | pRive_Droite->Arret() ; |
CS | 2:a10c8133d71c | 51 | } |
CS | 2:a10c8133d71c | 52 | |
CS | 0:8b3c6f593515 | 53 | BTN_Descend_RD = 0 ; |
CS | 0:8b3c6f593515 | 54 | } |
CS | 0:8b3c6f593515 | 55 | else if ( BTN_Descend_RD ) |
CS | 0:8b3c6f593515 | 56 | {// Descente rive droite |
CS | 2:a10c8133d71c | 57 | if ( ( Hauteur_RG - Hauteur_RD ) < Defaut_Critique_Manu_mm ) |
CS | 0:8b3c6f593515 | 58 | { |
CS | 0:8b3c6f593515 | 59 | PC3.printf("\t Descend RD") ; |
CS | 0:8b3c6f593515 | 60 | pRive_Droite->Marche ( MODE_MANUEL, DESCEND, Hauteur_mini , Consigne_Vitesse_Manu ) ; |
CS | 0:8b3c6f593515 | 61 | } |
CS | 2:a10c8133d71c | 62 | else |
CS | 2:a10c8133d71c | 63 | { |
CS | 2:a10c8133d71c | 64 | pRive_Droite->Arret() ; |
CS | 2:a10c8133d71c | 65 | } |
CS | 0:8b3c6f593515 | 66 | BTN_Monte_RD = 0 ; |
CS | 0:8b3c6f593515 | 67 | } |
CS | 0:8b3c6f593515 | 68 | else |
CS | 0:8b3c6f593515 | 69 | {// Arrêt rive droite |
CS | 0:8b3c6f593515 | 70 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 71 | BTN_Descend_RD = 0 ; |
CS | 0:8b3c6f593515 | 72 | BTN_Monte_RD = 0 ; |
CS | 0:8b3c6f593515 | 73 | //PC3.printf("\r\n Arret RD") ; |
CS | 0:8b3c6f593515 | 74 | } |
CS | 0:8b3c6f593515 | 75 | if ( BTN_Monte_RG ) |
CS | 0:8b3c6f593515 | 76 | {// Montée rive gauche |
CS | 2:a10c8133d71c | 77 | if ( ( Hauteur_RG - Hauteur_RD ) < Defaut_Critique_Manu_mm ) |
CS | 0:8b3c6f593515 | 78 | { |
CS | 0:8b3c6f593515 | 79 | PC3.printf("\t Monte RG") ; |
CS | 0:8b3c6f593515 | 80 | pRive_Gauche->Marche ( MODE_MANUEL, MONTE, Hauteur_maxi , Consigne_Vitesse_Manu ) ; |
CS | 0:8b3c6f593515 | 81 | Consigne_aout.write ( (F32) Consigne_Vitesse_Manu / V_MAX ) ; |
CS | 0:8b3c6f593515 | 82 | } |
CS | 2:a10c8133d71c | 83 | else |
CS | 2:a10c8133d71c | 84 | { |
CS | 2:a10c8133d71c | 85 | pRive_Gauche->Arret() ; |
CS | 2:a10c8133d71c | 86 | } |
CS | 0:8b3c6f593515 | 87 | BTN_Descend_RG = 0 ; |
CS | 0:8b3c6f593515 | 88 | } |
CS | 0:8b3c6f593515 | 89 | else if ( BTN_Descend_RG ) |
CS | 0:8b3c6f593515 | 90 | {// Descente rive gauche |
CS | 2:a10c8133d71c | 91 | if ( ( Hauteur_RD - Hauteur_RG ) < Defaut_Critique_Manu_mm ) |
CS | 0:8b3c6f593515 | 92 | { |
CS | 0:8b3c6f593515 | 93 | PC3.printf("\t Descend RG") ; |
CS | 0:8b3c6f593515 | 94 | pRive_Gauche->Marche ( MODE_MANUEL, DESCEND, Hauteur_mini , Consigne_Vitesse_Manu ) ; |
CS | 0:8b3c6f593515 | 95 | Consigne_aout.write ( (F32) Consigne_Vitesse_Manu / V_MAX ) ; |
CS | 0:8b3c6f593515 | 96 | } |
CS | 2:a10c8133d71c | 97 | else |
CS | 2:a10c8133d71c | 98 | { |
CS | 2:a10c8133d71c | 99 | pRive_Gauche->Arret() ; |
CS | 2:a10c8133d71c | 100 | } |
CS | 0:8b3c6f593515 | 101 | BTN_Monte_RG = 0 ; |
CS | 0:8b3c6f593515 | 102 | } |
CS | 0:8b3c6f593515 | 103 | else |
CS | 0:8b3c6f593515 | 104 | {// Arret rive gauche |
CS | 0:8b3c6f593515 | 105 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 106 | BTN_Monte_RG = 0 ; |
CS | 0:8b3c6f593515 | 107 | BTN_Descend_RG = 0 ; |
CS | 0:8b3c6f593515 | 108 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 109 | //PC3.printf("\r\n Arret RG") ; |
CS | 0:8b3c6f593515 | 110 | } |
CS | 0:8b3c6f593515 | 111 | if ( BTN_Frein ) |
CS | 0:8b3c6f593515 | 112 | {// Liberation des freins |
CS | 0:8b3c6f593515 | 113 | if ( !BTN_Monte_RG && !BTN_Descend_RG && !!BTN_Monte_RD && !BTN_Descend_RD ) |
CS | 0:8b3c6f593515 | 114 | { |
CS | 0:8b3c6f593515 | 115 | if (pRive_Gauche->Etat_Frein == SERRE ) pRive_Gauche->Frein( DESSERRE ) ; |
CS | 0:8b3c6f593515 | 116 | if (pRive_Droite->Etat_Frein == SERRE ) pRive_Droite->Frein( DESSERRE ) ; |
CS | 0:8b3c6f593515 | 117 | } |
CS | 0:8b3c6f593515 | 118 | } |
CS | 0:8b3c6f593515 | 119 | else |
CS | 0:8b3c6f593515 | 120 | {// Serrage des freins |
CS | 0:8b3c6f593515 | 121 | if ( !BTN_Monte_RG && !BTN_Descend_RG && !!BTN_Monte_RD && !BTN_Descend_RD ) |
CS | 0:8b3c6f593515 | 122 | { |
CS | 0:8b3c6f593515 | 123 | if (pRive_Gauche->Etat_Frein == DESSERRE ) pRive_Gauche->Frein( SERRE ) ; |
CS | 0:8b3c6f593515 | 124 | if (pRive_Droite->Etat_Frein == DESSERRE ) pRive_Droite->Frein( SERRE ) ; |
CS | 0:8b3c6f593515 | 125 | } |
CS | 0:8b3c6f593515 | 126 | } |
CS | 0:8b3c6f593515 | 127 | } |
CS | 0:8b3c6f593515 | 128 | |
CS | 0:8b3c6f593515 | 129 | else if ( Mode_Fonctionnement == MODE_AUTOMATIQUE ) |
CS | 0:8b3c6f593515 | 130 | {// En mode automatique, les rives sont synchronisées, avec consigne de vitesse et hauteur cible |
CS | 0:8b3c6f593515 | 131 | if ( BTN_Arret ) |
CS | 0:8b3c6f593515 | 132 | {// Arret du pont |
CS | 0:8b3c6f593515 | 133 | BTN_Monte = 0 ; |
CS | 0:8b3c6f593515 | 134 | BTN_Descend = 0 ; |
CS | 0:8b3c6f593515 | 135 | BTN_Arret = 0 ; |
CS | 0:8b3c6f593515 | 136 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 137 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 138 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 139 | |
CS | 0:8b3c6f593515 | 140 | vSynchro_Initialise ( ) ; |
CS | 0:8b3c6f593515 | 141 | |
CS | 0:8b3c6f593515 | 142 | //PC3.printf("\r\n Btn Arret") ; |
CS | 0:8b3c6f593515 | 143 | } |
CS | 0:8b3c6f593515 | 144 | else |
CS | 0:8b3c6f593515 | 145 | {// Vérification de l'ecart de synchronisation: différence de hauteur entre droite et gauche |
CS | 0:8b3c6f593515 | 146 | if ( abs( Hauteur_RD - Hauteur_RG ) > Defaut_Critique_Synchro ) |
CS | 0:8b3c6f593515 | 147 | {// Si l'ecart depasse le seuil critique: on arrete tout! |
CS | 0:8b3c6f593515 | 148 | BTN_Arret = 0 ; |
CS | 0:8b3c6f593515 | 149 | BTN_Descend = 0 ; |
CS | 0:8b3c6f593515 | 150 | BTN_Monte = 0 ; |
CS | 0:8b3c6f593515 | 151 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 152 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 153 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 154 | PC3.printf("\r\n Defaut Critique") ; |
CS | 0:8b3c6f593515 | 155 | } |
CS | 0:8b3c6f593515 | 156 | else if ( BTN_Monte ) |
CS | 0:8b3c6f593515 | 157 | {// Si on est en haut |
CS | 0:8b3c6f593515 | 158 | if ( ( Hauteur_P >= Consigne_Haute_P ) |
CS | 0:8b3c6f593515 | 159 | ||( Hauteur_RD >= Consigne_Haute_P ) |
CS | 0:8b3c6f593515 | 160 | ||( Hauteur_RG >= Consigne_Haute_P ) ) |
CS | 0:8b3c6f593515 | 161 | { |
CS | 0:8b3c6f593515 | 162 | BTN_Monte = 0 ; |
CS | 0:8b3c6f593515 | 163 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 164 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 165 | PC3.printf("\r\n En Haut") ; |
CS | 0:8b3c6f593515 | 166 | } |
CS | 0:8b3c6f593515 | 167 | else |
CS | 0:8b3c6f593515 | 168 | {// Montée |
CS | 0:8b3c6f593515 | 169 | PC3.printf("\t Monte Auto mode: %i", Mode_Synchro) ; |
CS | 0:8b3c6f593515 | 170 | vSynchronise ( Mode_Synchro , MONTE ) ; |
CS | 0:8b3c6f593515 | 171 | pRive_Droite->Marche ( MODE_AUTOMATIQUE, MONTE, Consigne_Haute_P , Consigne_Vitesse_RD ) ; |
CS | 0:8b3c6f593515 | 172 | pRive_Gauche->Marche ( MODE_AUTOMATIQUE, MONTE, Consigne_Haute_P , Consigne_Vitesse_RG ) ; |
CS | 0:8b3c6f593515 | 173 | Consigne_aout.write ( (F32) Consigne_Vitesse_RG / V_MAX ) ; |
CS | 0:8b3c6f593515 | 174 | } |
CS | 0:8b3c6f593515 | 175 | |
CS | 0:8b3c6f593515 | 176 | BTN_Arret = 0 ; |
CS | 0:8b3c6f593515 | 177 | BTN_Descend = 0 ; |
CS | 0:8b3c6f593515 | 178 | } |
CS | 0:8b3c6f593515 | 179 | else if ( BTN_Descend ) |
CS | 0:8b3c6f593515 | 180 | { |
CS | 0:8b3c6f593515 | 181 | if ( ( Hauteur_P <= Consigne_Basse_P ) |
CS | 0:8b3c6f593515 | 182 | ||( Hauteur_RD <= Consigne_Basse_P ) |
CS | 0:8b3c6f593515 | 183 | ||( Hauteur_RG <= Consigne_Basse_P ) ) |
CS | 0:8b3c6f593515 | 184 | {// Si on est en bas |
CS | 0:8b3c6f593515 | 185 | BTN_Descend = 0 ; |
CS | 0:8b3c6f593515 | 186 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 187 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 188 | PC3.printf("\r\n En Bas") ; |
CS | 0:8b3c6f593515 | 189 | } |
CS | 0:8b3c6f593515 | 190 | else |
CS | 0:8b3c6f593515 | 191 | {// Descente du pont |
CS | 0:8b3c6f593515 | 192 | PC3.printf("\t Descend Auto") ; |
CS | 0:8b3c6f593515 | 193 | PC3.printf("\t Descend Auto mode: %i", Mode_Synchro) ; |
CS | 0:8b3c6f593515 | 194 | vSynchronise ( Mode_Synchro , DESCEND ) ; |
CS | 0:8b3c6f593515 | 195 | Consigne_Vitesse_RD = Consigne_Vitesse_Auto ; |
CS | 0:8b3c6f593515 | 196 | Consigne_Vitesse_RG = Consigne_Vitesse_Auto ; |
CS | 0:8b3c6f593515 | 197 | |
CS | 0:8b3c6f593515 | 198 | pRive_Droite->Marche ( MODE_AUTOMATIQUE, DESCEND, Consigne_Basse_P , Consigne_Vitesse_RD ) ; |
CS | 0:8b3c6f593515 | 199 | pRive_Gauche->Marche ( MODE_AUTOMATIQUE, DESCEND, Consigne_Basse_P , Consigne_Vitesse_RG ) ; |
CS | 0:8b3c6f593515 | 200 | Consigne_aout.write ( (F32) Consigne_Vitesse_RG / V_MAX ) ; |
CS | 0:8b3c6f593515 | 201 | } |
CS | 0:8b3c6f593515 | 202 | |
CS | 0:8b3c6f593515 | 203 | BTN_Arret = 0 ; |
CS | 0:8b3c6f593515 | 204 | BTN_Monte = 0 ; |
CS | 0:8b3c6f593515 | 205 | } |
CS | 0:8b3c6f593515 | 206 | |
CS | 0:8b3c6f593515 | 207 | else |
CS | 0:8b3c6f593515 | 208 | { |
CS | 0:8b3c6f593515 | 209 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 210 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 211 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 212 | } |
CS | 0:8b3c6f593515 | 213 | } |
CS | 0:8b3c6f593515 | 214 | } |
CS | 0:8b3c6f593515 | 215 | else if ( Mode_Fonctionnement == MODE_PARAMETRAGE ) |
CS | 0:8b3c6f593515 | 216 | {// En mode parametrage, |
CS | 0:8b3c6f593515 | 217 | //PC3.printf("\r\n No Param = %i " , No_Parametre) ; |
CS | 0:8b3c6f593515 | 218 | |
CS | 0:8b3c6f593515 | 219 | if ( Chrono_Param.read_ms() > PERIODE_MAJ_PARAM ) |
CS | 0:8b3c6f593515 | 220 | { |
CS | 0:8b3c6f593515 | 221 | Chrono_Param.reset () ; |
CS | 0:8b3c6f593515 | 222 | // Vérifie si le dernier parametre lu est a jour |
CS | 0:8b3c6f593515 | 223 | if ( *(pParametres_Console_RG + No_Parametre ) != (S16) ( pRive_Gauche->Parametres_Vario_S32 [ No_Parametre ] ) ) |
CS | 0:8b3c6f593515 | 224 | {// Sinon, on l'écrit dans le variateur |
CS | 0:8b3c6f593515 | 225 | PC3.printf("\r\n No Param RG= %i - %i " , *(pParametres_Console_RG + No_Parametre ) , pRive_Gauche->Parametres_Vario_S32 [ No_Parametre ] ) ; |
CS | 0:8b3c6f593515 | 226 | pRive_Gauche->Configure ( No_Parametre , (S32) *(pParametres_Console_RG + No_Parametre ) ) ; |
CS | 0:8b3c6f593515 | 227 | } |
CS | 0:8b3c6f593515 | 228 | // Vérifie si le dernier parametre lu est a jour |
CS | 0:8b3c6f593515 | 229 | if ( *(pParametres_Console_RD + No_Parametre ) != (S16) ( pRive_Droite->Parametres_Vario_S32 [ No_Parametre ] ) ) |
CS | 0:8b3c6f593515 | 230 | {// Sinon, on l'écrit dans le variateur |
CS | 0:8b3c6f593515 | 231 | PC3.printf("\r\n No Param RD= %i - %i " , *(pParametres_Console_RD + No_Parametre ) , pRive_Droite->Parametres_Vario_S32 [ No_Parametre ] ) ; |
CS | 0:8b3c6f593515 | 232 | pRive_Droite->Configure ( No_Parametre , (S32) *(pParametres_Console_RD + No_Parametre ) ) ; |
CS | 0:8b3c6f593515 | 233 | } |
CS | 0:8b3c6f593515 | 234 | No_Parametre++ ; |
CS | 0:8b3c6f593515 | 235 | if ( No_Parametre >= NB_PARAM_VARIATEUR ) |
CS | 0:8b3c6f593515 | 236 | { |
CS | 0:8b3c6f593515 | 237 | No_Parametre = 0 ; |
CS | 1:570ba62fab91 | 238 | pRive_Droite->Arret() ; |
CS | 1:570ba62fab91 | 239 | pRive_Gauche->Arret() ; |
CS | 1:570ba62fab91 | 240 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 241 | } |
CS | 0:8b3c6f593515 | 242 | // Lecture du parametre suivant |
CS | 0:8b3c6f593515 | 243 | pRive_Gauche->Lecture ( No_Parametre ) ; |
CS | 0:8b3c6f593515 | 244 | pRive_Droite->Lecture ( No_Parametre ) ; |
CS | 0:8b3c6f593515 | 245 | |
CS | 0:8b3c6f593515 | 246 | } |
CS | 0:8b3c6f593515 | 247 | |
CS | 0:8b3c6f593515 | 248 | } |
CS | 0:8b3c6f593515 | 249 | else if ( Mode_Fonctionnement == MODE_ETALONNAGE ) |
CS | 0:8b3c6f593515 | 250 | {// Etalonnage |
CS | 0:8b3c6f593515 | 251 | if ( BTN_Etalonnage ) |
CS | 0:8b3c6f593515 | 252 | { |
CS | 0:8b3c6f593515 | 253 | pRive_Droite->Etalonnage (Hauteur_RD1_pts , Hauteur_RD1_mm , Hauteur_RD2_pts , Hauteur_RD2_mm ) ; |
CS | 0:8b3c6f593515 | 254 | pRive_Gauche->Etalonnage (Hauteur_RG1_pts , Hauteur_RG1_mm , Hauteur_RG2_pts , Hauteur_RG2_mm ) ; |
CS | 0:8b3c6f593515 | 255 | BTN_Etalonnage = 0 ; |
CS | 0:8b3c6f593515 | 256 | wait(0.1) ; |
CS | 0:8b3c6f593515 | 257 | } |
CS | 0:8b3c6f593515 | 258 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 259 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 260 | } |
CS | 0:8b3c6f593515 | 261 | |
CS | 0:8b3c6f593515 | 262 | else if ( Mode_Fonctionnement == MODE_ALIGNEMENT ) |
CS | 0:8b3c6f593515 | 263 | { |
CS | 0:8b3c6f593515 | 264 | if ( BTN_Aligne) |
CS | 0:8b3c6f593515 | 265 | {// Alignement des hauteurs de pile pour le mode automatique |
CS | 0:8b3c6f593515 | 266 | if ( abs( Hauteur_RD - Hauteur_RG ) < Defaut_Mineur_Synchro / 2 ) |
CS | 0:8b3c6f593515 | 267 | {// Si l'ecart de hauteur est faible, on arrête tout |
CS | 0:8b3c6f593515 | 268 | BTN_Aligne = 0 ; |
CS | 0:8b3c6f593515 | 269 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 270 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 271 | PC3.printf("\r\n Aligne") ; |
CS | 0:8b3c6f593515 | 272 | } |
CS | 0:8b3c6f593515 | 273 | else if ( Hauteur_RD > Hauteur_RG ) |
CS | 0:8b3c6f593515 | 274 | {// La pile droite est plus haute |
CS | 0:8b3c6f593515 | 275 | if ( Hauteur_RD > Consigne_Basse_P ) |
CS | 0:8b3c6f593515 | 276 | {// On descend la pile droite |
CS | 0:8b3c6f593515 | 277 | Consigne_Vitesse_RD = Consigne_Vitesse_Manu ; |
CS | 0:8b3c6f593515 | 278 | pRive_Droite->Marche ( MODE_AUTOMATIQUE, DESCEND, Hauteur_RG , Consigne_Vitesse_RD ) ; |
CS | 0:8b3c6f593515 | 279 | } |
CS | 0:8b3c6f593515 | 280 | else |
CS | 0:8b3c6f593515 | 281 | { |
CS | 0:8b3c6f593515 | 282 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 283 | } |
CS | 0:8b3c6f593515 | 284 | if ( Hauteur_RG < Consigne_Haute_P ) |
CS | 0:8b3c6f593515 | 285 | {// On monte la pile gauche |
CS | 0:8b3c6f593515 | 286 | Consigne_Vitesse_RG = Consigne_Vitesse_Manu ; |
CS | 0:8b3c6f593515 | 287 | pRive_Gauche->Marche ( MODE_AUTOMATIQUE, MONTE, Hauteur_RD , Consigne_Vitesse_RG ) ; |
CS | 0:8b3c6f593515 | 288 | } |
CS | 0:8b3c6f593515 | 289 | else |
CS | 0:8b3c6f593515 | 290 | { |
CS | 0:8b3c6f593515 | 291 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 292 | } |
CS | 0:8b3c6f593515 | 293 | } |
CS | 0:8b3c6f593515 | 294 | else if ( Hauteur_RD < Hauteur_RG ) |
CS | 0:8b3c6f593515 | 295 | {// La pile gauche est plus haute |
CS | 0:8b3c6f593515 | 296 | if ( Hauteur_RD < Consigne_Haute_P ) |
CS | 0:8b3c6f593515 | 297 | {// On monte la pile droite |
CS | 0:8b3c6f593515 | 298 | Consigne_Vitesse_RD = Consigne_Vitesse_Manu ; |
CS | 0:8b3c6f593515 | 299 | pRive_Droite->Marche ( MODE_AUTOMATIQUE, MONTE, Hauteur_RG , Consigne_Vitesse_RD ) ; |
CS | 0:8b3c6f593515 | 300 | } |
CS | 0:8b3c6f593515 | 301 | else |
CS | 0:8b3c6f593515 | 302 | { |
CS | 0:8b3c6f593515 | 303 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 304 | } |
CS | 0:8b3c6f593515 | 305 | if ( Hauteur_RG > Consigne_Basse_P ) |
CS | 0:8b3c6f593515 | 306 | {// On descend la pile gauche |
CS | 0:8b3c6f593515 | 307 | Consigne_Vitesse_RG = Consigne_Vitesse_Manu ; |
CS | 0:8b3c6f593515 | 308 | pRive_Gauche->Marche ( MODE_AUTOMATIQUE, DESCEND, Hauteur_RD , Consigne_Vitesse_RG ) ; |
CS | 0:8b3c6f593515 | 309 | |
CS | 0:8b3c6f593515 | 310 | } |
CS | 0:8b3c6f593515 | 311 | else |
CS | 0:8b3c6f593515 | 312 | { |
CS | 0:8b3c6f593515 | 313 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 314 | } |
CS | 0:8b3c6f593515 | 315 | } |
CS | 0:8b3c6f593515 | 316 | } |
CS | 0:8b3c6f593515 | 317 | else |
CS | 0:8b3c6f593515 | 318 | { |
CS | 0:8b3c6f593515 | 319 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 320 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 321 | } |
CS | 0:8b3c6f593515 | 322 | } |
CS | 0:8b3c6f593515 | 323 | else |
CS | 0:8b3c6f593515 | 324 | // Si le mode est inconnu, mode arret! |
CS | 0:8b3c6f593515 | 325 | { |
CS | 0:8b3c6f593515 | 326 | Mode_Fonctionnement = MODE_ARRET ; |
CS | 0:8b3c6f593515 | 327 | pRive_Droite->Arret() ; |
CS | 0:8b3c6f593515 | 328 | pRive_Gauche->Arret() ; |
CS | 0:8b3c6f593515 | 329 | BTN_Arret = 1 ; |
CS | 0:8b3c6f593515 | 330 | BTN_Monte = 0 ; |
CS | 0:8b3c6f593515 | 331 | BTN_Descend = 0 ; |
CS | 0:8b3c6f593515 | 332 | Consigne_aout.write ( 0.0 ) ; |
CS | 0:8b3c6f593515 | 333 | PC3.printf("\r\n Mode Inconnu") ; |
CS | 0:8b3c6f593515 | 334 | } |
CS | 0:8b3c6f593515 | 335 | } |