Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -rc7ea3969643ead419cbfcd34c3cb203c45bcad71 -rd334e16c164af5ba179b3d8695a6733986b3c305 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision c7ea3969643ead419cbfcd34c3cb203c45bcad71) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision d334e16c164af5ba179b3d8695a6733986b3c305) @@ -7,8 +7,8 @@ * * @file ModeFill.c * -* @author (last) Dara Navaei -* @date (last) 26-Apr-2023 +* @author (last) Michael Garthwaite +* @date (last) 16-May-2023 * * @author (original) Leonardo Baloa * @date (original) 19-Nov-2019 @@ -52,7 +52,7 @@ #define TARGET_RO_PRESSURE_PSI 130 ///< Target pressure for RO pump. #define RO_PUMP_400_ML_PER_MIN 400.0F ///< RO pump speed of 400.0 mL/minute. #define RO_PUMP_800_ML_PER_MIN 800.0F ///< RO pump speed of 800.0 mL/minute. -#define TARGET_RO_FLOW_RATE_IN_PAUSE_L 0.3F ///< Target flow rate for RO pump during pause in liters. +#define TARGET_RO_FLOW_RATE_IN_PAUSE_L 0.8F ///< Target flow rate for RO pump during pause in liters. #define MILLILITERS_PER_LITER 1000.0F ///< One liter is 1000 milliliters #define ACID_PUMP_20_ML_PER_MIN 20.0F ///< Acid pump speed of 20.0 mL/minute. #define BICARB_PUMP_40_ML_PER_MIN 40.0F ///< Bicarb pump speed of 40.0 mL/minute. @@ -217,7 +217,7 @@ U32 transitionToFillMode( void ) { initFillMode(); - + setCurrentSubState( NO_SUB_STATE ); // Set initial actuator states setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); @@ -609,11 +609,14 @@ bicarbConductivitySampleCount = 0; // Set pumps flow rate to prepare for bicarb conductivity testing - setROPumpTargetFlowRateLPM( RO_PUMP_400_ML_PER_MIN / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); + setROPumpTargetFlowRateLPM( RO_PUMP_800_ML_PER_MIN / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, BICARB_PUMP_40_ML_PER_MIN ); requestConcentratePumpOn( CONCENTRATEPUMPS_CP2_BICARB ); + // Prior to collecting data for bicarb test, change the CD2 calibration table + setCondcutivitySensorCalTable( CONDUCTIVITYSENSORS_CD2_SENSOR, CAL_DATA_CD2_COND_SENSOR_FILL_BICARB_TEST ); + // State transition concentrateTestStartTime = getMSTimerCount(); result = DG_FILL_MODE_STATE_TEST_BICARB_CONDUCTIVITY; @@ -667,7 +670,7 @@ } #endif - if ( ( TRUE == isConductivityInRange ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) ) ) + if ( ( TRUE == isConductivityInRange ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) ) { // Initialization requestConcentratePumpOff( CONCENTRATEPUMPS_CP2_BICARB, NO_PARK_CONC_PUMPS ); @@ -680,6 +683,10 @@ setROPumpTargetFlowRateLPM( RO_PUMP_800_ML_PER_MIN / MILLILITERS_PER_LITER, TARGET_RO_PRESSURE_PSI ); setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, ACID_PUMP_20_ML_PER_MIN ); requestConcentratePumpOn( CONCENTRATEPUMPS_CP1_ACID ); + + // Set back the conductivity of CD2 calibration table to the normal calibration table + setCondcutivitySensorCalTable( CONDUCTIVITYSENSORS_CD2_SENSOR, CAL_DATA_CD2_COND_SENSOR ); + // State transition concentrateTestStartTime = getMSTimerCount(); result = DG_FILL_MODE_STATE_TEST_ACID_CONDUCTIVITY; @@ -739,7 +746,7 @@ #endif { if ( ( TRUE == isValueWithinPercentRange( averageAcidConductivity, acidCondUSPerCM, FIVE_PERCENT_FACTOR ) ) || - ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) ) ) + ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) ) { hasAcidTestPassed = TRUE; } @@ -748,7 +755,7 @@ SET_ALARM_WITH_1_F32_DATA( ALARM_ID_DG_ACID_CONDUCTIVITY_OUT_OF_RANGE, averageAcidConductivity ) } - if ( ( pctDiffInConductivity < FIVE_PERCENT_FACTOR ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) ) ) + if ( ( pctDiffInConductivity < FIVE_PERCENT_FACTOR ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) ) { hasCD1CD2TestPassed = TRUE; } @@ -934,7 +941,7 @@ F32 avgCPo = sumFillCPoConductivity / (F32)fillCPoConductivitySampleCnt; // sample count incremented above w/o condition so no need for divide by zero checks F32 avgRR = sumFillRejRatio / (F32)fillCPoConductivitySampleCnt; - if ( ( avgCPo > MAX_CPO_CONDUCTIVITY_ALLOW ) && ( getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) != FALSE ) ) + if ( ( avgCPo > MAX_CPO_CONDUCTIVITY_ALLOW ) && ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != TRUE ) ) { // Fault alarm per PRS 483 SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_OUTLET_PRIMARY_CONDUCTIVITY_OUT_OF_RANGE, avgCPo, MAX_CPO_CONDUCTIVITY_ALLOW ); @@ -965,7 +972,7 @@ { // SRSDG 400 if ( ( FALSE == isValueWithinPercentRange( avgBicarbConductivity, bicarbNormalConductivity, FIVE_PERCENT_FACTOR ) ) && - ( getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) != TRUE ) ) + ( getTargetFillVolumeML() > MIN_FILL_TARGET_TO_CHECK_RO_AND_CPO_ML ) && ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != TRUE ) ) { setBadAvgConductivityDetectedFlag( TRUE ); // signal idle bad avg conductivity detected setThisFisrtFillFlag( TRUE ); @@ -975,7 +982,7 @@ } if ( ( FALSE == isValueWithinPercentRange( avgAcidConductivity, acidNormalConductivity, FIVE_PERCENT_FACTOR ) ) && - ( getTestConfigStatus( TEST_CONFIG_ENABLE_MIXING_WITH_WATER ) != TRUE ) ) + ( getTargetFillVolumeML() > MIN_FILL_TARGET_TO_CHECK_RO_AND_CPO_ML ) && ( getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) != TRUE ) ) { setBadAvgConductivityDetectedFlag( TRUE ); // signal idle bad avg conductivity detected setThisFisrtFillFlag( TRUE );