Index: firmware/App/Modes/FPModes/InletPressureCheck.c =================================================================== diff -u -r3417933e6edf61a914c428e2fa944b3b349272a4 -rd25471a9b256c1dce1aec7de73f53c730ff70cd0 --- firmware/App/Modes/FPModes/InletPressureCheck.c (.../InletPressureCheck.c) (revision 3417933e6edf61a914c428e2fa944b3b349272a4) +++ firmware/App/Modes/FPModes/InletPressureCheck.c (.../InletPressureCheck.c) (revision d25471a9b256c1dce1aec7de73f53c730ff70cd0) @@ -38,9 +38,11 @@ #define INLET_PRES_CHECK_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the gen water mode data published. #define INLET_PRES_CHECK_TIMEOUT ( 60 * MS_PER_SECOND ) ///< Inlet Pressure Check timer (in ms) #define INLET_PRES_CHECK_BOOST_PUMP_TGT_PWM 0.2F ///< target in PWM % for the BOOST pump during inlet pressure check. -#define INLET_PRES_CHECK_TGT_PSI 30 ///< Pressure target in PSI for the M3 during inlet pressure check. +#define INLET_PRES_CHECK_WITH_BP_TGT_PSI 30 ///< Pressure target in PSI for the M3 during inlet pressure check with booster pump. +#define INLET_PRES_CHECK_TGT_PSI 75 ///< Pressure target in PSI for the M3 during inlet pressure check without booster pump. #define INLET_PRES_CHECK_TOLERANCE_PSI 2 ///< Pressure tolerance in PSI for the M3 during inlet pressure check. -#define INLET_PRES_PERSISTENCE_TIME_MS ( 10 * MS_PER_SECOND ) ///< Persistence time for M3 during inlet pressure check. +#define INLET_PRES_PERSISTENCE_TIME_WITH_BP_MS ( 10 * MS_PER_SECOND ) ///< Persistence time for M3 during inlet pressure check with booster pump. +#define INLET_PRES_PERSISTENCE_TIME_MS ( 1 * MS_PER_SECOND ) ///< Persistence time for M3 during inlet pressure check without booster pump. // ********** private data ********** @@ -127,40 +129,67 @@ * The handleInletPressureCheckProgressState handles the in progress * state of inlet pressure check * @details \b Inputs: none - * @details \b Outputs: none + * @details \b Outputs: isPressureCheckComplete * @return the next state of Inlet Pressure check state *************************************************************************/ static FP_INLET_PRES_CHECK_STATE_T handleInletPressureCheckProgressState( void ) { FP_INLET_PRES_CHECK_STATE_T state = INLET_PRES_CHECK_IN_PROGRESS; F32 inletPressure = 0.0; + F32 thresholdMin = INLET_PRES_CHECK_WITH_BP_TGT_PSI - INLET_PRES_CHECK_TOLERANCE_PSI; + F32 thresholdMax = INLET_PRES_CHECK_WITH_BP_TGT_PSI + INLET_PRES_CHECK_TOLERANCE_PSI; inletPressure = getFilteredPressure(M3_PRES); - // check for inlet pressure (M3) within range - if( ( inletPressure >= (INLET_PRES_CHECK_TGT_PSI - INLET_PRES_CHECK_TOLERANCE_PSI) ) && ( inletPressure <= (INLET_PRES_CHECK_TGT_PSI + INLET_PRES_CHECK_TOLERANCE_PSI) ) ) + + if ( TRUE == isBoostPumpInstalled() ) { - if ( 0 == inletPressureCheckPersistanceStartTimeMS ) + // check for inlet pressure (M3) within range + if( ( inletPressure >= thresholdMin ) && ( inletPressure <= thresholdMax ) ) { - inletPressureCheckPersistanceStartTimeMS = getMSTimerCount(); + if ( 0 == inletPressureCheckPersistanceStartTimeMS ) + { + inletPressureCheckPersistanceStartTimeMS = getMSTimerCount(); + } + else if ( TRUE == didTimeout( inletPressureCheckPersistanceStartTimeMS, INLET_PRES_PERSISTENCE_TIME_WITH_BP_MS ) ) + { + inletPressureCheckPersistanceStartTimeMS = 0; + isPressureCheckComplete = TRUE; + state = INLET_PRES_CHECK_PAUSED; + } } - else if ( TRUE == didTimeout( inletPressureCheckPersistanceStartTimeMS, INLET_PRES_PERSISTENCE_TIME_MS ) ) + // reset the persistence timer when inlet pressure out of range + else if( ( inletPressure <= thresholdMin ) || ( inletPressure >= thresholdMax ) ) { inletPressureCheckPersistanceStartTimeMS = 0; - isPressureCheckComplete = TRUE; - state = INLET_PRES_CHECK_PAUSED; + // Trigger alarm if M3 pressure is not within range + if ( TRUE == didTimeout( inletPressureCheckTimer, getInletPressureCheckTimeout() ) ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE, INLET_PRES_CHECK_TIMEOUT, inletPressure) + state = INLET_PRES_CHECK_PAUSED; + } } } - // reset the persistence timer when inlet pressure out of range - else if( ( inletPressure <= (INLET_PRES_CHECK_TGT_PSI - INLET_PRES_CHECK_TOLERANCE_PSI) ) || ( inletPressure >= (INLET_PRES_CHECK_TGT_PSI + INLET_PRES_CHECK_TOLERANCE_PSI) ) ) + else { - inletPressureCheckPersistanceStartTimeMS = 0; + if( inletPressure >= INLET_PRES_CHECK_TGT_PSI ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE, INLET_PRES_CHECK_TGT_PSI, inletPressure) + state = INLET_PRES_CHECK_PAUSED; + } + else + { + if ( 0 == inletPressureCheckPersistanceStartTimeMS ) + { + inletPressureCheckPersistanceStartTimeMS = getMSTimerCount(); + } + else if ( TRUE == didTimeout( inletPressureCheckPersistanceStartTimeMS, INLET_PRES_PERSISTENCE_TIME_MS ) ) + { + inletPressureCheckPersistanceStartTimeMS = 0; + isPressureCheckComplete = TRUE; + state = INLET_PRES_CHECK_PAUSED; + } + } } - // Trigger alarm if M3 pressure is not within range - else if ( TRUE == didTimeout( inletPressureCheckTimer, getInletPressureCheckTimeout() ) ) - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE, INLET_PRES_CHECK_TIMEOUT, inletPressure) - state = INLET_PRES_CHECK_PAUSED; - } return state; }