Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -rdef06013312d270b1704787a4473caf5612dd6ac -r8f240a93e82927541138a82ff4b3e727fb4d46b2 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision def06013312d270b1704787a4473caf5612dd6ac) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 8f240a93e82927541138a82ff4b3e727fb4d46b2) @@ -7,8 +7,8 @@ * * @file DrainPump.c * -* @author (last) Dara Navaei -* @date (last) 18-Apr-2023 +* @author (last) Bill Bracken +* @date (last) 20-Apr-2023 * * @author (original) Sean * @date (original) 08-Apr-2020 @@ -339,6 +339,8 @@ U16 fpgaADCCurrentCount = getFPGADrainPumpCurrentFeedback(); F32 currentA = getDrainPumpMeasuredCurrentA(); U32 dirHallSensorErrorCount = (U32)( getFPGADrainPumpDirection() & DRAIN_PUMP_DIR_ERROR_CNT_BIT_MASK ); + BOOL isOffCurrentOut = FALSE; + BOOL isCurrentOutOfRange = FALSE; // Update the override variables drainPumpMaxonMeasuredRPM.data = MAX_DRAIN_PUMP_RPM * ( (F32)fpgaMaxonADCSpeedCount / (F32)BITS_12_FULL_SCALE ); @@ -362,7 +364,7 @@ case DRAIN_PUMP_OFF_STATE: { BOOL isRPMTooHigh = FALSE; - BOOL isOffCurrentOut = ( currentA > DRAIN_PUMP_MAX_CURRENT_WHEN_OFF_A ? TRUE : FALSE ); + isOffCurrentOut = ( currentA > DRAIN_PUMP_MAX_CURRENT_WHEN_OFF_A ? TRUE : FALSE ); isRPMTooHigh |= ( getDrainPumpMeasuredRPM( DRAIN_PUMP_HALL_SNSR_FB ) > MIN_DRAIN_PUMP_RPM ? TRUE : FALSE ); isRPMTooHigh |= ( getDrainPumpMeasuredRPM( DRAIN_PUMP_MAXON_SNSR_FB ) > MIN_DRAIN_PUMP_RPM ? TRUE : FALSE ); @@ -380,7 +382,6 @@ if ( getHardwareConfigStatus() != HW_CONFIG_BETA ) #endif { - checkPersistentAlarm( ALARM_ID_DG_DRAIN_PUMP_CURRENT_OUT_OF_RANGE, isOffCurrentOut, currentA, DRAIN_PUMP_MAX_CURRENT_WHEN_OFF_A ); checkPersistentAlarm( ALARM_ID_DG_DRAIN_PUMP_DIRECTION_INVALID, FALSE, getFPGADrainPumpDirection(), DRAIN_PUMP_FORWARD_DIR ); } } @@ -445,7 +446,7 @@ #endif { // Check the persistent alarm for the maximum drain pump current - BOOL isCurrentOutOfRange = ( currentA > DRAIN_PUMP_MAX_CURRENT_A ? TRUE : FALSE ); + isCurrentOutOfRange = ( currentA > DRAIN_PUMP_MAX_CURRENT_A ? TRUE : FALSE ) | isOffCurrentOut; checkPersistentAlarm( ALARM_ID_DG_DRAIN_PUMP_CURRENT_OUT_OF_RANGE, isCurrentOutOfRange, currentA, DRAIN_PUMP_MAX_CURRENT_A ); }