Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r5648a6df6addfa88500bb77be96b84bb7b6f9d78 -r11d4c395ab17920ec910118b7931e67f3bd52154 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 5648a6df6addfa88500bb77be96b84bb7b6f9d78) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 11d4c395ab17920ec910118b7931e67f3bd52154) @@ -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 ); }