Index: firmware/App/Modes/FPModes/ModeGenPermeate.c =================================================================== diff -u -re1da3c63d3b8690d6593a7cc631a383fd942a95b -r0718166cde46a427c8b063d93faa6d3f8e2aff1f --- firmware/App/Modes/FPModes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision e1da3c63d3b8690d6593a7cc631a383fd942a95b) +++ firmware/App/Modes/FPModes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision 0718166cde46a427c8b063d93faa6d3f8e2aff1f) @@ -405,15 +405,15 @@ /*********************************************************************//** * @brief - * The checkPermeateFlow function checks the permeate flow rate from P16 + * The checkPermeateLowFlowRate function checks the permeate low flow rate from P16 * against the set target flow rate and alarm if the flow is out of range. * @details \b Inputs: permeateFlow * @details \b Outputs: none * @details \b Alarms: ALARM_ID_FP_PERMEATE_FLOW_OUT_LOW_RANGE when * P16 flow goes beyond threshold limit from set target flow. * @return none *************************************************************************/ -void checkPermeateFlow( void ) +void checkPermeateLowFlowRate( void ) { F32 permeateFlow = getFilteredFlow( P16_FLOW ); BOOL isFlowOutOfRange = FALSE; Index: firmware/App/Modes/FPModes/ModeGenPermeate.h =================================================================== diff -u -r6545787080956983fed6bd9c2717938c202917ab -r0718166cde46a427c8b063d93faa6d3f8e2aff1f --- firmware/App/Modes/FPModes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision 6545787080956983fed6bd9c2717938c202917ab) +++ firmware/App/Modes/FPModes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision 0718166cde46a427c8b063d93faa6d3f8e2aff1f) @@ -46,6 +46,7 @@ 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 -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;