Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r7d4008c4bad52fbb4ec82971683ed6f4150a4122 -r4a55794912e05090054e10c73a8b4ee0236a51dc --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 7d4008c4bad52fbb4ec82971683ed6f4150a4122) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 4a55794912e05090054e10c73a8b4ee0236a51dc) @@ -1021,6 +1021,17 @@ isCpSpeedOut = ( cpError > tolerance ? TRUE : FALSE ); + // Check for measured speed and target speed direction after checking the tolerance. Even if the absolute values are in range the direction + // of target and measured speed should be matching + if ( ( concentratePumps[ pumpId ].currentPumpSpeed > 0.0F ) && ( getMeasuredPumpSpeedMLPM( pumpId ) < 0.0F ) ) + { + isCpSpeedOut = TRUE; + } + else if ( ( concentratePumps[ pumpId ].currentPumpSpeed < 0.0F ) && ( getMeasuredPumpSpeedMLPM( pumpId ) > 0.0F ) ) + { + isCpSpeedOut = TRUE; + } + checkPersistentAlarm( alarm, isCpSpeedOut, cpError, tolerance ); }