Index: firmware/App/Modes/ModeChemicalDisinfect.c =================================================================== diff -u -rc7cf4f78cbf2cc1ed8a19850a94f4d63ef14a26b -rf502a589b7a6c39c6fd57ceee778f5c94481af14 --- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision c7cf4f78cbf2cc1ed8a19850a94f4d63ef14a26b) +++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision f502a589b7a6c39c6fd57ceee778f5c94481af14) @@ -79,7 +79,6 @@ #define RSRVRS_FILL_UP_TIMEOUT_MS ( 8 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 full fill up timeout in ms. #define RSRVRS_PARTIAL_FILL_UP_TIMEOUT_MS ( 7 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 partial fill up timeout in ms. #define RSRVRS_ALMOST_FULL_FILL_UP_TIMEOUT_MS ( 1 * SEC_PER_MIN * MS_PER_SECOND ) ///< Reservoirs 1 & 2 partial fill up timeout in ms. It is assumed the reservoir is nearly full to begin. -#define RESERVOIR_FULL_VOLUME_CHANGE_LIMIT_ML 5.0F ///< The maximum difference between the short-term and long-term filtered reservoir volumes in ml that determines the reservoir is full. #define RESERVOIR_MINIMUM_FULL_VOLUME_ML 1850.0F ///< When filling the reservoir, the volume reading must be at least this value before checking for the volume to level off. #define RSRVRS_FILL_TO_FULL_STABLE_TASK_INT ( ( 2 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Reservoirs 1 & 2 full stable time in task intervals. @@ -1452,25 +1451,22 @@ { DG_RESERVOIR_STATUS_T status = DG_RESERVOIR_BELOW_TARGET; F32 currentVolume = 0.0F; - F32 filteredVolume = 0.0F; if ( DG_RESERVOIR_1 == r ) { currentVolume = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_1_PRIMARY ); - filteredVolume = getLoadCellLargeFilteredWeight( LOAD_CELL_RESERVOIR_1_PRIMARY ); } else if ( DG_RESERVOIR_2 == r ) { currentVolume = getLoadCellSmallFilteredWeight( LOAD_CELL_RESERVOIR_2_PRIMARY ); - filteredVolume = getLoadCellLargeFilteredWeight( LOAD_CELL_RESERVOIR_2_PRIMARY ); } else { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_DG_RESERVOIR_SELECTED, r ) } // Check the volume of the reservoir against the long term filtered volume - if ( ( currentVolume > RESERVOIR_MINIMUM_FULL_VOLUME_ML ) && ( fabs( currentVolume - filteredVolume ) < RESERVOIR_FULL_VOLUME_CHANGE_LIMIT_ML ) ) + if ( currentVolume > RESERVOIR_MINIMUM_FULL_VOLUME_ML ) { if ( ++rsrvrFillToFullStableTimeCounter >= RSRVRS_FILL_TO_FULL_STABLE_TASK_INT ) { Index: firmware/App/Modes/ModeChemicalDisinfectFlush.c =================================================================== diff -u -r9226e7b5b52c30057e93453ced523f563fbd89fe -rf502a589b7a6c39c6fd57ceee778f5c94481af14 --- firmware/App/Modes/ModeChemicalDisinfectFlush.c (.../ModeChemicalDisinfectFlush.c) (revision 9226e7b5b52c30057e93453ced523f563fbd89fe) +++ firmware/App/Modes/ModeChemicalDisinfectFlush.c (.../ModeChemicalDisinfectFlush.c) (revision f502a589b7a6c39c6fd57ceee778f5c94481af14) @@ -73,7 +73,6 @@ #define CHEM_DISINFECT_FLUSH_TIME_MS ( 12 * SEC_PER_MIN * MS_PER_SECOND ) ///< Chemical disinfect flush time in ms. // Fill reservoirs to full defines -#define RESERVOIR_FULL_VOLUME_CHANGE_LIMIT_ML 5.0F ///< The maximum difference between the short-term and long-term filtered reservoir volumes in ml that determines the reservoir is full. #define RESERVOIR_MINIMUM_FULL_VOLUME_ML 1850.0F ///< When filling the reservoir, the volume reading must be at least this value before checking for the volume to level off. #define RSRVRS_FILL_TO_FULL_STABLE_TASK_INT ( ( 2 * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) ///< Reservoirs 1 & 2 full stable time in task intervals. Index: firmware/App/Modes/ModeFlush.c =================================================================== diff -u -r9226e7b5b52c30057e93453ced523f563fbd89fe -rf502a589b7a6c39c6fd57ceee778f5c94481af14 --- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 9226e7b5b52c30057e93453ced523f563fbd89fe) +++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision f502a589b7a6c39c6fd57ceee778f5c94481af14) @@ -171,7 +171,7 @@ deenergizeActuators( NO_PARK_CONC_PUMPS ); initFlushMode(); - setCurrentSubState( flushState ); + setCurrentSubState( NO_SUB_STATE ); setCPLDCleanLEDColor( CPLD_CLEAN_LED_BLUE ); return flushState; Index: firmware/App/Modes/ModeHeatDisinfect.c =================================================================== diff -u -rc7cf4f78cbf2cc1ed8a19850a94f4d63ef14a26b -rf502a589b7a6c39c6fd57ceee778f5c94481af14 --- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision c7cf4f78cbf2cc1ed8a19850a94f4d63ef14a26b) +++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision f502a589b7a6c39c6fd57ceee778f5c94481af14) @@ -66,6 +66,9 @@ #define FLUSH_CIRCULATION_CONC_PUMPS_WAIT_TIME_MS ( 3 * SEC_PER_MIN * MS_PER_SECOND ) ///< Flush circulation concentrate pumps on time in milliseconds. #define MAX_FLUSH_CIRC_TEMP_SENSOR_DIFF_C 3.0F ///< Maximum flush circulation temperature difference tolerance in C. #define NUM_OF_TEMP_SENSORS_TO_AVG 3.0F ///< Number of temperature sensors to average to check the difference. +#define ACID_PUMP_FLUSH_RECIRCULATE_SPEED_MLPM -30.0F ///< Acid pump in flush recirculate speed in mL/min. +#define BICARB_PUMP_FLUSH_RECIRCULATE_SPEED_MLPM 30.6F ///< Bicarb pump in flush recirculate speed in mL/min. + #define ACID_PUMP_SPEED_ML_PER_MIN 30.6F ///< Acid concentrate pump speed in mL/min. // The acid pump is 2% faster than the bicarb pump to create a flow from acid to bicarb line during heat disinfect #define BICARB_PUMP_SPEED_ML_PER_MIN -30.0F ///< Bicarb concentrate pump speed in mL/min. @@ -318,7 +321,7 @@ deenergizeActuators( NO_PARK_CONC_PUMPS ); initHeatDisinfectMode(); - setCurrentSubState( heatDisinfectState ); + setCurrentSubState( NO_SUB_STATE ); setCPLDCleanLEDColor( CPLD_CLEAN_LED_ORANGE ); return heatDisinfectState; @@ -694,8 +697,8 @@ { areTempSensorsInRange = TRUE; // Turn the pumps on in reverse - setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, ACID_PUMP_SPEED_ML_PER_MIN ); - setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, BICARB_PUMP_SPEED_ML_PER_MIN ); + setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP1_ACID, ACID_PUMP_FLUSH_RECIRCULATE_SPEED_MLPM ); + setConcentratePumpTargetSpeed( CONCENTRATEPUMPS_CP2_BICARB, BICARB_PUMP_FLUSH_RECIRCULATE_SPEED_MLPM ); // Turn on the concentrate pumps requestConcentratePumpOn( CONCENTRATEPUMPS_CP1_ACID ); Index: firmware/App/Modes/ModeHeatDisinfectActiveCool.c =================================================================== diff -u -rc7cf4f78cbf2cc1ed8a19850a94f4d63ef14a26b -rf502a589b7a6c39c6fd57ceee778f5c94481af14 --- firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision c7cf4f78cbf2cc1ed8a19850a94f4d63ef14a26b) +++ firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision f502a589b7a6c39c6fd57ceee778f5c94481af14) @@ -176,7 +176,7 @@ deenergizeActuators( NO_PARK_CONC_PUMPS ); initHeatDisinfectActiveCoolMode(); - setCurrentSubState( heatDisinfectActiveCoolState ); + setCurrentSubState( NO_SUB_STATE ); setCPLDCleanLEDColor( CPLD_CLEAN_LED_ORANGE ); return heatDisinfectActiveCoolState; @@ -903,7 +903,7 @@ setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VRC, VALVE_STATE_RECIRC_C_TO_NC ); - setValveState( VRO, VALVE_STATE_R2_C_TO_NC ); + setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); setValveState( VRD1, VALVE_STATE_CLOSED ); setValveState( VRD2, VALVE_STATE_CLOSED ); setValveState( VRI, VALVE_STATE_R1_C_TO_NO );