Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rd325999b7b3ea03b7e294cb8a0b97df93812fbe9 -ra1feadda6016e12d363c47d3ebb9be2e91894168 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision d325999b7b3ea03b7e294cb8a0b97df93812fbe9) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision a1feadda6016e12d363c47d3ebb9be2e91894168) @@ -67,6 +67,7 @@ #define CONENTREATE_PUMP_PARK_FAULT_TIMEOUT_MS ( 1 * MS_PER_SECOND ) ///< Concentrate pump park fault timeout in milliseconds. #define CONCENTRATE_PUMP_FAULT_PERSISTENCE_PERIOD 500 ///< Concentrate pump fault persistence period in milliseconds. +#define CONCENTRATE_PUMP_TRANS_TO_RAMP_SPEED_THRESHOLD_MLPM 5.0F ///< Concentrate pump transition to ramp to target speed threshold in mL/min. /*************************DVT Definitions********************************************/ @@ -738,6 +739,14 @@ stepConcentratePumpToTargetSpeed( pumpId ); } + if ( concentratePumps[ pumpId ].pumpTargetSpeed >= CONCENTRATE_PUMP_TRANS_TO_RAMP_SPEED_THRESHOLD_MLPM ) + { + // If the requested target speed is greater than the threshold, transition back to ramp state regardless of the status of the + // control interval + stepConcentratePumpToTargetSpeed( pumpId ); + state = CONCENTRATE_PUMP_RAMP_TO_TARGET_SPEED_STATE; + } + if ( FALSE == concentratePumps[ pumpId ].hasTurnOnPumpsBeenRequested ) { state = CONCENTRATE_PUMP_OFF_STATE; @@ -777,15 +786,15 @@ // Subtract current speed when target speed is smaller if ( concentratePumps[ pumpId ].pumpTargetSpeed < concentratePumps[ pumpId ].currentPumpSpeed ) { - speedIncrease *= -1.0; + speedIncrease *= -1.0F; } concentratePumps[ pumpId ].currentPumpSpeed += speedIncrease; // If the pump's target speed is set to be 0, do not ramp down set it to zero immediately if ( fabs( concentratePumps[ pumpId ].pumpTargetSpeed < NEARLY_ZERO ) ) { - concentratePumps[ pumpId ].currentPumpSpeed = 0.0; + concentratePumps[ pumpId ].currentPumpSpeed = 0.0F; } }