Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -re4b79bd0d31e779619a787f9ce4352d0fd3d4dce -r00a3d52090bee79dac6e9eed3bd79342fcbca83f --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision e4b79bd0d31e779619a787f9ce4352d0fd3d4dce) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 00a3d52090bee79dac6e9eed3bd79342fcbca83f) @@ -182,6 +182,10 @@ drainPumpControlModeSet = drainPumpControlMode; result = TRUE; } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_DRAIN_PUMP_INVALID_RPM_SELECTED, rpm ) + } return result; } @@ -202,7 +206,7 @@ BOOL result = FALSE; // Check the delta pressure is in range - if ( ( deltaP >= MIN_ALLOWED_TARGET_DELTA_PRESSURE ) && ( deltaP <= MIN_ALLOWED_TARGET_DELTA_PRESSURE ) ) + if ( ( deltaP >= MIN_ALLOWED_TARGET_DELTA_PRESSURE ) && ( deltaP <= MAX_ALLOWED_TARGET_DELTA_PRESSURE ) ) { // Set all the variables for closed loop mode targetDrainPumpDeltaPressure = deltaP; @@ -214,10 +218,9 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_DRAIN_PUMP_INVALID_DELTA_PRESSURE_SELECTED, deltaP ) + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_DRAIN_PUMP_INVALID_DELTA_PRESSURE_SELECTED, deltaP ) } - return result; } @@ -260,7 +263,8 @@ if( drainPumpControlModeSet == PUMP_CONTROL_MODE_OPEN_LOOP ) { // Check if RPM out of range. Using fabs since the read RPM can be above or below the target. - BOOL isRPMOutOfRange = fabs( currentDrainPumpRPM - getTargetDrainPumpRPM() ) > MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE; + BOOL isRPMOutOfRange = fabs( getTargetDrainPumpRPM() - currentDrainPumpRPM ) > MAX_ALLOWED_OPEN_LOOP_RPM_OUT_OF_RANGE; + checkPersistentAlarm( PERSISTENT_ALARM_DRAIN_PUMP_RPM_OUT_OF_RANGE, isRPMOutOfRange, currentDrainPumpRPM ); }