Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -re0102a0a08c0d83bcc8e959551079063e2e60d9f -racb534a5d5921959493304a26dbc21d2b03338e0 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision e0102a0a08c0d83bcc8e959551079063e2e60d9f) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision acb534a5d5921959493304a26dbc21d2b03338e0) @@ -152,6 +152,7 @@ static OVERRIDE_F32_T measuredPumpSpeed[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Measured concentrate pump speed (mL/min). static OVERRIDE_U32_T parked[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Concentrate pump is currently parked (T/F). static OVERRIDE_U32_T parkFaulted[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Concentrate pump park command has faulted (T/F). +static BOOL isDosingCompleted[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Flag indicating dosing completed status (T/F). //static DD_ACID_CONCENTRATES_RECORD_T acidConcentrateCalRecord; ///< Acid concentrate calibration record. //static DD_BICARB_CONCENTRATES_RECORD_T bicarbConcentrateCalRecord; ///< Bicarb concentrate calibration record. @@ -223,6 +224,7 @@ concentratePumps[ pumpId ].controlSet = CONCENTRATE_PUMP_CONTROL_FORWARD; concentratePumps[ pumpId ].isConcPumpParkInProgress = FALSE; stopConcentratePump( pumpId ); + isDosingCompleted[ pumpId ] = FALSE; } initPersistentAlarm( ALARM_ID_DD_D11_PUMP_SPEED_CONTROL_ERROR, 0, CONCENTRATE_PUMP_SPEED_OUT_OF_RANGE_TIMEOUT_MS ); @@ -547,14 +549,17 @@ if ( D11_PUMP == pumpId ) { setFPGAD11PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); + isDosingCompleted [ D11_PUMP ] = FALSE; } else if ( D10_PUMP == pumpId ) { setFPGAD10PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); + isDosingCompleted [ D10_PUMP ] = FALSE; } else { setFPGAD76PumpRevolutionCount( getConcPumpTargetRevolutionCount( pumpId ) ); + isDosingCompleted [ D76_PUMP ] = FALSE; } } @@ -619,15 +624,7 @@ *************************************************************************/ BOOL isConcentratePumpDosingCompleted( CONCENTRATE_PUMPS_T pumpId ) { - BOOL state = FALSE; - - //On dosing completion,state transition to off state - if ( CONCENTRATE_PUMP_OFF_STATE == concentratePumps[ pumpId ].execState ) - { - state = TRUE; - } - - return state; + return isDosingCompleted[ pumpId ]; } /*********************************************************************//** @@ -835,6 +832,7 @@ concentratePumps[ pumpId ].currentPumpSpeed = 0.0F; // set target rate to zero pumpTargetSpeed[ pumpId ].data = 0.0F; pumpTargetRevCnt[ pumpId ].data = 0; + isDosingCompleted [ pumpId ] = TRUE; // Disable the motor when stopping, to take next revolution count // Send zero rate command to stop the pump