Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -r803e7a80f5e7f0df8e160d2d4cb7e4ec7113950d -r5403fbf4fdd06f102662e3647a05074f84fa7433 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 803e7a80f5e7f0df8e160d2d4cb7e4ec7113950d) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 5403fbf4fdd06f102662e3647a05074f84fa7433) @@ -337,12 +337,12 @@ } #ifndef IGNORE_DRAIN_PUMP_MONITOR - // Check if the pump is in off state and the RPM is greater than the minimum RPM if ( DRAIN_PUMP_OFF_STATE == drainPumpState ) { BOOL isRPMTooHigh = ( getDrainPumpMeasuredRPM() > MIN_DRAIN_PUMP_RPM ? TRUE : FALSE ); + checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_RPM_OUT_OF_RANGE, FALSE, getDrainPumpMeasuredRPM(), MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ); checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, isRPMTooHigh, getDrainPumpMeasuredRPM(), MIN_DRAIN_PUMP_RPM ); // If the off fault alarm has become active, trigger the safety shutdown @@ -352,9 +352,7 @@ } } // The RPM is only checked in open loop state that the pump is run at a fixed RPM. - // The persistent alarm waits for a couple of seconds before raising an alarm, this is supposed to cover - // when the pump is turned on and it takes a while to ramp up to target RPM. - else if ( ( PUMP_CONTROL_MODE_OPEN_LOOP == drainPumpControlModeSet ) && ( DRAIN_PUMP_OPEN_LOOP_STATE == drainPumpState ) ) + else if ( DRAIN_PUMP_OPEN_LOOP_STATE == drainPumpState ) { // Using abs since the read RPM can be above or below the target U32 rpmDiff = abs( getDrainPumpTargetRPM() - getDrainPumpMeasuredRPM() ); @@ -364,6 +362,10 @@ checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_RPM_OUT_OF_RANGE, isRPMOutOfRange, getDrainPumpMeasuredRPM(), MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ); } + else + { + checkPersistentAlarm( ALARM_ID_DRAIN_PUMP_RPM_OUT_OF_RANGE, FALSE, getDrainPumpMeasuredRPM(), MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE ); + } #endif // Publish drain pump data on interval