Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -re0eeafdfe3efec528a5ba8bb0f2f7c0f682b32da -r487057777532342a4034df8296310270c8827f14 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision e0eeafdfe3efec528a5ba8bb0f2f7c0f682b32da) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 487057777532342a4034df8296310270c8827f14) @@ -44,7 +44,9 @@ #define COND_SENSOR_REPORT_PERIOD ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Broadcast conductivity values message every second. #define COND_SENSOR_CPI_MAX_VALUE 2200 ///< Maximum inlet water conductivity. -#define COND_SENSOR_CPI_MIN_VALUE 2000 ///< Minimum 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. #define MAX_CONDUCTIVITY_SENSOR_FAILURES 5 ///< maximum number of conductivity sensor errors within window period before alarm. @@ -139,6 +141,7 @@ setFPGACPoProbeType( COND_CPO_SENSOR_PROBE_TYPE ); 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 ); @@ -225,17 +228,24 @@ F32 const conductivity = getConductivityValue( CONDUCTIVITYSENSORS_CPI_SENSOR ); - BOOL const isConductTooLow = ( conductivity < COND_SENSOR_CPI_MIN_VALUE ); - BOOL const isConductInWarningRange = ( conductivity >= COND_SENSOR_CPI_MIN_VALUE ) && - ( conductivity <= COND_SENSOR_CPI_MAX_VALUE ) ? TRUE : FALSE; + BOOL const isConductTooLow = ( conductivity <= COND_SENSOR_CPI_MIN_VALUE ); + BOOL const isConductTooHigh = ( conductivity >= COND_SENSOR_CPI_MAX_VALUE ); + + 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_MAX_VALUE ); + } else if ( TRUE == isConductInWarningRange ) { - checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_WARNING_RANGE, COND_SENSOR_CPI_MIN_VALUE, conductivity, COND_SENSOR_CPI_MAX_VALUE ); + checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_WARNING_RANGE, COND_SENSOR_CPI_WARNING_LOW, conductivity, COND_SENSOR_CPI_WARNING_HIGH ); } #endif