Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rdc783f26994ed6eed74c8e3656fe6c9d38b9f9bd -r77f16abd083c385b3ed9cb0c41a60dff7295022c --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision dc783f26994ed6eed74c8e3656fe6c9d38b9f9bd) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 77f16abd083c385b3ed9cb0c41a60dff7295022c) @@ -578,7 +578,8 @@ if ( DD_PRIMARY_HEATER == heater ) { - setFPGACPrimaryHeaterOnOffControl( (BOOL)control ); + BOOL heaterCntrl = (BOOL)control; + setFPGACPrimaryHeaterOnOffControl( heaterCntrl ); } else { Index: firmware/App/Modes/BalancingChamber.h =================================================================== diff -u -rbf55b31e342873e3d6047b09749628f5fe275d8d -r77f16abd083c385b3ed9cb0c41a60dff7295022c --- firmware/App/Modes/BalancingChamber.h (.../BalancingChamber.h) (revision bf55b31e342873e3d6047b09749628f5fe275d8d) +++ firmware/App/Modes/BalancingChamber.h (.../BalancingChamber.h) (revision 77f16abd083c385b3ed9cb0c41a60dff7295022c) @@ -32,9 +32,9 @@ // ********** public definitions ********** #define FRESH_DIAL_PRESSURE_MIN_PSIG 21.0F ///< Minimum fresh dialysate pressure (PDf) limit for balancing chamber fill operations. -#define FRESH_DIAL_PRESSURE_MAX_PSIG 26.0F ///< Maximum fresh dialysate pressure (PDf) limit for balancing chamber fill operations. -#define SPENT_DIAL_PRESSURE_MIN_PSIG 28.0F ///< Minimum spent dialysate pressure (PDs) limit for balancing chamber fill operations. -#define SPENT_DIAL_PRESSURE_MAX_PSIG 30.0F ///< Maximum spent dialysate pressure (PDs) limit for balancing chamber fill operations. +#define FRESH_DIAL_PRESSURE_MAX_PSIG 27.0F ///< Maximum fresh dialysate pressure (PDf) limit for balancing chamber fill operations. +#define SPENT_DIAL_PRESSURE_MIN_PSIG 27.0F ///< Minimum spent dialysate pressure (PDs) limit for balancing chamber fill operations. +#define SPENT_DIAL_PRESSURE_MAX_PSIG 31.0F ///< Maximum spent dialysate pressure (PDs) limit for balancing chamber fill operations. /// balancing chamber data structure typedef struct Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -rdc783f26994ed6eed74c8e3656fe6c9d38b9f9bd -r77f16abd083c385b3ed9cb0c41a60dff7295022c --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision dc783f26994ed6eed74c8e3656fe6c9d38b9f9bd) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 77f16abd083c385b3ed9cb0c41a60dff7295022c) @@ -55,13 +55,13 @@ static DD_GEND_MODE_STATE_T genDialysateState = DD_GEND_STATE_START; ///< Currently active gen dialysate state. static OVERRIDE_F32_T targetHydChamberFluidTemp; ///< Target hydraulics chamber fluid temperature. -static BOOL isHydChamberTempinRange; ///< Flag indicating hydraulics chamber water temperature is in range. static U32 hydChamberPressureCheckStartTimeMS; ///< Current time when hydraulics chamber pressure check satrted in milliseconds. static U32 spentDialPressureCheckStartTimeMS; ///< Current time when spent dialysate pressure check started in milliseconds. static OVERRIDE_U32_T isDialDeliveryInProgress; ///< To indicate dialysate started delivering to dialyzer for treatment (overrideable) static OVERRIDE_U32_T isDialysateGoodtoDeliver; ///< Flag indicating whether ready to deliver dialysate or not. static U32 genDialysateDataPublicationTimerCounter; ///< Used to schedule generate dialysate data publication to CAN bus. static OVERRIDE_U32_T genDialysateDataPublishInterval; ///< Generate dialysate mode data publish interval. +static F32 lastDialTargetTemperatureSet; ///< last dialysate target temperature set for heater control // ********** private function prototypes ********** @@ -90,7 +90,6 @@ targetHydChamberFluidTemp.ovInitData = HYD_CHAMBER_FLUID_TEMP_C_MIN; targetHydChamberFluidTemp.ovData = HYD_CHAMBER_FLUID_TEMP_C_MIN; targetHydChamberFluidTemp.override = OVERRIDE_RESET; - isHydChamberTempinRange = FALSE; genDialysateState = DD_GEND_STATE_START; isDialysateGoodtoDeliver.data = FALSE; isDialysateGoodtoDeliver.ovData = FALSE; @@ -107,6 +106,7 @@ genDialysateDataPublishInterval.ovInitData = 0; genDialysateDataPublishInterval.override = OVERRIDE_RESET; genDialysateDataPublicationTimerCounter = 0; + lastDialTargetTemperatureSet = 0.0F; //Initialize balancing chamber module initBalanceChamber(); @@ -176,11 +176,15 @@ valveControlForBCClosedState(); setHydValvesStatetoClosedState(); setUFValvesStatetoClosedState(); - setValveState( VWI, VALVE_STATE_OPEN ); //M4 // Get the target temperature from TD targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); + + // Turn on the primary heater + setHeaterTargetTemperature( DD_PRIMARY_HEATER, getGenDilaysateTargetTemperature() ); + startHeater( DD_PRIMARY_HEATER ); + lastDialTargetTemperatureSet = getGenDilaysateTargetTemperature(); break; case DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE: @@ -248,7 +252,12 @@ // stop the motor during pause conditions signalDialysatePumpHardStop( FRESH_DIALYSATE_PUMP ); signalDialysatePumpHardStop( SPENT_DIALYSATE_PUMP ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP1_ACID, FALSE ); + requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, FALSE ); + stopHeater( DD_PRIMARY_HEATER ); + stopHeater( DD_TRIMMER_HEATER ); + //close the DD - water inlet and drain valves? break; @@ -345,7 +354,6 @@ BOOL result = FALSE; LEVEL_STATE_T floaterLevel = getLevelStatus( FLOATER_LEVEL ); //LEVEL_STATE_T spentDialLevel = getLevelStatus( SPENT_DIALYSATE_LEVEL ); - F32 hydChamberTemperature = getTemperatureValue( TEMPSENSORS_HYDRAULICS_PRIMARY_HEATER ); // Get the target temperature from TD targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); @@ -359,26 +367,15 @@ //turn off inlet water valve setValveState( VHI, VALVE_STATE_CLOSED ); - // read latest fluid temperature - hydChamberTemperature = getTemperatureValue( TEMPSENSORS_HYDRAULICS_PRIMARY_HEATER ); - - if ( hydChamberTemperature < targetTemperature ) + if ( lastDialTargetTemperatureSet != targetTemperature ) { - //if fluid temp is lesser, turn on heater + // Update the target temperature for heater control setHeaterTargetTemperature( DD_PRIMARY_HEATER, targetTemperature ); - startHeater( DD_PRIMARY_HEATER ); + lastDialTargetTemperatureSet = targetTemperature; } - else - { - //Turn heater off - if ( TRUE == isHeaterOn( DD_PRIMARY_HEATER ) ) - { - stopHeater( DD_PRIMARY_HEATER ); - } - // Temperature reached to the target setting. - result = TRUE; - } + // Water level reached high. + result = TRUE; } else { @@ -404,7 +401,7 @@ // Allow water inlet to hydraulics chamber if ( TRUE == hydChamberWaterInletControl() ) { - // if water level, temp is range, move to pressure check state + // if water level is met, move to pressure check state setModeGenDStateTransition( DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE ); state = DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE; }