Index: firmware/App/Modes/FPModes/FlushPermeate.c =================================================================== diff -u -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e -r97f657d47a01b765b72e5193c434dd959c3a3f35 --- firmware/App/Modes/FPModes/FlushPermeate.c (.../FlushPermeate.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) +++ firmware/App/Modes/FPModes/FlushPermeate.c (.../FlushPermeate.c) (revision 97f657d47a01b765b72e5193c434dd959c3a3f35) @@ -42,6 +42,7 @@ #define PERMEATE_FLUSH_RO_PUMP_TGT_ML 700 ///< Pressure target in ml/min for the RO pump during permeate flush. #define PERMEATE_FLUSH_BOOST_PUMP_TGT_PSI 25 ///< Pressure target in PSI for the boost pump during permeate flush. #define PERMEATE_FLUSH_CONDUCTIVITY_THRESHOLD 200.0F ///< Conductivity alarm threshold for permeate flush. +#define MIN_BOOST_PUMP_DUTY_CYCLE_PCT 0.5F ///< Minimum duty cycle value for boost pump during open loop control // ********** private data ********** @@ -54,6 +55,7 @@ static U32 permeateFlushAlarmTimer; static BOOL pendingStartPermeateFlushRequest; ///< signal to start flushing. static BOOL isFlushComplete; ///< Permeate Flush complete BOOL +static BOOL isTankFilled; ///< Permeate tank filled in permeate flush state // ********** private function prototypes ********** @@ -92,6 +94,7 @@ permeateFlushAlarmTimer = 0; isFlushComplete = FALSE; pendingStartPermeateFlushRequest = FALSE; + isTankFilled = FALSE; } /*********************************************************************//** @@ -153,16 +156,29 @@ if ( LEVEL_STATE_HIGH == level ) { setValveState( M4_VALV, VALVE_STATE_CLOSED ); + if ( TRUE == isBoostPumpInstalled() ) + { + F32 currentDutyCyclePct = getCurrentBoostPumpDutyCyclePCT() > MIN_BOOST_PUMP_DUTY_CYCLE_PCT ? getCurrentBoostPumpDutyCyclePCT(): MIN_BOOST_PUMP_DUTY_CYCLE_PCT; + + setBoostPumpTargetDutyCycle( currentDutyCyclePct ); + isTankFilled = TRUE; + } } else if ( LEVEL_STATE_LOW == level ) { setValveState( M4_VALV, VALVE_STATE_OPEN ); + // set boost pump to closed loop when M4 closed. Added Tank fill check to avoid reset during initial transition + if ( ( TRUE == isBoostPumpInstalled() ) && ( TRUE == isTankFilled ) ) + { + setBoostPumpTargetPressure( PERMEATE_FLUSH_BOOST_PUMP_TGT_PSI ); + isTankFilled = FALSE; + } } if( TRUE == didTimeout( permeateFlushTimer, getPermeateFlushTimeout() ) ) { F32 p18conductivity = getFilteredConductivity( P18_COND ); - if( PERMEATE_FLUSH_CONDUCTIVITY_THRESHOLD > p18conductivity ) + if( PERMEATE_FLUSH_CONDUCTIVITY_THRESHOLD > p18conductivity && ( LEVEL_STATE_HIGH == level ) ) { isFlushComplete = TRUE; state = PERM_FLUSH_PAUSED;