Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r025612ad77fe630889a364586de54bffe5262d56 -rde9033912212f6af3a2f33321d948ce5aabac358 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 025612ad77fe630889a364586de54bffe5262d56) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision de9033912212f6af3a2f33321d948ce5aabac358) @@ -55,9 +55,12 @@ #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_INPUT_TEMPERATURE 22U ///< Minimum water input temperature. -#define MAX_WATER_INPUT_TEMPERATURE 35U ///< Maximum water input temperature. +#define MAX_WATER_HIGH_INPUT_TEMPERATURE 39U ///< Maximum water input high temperature. +#define MIN_WATER_HIGH_INPUT_TEMPERATURE 37U ///< Minimum water input high temperature. +#define MAX_WATER_LOW_INPUT_TEMPERATURE 24U ///< Maximum water input low temperature. +#define MIN_WATER_LOW_INPUT_TEMPERATURE 22U ///< Minimum water input low temperature. + #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. #define HEATERS_COLD_JUNCTION_ADC_TO_TEMP_CONVERSION_COEFF 0.0625 ///< Heaters cold junction temperature sensors ADC to temperature conversion coefficient. @@ -350,11 +353,28 @@ { #ifndef DISABLE_WATER_QUALITY_CHECK F32 const temperature = getTemperatureValue( TEMPSENSORS_INLET_PRIMARY_HEATER ); - BOOL const isWaterTempTooHigh = temperature > MAX_WATER_INPUT_TEMPERATURE; - BOOL const isWaterTempTooLow = temperature < MIN_WATER_INPUT_TEMPERATURE; - checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, isWaterTempTooHigh, temperature, MAX_WATER_INPUT_TEMPERATURE ); - checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, isWaterTempTooLow, temperature, MIN_WATER_INPUT_TEMPERATURE ); + BOOL isWaterTempTooHigh = ( temperature >= MIN_WATER_HIGH_INPUT_TEMPERATURE ) && + ( temperature <= MAX_WATER_HIGH_INPUT_TEMPERATURE ) ? TRUE : FALSE; + + BOOL isWaterTempTooLow = ( temperature >= MIN_WATER_LOW_INPUT_TEMPERATURE ) && + ( temperature <= MAX_WATER_LOW_INPUT_TEMPERATURE ) ? TRUE : FALSE; + + BOOL isWaterOutOfRange = ( temperature < MIN_WATER_LOW_INPUT_TEMPERATURE ) && + ( temperature > MAX_WATER_HIGH_INPUT_TEMPERATURE ) ? TRUE : FALSE; + + if ( TRUE == isWaterTempTooHigh ) + { + checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, isWaterTempTooHigh, temperature, MAX_WATER_HIGH_INPUT_TEMPERATURE ); + } + else if ( TRUE == isWaterTempTooLow ) + { + checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, isWaterTempTooLow, temperature, MIN_WATER_LOW_INPUT_TEMPERATURE ); + } + else if ( TRUE == isWaterOutOfRange ) + { + checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, isWaterOutOfRange, temperature, MAX_WATER_HIGH_INPUT_TEMPERATURE ); + } #endif }