Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r3417933e6edf61a914c428e2fa944b3b349272a4 -r6dd41ba21a4a1f7b8dd62627306f71c5d055307d --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 3417933e6edf61a914c428e2fa944b3b349272a4) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 6dd41ba21a4a1f7b8dd62627306f71c5d055307d) @@ -136,7 +136,7 @@ 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 -static F32 lastDialTargetTemperatureSet; ///< last dialysate target temperature set for heater control +static F32 lastDialTargetTemperatureSet[ NUM_OF_DD_HEATERS ]; ///< last dialysate target temperature set for heater control static BOOL startupHeaterControl; ///< First time control with the energy equation. //For testing @@ -200,7 +200,8 @@ heatersStatus[ D5_HEAT ].controlIntervalCounter = D5_HEAT_CONTROL_INTERVAL_START_COUNT; heatersStatus[ D45_HEAT ].controlIntervalCounter = 0; startupHeaterControl = TRUE; - lastDialTargetTemperatureSet = 0.0F; + lastDialTargetTemperatureSet[ D5_HEAT ] = 0.0F; + lastDialTargetTemperatureSet[ D45_HEAT ] = 0.0F; primaryTargetTempAdjCounter = 0; adjustedPrimaryTargetTemp = 0.0F; isTargetTempAdjusted = FALSE; @@ -273,12 +274,12 @@ // Check if the requested temperature is within the allowed range if ( ( ( targetTemperature >= HEATER_TARGET_TEMPERATURE_MIN ) && ( targetTemperature <= HEATER_TARGET_TEMPERATURE_MAX ) ) && - ( lastDialTargetTemperatureSet != targetTemperature ) ) + ( lastDialTargetTemperatureSet[ heater ] != targetTemperature ) ) { targetTempC[ heater ].data = targetTemperature; heatersStatus[ heater ].hasTargetTempChanged = TRUE; result = TRUE; - lastDialTargetTemperatureSet = targetTemperature; + lastDialTargetTemperatureSet[ heater ] = targetTemperature; if ( D5_HEAT == heater ) { @@ -773,31 +774,31 @@ control[ heater ].data = ctrl; } } -#ifdef __HEATERS_DEBUG__ - U32 i; - - for ( i = 0; i < NUM_OF_CONTROLLER_SIGNAL; i++ ) - { - pIControlSignal[ i ] = getPIControllerSignals( PI_CONTROLLER_ID_D5_HEAT, (PI_CONTROLLER_SIGNALS_ID)i ); - } -#endif - } - else - { - measuredTemperature = getD50AverageTemperature(); - - 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, (PI_CONTROLLER_SIGNALS_ID)i ); // } //#endif } + else + { + measuredTemperature = getD50AverageTemperature(); + 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;