Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rc7d750b36ffa45ed57c73899aa7861e2d8d63be9 -r5379702cf2aba320cad160bef6c381c0c9138a63 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision c7d750b36ffa45ed57c73899aa7861e2d8d63be9) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 5379702cf2aba320cad160bef6c381c0c9138a63) @@ -56,9 +56,10 @@ #define MIN_VALID_BARO_PRESSURE_PSIA 10.1F ///< Minimum valid barometric pressure in psia. #define MAX_VALID_BARO_PRESSURE_PSIA 15.4F ///< Maximum valid barometric pressure in psia. -#define MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 23.0F ///< Maximum allowed low pressure value in psig. -#define MAX_FLUSH_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 14.0F ///< Maximum allowed low pressure value for Flush in psig. -#define MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 24.0F ///< Minimum allowed low pressure value in psig. +#define MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 23.0F ///< Minimum allowed low pressure value in psig. +#define MIN_FLUSH_INLET_PRESSURE_WARNING_LOW_PSIG 14.0F ///< Minimum allowed low pressure value for Flush in psig. +#define MIN_FLUSH_INLET_PRESSURE_TO_CLEAR_PSIG 15.0F ///< Minimum allowed low pressure value for flush in psig. +#define MIN_INLET_PRESSURE_TO_CLEAR_WARINING_PSIG 24.0F ///< Minimum allowed low pressure value in psig. #define MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG 80.0F ///< Maximum allowed high pressure value in psig. #define MIN_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG 78.0F ///< Minimum allowed high pressure value in psig. @@ -69,6 +70,7 @@ #define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the pressures data is published on the CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT 10 ///< Data publish counter start count. #define PRESSURE_SENSORS_ADC_CHECK_ARRAY_LEN 4 ///< Pressure sensors ADC check array length. +#define CLEANING_MODE_LOW_PRESSURE_STATE_NUMBER 3 ///< Cleaning mode low pressure state number. static const U32 TWO_TO_POWER_OF_6 = ( 1 << 6 ); ///< 2^6. static const U32 TWO_TO_POWER_OF_7 = ( 1 << 7 ); ///< 2^7. @@ -179,16 +181,39 @@ { BOOL isPressureTooLow; BOOL isPressureTooHigh; - F32 maxInletWaterPressureWarningLow = MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG; + F32 maxInletWaterPressureWarningLow = MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG; + F32 minInletWaterPressureWarningLow = MIN_INLET_PRESSURE_TO_CLEAR_WARINING_PSIG; DG_OP_MODE_T opMode = getCurrentOperationMode(); - if ( DG_MODE_STAN == opMode ) + switch ( opMode ) { - maxInletWaterPressureWarningLow = MAX_FLUSH_INLET_WATER_PRESSURE_WARNING_LOW_PSIG; + case DG_MODE_STAN: + maxInletWaterPressureWarningLow = MIN_FLUSH_INLET_PRESSURE_WARNING_LOW_PSIG; + minInletWaterPressureWarningLow = MIN_FLUSH_INLET_PRESSURE_TO_CLEAR_PSIG; + break; + + case DG_MODE_FLUS: + case DG_MODE_HEAT: + case DG_MODE_CHEM: + case DG_MODE_CHFL: + case DG_MODE_ROPS: + // Per PRS 401 the low pressure limit for the cleaning modes that have the filter flush state is 14 psig. + // In the cleaning modes, flush, heat disinfect, chem disinfect, chem flush disinfect, and RO permeate sample, the 3rd state is + // flush drain so only in that state the limit is set to 14 psig. + // NOTE: Active cool does not have a flush drain state. + if ( CLEANING_MODE_LOW_PRESSURE_STATE_NUMBER == getCurrentOperationSubMode() ) + { + maxInletWaterPressureWarningLow = MIN_FLUSH_INLET_PRESSURE_WARNING_LOW_PSIG; + } + break; + + default: + // Do nothing for the rest of the modes since the default inlet pressure has been set. + break; } - isPressureTooLow = ( pressure < maxInletWaterPressureWarningLow ? TRUE : FALSE ); - isPressureTooLow = ( pressure > MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ? TRUE : FALSE ); + isPressureTooLow = ( pressure < maxInletWaterPressureWarningLow ? TRUE : FALSE ); + isPressureTooHigh = ( pressure > MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ? TRUE : FALSE ); switch( opMode ) { @@ -198,7 +223,7 @@ case DG_MODE_STAN: if ( TRUE == isAlarmActive( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE ) ) { - isPressureTooLow = ( pressure >= MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ? FALSE : TRUE ); + isPressureTooLow = ( pressure >= minInletWaterPressureWarningLow ? FALSE : TRUE ); } // Per PRS 401 @@ -222,7 +247,7 @@ // TODO define the PRS checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_HIGH, isPressureTooHigh, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); // TODO define the PRS - checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW, isPressureTooLow, pressure, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); + checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW, isPressureTooLow, pressure, MIN_INLET_PRESSURE_TO_CLEAR_WARINING_PSIG ); break; default: @@ -234,10 +259,10 @@ else { // VPI is closed - clear all alarms - checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE, FALSE, pressure, MAX_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_LOW_RANGE, FALSE, pressure, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_PRESSURE_IN_HIGH_RANGE, FALSE, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_HIGH, FALSE, pressure, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); - checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW, FALSE, pressure, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); + checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW, FALSE, pressure, MIN_INLET_PRESSURE_TO_CLEAR_WARINING_PSIG ); } }