Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r969ec174d1d6254ef5b7f90723d5b5313cfa3932 -r9438614daab0edede947e39a9d563fce8f66225e --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 969ec174d1d6254ef5b7f90723d5b5313cfa3932) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 9438614daab0edede947e39a9d563fce8f66225e) @@ -44,16 +44,16 @@ #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 2200 ///< Maximum inlet water conductivity. -#define COND_SENSOR_CPI_MIN_VALUE 2000 ///< Minimum inlet water conductivity. +#define COND_SENSOR_CPI_MAX_VALUE 2000 ///< Maximum 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. #define MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS ( 60 * MS_PER_SECOND ) ///< Conductivity sensor error window. #define RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE 1.0 ///< Out of range value for RO rejection ratio when CPi conductivity is zero. -#define MAX_RO_REJECTION_RATIO_ALLOW 0.15 ///< Maximum RO rejection ratio. -#define MAX_CPO_CONDUCTIVITY_ALLOW 30.0 ///< Maximum CPo sensor conductivity value. +#define MAX_RO_REJECTION_RATIO_ALLOW 0.1 ///< Maximum RO rejection ratio. +#define MAX_CPO_CONDUCTIVITY_ALLOW 15.0 ///< Maximum CPo sensor conductivity value. #define COND_SENSOR_PERSISTENCE_PERIOD ( 5 * MS_PER_SECOND ) ///< Persistence period for conductivity sensor out of range error. #define RO_REJECTION_RATIO_PERSISTENCE_PERIOD ( 10 * MS_PER_SECOND ) ///< Persistence period for RO rejection ratio. @@ -144,7 +144,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_CONDUCTIVITY_IN_WARNING_RANGE, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); + initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, 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 ); } @@ -224,32 +224,20 @@ /*********************************************************************//** * @brief * The checkInletWaterConductivity function checks inlet water conductivity value - * and triggers an alarm when conductivity value is not within the specified - * values. + * and triggers an alarm when conductivity value is out of allowed range. * @details Inputs: CPi sensor conductivity - * @details Outputs: Trigger warning alarm if conductivity is in the warning - * range. Trigger alarm if conductivity is below minimum conductivity. + * @details Outputs: Trigger alarms when conductivity is out of allowed range * @return none *************************************************************************/ void checkInletWaterConductivity( void ) { #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 ); - 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; - - if ( TRUE == isConductTooLow ) - { - checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, isConductTooLow, conductivity, COND_SENSOR_CPI_MIN_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_HIGH_CONDUCTIVITY, isCondTooHigh, conductivity, COND_SENSOR_CPI_MAX_VALUE ); + checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, isCondTooLow, conductivity, COND_SENSOR_CPI_MIN_VALUE ); #endif } @@ -433,7 +421,7 @@ EMSTAT_VARIABLE_T const * const measurementPtr = (EMSTAT_VARIABLE_T *)&package; U32 const status = hexStrToDec( (U08 *)&measurementPtr->status, sizeof( measurementPtr->status ) ); - // if ( EMSTAT_PICO_GOOD_STATUS == status ) + if ( EMSTAT_PICO_GOOD_STATUS == status ) { U32 const prefix = prefixStrToSIFactor( measurementPtr->prefix ); F32 const resistance = ( ( F32 )( hexStrToDec( measurementPtr->value, sizeof( measurementPtr->value ) ) - EMSTAT_PICO_MEASUREMENT_OFFSET ) / prefix ); @@ -446,11 +434,11 @@ rawConductivityValues[ sensorId ] = conductivity; // store raw conductivity data from CD1 and CD2 } - /*else + else { compensatedConductivityValues[ sensorId ].data = 0.0; rawConductivityValues[ sensorId ] = 0.0; - }*/ + } if ( EMSTAT_PICO_TIMING_NOT_MET_STATUS == status ) {