Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -rcf37ec7519f3dd607e4f91aa448eccc86fb838a7 -r7a4c91c04471aee469d1b4de128bfdf64e3dea1d --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision cf37ec7519f3dd607e4f91aa448eccc86fb838a7) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 7a4c91c04471aee469d1b4de128bfdf64e3dea1d) @@ -1034,23 +1034,32 @@ if ( BICARB_MIX_ID == mixId ) { - result = DIALYSATE_MIXING_OPEN_LOOP_STATE; F32 measuredBicarbConductivity = getFilteredConductivity( D17_COND ); - // if measured conductivity crossed (targetConductivity- deltaConuctivity) , switch to closed loop - if ( measuredBicarbConductivity >= ( getBicarbTargetConductivity() - getBicarbDeltaConductivity() ) ) + + result = DIALYSATE_MIXING_OPEN_LOOP_STATE; + + if ( TRUE != getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DOSING_OPEN_LOOP_CONTROL ) ) { - result = DIALYSATE_MIXING_RAMP_UP_STATE; + // if measured conductivity crossed (targetConductivity- deltaConuctivity) , switch to closed loop + if ( measuredBicarbConductivity >= ( getBicarbTargetConductivity() - getBicarbDeltaConductivity() ) ) + { + result = DIALYSATE_MIXING_RAMP_UP_STATE; + } } } else if ( ACID_MIX_ID == mixId ) { - result = DIALYSATE_MIXING_OPEN_LOOP_STATE; F32 measuredAcidBicarbMixConductivity = getFilteredConductivity( D27_COND ); - // if measured conductivity crossed (targetConductivity- deltaConuctivity) , switch to closed loop - if ( measuredAcidBicarbMixConductivity >= ( getAcidBicarbTargetConductivity() - getAcidBicarbDeltaConductivity() ) ) + result = DIALYSATE_MIXING_OPEN_LOOP_STATE; + + if ( TRUE != getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DOSING_OPEN_LOOP_CONTROL ) ) { - result = DIALYSATE_MIXING_RAMP_UP_STATE; + // if measured conductivity crossed (targetConductivity- deltaConuctivity) , switch to closed loop + if ( measuredAcidBicarbMixConductivity >= ( getAcidBicarbTargetConductivity() - getAcidBicarbDeltaConductivity() ) ) + { + result = DIALYSATE_MIXING_RAMP_UP_STATE; + } } } @@ -1103,6 +1112,8 @@ // control interval for bicarb if ( ( ++dialysateMix[ mixId ].controlTimerCounter >= getDryBicartMixControlInterval() ) ) { + F32 bicarbMixVol; + dialysateMix[ mixId ].controlTimerCounter = 0; // Control based on the measured and target conductivity @@ -1111,10 +1122,9 @@ measuredBicarbConductivity = getFilteredConductivity( D17_COND ); - F32 bicarbMixVol = runPIController( PI_CONTROLLER_ID_BICARB_VOL, getBicarbTargetConductivity(), measuredBicarbConductivity ); - if ( fabs ( getBicarbTargetConductivity() - measuredBicarbConductivity ) > BICARB_DEADBAND_CONTROL ) { + bicarbMixVol = runPIController( PI_CONTROLLER_ID_BICARB_VOL, getBicarbTargetConductivity(), measuredBicarbConductivity ); //Set bicarb mix vol only if its above dead band threshold, else use the previous set vlaue setBicarbMixVol( bicarbMixVol ); } @@ -1130,15 +1140,16 @@ // control interval for acid if ( ( ++dialysateMix[ mixId ].controlTimerCounter >= ACID_MIX_CONTROL_INTERVAL ) ) { + F32 acidMixVol; + dialysateMix[ mixId ].controlTimerCounter = 0; F32 measuredAcidBicarbMixConductivity = getFilteredConductivity( D27_COND ); PI_CONTROLLER_SIGNALS_DATA debugAcidControl; - F32 acidMixVol = runPIController( PI_CONTROLLER_ID_ACID_VOL, getAcidBicarbTargetConductivity(), measuredAcidBicarbMixConductivity ); - if ( fabs ( getAcidBicarbTargetConductivity() - measuredAcidBicarbMixConductivity ) > ACID_DEADBAND_CONTROL ) { + acidMixVol = runPIController( PI_CONTROLLER_ID_ACID_VOL, getAcidBicarbTargetConductivity(), measuredAcidBicarbMixConductivity ); // set acid mix volume if its above dead band threshold , else use previous set value setAcidMixVol( acidMixVol ); } @@ -1206,7 +1217,7 @@ state = DRY_BICART_FILL_WATER_START_STATE; } - // alrm + // TODO: alarm if fill requested without IOFP in Gen mode } return state; @@ -1545,7 +1556,6 @@ static BICARB_CHAMBER_FILL_EXEC_STATE_T handleBicarbChamberCheckLevelState( void ) { BICARB_CHAMBER_FILL_EXEC_STATE_T state = BICARB_CHAMBER_CHECK_LEVEL_STATE; - LVL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); // TODO: set supply in progress to inform BC control to disable alarm setValveState( D64_VALV, VALVE_STATE_CLOSED );