Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r73f039b34276c425ff0f7227f3c5a7733ca0deef -r9279d01e7e539ad1e788b85db4ea2288965b03c6 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 73f039b34276c425ff0f7227f3c5a7733ca0deef) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 9279d01e7e539ad1e788b85db4ea2288965b03c6) @@ -44,7 +44,8 @@ #define COND_SENSOR_REFERENCE_TEMPERATURE 25 ///< Reference temperature for conductivity sensor. #define COND_SENSOR_REPORT_PERIOD ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Broadcast conductivity values message every second. -#define COND_SENSOR_CPI_MAX_VALUE 2000 ///< Maximum inlet water conductivity. +#define COND_SENSOR_CPI_WARNING_HIGH 2200 ///< Warning high value for inlet water conductivity. +#define COND_SENSOR_CPI_WARNING_LOW 2000 ///< Warning low value for inlet water conductivity. #define COND_SENSOR_CPI_MIN_VALUE 100 ///< Minimum inlet water conductivity. #define MAX_ALLOWED_UNCHANGED_CONDUCTIVITY_READS ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< New reading every 800 ms, expect to get valid new reading in 1s. @@ -149,6 +150,8 @@ initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_CONDUCTIVITY_SENSOR_ERROR, MAX_CONDUCTIVITY_SENSOR_FAILURES, MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS ); initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); + + initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_WARNING_RANGE, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, RO_REJECTION_RATIO_PERSISTENCE_PERIOD, RO_REJECTION_RATIO_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD, COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD ); @@ -243,11 +246,26 @@ { #ifndef DISABLE_WATER_QUALITY_CHECK F32 const conductivity = getConductivityValue( CONDUCTIVITYSENSORS_CPI_SENSOR ); - BOOL const isCondTooHigh = ( conductivity > COND_SENSOR_CPI_MAX_VALUE ); - BOOL const isCondTooLow = ( conductivity < COND_SENSOR_CPI_MIN_VALUE ); - checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, isCondTooHigh, conductivity, COND_SENSOR_CPI_MAX_VALUE ); - checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, isCondTooLow, conductivity, COND_SENSOR_CPI_MIN_VALUE ); + BOOL const isConductTooLow = ( conductivity <= COND_SENSOR_CPI_MIN_VALUE ) ? TRUE : FALSE; + + BOOL const isConductTooHigh = ( conductivity >= COND_SENSOR_CPI_WARNING_HIGH ) ? TRUE : FALSE ; + + BOOL const isConductInWarningRange = ( conductivity >= COND_SENSOR_CPI_WARNING_LOW ) && + ( conductivity < COND_SENSOR_CPI_WARNING_HIGH ) ? TRUE : FALSE; + + if ( TRUE == isConductTooLow ) + { + checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, isConductTooLow, conductivity, COND_SENSOR_CPI_MIN_VALUE ); + } + else if ( TRUE == isConductTooHigh ) + { + checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, isConductTooHigh, conductivity, COND_SENSOR_CPI_WARNING_LOW ); + } + else if ( TRUE == isConductInWarningRange ) + { + checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_WARNING_RANGE, isConductInWarningRange, conductivity, COND_SENSOR_CPI_WARNING_HIGH ); + } #endif }