Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -re94e190c01863afb7fc43cf746f59ded8ae6c362 -r17ed3e0acec7f5a626a7e7ba02cb56fe0533ec49 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision e94e190c01863afb7fc43cf746f59ded8ae6c362) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 17ed3e0acec7f5a626a7e7ba02cb56fe0533ec49) @@ -116,7 +116,8 @@ static U32 elapsedTime; ///< Elapsed time variable static U32 internalHeatersConversionTimer; ///< Conversion timer variable to calculate the heaters internal temperature -static U32 inletWaterTempOutOfRangeCounter; ///< Temperature out of range persistence counter +static U32 inletWaterHighTempCounter; ///< Temperature too high persistence counter +static U32 inletWaterLowTempCounter; ///< Temperature too low persistence counter static U32 inletWaterTempInRangeCounter; ///< Temperature in range persistence counter static F32 tempValuesForPublication [ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature sensors data publication array @@ -181,7 +182,8 @@ tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; elapsedTime = 0; internalHeatersConversionTimer = 0; - inletWaterTempOutOfRangeCounter = 0; + inletWaterLowTempCounter = 0; + inletWaterHighTempCounter = 0; inletWaterTempInRangeCounter = 0; dataPublicationTimerCounter = 0; @@ -321,23 +323,33 @@ void checkInletWaterTemperature( void ) { F32 const temperature = getTemperatureValue( TEMPSENSORS_INLET_PRIMARY_HEATER ); - if ( temperature < MIN_WATER_INPUT_TEMPERATURE || temperature > MAX_WATER_INPUT_TEMPERATURE ) + if ( temperature < MIN_WATER_INPUT_TEMPERATURE ) { - ++inletWaterTempOutOfRangeCounter; + ++inletWaterLowTempCounter; inletWaterTempInRangeCounter = 0; - if ( inletWaterTempOutOfRangeCounter > INLET_WATER_TEMPERATURE_PERSISTENCE_COUNT ) + if ( inletWaterLowTempCounter > INLET_WATER_TEMPERATURE_PERSISTENCE_COUNT ) { - SET_ALARM_WITH_1_F32_DATA( ALARM_ID_INLET_WATER_TEMPERATURE_OUT_OF_RANGE, temperature ); + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_INLET_WATER_LOW_TEMPERATURE, temperature ); } } + else if ( temperature > MAX_WATER_INPUT_TEMPERATURE ) + { + ++inletWaterHighTempCounter; + inletWaterTempInRangeCounter = 0; + if ( inletWaterHighTempCounter > INLET_WATER_TEMPERATURE_PERSISTENCE_COUNT ) + { + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE, temperature ); + } + } else { ++inletWaterTempInRangeCounter; - inletWaterTempOutOfRangeCounter = 0; - if ( isAlarmActive( ALARM_ID_INLET_WATER_TEMPERATURE_OUT_OF_RANGE ) && - inletWaterTempInRangeCounter > INLET_WATER_TEMPERATURE_PERSISTENCE_COUNT ) + inletWaterLowTempCounter = 0; + inletWaterHighTempCounter = 0; + if ( inletWaterTempInRangeCounter > INLET_WATER_TEMPERATURE_PERSISTENCE_COUNT ) { - clearAlarm( ALARM_ID_INLET_WATER_TEMPERATURE_OUT_OF_RANGE ); + clearAlarm( ALARM_ID_INLET_WATER_LOW_TEMPERATURE ); + clearAlarm( ALARM_ID_INLET_WATER_HIGH_TEMPERATURE ); } } }