Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r6afd2e6ec147014937743fa10d0d2cf65b12e37a -rc7dcaa774c66053bcf0a52d56068d1960187bae1 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 6afd2e6ec147014937743fa10d0d2cf65b12e37a) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision c7dcaa774c66053bcf0a52d56068d1960187bae1) @@ -52,7 +52,7 @@ #define HEATERS_ZERO_EFFICIENCY 0.0F ///< Zero heater efficiency #define HEATER_CNTL_TRANSFER_DELTA_TEMP_C 0.50F ///< AC heater delta temperature to transfer control from open to close loop #define ADJ_DELTA_TEMP_STEP 2.0F ///< Adjust target temperature based on D28 feedback per cycle. -#define MAX_ADJ_DELTA_TEMP_C 5.0F ///< Maximum adjusted delta temperature to add/remove from calculated target temperature +#define MAX_ADJ_DELTA_TEMP_C 7.0F ///< Maximum adjusted delta temperature to add/remove from calculated target temperature #define D5_HEAT_TX_INIT_FEED_FORWARD 0.0F ///< Initial Feed forward term for heater control //#define D5_HEAT_TX_P_COEFFICIENT 0.050F ///< P Term for AC primary heater control during treatment mode. @@ -82,7 +82,7 @@ #define D5_HEAT_CONTROL_INTERVAL_COUNT ( D5_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Primary heater control interval count. #define D45_HEAT_CONTROL_INTERVAL_MS ( 1 * MS_PER_SECOND ) ///< Trimmer heater control interval in milli seconds #define D45_HEAT_CONTROL_INTERVAL_COUNT ( D45_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Trimmer heater control interval count. -#define D5_TARGET_TEMP_ADJUST_INTERVAL_MS ( 5 * SEC_PER_MIN * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Adjust primary target temperature +#define D5_TARGET_TEMP_ADJUST_INTERVAL_MS ( 3 * SEC_PER_MIN * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Adjust primary target temperature #define PRIMARY_HEATER_MAX_PWR_WATTS 1400.0F ///< AC Primary Heater Max Power consumeption in Watts #define TX_PRIMARY_HEATER_MAX_PWR_WATTS 700.0F ///< Estimated power to be supplied to the primary heater during treatement mode #define HEAT_PRIMARY_HEATER_MAX_PWR_WATTS 980.0F ///< Estimated power to be supplied to the primary heater during heat disinfect mode @@ -389,15 +389,23 @@ F32 deltaTempC = targetTempfromTD - measuredTempAtDialyzer; F32 capDeltaTempC = MIN( fabs(deltaTempC), ADJ_DELTA_TEMP_STEP ); + //Assign the initial calcualted temp for adjsutment + if ( FALSE == isTargetTempAdjusted ) + { + adjustedPrimaryTargetTemp = calcTargetTemp; + } + + //Keep adjusting the temperature based on D28 feedback if ( deltaTempC > HEATERS_ZERO_DELTA_TEMP_C ) { - adjustedPrimaryTargetTemp = calcTargetTemp + capDeltaTempC; + adjustedPrimaryTargetTemp = adjustedPrimaryTargetTemp + capDeltaTempC; } else { - adjustedPrimaryTargetTemp = calcTargetTemp - capDeltaTempC; + adjustedPrimaryTargetTemp = adjustedPrimaryTargetTemp - capDeltaTempC; } + //Make sure the adjusted temp not crossing the max and min limits. adjustedPrimaryTargetTemp = MIN(adjustedPrimaryTargetTemp, ( calcTargetTemp + MAX_ADJ_DELTA_TEMP_C ) ); adjustedPrimaryTargetTemp = MAX(adjustedPrimaryTargetTemp, ( calcTargetTemp - MAX_ADJ_DELTA_TEMP_C ) );