Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r60db0506b1a90ed00b0e83159f6e7510ab6e4b7b -rd31e9b40e9d56df8fa3551bbba63f6bec3a72811 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 60db0506b1a90ed00b0e83159f6e7510ab6e4b7b) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision d31e9b40e9d56df8fa3551bbba63f6bec3a72811) @@ -23,6 +23,7 @@ #include "Level.h" #include "MessageSupport.h" #include "Messaging.h" +#include "ModeGenDialysate.h" //#include "NVDataMgmt.h" #include "OperationModes.h" #include "PersistentAlarm.h" @@ -55,8 +56,8 @@ #define ADJ_DELTA_TEMP_STEP 2.0F ///< Adjust target temperature based on D28 feedback per cycle. #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.035F ///< P Term for AC primary heater control during treatment mode. -#define D5_HEAT_TX_I_COEFFICIENT 0.004F ///< I Term for AC primary heater control during treatment mode. +#define D5_HEAT_TX_P_COEFFICIENT 0.017F ///< P Term for AC primary heater control during treatment mode. +#define D5_HEAT_TX_I_COEFFICIENT 0.002F ///< I Term for AC primary heater control during treatment mode. #define D45_HEAT_P_COEFFICIENT 0.20F ///< P Term for trimmer heater control. #define D45_HEAT_I_COEFFICIENT 0.05F ///< I Term for trimmer heater control. @@ -427,14 +428,14 @@ #ifdef __TEENSY_CONDUCTIVITY_DRIVER__ F32 measuredTempAtDialyzer = getTeensyConductivityTemperatureValue( D27_COND ); #else - F32 measuredTempAtDialyzer = getConductivityTemperatureValue( D27_COND ); + F32 measuredTempAtDialyzer = getFilteredConductivitySensorTemperature( D27_COND ); #endif F32 calcTargetTemp = getHeaterTargetTemperature( D5_HEAT ); F32 dialysateFlowrate = getTDDialysateFlowrate(); F32 deltaTempC = targetTempfromTD - measuredTempAtDialyzer; F32 capDeltaTempC = MIN( fabs(deltaTempC), ADJ_DELTA_TEMP_STEP ); F32 ctrl = 0.0F; - + F32 updatedTarget = 0.0F; #if 0 //Assign the initial calcualted temp for adjsutment if ( FALSE == isTargetTempAdjusted ) @@ -477,7 +478,9 @@ } else if ( fabs(deltaTempC) >= D5_HEAT_OUT_DEADBAND_CONTROL ) { - ctrl = runPIController( PI_CONTROLLER_ID_D5_HEAT_OUTER_LOOP, targetTempfromTD, measuredTempAtDialyzer ); + updatedTarget = calculateUpdatedD28TargetDialysateTemp(); + setHeaterTargetTemperature( D5_HEAT, updatedTarget ); + ctrl = runPIController( PI_CONTROLLER_ID_D5_HEAT_OUTER_LOOP, getHeaterTargetTemperature( D5_HEAT ), measuredTempAtDialyzer ); adjustedPrimaryTargetTemp = ctrl; }