Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -r145fd716a856f864f39fb0f9884865f6e45b9256 -ra08bda2a0610a27e3147fed72e1aca7b798a1bb0 --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision a08bda2a0610a27e3147fed72e1aca7b798a1bb0) @@ -57,7 +57,7 @@ #define DRY_BICART_FILL_INITIATE_PRESSURE_PSI 1.5F ///< Minimum pressure required to initiate the dry bicart fill process. #define DRY_BICART_FILL_COMPLETE_SUPPLY_PRESSURE_PSI 10.0F ///< Maximum pressure allowed at bicart fill during supply process/state #define DRY_BICART_FILL_INITIATE_SUPPLY_PRESSURE_PSI 3.0F ///< Minimum pressure required to initiate the dry bicart fill during supply process/state -#define MAX_DRY_BICART_FILL_COMPLETE_PRESSURE 20.0F ///< Very max dry bicart fill complete pressure for persistence on d66 +#define MAX_DRY_BICART_FILL_COMPLETE_PRESSURE 22.0F ///< Very max dry bicart fill complete pressure for persistence on d66 #define DRY_BICART_DEFAULT_MAX_FILL_CYCLE_CNT 10 ///< Default max fill cycle allowed for dry bicart fill/mix with water. #define DRY_BICART_MAX_FILL_CYCLE_CNT 15 ///< Max fill cycle allowed (by override) for dry bicart fill/mix with water. #define DRY_BICART_MINIMUM_FILL_CYCLE_CNT 3 ///< Minimum fill cycle count for filling dry bicart @@ -735,19 +735,7 @@ { dryBiCartPersistenceStartTime = getMSTimerCount(); } - //check the the maximum cart pressure during persistence on D66 - if ( d66Pressure >= MAX_DRY_BICART_FILL_COMPLETE_PRESSURE ) - { - setValveState( D65_VALV, VALVE_STATE_CLOSED ); - lastFillDurationInMS = currentFillDurationInMS; - currentFillDurationInMS = calcTimeSince( dryBiCartFillStartTime ); - //Increment number of fill cycle - biCartFillCycleCounter++; - dryBiCartPersistenceStartTime = 0; - - state = DRY_BICART_DEGAS_START_STATE; - } // 200 ms persistence on D66 pressure since pressure overshoot just after D65 opening if ( TRUE == didTimeout( dryBiCartPersistenceStartTime, DRY_BICART_PERSISTENCE_DURATION_MS ) ) { @@ -762,6 +750,10 @@ state = DRY_BICART_DEGAS_START_STATE; } } + else + { + dryBiCartPersistenceStartTime = 0; + } //TODO:Handle timeout alarm for opening D65 valve too long return state; @@ -836,6 +828,10 @@ state = DRY_BICART_FILL_DURATION_CHECK_STATE; } + else + { + dryBiCartPersistenceStartTime = 0; + } } //TODO: Alarm when vent timeout exceeded, but pressure not dropped below expected PSI (0 psi) @@ -1002,15 +998,7 @@ { dryBiCartPersistenceStartTime = getMSTimerCount(); } - // check the the maximum cart pressure during persistence on D66 - if ( d66Pressure >= MAX_DRY_BICART_FILL_COMPLETE_PRESSURE ) - { - // Close water inlet valve as D66 pressure reaches max PSI(20) after persistence - setValveState( D65_VALV, VALVE_STATE_CLOSED ); - dryBiCartPersistenceStartTime = 0; - state = BICARB_CHAMBER_SUPPLY_STATE; - } // 200 ms persistence on D66 pressure since pressure overshoot just after D65 opening if ( TRUE == didTimeout( dryBiCartPersistenceStartTime, DRY_BICART_PERSISTENCE_DURATION_MS ) ) { @@ -1021,6 +1009,10 @@ state = BICARB_CHAMBER_SUPPLY_STATE; } } + else + { + dryBiCartPersistenceStartTime = 0; + } return state; } @@ -1127,6 +1119,11 @@ dryBiCartPersistenceStartTime = 0; } } + else + { + dryBiCartPersistenceStartTime = 0; + drybicartPersistenceOnLowercartPressureStartTime = 0; + } return state; } Index: firmware/App/Controllers/MixingControl.c =================================================================== diff -u -r145fd716a856f864f39fb0f9884865f6e45b9256 -ra08bda2a0610a27e3147fed72e1aca7b798a1bb0 --- firmware/App/Controllers/MixingControl.c (.../MixingControl.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) +++ firmware/App/Controllers/MixingControl.c (.../MixingControl.c) (revision a08bda2a0610a27e3147fed72e1aca7b798a1bb0) @@ -725,16 +725,18 @@ PI_CONTROLLER_SIGNALS_DATA debugBicarbControl; F32 measuredBicarbConductivity = getFilteredConductivity( D17_COND ); F32 bicarbConductivity = getBicarbTargetConductivity();//getBicarbConductivityPre(); + //TODO: ALARM if measuredDialysateConductivity or bicarbConductivity is or both 0 if ( fabs ( bicarbConductivity - measuredBicarbConductivity ) > BICARB_DEADBAND_CONTROL ) { - bicarbMixVol = runPIController( PI_CONTROLLER_ID_BICARB_VOL, getBicarbConductivityPre() /*getBicarbTargetConductivity()*/, measuredBicarbConductivity ); + bicarbMixVol = runPIController( PI_CONTROLLER_ID_BICARB_VOL, bicarbConductivity, measuredBicarbConductivity ); //Set bicarb mix vol only if its above dead band threshold, else use the previous set vlaue + // Note: bicarb volume will impact the D10 pump , if volume is set to 0 , then D10 doesn't run setBicarbMixVol( bicarbMixVol ); } else { - //use the previous value + //use the previous value, this is for debug lastBicarbMixVolume = getBicarbMixVol(); } @@ -757,16 +759,18 @@ F32 measuredDialysateConductivity = getFilteredConductivity( D27_COND ); F32 DialysateConductivity = getDialysateTargetConductivity();//getTotalConductivity(); PI_CONTROLLER_SIGNALS_DATA debugAcidControl; + //TODO: ALARM if measuredDialysateConductivity or DialysateConductivity is or both 0 if ( fabs ( DialysateConductivity - measuredDialysateConductivity ) > ACID_DEADBAND_CONTROL ) { acidMixVol = runPIController( PI_CONTROLLER_ID_ACID_VOL, DialysateConductivity, measuredDialysateConductivity ); // set acid mix volume if its above dead band threshold , else use previous set value + // Note: if acid volume is set as 0, then D11 pump doesn't run setAcidMixVol( acidMixVol ); } else { - // use the previous value + // use the previous value, this is for debug lastAcidMixVolume = getAcidMixVol(); }