Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -ra3ed83ddd9e39aceb6216da6e640c0e369de2902 -r4626638b758c6673c0a8a3cc8d008bb4a898cea9 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision a3ed83ddd9e39aceb6216da6e640c0e369de2902) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 4626638b758c6673c0a8a3cc8d008bb4a898cea9) @@ -116,10 +116,6 @@ initializePIDController( PID_CONTROLLER_ID_RO_PUMP_FLOW, MIN_RO_FLOWRATE_MLPM, ROP_FLOW_CONTROL_P_COEFFICIENT, ROP_FLOW_CONTROL_I_COEFFICIENT, ROP_FLOW_CONTROL_D_COEFFICIENT, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, MAX_P12_FLUID_PUMP_DUTY_CYCLE_PCT, FALSE, 0 ); - // Initialize RO pump PI controller to target pressure - initializePIController( PI_CONTROLLER_ID_RO_PUMP_PRES, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, ROP_PRESSURE_CONTROL_P_COEFFICIENT, ROP_PRESSURE_CONTROL_I_COEFFICIENT, - MIN_FLUID_PUMP_DUTY_CYCLE_PCT, MAX_P12_FLUID_PUMP_DUTY_CYCLE_PCT, FALSE, 0 ); - roPumpState = RO_PUMP_OFF_STATE; isROPumpOn = FALSE; stopPumpRequest = FALSE; @@ -222,7 +218,7 @@ // Set pump to on isROPumpOn = TRUE; roPumpDutyCyclePctSet = roPumpPresToPWM( getTargetROPumpPressure() ); - resetPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, roPumpDutyCyclePctSet, 0.0F ); + resetPIDController( PID_CONTROLLER_ID_RO_PUMP_PRES, roPumpDutyCyclePctSet, 0.0F ); setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpDutyCyclePctSet ); state = RO_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; } @@ -281,7 +277,7 @@ else if ( getTargetROPumpPressure() > 0.0F ) { //transition to closed loop - resetPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), 0.0F ); + resetPIDController( PID_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), 0.0F ); state = RO_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; } else if ( (F32)getTargetROPumpDutyCyclePCT() == 0.0F ) @@ -310,7 +306,7 @@ if ( getTargetROPumpPressure() > 0.0F ) { // Transition to target pressure - resetPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), 0 ); + resetPIDController( PID_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), 0 ); state = RO_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; } else if ( getTargetROPumpDutyCyclePCT() > 0.0F ) @@ -331,28 +327,12 @@ currentFlowRate = getFilteredFlow( P16_FLOW ); minRequiredFlowRate = (F32)getTargetROPumpFlowRateMLPM() * ROP_MIN_FLOW_TO_CONTROL_PCT; - // P16 flow seems to lag in current Leahi HW. We will wait till we hit a % of target flow before we start changing control. -/* if( ( TRUE == roPumpStartControl ) || ( currentFlowRate >= ( minRequiredFlowRate ) ) ) - { - roPumpDutyCyclePctSet = runPIDController( PID_CONTROLLER_ID_RO_PUMP_FLOW, (F32)getTargetROPumpFlowRateMLPM(), currentFlowRate ); - roPumpDutyCyclePctSet = MIN( roPumpDutyCyclePctSet, ( MAX_P12_FLUID_PUMP_PWM_DUTY_CYCLE * MAX_P12_FLUID_PUMP_DUTY_CYCLE_PCT ) ); - setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpDutyCyclePctSet ); - - if ( FALSE == roPumpStartControl ) - { - roPumpStartControl = TRUE; - } - }*/ + // P16 flow seems to lag in current Leahi HW. We will wait before we start changing control. if ( TRUE == didTimeout( p12LagTimer, RO_LAG_TIMER ) ) { roPumpDutyCyclePctSet = runPIDController( PID_CONTROLLER_ID_RO_PUMP_FLOW, (F32)getTargetROPumpFlowRateMLPM(), currentFlowRate ); roPumpDutyCyclePctSet = MIN( roPumpDutyCyclePctSet, ( MAX_P12_FLUID_PUMP_PWM_DUTY_CYCLE * MAX_P12_FLUID_PUMP_DUTY_CYCLE_PCT ) ); setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpDutyCyclePctSet ); - -// if ( FALSE == roPumpStartControl ) -// { -// roPumpStartControl = TRUE; -// } } roControlTimerCounter = 0; } @@ -391,7 +371,7 @@ } else if ( ++roControlTimerCounter >= ROP_CONTROL_INTERVAL ) { - roPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), getFilteredPressure( P17_PRES ) ); + roPumpDutyCyclePctSet = runPIDController( PID_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), getFilteredPressure( P17_PRES ) ); setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpDutyCyclePctSet ); roControlTimerCounter = 0; } @@ -738,7 +718,7 @@ if( targetROPumpPressure.data > 0.0F ) { targetROPumpPressure.data = 0.0F; - resetPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, 0.0F ); + resetPIDController( PID_CONTROLLER_ID_RO_PUMP_PRES, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, 0.0F ); } roPumpState = RO_PUMP_OFF_STATE;