Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r767786753c360e9615b76a7f4a97fd0da4fcaf26 -r8dd5ee9130303e0823f5063fab0d2997c93acc90 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 767786753c360e9615b76a7f4a97fd0da4fcaf26) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 8dd5ee9130303e0823f5063fab0d2997c93acc90) @@ -128,7 +128,8 @@ static U32 dataPublicationTimerCounter; ///< Data publication timer counter. static U32 primaryTargetTempAdjCounter; ///< Primary target temperature adjustment counter. static BOOL isTargetTempAdjusted; ///< Flag indicating that target temperature is adjusted -static U32 adjustedPrimaryTargetTemp; ///< Adjusted primary target temperature +static U32 adjustedPrimaryTargetTemp; ///< Adjusted primary target temperature +static BOOL isDialyzerTempFeedbackEnabled; ///< Flag indicating enable/disable the dilayser temp ( D28) based feedback adjustment static const F32 WATER_SPECIFIC_HEAT_DIVIDED_BY_MINUTES = 4184.0F / (F32)SEC_PER_MIN; ///< Water specific heat in J/KgC / 60. static OVERRIDE_U32_T heatersDataPublishInterval = { HEATERS_DATA_PUBLISH_INTERVAL, HEATERS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Heaters data publish time interval. static F32 convertDC; ///< AC Heater converted duty cycle @@ -199,6 +200,7 @@ primaryTargetTempAdjCounter = 0; adjustedPrimaryTargetTemp = 0.0F; isTargetTempAdjusted = FALSE; + isDialyzerTempFeedbackEnabled = TRUE; for ( heater = DD_HEATERS_FIRST; heater < NUM_OF_DD_HEATERS; heater++ ) { @@ -337,6 +339,19 @@ /*********************************************************************//** * @brief + * The setD28TempFeedbackControl function enables/disables the D28 based + * heater control (outer control loop ). + * @details \b Inputs: none + * @details \b Outputs: setD28TempFeedbackControl + * @param enable: Enables/disables the D28 based heater control. + *************************************************************************/ +void setD28TempFeedbackControl( BOOL enable ) +{ + isDialyzerTempFeedbackEnabled = enable; +} + +/*********************************************************************//** + * @brief * The signalHeaterControlOnQDUpdate function updates heater control based on * the latest treatment paratmeter (Dialysate Flow rate) change * @details \b Inputs: heatersStatus @@ -729,7 +744,9 @@ { F32 deltaTempC = 0.0F; - if ( TRUE == isTargetTempAdjusted ) + // If D28 feedback control is enabled and adjusted temp calculation is done + // then update the target temperature. + if ( ( TRUE == isTargetTempAdjusted ) && ( TRUE == isDialyzerTempFeedbackEnabled ) ) { targetTemperature = adjustedPrimaryTargetTemp; }