Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r4fbaa823eb08d369ea24d4ce59e77b6f2ad8e97a -r12ccb89bb747b00db71fff51238a245855c5d913 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 4fbaa823eb08d369ea24d4ce59e77b6f2ad8e97a) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 12ccb89bb747b00db71fff51238a245855c5d913) @@ -27,6 +27,7 @@ #include "Heaters.h" #include "MessageSupport.h" #include "ModeFill.h" +#include "ModeHeatDisinfect.h" #include "NVDataMgmt.h" #include "OperationModes.h" #include "PersistentAlarm.h" @@ -51,6 +52,7 @@ #define HEATERS_MAX_DUTY_CYCLE 1.00F ///< Heaters max duty cycle (100%). #define HEATERS_MIN_DUTY_CYCLE 0.00F ///< Heaters minimum duty cycle (0.00%). #define HEATERS_DISINFECT_DUTY_CYCLE 0.80F ///< Heaters disinfect cycle. +#define HEATERS_DISINFECT_TRANSFER_DUTY_CYCLE 0.60F ///< Heaters disinfect transfer duty cycle. #define HEATERS_DISINFECT_TEMPERATURE_DRIFT_C 3.0F ///< Heaters disinfect temperature drift in C. #define HEATERS_MIN_EST_GAIN 0.2F ///< Heaters minimum estimation gain. #define HEATERS_MAX_EST_GAIN 5.0F ///< Heaters maximum estimation gain. @@ -618,28 +620,30 @@ F32 currentTemperature = getTemperatureValue( TEMPSENSORS_OUTLET_PRIMARY_HEATER ); F32 targetTemperature = heatersStatus[ heater ].targetTempC; - if ( currentTemperature < targetTemperature ) + if ( TRUE == isHeatDisinfectInTransitionHotWater() ) { + heatersStatus[ DG_TRIMMER_HEATER ].dutyCycle.data = HEATERS_DISINFECT_TRANSFER_DUTY_CYCLE; + heatersStatus[ DG_PRIMARY_HEATER ].dutyCycle.data = HEATERS_DISINFECT_TRANSFER_DUTY_CYCLE; + } + else if ( currentTemperature < targetTemperature ) + { heatersStatus[ DG_TRIMMER_HEATER ].dutyCycle.data = HEATERS_MAX_DUTY_CYCLE; heatersStatus[ DG_PRIMARY_HEATER ].dutyCycle.data = HEATERS_MAX_DUTY_CYCLE; - setHeaterDutyCycle( DG_TRIMMER_HEATER ); - setHeaterDutyCycle( DG_PRIMARY_HEATER ); } else if ( currentTemperature - targetTemperature < HEATERS_DISINFECT_TEMPERATURE_DRIFT_C ) { heatersStatus[ DG_TRIMMER_HEATER ].dutyCycle.data = HEATERS_DISINFECT_DUTY_CYCLE; heatersStatus[ DG_PRIMARY_HEATER ].dutyCycle.data = HEATERS_DISINFECT_DUTY_CYCLE; - setHeaterDutyCycle( DG_TRIMMER_HEATER ); - setHeaterDutyCycle( DG_PRIMARY_HEATER ); } else { heatersStatus[ DG_TRIMMER_HEATER ].dutyCycle.data = HEATERS_MIN_DUTY_CYCLE; heatersStatus[ DG_PRIMARY_HEATER ].dutyCycle.data = HEATERS_MIN_DUTY_CYCLE; - setHeaterDutyCycle( DG_TRIMMER_HEATER ); - setHeaterDutyCycle( DG_PRIMARY_HEATER ); } + setHeaterDutyCycle( DG_TRIMMER_HEATER ); + setHeaterDutyCycle( DG_PRIMARY_HEATER ); + return state; }