Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r76ede35cf15c9310c2915151f1d47998f22b71de -r0718166cde46a427c8b063d93faa6d3f8e2aff1f --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 76ede35cf15c9310c2915151f1d47998f22b71de) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 0718166cde46a427c8b063d93faa6d3f8e2aff1f) @@ -43,13 +43,15 @@ #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 ********** static FP_PRE_GENP_MODE_STATE_T preGenPState; ///< Currently active pre generate Permeate state. static U32 preGenPDataPublicationTimerCounter; ///< Used to schedule pre generate Permeate data publication to CAN bus. static OVERRIDE_U32_T preGenPDataPublishInterval; ///< Pre Generate Permeate mode data publish interval. static BOOL isPreGenComplete; ///< Flag indicating if Pre generation has completed. +static BOOL isFlowControlStabilized; ///< Flag indicating if flow control has stabilized. static U32 pendingStartPreGenRequest; ///< Flag indicating DD has requested FP start the generate permeate. static U32 verifyWaterTimer; @@ -82,6 +84,7 @@ pendingStartPreGenRequest = FALSE; isPreGenComplete = FALSE; verifyWaterTimer = 0; + isFlowControlStabilized = FALSE; } /*********************************************************************//** @@ -341,13 +344,32 @@ 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 ) ) + { + isFlowControlStabilized = TRUE; + } + + // check next 5 seconds for water quality + if( TRUE == isFlowControlStabilized ) + { + // check permeate high flow rate is within range + checkPermeateFlow(); + // check low flow rate is within range + checkPermeateLowFlowRate(); + // check conductivity is within range + checkOutletConductivity(); + } + shdshd + // if ( TRUE == 1 ))// TODO Alarm and Stop State Rework // { // state = FP_PRE_GENP_PAUSED; // } - + // wait 30 second before moving to water generation mode if( TRUE == didTimeout( verifyWaterTimer, VERIFY_WATER_TIMEOUT_MS ) ) { + isFlowControlStabilized = FALSE; transitionToGenPermeateMode(); requestGenWaterStart(); // transition function will clear start flag isPreGenComplete = TRUE;