Index: firmware/App/Modes/FPModes/FlushConcentrate.c =================================================================== diff -u -recb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e -r97f657d47a01b765b72e5193c434dd959c3a3f35 --- firmware/App/Modes/FPModes/FlushConcentrate.c (.../FlushConcentrate.c) (revision ecb538c8bf67a7a62d11a1186a9ef5fe53cf9d9e) +++ firmware/App/Modes/FPModes/FlushConcentrate.c (.../FlushConcentrate.c) (revision 97f657d47a01b765b72e5193c434dd959c3a3f35) @@ -274,8 +274,7 @@ setValveState( P39_VALV, VALVE_STATE_CLOSED ); if ( TRUE == isBoostPumpInstalled() ) { - F32 currentDutyCyclePct = getCurrentBoostPumpDutyCyclePCT(); - setBoostPumpTargetDutyCycle( currentDutyCyclePct ); + signalBoostPumpHardStop(); } signalROPumpHardStop(); } Index: firmware/App/Modes/FPModes/FlushFilter.c =================================================================== diff -u -r38c8d303358e16782f9d6a1828ee1cc55a4e9a24 -r97f657d47a01b765b72e5193c434dd959c3a3f35 --- firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision 38c8d303358e16782f9d6a1828ee1cc55a4e9a24) +++ firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision 97f657d47a01b765b72e5193c434dd959c3a3f35) @@ -207,8 +207,7 @@ setValveState( P39_VALV, VALVE_STATE_CLOSED ); if ( TRUE == isBoostPumpInstalled() ) { - F32 currentDutyCyclePct = getCurrentBoostPumpDutyCyclePCT(); - setBoostPumpTargetDutyCycle( currentDutyCyclePct ); + signalBoostPumpHardStop(); } } break; 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; Index: firmware/App/Modes/FPModes/ModeGenPermeate.h =================================================================== diff -u -rded97a5b204a0b752f1c90fa39dc28639bc129ed -r97f657d47a01b765b72e5193c434dd959c3a3f35 --- firmware/App/Modes/FPModes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision ded97a5b204a0b752f1c90fa39dc28639bc129ed) +++ firmware/App/Modes/FPModes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision 97f657d47a01b765b72e5193c434dd959c3a3f35) @@ -46,7 +46,6 @@ U32 execGenPermeateMode( void ); // Execute the gen permeate mode state machine (call from OperationModes) BOOL requestGenWaterStart( void ); // Request to start gen water and transition modes BOOL requestGenWaterStop( void ); // Request to stop gen water and transition. -void checkPermeateLowFlowRate( void ); // Check permeate low flow rate FP_GENP_MODE_STATE_T getCurrentGenPermeateState( void ); // Get the current state of the gen water mode Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r38c8d303358e16782f9d6a1828ee1cc55a4e9a24 -r97f657d47a01b765b72e5193c434dd959c3a3f35 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 38c8d303358e16782f9d6a1828ee1cc55a4e9a24) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 97f657d47a01b765b72e5193c434dd959c3a3f35) @@ -357,7 +357,7 @@ // check permeate high flow rate is within range checkPermeateHighFlow(); // check low flow rate is within range - checkPermeateLowFlowRate(); + checkPermeateLowFlow(); // check conductivity is within range checkOutletConductivity(); } Index: firmware/App/Monitors/WaterQualityMonitor.c =================================================================== diff -u -rca0e1a8ead388431e7fa4272095a12a6db973d59 -r97f657d47a01b765b72e5193c434dd959c3a3f35 --- firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision ca0e1a8ead388431e7fa4272095a12a6db973d59) +++ firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision 97f657d47a01b765b72e5193c434dd959c3a3f35) @@ -36,8 +36,8 @@ #define INLET_TEMPERATURE_LOW_THRESHOLD_C 5.0F ///< Minimum allowed Inlet temperature in C. #define INLET_TEMPERATURE_HIGH_THRESHOLD_C 30.0F ///< Maximum allowed Inlet temperature in C. -#define INLET_TEMPERATURE_PERSISTENCE_TIMER_MS ( 5 * MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Persistence timer to trigger alarm in ms. -#define INLET_TEMPERATURE_PERSISTENCE_CLEAR_MS ( 5 * MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Persistence timer to clear alarm in ms. +#define INLET_TEMPERATURE_PERSISTENCE_TIMER_MS ( 5 * MS_PER_SECOND ) ///< Persistence timer to trigger alarm in ms. +#define INLET_TEMPERATURE_PERSISTENCE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence timer to clear alarm in ms. #define MAX_INLET_RO_PUMP_PRESSURE_WARNING_PSIG 120.0F ///< Maximum allowed Input pressure to the RO membrane. #define MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 25.0F ///< Minimum allowed Input warning low pressure value in psig for RO featured. @@ -61,7 +61,7 @@ #define MIN_RO_REJECTION_RATIO_PCT 90.0F ///< Minimum RO rejection ration in percentage #define PERMEATE_FLOW_OUT_RANGE_PERSISTENCE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) -#define PERMEATE_FLOW_OUT_RANGE_PERSISTENCE_CLEAR_MS 0 ///< Verify Water timer ( in ms ) +#define PERMEATE_FLOW_OUT_RANGE_PERSISTENCE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) #define PERMEATE_FLOW_FAULT_MIN_THRESHOLD 200.0F ///< Permeate flow low tolerance limit // ********** private data **********