Index: firmware/App/Modes/ModeGenPermeate.c =================================================================== diff -u -rbb1b5860c4a87ee17537ae9f6ca690a4d74bc925 -ra87112233634fca4d9950c3ed05d2c55fa5f9c65 --- firmware/App/Modes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision bb1b5860c4a87ee17537ae9f6ca690a4d74bc925) +++ firmware/App/Modes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision a87112233634fca4d9950c3ed05d2c55fa5f9c65) @@ -16,7 +16,6 @@ ***************************************************************************/ #include "BoostPump.h" -#include "Conductivity.h" #include "DDInterface.h" #include "FPModeStandby.h" #include "FPOperationModes.h" @@ -31,6 +30,7 @@ #include "TaskGeneral.h" #include "Timers.h" #include "Valves.h" +#include "WaterQualityMonitor.h" /** * @addtogroup FPGenPermeateMode @@ -44,7 +44,6 @@ #define GEN_PERMEATE_RO_PUMP_TGT_ML 750 ///< Flow target in ml/min for the ro pump during generate permeate mode. #define PUMP_REST_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) #define RO_REJECTION_WAIT_TIME_MS ( 8 * MS_PER_SECOND ) ///< Verify Water timer ( in ms ) -#define MIN_RO_REJECTION_RATIO_PCT 90.0F ///< Minimum RO rejection ration in percentage #define MIN_SAMPLES_NEEDED_FOR_DUTY_CYCLE_AVG 10 ///< Minimum number for samples needed for calculating the average duty cycle // ********** private data ********** @@ -224,12 +223,7 @@ // Wait for RO rejection to stabilize after transition from full to fill + RO Rejection moving average duration if ( TRUE == didTimeout( timeInState, RO_REJECTION_WAIT_TIME_MS ) ) { - F32 avgRORR = getRORRAverage(); - // Alarm if the filtered average is less than allowed RO rejection limit - if ( avgRORR < MIN_RO_REJECTION_RATIO_PCT ) - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_REJECTION_RATIO_LOW_RANGE, avgRORR, MIN_RO_REJECTION_RATIO_PCT) - } + checkRORejectionRatio(); } if ( permemeateTankState == PERMEATE_TANK_FULL_STATE ) { Index: firmware/App/Monitors/WaterQualityMonitor.c =================================================================== diff -u -r3a5cc585b69ffa194e3601a005915d23b48bd865 -ra87112233634fca4d9950c3ed05d2c55fa5f9c65 --- firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision 3a5cc585b69ffa194e3601a005915d23b48bd865) +++ firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision a87112233634fca4d9950c3ed05d2c55fa5f9c65) @@ -53,6 +53,7 @@ #define INLET_WATER_COND_OUT_OF_RANGE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for conductivity out of range error in milliseconds. #define INLET_WATER_COND_OUT_OF_RANGE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for conductivity out of range clear in milliseconds. #define INLET_CONDUCTIVITY_HIGH_THRESHOLD_US 2000.0F ///< Maximum allowed outlet conductivity in uS/cm. +#define MIN_RO_REJECTION_RATIO_PCT 90.0F ///< Minimum RO rejection ration in percentage // ********** private data ********** @@ -230,7 +231,27 @@ checkPersistentAlarm( ALARM_ID_FP_RO_OUTLET_CONDUCTIVITY_HIGH_RANGE, isConductivityOutOfLowRange, conductivityP18, OUTLET_CONDUCTIVITY_HIGH_THRESHOLD_US ); } +/*********************************************************************//** + * @brief + * The checkRORejectionRatio function checks the RO rejection ratio + * alarm if the rejection ratio is out of range. + * @details \b Inputs: roRRAvg + * @details \b Outputs: none + * @details \b Alarms: ALARM_ID_FP_REJECTION_RATIO_LOW_RANGE when + * RO rejection ratio goes below allowed rejection ratio limit. + * @return none + *************************************************************************/ +void checkRORejectionRatio( void ) +{ + F32 avgRORR = getRORRAverage(); + // Alarm if the filtered average is less than allowed RO rejection limit + if ( avgRORR < MIN_RO_REJECTION_RATIO_PCT ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_REJECTION_RATIO_LOW_RANGE, avgRORR, MIN_RO_REJECTION_RATIO_PCT) + } +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Monitors/WaterQualityMonitor.h =================================================================== diff -u -r6dd382e3988fac2f9ee041b4738d67305e17a6a2 -ra87112233634fca4d9950c3ed05d2c55fa5f9c65 --- firmware/App/Monitors/WaterQualityMonitor.h (.../WaterQualityMonitor.h) (revision 6dd382e3988fac2f9ee041b4738d67305e17a6a2) +++ firmware/App/Monitors/WaterQualityMonitor.h (.../WaterQualityMonitor.h) (revision a87112233634fca4d9950c3ed05d2c55fa5f9c65) @@ -42,5 +42,6 @@ void checkInletTemperatures( void ); void checkInletConductivity( void ); void checkOutletConductivity( void ); +void checkRORejectionRatio( void ); #endif