Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r94789b2f2324d5901685b6ff7b6224d4af3a0276 -r542755e62be20cbdd396053c5568ef8a13efad05 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 94789b2f2324d5901685b6ff7b6224d4af3a0276) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 542755e62be20cbdd396053c5568ef8a13efad05) @@ -226,7 +226,7 @@ isFirstCycleBCSwitchingCompleted = FALSE; //Update heater control on dialysate flow change - signalHeaterControlOnQDUpdate( D5_HEAT ); + signalHeaterControlOnQDUpdate(); //Testing balChamberValveClosePeriod = balChamberSwitchingPeriod; Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r94789b2f2324d5901685b6ff7b6224d4af3a0276 -r542755e62be20cbdd396053c5568ef8a13efad05 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 94789b2f2324d5901685b6ff7b6224d4af3a0276) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 542755e62be20cbdd396053c5568ef8a13efad05) @@ -57,11 +57,11 @@ #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.05F ///< P Term for AC primary heater control during treatment mode. +#define D5_HEAT_TX_P_COEFFICIENT 0.005F ///< P Term for AC primary heater control during treatment mode. #define D5_HEAT_TX_I_COEFFICIENT 0.001F ///< I Term for AC primary heater control during treatment mode. #define D45_HEAT_P_COEFFICIENT 0.01F ///< P Term for trimmer heater control. -#define D45_HEAT_I_COEFFICIENT 0.005F ///< I Term for trimmer heater control. +#define D45_HEAT_I_COEFFICIENT 0.0005F ///< I Term for trimmer heater control. #define D45_HEAT_TX_INIT_FEED_FORWARD 0.0F ///< Initial Feed forward term for heater control #define HEATERS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters data publish interval. @@ -415,34 +415,23 @@ * @param heater: heater ID to update the heater control. * @return none *************************************************************************/ -void signalHeaterControlOnQDUpdate( DD_HEATERS_T heater ) +void signalHeaterControlOnQDUpdate( void ) { - if ( D5_HEAT == heater ) + // check heater state + if ( HEATER_EXEC_STATE_CONTROL_TO_TARGET == heatersStatus[ D5_HEAT ].state ) { - // check heater state - if ( HEATER_EXEC_STATE_CONTROL_TO_TARGET == heatersStatus[ heater ].state ) - { - // Reset the adjusted temperature target - isTargetTempAdjusted = FALSE; + // Reset the adjusted temperature target + isTargetTempAdjusted = FALSE; - // Reset the AC heater PWM adjustment - adjustD5PWM = HEATERS_MIN_DUTY_CYCLE; - } + // Reset the AC heater PWM adjustment + adjustD5PWM = HEATERS_MIN_DUTY_CYCLE; } -} -/*********************************************************************//** - * @brief - * The signaltoResetPrimaryHeaterAdjustedTargetTemp function resets the flag to - * update/adjust the primary heater target dialysate temperature - * @details \b Inputs: none - * @details \b Outputs: isTargetTempAdjusted - * @param heater: heater ID to update the heater control. - * @return none - *************************************************************************/ -void signaltoResetPrimaryHeaterAdjustedTargetTemp( void ) -{ - isTargetTempAdjusted = FALSE; + if ( HEATER_EXEC_STATE_CONTROL_TO_TARGET == heatersStatus[ D45_HEAT ].state ) + { + //Change back to ramp state to reset the controller + heatersStatus[ D45_HEAT ].state = HEATER_EXEC_STATE_RAMP_TO_TARGET; + } } /*********************************************************************//** @@ -527,7 +516,7 @@ } else { - measuredTempAtDialyzer = getConductivityTemperature( D27_COND ); + measuredTempAtDialyzer = getFilteredConductivitySensorTemperature( D27_COND ); } F32 calcTargetTemp = getHeaterTargetTemperature( D5_HEAT ); @@ -950,31 +939,31 @@ // assign the feed forward control control[ heater ].data = d5_cap_final_FF; #endif -#ifdef __HEATERS_DEBUG__ - U32 i; - - for ( i = 0; i < NUM_OF_CONTROLLER_SIGNAL; i++ ) - { - pIControlSignal[ i ] = getPIControllerSignals( PI_CONTROLLER_ID_D5_HEAT_OUTER_LOOP, (PI_CONTROLLER_SIGNALS_ID)i ); - } -#endif - } - else - { - measuredTemperature = getFilteredTemperatureValue( D50_TEMP ); - - ctrl = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); - control[ heater ].data = ctrl; //#ifdef __HEATERS_DEBUG__ // U32 i; // // for ( i = 0; i < NUM_OF_CONTROLLER_SIGNAL; i++ ) // { -// pIControlSignal[ i ] = getPIControllerSignals( PI_CONTROLLER_ID_D45_HEAT, (PI_CONTROLLER_SIGNALS_ID)i ); +// pIControlSignal[ i ] = getPIControllerSignals( PI_CONTROLLER_ID_D5_HEAT_OUTER_LOOP, (PI_CONTROLLER_SIGNALS_ID)i ); // } //#endif } + else + { + measuredTemperature = getFilteredTemperatureValue( D50_TEMP ); + ctrl = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); + control[ heater ].data = ctrl; +#ifdef __HEATERS_DEBUG__ + U32 i; + + for ( i = 0; i < NUM_OF_CONTROLLER_SIGNAL; i++ ) + { + pIControlSignal[ i ] = getPIControllerSignals( PI_CONTROLLER_ID_D45_HEAT, (PI_CONTROLLER_SIGNALS_ID)i ); + } +#endif + } + heatersStatus[ heater ].hasTargetTempChanged = FALSE; heatersStatus[ heater ].controlIntervalCounter = 0; Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r94789b2f2324d5901685b6ff7b6224d4af3a0276 -r542755e62be20cbdd396053c5568ef8a13efad05 --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 94789b2f2324d5901685b6ff7b6224d4af3a0276) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 542755e62be20cbdd396053c5568ef8a13efad05) @@ -75,8 +75,7 @@ BOOL setHeaterTargetTemperature( DD_HEATERS_T heater, F32 targetTemperature ); void startHeater( DD_HEATERS_T heater ); F32 getHeaterTargetTemperature( DD_HEATERS_T heater ); -void signalHeaterControlOnQDUpdate( DD_HEATERS_T heater ); -void signaltoResetPrimaryHeaterAdjustedTargetTemp( void ); +void signalHeaterControlOnQDUpdate( void ); void setD28TempFeedbackControl( BOOL enable ); BOOL isHeaterOn( DD_HEATERS_T heater ); void calculateTargetDialysateTemp( void ); Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r94789b2f2324d5901685b6ff7b6224d4af3a0276 -r542755e62be20cbdd396053c5568ef8a13efad05 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 94789b2f2324d5901685b6ff7b6224d4af3a0276) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 542755e62be20cbdd396053c5568ef8a13efad05) @@ -1000,8 +1000,6 @@ // Get the target temperature from TD //targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); calculateTargetDialysateTemp(); - //Reset flag - signaltoResetPrimaryHeaterAdjustedTargetTemp(); // Update the target temperature for heater control setHeaterTargetTemperature( D5_HEAT, getGenDialysateTargetTemperature() );