Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -rc9c9b1bade37555a0f226b9cc24529410325e3ed -rdf87716215d606300dd2617a6854b7071c0ce545 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision c9c9b1bade37555a0f226b9cc24529410325e3ed) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision df87716215d606300dd2617a6854b7071c0ce545) @@ -510,6 +510,7 @@ { F32 acidVolume; F32 bicarbVolume; + BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE1_FILL_START; balChamberSWState = BAL_CHAMBER_SW_STATE1; balChamberFillTimeoutCount = 0; @@ -597,6 +598,7 @@ static BAL_CHAMBER_EXEC_STATE_T handleBalChamberConcentrateControl( void ) { BAL_CHAMBER_EXEC_STATE_T state; + freshDialPressure = getFilteredPressure( D18_PRES ); spentDialPressure = getFilteredPressure( D51_PRES ); lastPrevSpentDialPressure = prevSpentDialPressure; @@ -813,6 +815,7 @@ { F32 acidVolume; F32 bicarbVolume; + BAL_CHAMBER_EXEC_STATE_T state = BAL_CHAMBER_STATE2_FILL_START; isBalChamberFillInProgress = FALSE; isPressureStabilizedDuringFill = FALSE; Index: firmware/App/Controllers/ConcentratePumps.h =================================================================== diff -u -rc9c9b1bade37555a0f226b9cc24529410325e3ed -rdf87716215d606300dd2617a6854b7071c0ce545 --- firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision c9c9b1bade37555a0f226b9cc24529410325e3ed) +++ firmware/App/Controllers/ConcentratePumps.h (.../ConcentratePumps.h) (revision df87716215d606300dd2617a6854b7071c0ce545) @@ -32,7 +32,7 @@ // ********** public definitions ********** // For 150 RPM, Diener pump delivers 60ml/min #define CONCENTRATE_PUMP_MAX_SPEED 200.0F ///< Maximum Diener pump speed for concentrate pump in mL/min -#define DOSING_CONCENTRATE_PUMP_SPEED 100.0F ///< Diener pump speed for acid and bicarb dosing pump speed in mL/min +#define DOSING_CONCENTRATE_PUMP_SPEED 100.0F ///< Diener pump speed for acid and bicarb dosing pump speed in mL/min #define DRAIN_BICART_PUMP_SPEED 200.0F ///< Diener pump speed for cartridge drains at maximum speed in mL/min #define DEFAULT_ACID_VOLUME_ML 0.67F ///< Acid concentrate volume in ml. Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -rc9c9b1bade37555a0f226b9cc24529410325e3ed -rdf87716215d606300dd2617a6854b7071c0ce545 --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision c9c9b1bade37555a0f226b9cc24529410325e3ed) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision df87716215d606300dd2617a6854b7071c0ce545) @@ -315,35 +315,35 @@ dryBiCartType.ovInitData = 0; dryBiCartType.override = OVERRIDE_RESET; - dryBiCartAcidMixVolume.data = DEFAULT_ACID_VOLUME_ML; - dryBiCartAcidMixVolume.ovData = DEFAULT_ACID_VOLUME_ML; - dryBiCartAcidMixVolume.ovInitData = 0.0F; - dryBiCartAcidMixVolume.override = OVERRIDE_RESET; + dryBiCartAcidMixVolume.data = DEFAULT_ACID_VOLUME_ML; + dryBiCartAcidMixVolume.ovData = DEFAULT_ACID_VOLUME_ML; + dryBiCartAcidMixVolume.ovInitData = 0.0F; + dryBiCartAcidMixVolume.override = OVERRIDE_RESET; - dryBiCartBicarbMixVolume.data = DEFAULT_BICARB_VOLUME_ML; - dryBiCartBicarbMixVolume.ovData = DEFAULT_BICARB_VOLUME_ML; - dryBiCartBicarbMixVolume.ovInitData = 0.0F; - dryBiCartBicarbMixVolume.override = OVERRIDE_RESET; + dryBiCartBicarbMixVolume.data = DEFAULT_BICARB_VOLUME_ML; + dryBiCartBicarbMixVolume.ovData = DEFAULT_BICARB_VOLUME_ML; + dryBiCartBicarbMixVolume.ovInitData = 0.0F; + dryBiCartBicarbMixVolume.override = OVERRIDE_RESET; - dryBiCartAcidMixVolumeKpGain.data = ACID_VOL_CONTROL_P_COEFFICIENT; - dryBiCartAcidMixVolumeKpGain.ovData = ACID_VOL_CONTROL_P_COEFFICIENT; - dryBiCartAcidMixVolumeKpGain.ovInitData = 0.0F; - dryBiCartAcidMixVolumeKpGain.override = OVERRIDE_RESET; + dryBiCartAcidMixVolumeKpGain.data = ACID_VOL_CONTROL_P_COEFFICIENT; + dryBiCartAcidMixVolumeKpGain.ovData = ACID_VOL_CONTROL_P_COEFFICIENT; + dryBiCartAcidMixVolumeKpGain.ovInitData = 0.0F; + dryBiCartAcidMixVolumeKpGain.override = OVERRIDE_RESET; - dryBiCartAcidMixVolumeKiGain.data = ACID_VOL_CONTROL_I_COEFFICIENT; - dryBiCartAcidMixVolumeKiGain.ovData = ACID_VOL_CONTROL_I_COEFFICIENT; - dryBiCartAcidMixVolumeKiGain.ovInitData = 0.0F; - dryBiCartAcidMixVolumeKiGain.override = OVERRIDE_RESET; + dryBiCartAcidMixVolumeKiGain.data = ACID_VOL_CONTROL_I_COEFFICIENT; + dryBiCartAcidMixVolumeKiGain.ovData = ACID_VOL_CONTROL_I_COEFFICIENT; + dryBiCartAcidMixVolumeKiGain.ovInitData = 0.0F; + dryBiCartAcidMixVolumeKiGain.override = OVERRIDE_RESET; - dryBiCartBicarbMixVolumeKpGain.data = BICARB_VOL_CONTROL_P_COEFFICIENT; - dryBiCartBicarbMixVolumeKpGain.ovData = BICARB_VOL_CONTROL_P_COEFFICIENT; - dryBiCartBicarbMixVolumeKpGain.ovInitData = 0.0F; - dryBiCartBicarbMixVolumeKpGain.override = OVERRIDE_RESET; + dryBiCartBicarbMixVolumeKpGain.data = BICARB_VOL_CONTROL_P_COEFFICIENT; + dryBiCartBicarbMixVolumeKpGain.ovData = BICARB_VOL_CONTROL_P_COEFFICIENT; + dryBiCartBicarbMixVolumeKpGain.ovInitData = 0.0F; + dryBiCartBicarbMixVolumeKpGain.override = OVERRIDE_RESET; - dryBiCartBicarbMixVolumeKiGain.data = BICARB_VOL_CONTROL_I_COEFFICIENT; - dryBiCartBicarbMixVolumeKiGain.ovData = BICARB_VOL_CONTROL_I_COEFFICIENT; - dryBiCartBicarbMixVolumeKiGain.ovInitData = 0.0F; - dryBiCartBicarbMixVolumeKiGain.override = OVERRIDE_RESET; + dryBiCartBicarbMixVolumeKiGain.data = BICARB_VOL_CONTROL_I_COEFFICIENT; + dryBiCartBicarbMixVolumeKiGain.ovData = BICARB_VOL_CONTROL_I_COEFFICIENT; + dryBiCartBicarbMixVolumeKiGain.ovInitData = 0.0F; + dryBiCartBicarbMixVolumeKiGain.override = OVERRIDE_RESET; dryBiCartBicarbTargetConductivity.data = DRY_BICARB_TARGET_CONDUCTIVITY; dryBiCartBicarbTargetConductivity.ovData = DRY_BICARB_TARGET_CONDUCTIVITY; @@ -355,15 +355,15 @@ dryBiCartBicarbDeltaConductivity.ovInitData = 0.0F; dryBiCartBicarbDeltaConductivity.override = OVERRIDE_RESET; - dryBiCartDialysateTargetConductivity.data = DRY_ACID_BICARB_TARGET_CONDUCTIVITY; - dryBiCartDialysateTargetConductivity.ovData = DRY_ACID_BICARB_TARGET_CONDUCTIVITY; - dryBiCartDialysateTargetConductivity.ovInitData = 0.0F; - dryBiCartDialysateTargetConductivity.override = OVERRIDE_RESET; + dryBiCartDialysateTargetConductivity.data = DRY_ACID_BICARB_TARGET_CONDUCTIVITY; + dryBiCartDialysateTargetConductivity.ovData = DRY_ACID_BICARB_TARGET_CONDUCTIVITY; + dryBiCartDialysateTargetConductivity.ovInitData = 0.0F; + dryBiCartDialysateTargetConductivity.override = OVERRIDE_RESET; - dryBiCartDialysateDeltaConductivity.data = DRY_ACID_BICARB_DELTA_CONDUCTIVITY; - dryBiCartDialysateDeltaConductivity.ovData = DRY_ACID_BICARB_DELTA_CONDUCTIVITY; - dryBiCartDialysateDeltaConductivity.ovInitData = 0.0F; - dryBiCartDialysateDeltaConductivity.override = OVERRIDE_RESET; + dryBiCartDialysateDeltaConductivity.data = DRY_ACID_BICARB_DELTA_CONDUCTIVITY; + dryBiCartDialysateDeltaConductivity.ovData = DRY_ACID_BICARB_DELTA_CONDUCTIVITY; + dryBiCartDialysateDeltaConductivity.ovInitData = 0.0F; + dryBiCartDialysateDeltaConductivity.override = OVERRIDE_RESET; dryBiCartUpperCartPressure.data = DRY_BICART_FILL_COMPLETE_SUPPLY_PRESSURE; dryBiCartUpperCartPressure.ovData = DRY_BICART_FILL_COMPLETE_SUPPLY_PRESSURE; @@ -375,10 +375,10 @@ dryBiCartLowerCartPressure.ovInitData = 0.0F; dryBiCartLowerCartPressure.override = OVERRIDE_RESET; - dryBiCartMixControlInterval.data = MIXING_CONTROL_INTERVAL; - dryBiCartMixControlInterval.ovData = MIXING_CONTROL_INTERVAL; - dryBiCartMixControlInterval.ovInitData = 0.0F; - dryBiCartMixControlInterval.override = OVERRIDE_RESET; + dryBiCartMixControlInterval.data = MIXING_CONTROL_INTERVAL; + dryBiCartMixControlInterval.ovData = MIXING_CONTROL_INTERVAL; + dryBiCartMixControlInterval.ovInitData = 0.0F; + dryBiCartMixControlInterval.override = OVERRIDE_RESET; dryBiCartFillStartTime = 0; lastFillDurationInMS = 0; @@ -467,7 +467,7 @@ { updateDrybicartOperation(); - if( getCurrentBalancingChamberExecState() > BAL_CHAMBER_STATE_START ) + if( getCurrentBalancingChamberExecState() > BAL_CHAMBER_STATE_IDLE ) { // closed loop bicarb and acid dosing controller execDialysateCompositionMixingController(); @@ -1154,41 +1154,36 @@ { dialysateMix[ mixId ].controlTimerCounter = 0; - // Control happen only when balancing chamber fill is complete. - //if ( FALSE == getBalancingChamberFillinProgressStatus() ) + // Control based on the measured and target conductivity + if ( BICARB_MIX_ID == mixId ) { - // Control based on the measured and target conductivity - if ( BICARB_MIX_ID == mixId ) - { - PI_CONTROLLER_SIGNALS_DATA debugBicarbControl; - F32 measuredBicarbConductivity; - //U32 i; + PI_CONTROLLER_SIGNALS_DATA debugBicarbControl; + F32 measuredBicarbConductivity; - measuredBicarbConductivity = getFilteredConductivity( D17_COND ); - F32 bicarbMixVol = runPIController(PI_CONTROLLER_ID_BICARB_VOL, getBicarbTargetConductivity(), measuredBicarbConductivity); - //Set bicarb dosing vol - setBicarbMixVol( bicarbMixVol ); + measuredBicarbConductivity = getFilteredConductivity( D17_COND ); + F32 bicarbMixVol = runPIController(PI_CONTROLLER_ID_BICARB_VOL, getBicarbTargetConductivity(), measuredBicarbConductivity); + //Set bicarb dosing vol + setBicarbMixVol( bicarbMixVol ); - debugBicarbControl = getDebugPIControllerSignals( PI_CONTROLLER_ID_BICARB_VOL ); + debugBicarbControl = getDebugPIControllerSignals( PI_CONTROLLER_ID_BICARB_VOL ); - memcpy((void*)&bicarbControlSignals, (void*)&debugBicarbControl, sizeof(PI_CONTROLLER_SIGNALS_DATA)); - } - // ACID Mix - else if ( ACID_MIX_ID == mixId ) - { - F32 measuredAcidBicarbMixConductivity; - PI_CONTROLLER_SIGNALS_DATA debugAcidControl; + memcpy((void*)&bicarbControlSignals, (void*)&debugBicarbControl, sizeof(PI_CONTROLLER_SIGNALS_DATA)); + } + // ACID Mix + else if ( ACID_MIX_ID == mixId ) + { + F32 measuredAcidBicarbMixConductivity; + PI_CONTROLLER_SIGNALS_DATA debugAcidControl; - measuredAcidBicarbMixConductivity = getFilteredConductivity( D27_COND ); + measuredAcidBicarbMixConductivity = getFilteredConductivity( D27_COND ); - F32 acidMixVol = runPIController(PI_CONTROLLER_ID_ACID_VOL, getAcidBicarbTargetConductivity(), measuredAcidBicarbMixConductivity); - //Set acid dosing vol - setAcidMixVol( acidMixVol ); + F32 acidMixVol = runPIController(PI_CONTROLLER_ID_ACID_VOL, getAcidBicarbTargetConductivity(), measuredAcidBicarbMixConductivity); + //Set acid dosing vol + setAcidMixVol( acidMixVol ); - debugAcidControl = getDebugPIControllerSignals( PI_CONTROLLER_ID_ACID_VOL ); + debugAcidControl = getDebugPIControllerSignals( PI_CONTROLLER_ID_ACID_VOL ); - memcpy((void*)&acidControlSignals, (void*)&debugAcidControl, sizeof(PI_CONTROLLER_SIGNALS_DATA)); - } + memcpy((void*)&acidControlSignals, (void*)&debugAcidControl, sizeof(PI_CONTROLLER_SIGNALS_DATA)); } } @@ -1575,7 +1570,7 @@ { BICARB_CHAMBER_FILL_EXEC_STATE_T state = BICARB_CHAMBER_FILL_STATE; F32 d66Pressure = getFilteredPressure( D66_PRES ); - LEVEL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); + LEVEL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); // Once level reached, close the valve if ( LEVEL_STATE_HIGH == bicarbChamberLevel ) Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rc9c9b1bade37555a0f226b9cc24529410325e3ed -rdf87716215d606300dd2617a6854b7071c0ce545 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision c9c9b1bade37555a0f226b9cc24529410325e3ed) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision df87716215d606300dd2617a6854b7071c0ce545) @@ -284,11 +284,10 @@ { MSG_ID_FP_DEF_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenPermeateDefDataPublishIntervalOverride}, { MSG_ID_FP_DEF_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testGenPermeateDefDataPublishIntervalOverride}, { MSG_ID_FP_DEF_STATUS_REQUEST, &testGetFPDefeaturedStatus }, - - { MSG_ID_DD_BICARB_DOSE_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartBicarbMixVolControlKiGainOverride }, - { MSG_ID_DD_BICARB_DOSE_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKpGainOverride }, - { MSG_ID_DD_ACID_DOSE_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKpGainOverride }, - { MSG_ID_DD_ACID_DOSE_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKiGainOverride }, + { MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartBicarbMixVolControlKiGainOverride }, + { MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKpGainOverride }, + { MSG_ID_DD_ACID_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKpGainOverride }, + { MSG_ID_DD_ACID_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKiGainOverride }, { MSG_ID_DD_BICART_UPPER_PRESSURE_OVERRIDE_REQUEST, &testDryBiCartUpperCartPressureOverride }, { MSG_ID_DD_BICART_LOWER_PRESSURE_OVERRIDE_REQUEST, &testDryBiCartLowerCartPressureOverride } , { MSG_ID_FP_SET_OPERATION_SUB_MODE_REQUEST, &testSetFPOperationSubMode },