Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r7d0fd5ed6b9db0479af90477e5108f6d3fa8df17 -r368ded18d302d93a7c47192f7360bfefa5acecd8 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 7d0fd5ed6b9db0479af90477e5108f6d3fa8df17) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 368ded18d302d93a7c47192f7360bfefa5acecd8) @@ -203,6 +203,9 @@ NUMBER_OF_ACID_AND_BICARB_NV_DATA_TO_CHECK, ALARM_ID_DG_ACID_CONCENTRATE_INVALID_CAL_RECORD ); getNVRecord2Driver( GET_CAL_BICARB_CONCENTRATES, (U08*)&bicarbConcentrateCalRecord, sizeof( bicarbConcentrateCalRecord ), NUMBER_OF_ACID_AND_BICARB_NV_DATA_TO_CHECK, ALARM_ID_DG_BICARB_CONCENTRATE_INVALID_CAL_RECORD ); + // Get the calibration values for the acid and bicarb pump calibration + getNVRecord2Driver( GET_CAL_CONCENTRATE_PUMPS_RECORD, (U08*)&concentratePumpsCalRecord, sizeof( DG_CONC_PUMPS_CAL_RECORD_T ), + NUM_OF_CAL_DATA_DG_CONC_PUMPS, ALARM_ID_DG_CONCENTRATE_PUMPS_INVALID_CAL_RECORD ); } // Calculate pump speed for each defined pump @@ -351,7 +354,7 @@ NUMBER_OF_ACID_AND_BICARB_NV_DATA_TO_CHECK, ALARM_ID_DG_BICARB_CONCENTRATE_INVALID_CAL_RECORD ); calStatus |= getNVRecord2Driver( GET_CAL_CONCENTRATE_PUMPS_RECORD, (U08*)&concentratePumpsCalRecord, sizeof( DG_CONC_PUMPS_CAL_RECORD_T ), - NUM_OF_CAL_DATA_DG_CONC_PUMPS, ALARM_ID_NO_ALARM ); + NUM_OF_CAL_DATA_DG_CONC_PUMPS, ALARM_ID_DG_CONCENTRATE_PUMPS_INVALID_CAL_RECORD ); result = ( TRUE == calStatus ? SELF_TEST_STATUS_PASSED : SELF_TEST_STATUS_FAILED ); @@ -509,7 +512,13 @@ */ if ( ( CONCENTRATE_PUMP_MIN_SPEED <= targetSpeed_ml_min ) && ( targetSpeed_ml_min <= CONCENTRATE_PUMP_MAX_SPEED ) ) { - concentratePumps[ pumpId ].pumpTargetSpeed = targetSpeed_ml_min; + F32 targetWithCalMLPM = pow( targetSpeed_ml_min, 4 ) * concentratePumpsCalRecord.concentratePumps[ (CAL_DATA_DG_PUMPS_T)pumpId ].fourthOrderCoeff + + pow( targetSpeed_ml_min, 3 ) * concentratePumpsCalRecord.concentratePumps[ (CAL_DATA_DG_PUMPS_T)pumpId ].thirdOrderCoeff + + pow( targetSpeed_ml_min, 2 ) * concentratePumpsCalRecord.concentratePumps[ (CAL_DATA_DG_PUMPS_T)pumpId ].secondOrderCoeff + + targetSpeed_ml_min * concentratePumpsCalRecord.concentratePumps[ (CAL_DATA_DG_PUMPS_T)pumpId ].gain + + concentratePumpsCalRecord.concentratePumps[ (CAL_DATA_DG_PUMPS_T)pumpId ].offset; + + concentratePumps[ pumpId ].pumpTargetSpeed = targetWithCalMLPM; } else if ( targetSpeed_ml_min < CONCENTRATE_PUMP_MIN_SPEED ) { @@ -960,9 +969,9 @@ if ( TRUE == isPumpPulseWidthOut ) { // Pulse width for this concentrate pump is out of range - isPulseWidthOut = TRUE; - pumpInAlarm = pumpId; - pumpInAlarmPulseWidthInMicroSeconds = pulseWidthInMicroSeconds; + isPulseWidthOut = TRUE; + pumpInAlarm = pumpId; + pumpInAlarmPulseWidthInMicroSeconds = pulseWidthInMicroSeconds; } } Index: firmware/App/Modes/ModeHeatDisinfectActiveCool.c =================================================================== diff -u -r54abf84364e737dd350153d5fab7dd652f917ef4 -r368ded18d302d93a7c47192f7360bfefa5acecd8 --- firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision 54abf84364e737dd350153d5fab7dd652f917ef4) +++ firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision 368ded18d302d93a7c47192f7360bfefa5acecd8) @@ -1309,8 +1309,8 @@ rsrvrsStatus.rsrvr[ DG_RESERVOIR_1 ].rStatus = DG_RESERVOIR_ABOVE_TARGET; state = DG_HEAT_DISINFECT_ACTIVE_COOL_DRAIN_R1_STATE; } + setHeatDisinfectActiveCoolActuators( state ); } - setHeatDisinfectActiveCoolActuators( state ); } state = checkRsrvrMgmtTimeoutStatus( rsrvrID, state ); Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r7d4711edd7b40cd3e29f43e766f79a8a09586fe9 -r368ded18d302d93a7c47192f7360bfefa5acecd8 --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 7d4711edd7b40cd3e29f43e766f79a8a09586fe9) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 368ded18d302d93a7c47192f7360bfefa5acecd8) @@ -283,6 +283,7 @@ return output; } + /*********************************************************************//** * @brief * The getPIControllerSignals function returns the latest requested signal sample.