Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r66cc826068b54bc436cde0fae70a05ba6c1ac974 -r750a8b61a1e9a63823ecc6ed441cd01524ffc02b --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 66cc826068b54bc436cde0fae70a05ba6c1ac974) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 750a8b61a1e9a63823ecc6ed441cd01524ffc02b) @@ -156,6 +156,7 @@ initPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, 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 ); + initPersistentAlarm( ALARM_ID_DG_OUTLET_PRIMARY_CONDUCTIVITY_OUT_OF_RANGE, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); } /*********************************************************************//** @@ -237,23 +238,23 @@ /*********************************************************************//** * @brief - * The checkInletWaterConductivity function checks inlet water conductivity value + * The isInletWaterConductivityInRange function checks inlet water conductivity value * and triggers an alarm when conductivity value is not within the specified * values. * @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. - * @return none + * @return TRUE if the inlet water conductivity is in range otherwise, FALSE *************************************************************************/ -void checkInletWaterConductivity( void ) +BOOL isInletWaterConductivityInRange( void ) { #ifndef DISABLE_WATER_QUALITY_CHECK - + BOOL status = TRUE; F32 conductivity = getConductivityValue( CONDUCTIVITYSENSORS_CPI_SENSOR ); BOOL isConductTooLow = ( conductivity < MAX_COND_SENSOR_CPI_WARNING_LOW ? TRUE : FALSE ); BOOL isConductInWarningRange = ( conductivity > MAX_COND_SENSOR_CPI_WARNING_HIGH ? TRUE : FALSE ); - // Alarm per PRS 403 + // Warning per PRS 403 if ( TRUE == isConductTooLow ) { checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, isConductTooLow, conductivity, MAX_COND_SENSOR_CPI_WARNING_LOW ); @@ -263,7 +264,7 @@ checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, FALSE, conductivity, MAX_COND_SENSOR_CPI_WARNING_LOW ); } - // Alarm per PRS 404 + // Warning per PRS 404 if ( TRUE == isConductInWarningRange ) { checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE, isConductInWarningRange, conductivity, MAX_COND_SENSOR_CPI_WARNING_HIGH ); @@ -273,6 +274,13 @@ checkPersistentAlarm( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE, FALSE, conductivity, MAX_COND_SENSOR_CPI_WARNING_HIGH ); } + if ( ( TRUE == isAlarmActive( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE ) ) || + ( TRUE == isAlarmActive( ALARM_ID_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE ) ) ) + { + status = FALSE; + } + + return status; #endif } @@ -289,9 +297,13 @@ { #ifndef DISABLE_RO_RATIO_CHECK F32 cpo = getConductivityValue( CONDUCTIVITYSENSORS_CPO_SENSOR ); - BOOL isRORectionOutOfRange = ( ( roRejectionRatio > MAX_RO_REJECTION_RATIO_ALLOW ) || ( cpo >= MAX_CPO_CONDUCTIVITY_ALLOW ) ? TRUE : FALSE ); + BOOL isRORectionOutOfRange = ( roRejectionRatio > MAX_RO_REJECTION_RATIO_ALLOW ? TRUE : FALSE ); + BOOL isCPoOutOfRange = ( cpo >= MAX_CPO_CONDUCTIVITY_ALLOW ? TRUE : FALSE ); // Fault alarm per PRS 483 + checkPersistentAlarm( ALARM_ID_DG_OUTLET_PRIMARY_CONDUCTIVITY_OUT_OF_RANGE, isCPoOutOfRange, cpo, MAX_CPO_CONDUCTIVITY_ALLOW ); + + // Fault alarm per PRS 483 checkPersistentAlarm( ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, isRORectionOutOfRange, roRejectionRatio, MAX_RO_REJECTION_RATIO_ALLOW ); #endif }