Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -rd79faa7118db6d048ce3433224b3e5a478c97a98 -rbcfded547027b171384c2292036033b6f0477981 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision d79faa7118db6d048ce3433224b3e5a478c97a98) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision bcfded547027b171384c2292036033b6f0477981) @@ -31,6 +31,7 @@ #include "TaskGeneral.h" #include "Timers.h" #include "Valves.h" +#include "WaterQualityMonitor.h" /** * @addtogroup FPPreGenPermeateMode @@ -40,9 +41,10 @@ // ********** private definitions ********** #define PRE_GENP_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the pre gen Permeate mode data published. -#define VERIFY_WATER_RO_PUMP_TGT_FLOW_ML 700 ///< Target flow rate for RO pump in ml/min +#define VERIFY_WATER_RO_PUMP_TGT_FLOW_ML 750 ///< Target flow rate for RO pump in ml/min #define VERIFY_WATER_BOOST_PUMP_TGT_PSI 25 ///< Target pressure for boost pump in psi. #define VERIFY_WATER_TIMEOUT_MS ( 30 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) +#define FLOW_CONTROL_STABLIZED_TIMEOUT_MS ( 25 * MS_PER_SECOND ) ///< Flow control stablized time ( in ms ) // ********** private data ********** @@ -113,6 +115,7 @@ U32 execPreGenPMode( void ) { FP_PRE_GENP_MODE_STATE_T previouspreGenPState = preGenPState; + // execute current pre gen Permeate state switch ( preGenPState ) { @@ -145,7 +148,7 @@ break; } - if( previouspreGenPState != preGenPState ) + if ( previouspreGenPState != preGenPState ) { setModePreGenPTransition( preGenPState ); SEND_EVENT_WITH_2_U32_DATA( FP_EVENT_PRE_GEN_CHANGE, preGenPState, previouspreGenPState ) @@ -194,6 +197,7 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); // Current set to Medium recovery for alpha HW setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_OPEN ); + startPermeateTankControl(); if ( TRUE == isBoostPumpInstalled() ) { @@ -263,7 +267,7 @@ execFilterFlush(); - if( TRUE == isFilterFlushComplete() ) + if ( TRUE == isFilterFlushComplete() ) { signalStartPermeateFlush(); state = FP_PRE_GENP_PERMEATE_FLUSH; @@ -291,7 +295,7 @@ execPermeateFlush(); - if( TRUE == isPermeateFlushComplete() ) + if ( TRUE == isPermeateFlushComplete() ) { signalStartConcentrateFlush(); state = FP_PRE_GENP_CONCENTRATE_FLUSH; @@ -319,7 +323,7 @@ execConcentrateFlush(); - if( TRUE == isConcentrateFlushComplete() ) + if ( TRUE == isConcentrateFlushComplete() ) { state = FP_PRE_GENP_VERIFY_WATER; } @@ -340,12 +344,24 @@ FP_PRE_GENP_MODE_STATE_T state = FP_PRE_GENP_VERIFY_WATER; F32 roCurrentDutyCycle = getCurrentROPumpDutyCyclePCT(); + //Stay in this state for 25 seconds to stablize flow control + if ( TRUE == didTimeout( verifyWaterTimer, FLOW_CONTROL_STABLIZED_TIMEOUT_MS ) ) + { + // check next 5 seconds for water quality + // check permeate high flow rate is within range + checkPermeateHighFlow(); + // check low flow rate is within range + checkPermeateLowFlow(); + // check conductivity is within range + checkOutletConductivity(); + } + // if ( TRUE == 1 ))// TODO Alarm and Stop State Rework // { // state = FP_PRE_GENP_PAUSED; // } - - if( TRUE == didTimeout( verifyWaterTimer, VERIFY_WATER_TIMEOUT_MS ) ) + // wait 30 second before moving to water generation mode + if ( TRUE == didTimeout( verifyWaterTimer, VERIFY_WATER_TIMEOUT_MS ) ) { transitionToGenPermeateMode(); requestGenWaterStart(); // transition function will clear start flag