Changeset 29 for trunk/firmware_v2/SES/src/mode_secondaryprotection_plus.c
- Timestamp:
- Nov 1, 2025, 5:04:26 PM (30 hours ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/firmware_v2/SES/src/mode_secondaryprotection_plus.c
r28 r29 35 35 } SECONDARYPROTECTION_state_t; 36 36 37 typedef enum SECONDARYPROTECTION_ErrorState_enum 38 { 39 ERROR_NONE, 40 ERROR_EXTERNAL_FAULT, //z.B Kurzschluss 41 ERROR_TEMPERATURE, 42 ERROR_VOLTAGE_DROP, 43 ERROR_LVP_AND_OVP, //z.B. kritische Überspannung, tiefeEntladung 44 } SECONDARYPROTECTION_ErrorState_t; 45 37 46 38 47 static SECONDARYPROTECTION_state_t smState; 39 48 static SECONDARYPROTECTION_ErrorState_t smError = ERROR_NONE; 49 static int autoRetryMode; 40 50 41 51 static void SECONDARYPROTECTION_SM_Off(void) … … 73 83 printf("NEW_STATE: SECONDARYPROTECTION_ON\n"); 74 84 smState = SECONDARYPROTECTION_ON; 85 smError = ERROR_NONE; 75 86 76 87 } … … 83 94 LEDS_RT_BlinkCode_Start(BLINK_CODE_ERROR_FAULT_INPUT, LED_RT_ON_TIME_WARN_FAULT_INPUT, LED_RT_OFF_TIME, LED_RT_OFF_TIME *5); //Fehler Anzeigen 84 95 printf("NEW_STATE: SECONDARYPROTECTION_ERROR\n"); 85 smState =SECONDARYPROTECTION_ERROR; 96 smState = SECONDARYPROTECTION_ERROR; 97 smError = ERROR_EXTERNAL_FAULT; 98 86 99 } 87 100 } … … 121 134 } 122 135 136 137 if (faultInput == 1) 138 { 139 RELAIS_ResetPuls(); 140 BUZZER_Beep(BUZZER_ON_TIME_REJECT); //Warnung 141 LEDS_GN_Off(); 142 LEDS_RT_BlinkCode_Start(BLINK_CODE_ERROR_FAULT_INPUT, LED_RT_ON_TIME_WARN_FAULT_INPUT, LED_RT_OFF_TIME, LED_RT_OFF_TIME *5); //Fehler Anzeigen 143 BUTTON_SetModeOff(); //Damit nicht von alleine wieder eingeschaltet wird 144 printf("FAULT INPUT EVENT DETECTED!\n"); 145 printf("NEW_STATE: SECONDARYPROTECTION_ERROR\n"); 146 smState = SECONDARYPROTECTION_ERROR; 147 smError = ERROR_EXTERNAL_FAULT; 148 return; 149 } 150 151 152 123 153 if ((HAL_GPIO_ReadPin(GPIO_INPUT_LVP_GPIO_Port, GPIO_INPUT_LVP_Pin) == GPIO_PIN_SET) && (HAL_GPIO_ReadPin(GPIO_INPUT_OVP_GPIO_Port, GPIO_INPUT_OVP_Pin) == GPIO_PIN_SET)) 124 154 { … … 152 182 printf("NEW_STATE: SECONDARYPROTECTION_OFF\n"); 153 183 smState = SECONDARYPROTECTION_OFF; 184 smError = ERROR_NONE; 154 185 } 155 186 … … 165 196 printf("NEW_STATE: SECONDARYPROTECTION_ERROR\n"); 166 197 smState = SECONDARYPROTECTION_ERROR; 198 smError = ERROR_VOLTAGE_DROP; 167 199 VOLTAGE_MEAS_ResetCounter(); // Damit Fehlerzähler bei Neustart auf 0 168 200 } 169 201 170 202 171 if (faultInput == 1)172 {173 RELAIS_ResetPuls();174 BUZZER_Beep(BUZZER_ON_TIME_REJECT); //Warnung175 LEDS_GN_Off();176 LEDS_RT_BlinkCode_Start(BLINK_CODE_ERROR_FAULT_INPUT, LED_RT_ON_TIME_WARN_FAULT_INPUT, LED_RT_OFF_TIME, LED_RT_OFF_TIME *5); //Fehler Anzeigen177 BUTTON_SetModeOff(); //Damit nicht von alleine wieder eingeschaltet wird178 printf("FAULT INPUT EVENT DETECTED!\n");179 printf("NEW_STATE: SECONDARYPROTECTION_ERROR\n");180 smState = SECONDARYPROTECTION_ERROR;181 }182 203 183 204 if (lvpAndOvpInput == 1) … … 191 212 printf("NEW_STATE: SECONDARYPROTECTION_ERROR\n"); 192 213 smState = SECONDARYPROTECTION_ERROR; 214 smError = ERROR_LVP_AND_OVP; 193 215 } 194 216 … … 202 224 printf("NEW_STATE: MAINSWITCH_ERROR, Temp too high\n"); 203 225 smState = SECONDARYPROTECTION_ERROR; 226 smError = ERROR_TEMPERATURE; 204 227 } 205 228 … … 228 251 int faultInput; 229 252 int lvpAndOvpInput; 253 static uint32_t retry_counter = 0; 254 static uint32_t oldTimeMSTick; 230 255 231 256 if (HAL_GPIO_ReadPin(GPIO_INPUT_FAULT_GPIO_Port, GPIO_INPUT_FAULT_Pin) == GPIO_PIN_RESET) … … 241 266 242 267 //Prüfe auf Wechsel des Modus AUTO / SM ON 243 if (BUTTON_GetMode() == BUTTON_AUTO) 268 if (BUTTON_GetMode() == BUTTON_AUTO) 244 269 { 245 270 if (faultInput == 0) 246 271 { 272 retry_counter = 0; 247 273 RELAIS_SetPuls(); 248 274 BUZZER_Beep(BUZZER_ON_TIME_CONFIRM); … … 251 277 printf("NEW_STATE: SECONDARYPROTECTION_ON\n"); 252 278 smState = SECONDARYPROTECTION_ON; 279 smError = ERROR_NONE; 253 280 } 254 281 else … … 260 287 } 261 288 289 if (autoRetryMode == 1) { 290 291 if (oldTimeMSTick != HAL_GetTick()) 292 { 293 oldTimeMSTick = HAL_GetTick(); 294 retry_counter++; 295 } 296 297 if (retry_counter > 3600000) // jede stunde 298 { 299 BUTTON_SetModeAuto(); 300 retry_counter = 0; 301 } 302 } 262 303 //Prüfe auf Wechsel in MANUAL ON Mode 263 304 //Keine Fehlerüberprüfungen. In diesem Modus werdem alle Alarme ignoriert. … … 280 321 281 322 282 void MODE_SECONDARYPROTECTION_PLUS_Exec( void)283 { 284 285 323 void MODE_SECONDARYPROTECTION_PLUS_Exec(int am) 324 { 325 326 autoRetryMode = am; 286 327 287 328 switch (smState)
Note: See TracChangeset
for help on using the changeset viewer.
