Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r5d82009d1baa2b52122065934481745bf4de223b -r9779d54c908734795f7b03b0ba8c409fc3115437 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 5d82009d1baa2b52122065934481745bf4de223b) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 9779d54c908734795f7b03b0ba8c409fc3115437) @@ -54,7 +54,8 @@ #define ACID_BICARB_CONCENTRATE_ADDITION_MULTIPLER 1.06 ///< Acid and bicarbonate concentrates make up around 6% to total volume. #define FLOW_INTEGRATED_VOLUME_CHECK_TOLERANCE 0.1 ///< Flow integrated volume has 10% tolerance compare to load cell reading. -#define CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN 40.0 ///< Concentrate pump speed during priming in mL/min. +#define BICARB_CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN 40.0 ///< Bicarb concentrate pump speed during priming in mL/min. +#define ACID_CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN 30.0 ///< Acid concentrate pump speed during priming in mL/min. #define CONCENTRATE_TEST_TIME_OUT_MS ( 30 * MS_PER_SECOND ) ///< Concentrate test time out period in ms. #define WATER_QUALITY_CHECK_TIME_OUT_MS ( 30 * MS_PER_SECOND ) ///< Inlet water quality check time out period in ms. @@ -65,9 +66,9 @@ #define CONCENTRATION_BOTTLE_LOW_VOLUME_ML 100.0 ///< Concentration bottle low volume in ml. /// Multiplier to convert flow (L/min) into volume (mL) for period of general task interval. -static const F32 RO_FLOW_INTEGRATOR = ( ( ML_PER_LITER * TASK_GENERAL_INTERVAL ) / ( SEC_PER_MIN * MS_PER_SECOND ) ); +static const F32 RO_FLOW_INTEGRATOR = ( (F32)( ML_PER_LITER * TASK_GENERAL_INTERVAL ) / (F32)( SEC_PER_MIN * MS_PER_SECOND ) ); /// Multiplier to convert flow (mL/min) into volume (mL) for period of general task interval. -static const F32 CONCENTRATE_PUMP_FLOW_INTEGRATOR = ( TASK_GENERAL_INTERVAL / ( SEC_PER_MIN * MS_PER_SECOND ) ); +static const F32 CONCENTRATE_PUMP_FLOW_INTEGRATOR = ( (F32)TASK_GENERAL_INTERVAL / (F32)( SEC_PER_MIN * MS_PER_SECOND ) ); // ********** private data ********** @@ -134,8 +135,10 @@ *************************************************************************/ void transitionToFillMode( void ) { - initFillMode(); + DG_RESERVOIR_ID_T inactiveReservoir = getInactiveReservoir(); + initFillMode(); + reservoirBaseWeight = getReservoirWeight( inactiveReservoir ); dialysateFillStartTime = getMSTimerCount(); // Set initial actuator states @@ -242,7 +245,7 @@ requestConcentratePumpsOff( CONCENTRATEPUMPS_CP1_ACID ); requestConcentratePumpsOn( CONCENTRATEPUMPS_CP2_BICARB ); #ifndef DISABLE_MIXING - setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN ); + setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, BICARB_CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN ); #endif result = DG_FILL_MODE_STATE_BICARB_PUMP_CHECK; } @@ -282,7 +285,7 @@ requestConcentratePumpsOn( CONCENTRATEPUMPS_CP1_ACID ); requestConcentratePumpsOff( CONCENTRATEPUMPS_CP2_BICARB ); #ifndef DISABLE_MIXING - setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN ); + setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, ACID_CONCENTRATE_PUMP_PRIME_SPEED_ML_MIN ); #endif result = DG_FILL_MODE_STATE_ACID_PUMP_CHECK; } @@ -353,19 +356,21 @@ static DG_FILL_MODE_STATE_T handleDialysateProductionState( void ) { DG_FILL_MODE_STATE_T result = DG_FILL_MODE_STATE_DIALYSATE_PRODUCTION; - DG_RESERVOIR_ID_T inactiveReservoir = getInactiveReservoir(); #ifndef DISABLE_DIALYSATE_CHECK if ( ( TRUE == isWaterQualityGood() ) && ( TRUE == checkDialysateTemperature() ) ) #else if ( TRUE ) #endif { - reservoirBaseWeight = getReservoirWeight( inactiveReservoir ); - requestConcentratePumpsOn( CONCENTRATEPUMPS_CP1_ACID ); - requestConcentratePumpsOn( CONCENTRATEPUMPS_CP2_BICARB ); - setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); - result = DG_FILL_MODE_STATE_DELIVER_DIALYSATE; + if ( ( getConductivityValue( CONDUCTIVITYSENSORS_CD1_SENSOR ) < MIN_BICARB_CONCENTRATE_CONDUCTIVITY ) && + ( getConductivityValue( CONDUCTIVITYSENSORS_CD2_SENSOR ) < MIN_BICARB_CONCENTRATE_CONDUCTIVITY ) ) + { + requestConcentratePumpsOn( CONCENTRATEPUMPS_CP1_ACID ); + requestConcentratePumpsOn( CONCENTRATEPUMPS_CP2_BICARB ); + setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); + result = DG_FILL_MODE_STATE_DELIVER_DIALYSATE; + } } return result; @@ -411,7 +416,6 @@ setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); result = DG_FILL_MODE_STATE_DIALYSATE_PRODUCTION; } -#endif if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_ACID_CONDUCTIVITY_OUT_OF_RANGE, isAcidConductivityOutOfRange ) ) { @@ -430,6 +434,7 @@ setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); result = DG_FILL_MODE_STATE_PAUSED; } +#endif if ( ( ACID_CONCENTRATION_BOTTLE_VOLUME_ML - getUsedAcidVolume() ) <= CONCENTRATION_BOTTLE_LOW_VOLUME_ML ) { Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r89259a1e69799a051874afaf351c37091bef26da -r9779d54c908734795f7b03b0ba8c409fc3115437 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 89259a1e69799a051874afaf351c37091bef26da) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 9779d54c908734795f7b03b0ba8c409fc3115437) @@ -410,7 +410,7 @@ *************************************************************************/ F32 getReservoirWeight( DG_RESERVOIR_ID_T reservoirId ) { - return getLoadCellLargeFilteredWeight( associatedLoadCell[ reservoirId ] ); + return getLoadCellSmallFilteredWeight( associatedLoadCell[ reservoirId ] ); } /*********************************************************************//**