Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r2f3090feeb06eb738aefc8eae5f080070a0a8919 -raa8dbad6005f0f63b846673ac1656b003fbf85e3 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 2f3090feeb06eb738aefc8eae5f080070a0a8919) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision aa8dbad6005f0f63b846673ac1656b003fbf85e3) @@ -55,14 +55,13 @@ #define SHIFT_BITS_BY_2_FOR_AVERAGING 2U ///< Shift the ADCs of the temperature sensors by 2 to average them. #define INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ( 5 * MS_PER_SECOND ) ///< Persistence period for temperature sensors out of range error period. -#define MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE 22U ///< Low range minimum water input temperature. -#define MAX_WATER_TEMPERATURE_WARNING_LOW_RANGE 24U ///< Low range maximum water input temperature. +#define MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE 22.0F ///< Low range minimum water input temperature. +#define MAX_WATER_TEMPERATURE_WARNING_LOW_RANGE 24.0F ///< Low range maximum water input temperature. -#define MIN_WATER_TEMPERATURE_WARNING_HIGH_RANGE 37U ///< High range minimum water input temperature. -#define MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE 39U ///< High range maximum water input temperature. +#define MIN_WATER_TEMPERATURE_WARNING_HIGH_RANGE 37.0F ///< High range minimum water input temperature. +#define MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE 39.0F ///< High range maximum water input temperature. -#define MIN_WATER_TEMPERATURE_ALARM 22U ///< Low water temperature alarm. -#define MAX_WATER_TEMPERATURE_ALARM 39U ///< High water temperature alarm. +#define MAX_WATER_TEMPERATURE_ALARM 50.0F ///< High water temperature alarm. #define HEATERS_INTERNAL_TEMPERTURE_CALCULATION_INTERVAL 20U ///< Time interval that is used to calculate the heaters internal temperature. #define HEATERS_INTERNAL_TC_ADC_TO_TEMP_CONVERSION_COEFF 0.25 ///< Heaters internal temperature sensors ADC to temperature conversion coefficient. @@ -271,7 +270,7 @@ initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); - initPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, + initPersistentAlarm( ALARM_ID____AVAILABLE_28, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_LOW_RANGE, INLET_WATER_TEMPERATURE_PERSISTENCE_PERIOD, @@ -361,33 +360,32 @@ void checkInletWaterTemperature( void ) { #ifndef DISABLE_WATER_QUALITY_CHECK - F32 const temperature = getTemperatureValue( TEMPSENSORS_INLET_PRIMARY_HEATER ); - BOOL isWaterTempInHighRange = ( temperature >= MIN_WATER_TEMPERATURE_WARNING_HIGH_RANGE ) && - ( temperature <= MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE ) ? TRUE : FALSE; + F32 temperature = getTemperatureValue( TEMPSENSORS_INLET_PRIMARY_HEATER ); + BOOL isWaterTempInHighRange = ( temperature > MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE ? TRUE : FALSE ); + BOOL isWaterTempInLowRange = ( temperature < MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE ? TRUE : FALSE ); + BOOL isWaterTempTooHigh = ( temperature > MAX_WATER_TEMPERATURE_ALARM ? TRUE : FALSE ); - BOOL isWaterTempInLowRange = ( temperature >= MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE ) && - ( temperature <= MAX_WATER_TEMPERATURE_WARNING_LOW_RANGE ) ? TRUE : FALSE; + // Fault alarm per PRS 557 for high temperature + checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, isWaterTempTooHigh, temperature, MAX_WATER_TEMPERATURE_ALARM ); - BOOL isWaterTempTooHigh = ( temperature > MAX_WATER_TEMPERATURE_ALARM ); - - BOOL isWaterTempTooLow = ( temperature < MIN_WATER_TEMPERATURE_ALARM ); - - if ( TRUE == isWaterTempInHighRange ) // warning alarm + if ( TRUE == isWaterTempInHighRange ) // warning alarm per PRS 406 { - checkPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_HIGH_RANGE, MIN_WATER_TEMPERATURE_WARNING_HIGH_RANGE, temperature, MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE ); + checkPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_HIGH_RANGE, isWaterTempInHighRange, temperature, MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE ); } - else if ( TRUE == isWaterTempInLowRange ) // warning alarm + else if ( temperature <= MIN_WATER_TEMPERATURE_WARNING_HIGH_RANGE ) { - checkPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_LOW_RANGE, MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE, temperature, MAX_WATER_TEMPERATURE_WARNING_LOW_RANGE ); + checkPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_HIGH_RANGE, FALSE, temperature, MAX_WATER_TEMPERATURE_WARNING_HIGH_RANGE ); } - else if ( TRUE == isWaterTempTooHigh ) // alarm + + + if ( TRUE == isWaterTempInLowRange ) // warning alarm per PRS 405 { - checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, isWaterTempTooHigh, temperature, MAX_WATER_TEMPERATURE_ALARM ); + checkPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_LOW_RANGE, isWaterTempInLowRange, temperature, MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE ); } - else if ( TRUE == isWaterTempTooLow ) // alarm + else if ( temperature >= MAX_WATER_TEMPERATURE_WARNING_LOW_RANGE ) { - checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, isWaterTempTooLow, temperature, MIN_WATER_TEMPERATURE_ALARM ); + checkPersistentAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_IN_LOW_RANGE, FALSE, temperature, MIN_WATER_TEMPERATURE_WARNING_LOW_RANGE ); } #endif }