Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rf33973bc706d7144b2b0f060ccfc97e98897ab67 -r28e9d54e3e8b43589cc06c33a563cb6fec8c576f --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision f33973bc706d7144b2b0f060ccfc97e98897ab67) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 28e9d54e3e8b43589cc06c33a563cb6fec8c576f) @@ -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. @@ -162,9 +164,9 @@ } // Initialize the persistent alarms - initPersistentAlarm( ALARM_ID_DG_MAIN_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DG_SMALL_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_DG_TRIMMER_HEATER_VOLTAGE_OUT_OF_RANGE, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_DG_MAIN_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_DG_SMALL_PRIMARY_HEATER_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_DG_TRIMMER_HEATER_VOLTAGE_OUT_OF_RANGE, 0, HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_RO_FLOW_TOO_LOW_WHILE_PRIMARY_HEATER_IS_ON, 0, PRIMARY_HEATER_ON_NO_FLOW_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_DIALYSATE_FLOW_TOO_LOW_WHILE_TRIMMER_HEATER_IS_ON, 0, TRIMMER_HEATER_ON_NO_FLOW_TIMEOUT_MS ); @@ -621,28 +623,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; }