Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -r9b2aa25492c9286b9c1d5b0f4ce9e3676d9ade84 -rc9c9b1bade37555a0f226b9cc24529410325e3ed --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 9b2aa25492c9286b9c1d5b0f4ce9e3676d9ade84) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision c9c9b1bade37555a0f226b9cc24529410325e3ed) @@ -84,13 +84,13 @@ #define BICARB_VOL_CONTROL_P_COEFFICIENT 0.00008484 ///< Proportional gain (kp) #define BICARB_VOL_CONTROL_I_COEFFICIENT 0.00033936 ///< Integral gain. (ki) -#define MIN_BICARB_VOLUME_MLPM 0.868686869 ///< Minimum target bicarb in mL/min. -#define MAX_BICARB_VOLUME_MLPM 1.8 ///< Maximum target bicarb volume in mL/min. +#define MIN_BICARB_VOLUME_ML 0.868686869 ///< Minimum target bicarb in mL/min. +#define MAX_BICARB_VOLUME_ML 1.8 ///< Maximum target bicarb volume in mL/min. #define ACID_VOL_CONTROL_P_COEFFICIENT (0.00000997/2) ///< Proportional gain (kp) #define ACID_VOL_CONTROL_I_COEFFICIENT (0.00003988/2) ///< Integral gain. (ki) -#define MIN_ACID_VOLUME_MLPM 0.3 ///< Minimum target acid volume in mL/min. -#define MAX_ACID_VOLUME_MLPM 1.0 ///< Maximum target acid volume in mL/min. +#define MIN_ACID_VOLUME_ML 0.3 ///< Minimum target acid volume in mL/min. +#define MAX_ACID_VOLUME_ML 1.0 ///< Maximum target acid volume in mL/min. #define STD_BICARB_DOSING 1.146666667F ///< Standard bicarb dosing volume #define STD_ACID_DOSING 0.666666667F ///< Standard acid dosing volume @@ -394,13 +394,13 @@ initializePIController(PI_CONTROLLER_ID_BICARB_VOL, 0.0F,\ getBicarbKpGainCoefficient(), getBicarbKiGainCoefficient(),\ - MIN_BICARB_VOLUME_MLPM, MAX_BICARB_VOLUME_MLPM, FALSE, MIX_NO_FEED_FORWARD ); + MIN_BICARB_VOLUME_ML, MAX_BICARB_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); resetPIController(PI_CONTROLLER_ID_BICARB_VOL, STD_BICARB_DOSING, MIX_NO_FEED_FORWARD); initializePIController(PI_CONTROLLER_ID_ACID_VOL, 0.0F, \ getAcidKpGainCoefficient(), getAcidKiGainCoefficient(),\ - MIN_ACID_VOLUME_MLPM, MAX_ACID_VOLUME_MLPM, FALSE, MIX_NO_FEED_FORWARD ); + MIN_ACID_VOLUME_ML, MAX_ACID_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); resetPIController(PI_CONTROLLER_ID_ACID_VOL, STD_ACID_DOSING, MIX_NO_FEED_FORWARD); } @@ -1584,11 +1584,11 @@ state = BICARB_CHAMBER_PRESSURE_CHECK_STATE; } // Open water inlet valve to fill the bicart - else if ( d66Pressure <= getDryBicartLowerCartPressure() ) + /*else if ( d66Pressure <= getDryBicartLowerCartPressure() ) { setValveState( D65_VALV, VALVE_STATE_OPEN ); state = BICARB_CHAMBER_PRESSURE_CHECK_STATE; - } + }*/ else { state = BICARB_CHAMBER_PRESSURE_CHECK_STATE; @@ -1621,14 +1621,14 @@ dryBiCarbSypplyVentStartTime = getMSTimerCount(); state = BICARB_SUPPLY_VENT_START_STATE; } - else if ( d66Pressure <= getDryBicartLowerCartPressure() ) + /*else if ( d66Pressure <= getDryBicartLowerCartPressure() ) { setValveState( D65_VALV, VALVE_STATE_OPEN ); } // Close water inlet valve as fill is complete. else if ( d66Pressure >= getDryBicartUpperCartPressure() ) { setValveState( D65_VALV, VALVE_STATE_CLOSED ); - } + }*/ return state; } @@ -1651,38 +1651,42 @@ F32 tmpD66Pressure = getFilteredPressure( D66_PRES ); setpoint = d66Pressure - 1.0; + if ( ( d66Pressure > DRY_BICART_FILL_INITIATE_SUPPLY_PRESSURE ) ) + { + setValveState( D64_VALV, VALVE_STATE_OPEN ); + state = BICARB_SUPPLY_VENT_END_STATE; + } - //if ( TRUE == didTimeout( dryBiCarbSupplyStartTime, 10 ) ) -#if 1 +#if 0 while ( tmpD66Pressure >= getDryBicartLowerCartPressure() && tmpD66Pressure >= setpoint ) { //setpoint = d66Pressure - 1.0; // Venting loop: stay open until target PSI is reached setValveState( D64_VALV, VALVE_STATE_CLOSED ); setValveState( D85_VALV, VALVE_STATE_OPEN ); startTime = getMSTimerCount(); - while ( TRUE != didTimeout( startTime, 25 ) ) + while ( TRUE != didTimeout( startTime, 12 ) ) { } // close the vallve setValveState( D85_VALV, VALVE_STATE_CLOSED ); setValveState( D64_VALV, VALVE_STATE_OPEN ); startTime = getMSTimerCount(); - while ( TRUE != didTimeout( startTime, 25 ) ) + while ( TRUE != didTimeout( startTime, 100 ) ) { } tmpD66Pressure = getFilteredPressure( D66_PRES ); //sleep } #endif - if ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_SUPPLY_VENT_TIME_MS ) ) + else if ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_SUPPLY_VENT_TIME_MS ) ) { //Vent bicart after 1 sec setValveState( D85_VALV, VALVE_STATE_OPEN ); } - if ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_SUPPLY_VENT_MAX_TIME_MS ) ) + else if ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_SUPPLY_VENT_MAX_TIME_MS ) ) { setValveState( D85_VALV, VALVE_STATE_CLOSED ); //Vent chamber F after 200 ms @@ -1692,8 +1696,8 @@ } // D66 pressure drops or time out - if ( ( d66Pressure <= DRY_BICART_FILL_VENT_COMPLETE_PRESSURE ) || - ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_FILL_VENT_MAX_TIME_MS ) ) ) + else if ( ( d66Pressure <= DRY_BICART_FILL_INITIATE_SUPPLY_PRESSURE ) /*|| + ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_FILL_VENT_MAX_TIME_MS ) )*/ ) { setValveState( D64_VALV, VALVE_STATE_OPEN ); setValveState( D85_VALV, VALVE_STATE_CLOSED ); @@ -1720,7 +1724,7 @@ if ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_SUPPLY_VENT_TIME_MS ) ) { setValveState( D85_VALV, VALVE_STATE_CLOSED ); - setValveState( D64_VALV, VALVE_STATE_CLOSED); + //setValveState( D64_VALV, VALVE_STATE_CLOSED); bicarbChamberFillRequested.data = FALSE; // for this request override also cleared @@ -2113,9 +2117,9 @@ { BOOL result = f32Override( message, &dryBiCartBicarbMixVolumeKpGain ); - initializePIController(PI_CONTROLLER_ID_BICARB_VOL, MIN_BICARB_VOLUME_MLPM,\ + initializePIController(PI_CONTROLLER_ID_BICARB_VOL, MIN_BICARB_VOLUME_ML,\ getBicarbKpGainCoefficient(), getBicarbKiGainCoefficient(),\ - MIN_BICARB_VOLUME_MLPM, MAX_BICARB_VOLUME_MLPM, FALSE, MIX_NO_FEED_FORWARD ); + MIN_BICARB_VOLUME_ML, MAX_BICARB_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); resetPIController(PI_CONTROLLER_ID_BICARB_VOL, STD_BICARB_DOSING, MIX_NO_FEED_FORWARD); @@ -2136,9 +2140,9 @@ { BOOL result = f32Override( message, &dryBiCartBicarbMixVolumeKiGain ); - initializePIController(PI_CONTROLLER_ID_BICARB_VOL, MIN_BICARB_VOLUME_MLPM,\ + initializePIController(PI_CONTROLLER_ID_BICARB_VOL, 0.0F,\ getBicarbKpGainCoefficient(), getBicarbKiGainCoefficient(),\ - MIN_BICARB_VOLUME_MLPM, MAX_BICARB_VOLUME_MLPM, FALSE, MIX_NO_FEED_FORWARD ); + MIN_BICARB_VOLUME_ML, MAX_BICARB_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); resetPIController(PI_CONTROLLER_ID_BICARB_VOL, STD_BICARB_DOSING, MIX_NO_FEED_FORWARD); return result; @@ -2158,9 +2162,9 @@ { BOOL result = f32Override( message, &dryBiCartAcidMixVolumeKpGain ); - initializePIController(PI_CONTROLLER_ID_ACID_VOL, MIN_ACID_VOLUME_MLPM, \ + initializePIController(PI_CONTROLLER_ID_ACID_VOL, 0.0F, \ getAcidKpGainCoefficient(), getAcidKiGainCoefficient(),\ - MIN_ACID_VOLUME_MLPM, MAX_ACID_VOLUME_MLPM, FALSE, MIX_NO_FEED_FORWARD ); + MIN_ACID_VOLUME_ML, MAX_ACID_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); resetPIController(PI_CONTROLLER_ID_ACID_VOL, STD_ACID_DOSING, MIX_NO_FEED_FORWARD); return result; @@ -2180,9 +2184,9 @@ { BOOL result = f32Override( message, &dryBiCartAcidMixVolumeKiGain ); - initializePIController(PI_CONTROLLER_ID_ACID_VOL, MIN_ACID_VOLUME_MLPM, \ + initializePIController(PI_CONTROLLER_ID_ACID_VOL, 0.0F, \ getAcidKpGainCoefficient(), getAcidKiGainCoefficient(),\ - MIN_ACID_VOLUME_MLPM, MAX_ACID_VOLUME_MLPM, FALSE, MIX_NO_FEED_FORWARD ); + MIN_ACID_VOLUME_ML, MAX_ACID_VOLUME_ML, FALSE, MIX_NO_FEED_FORWARD ); resetPIController(PI_CONTROLLER_ID_ACID_VOL, STD_ACID_DOSING, MIX_NO_FEED_FORWARD); return result;