Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r43161808ceba270f92822369359aa299c647c9fe -r2869d16c34888bec55bded3b8aefd0203f56d3b0 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 43161808ceba270f92822369359aa299c647c9fe) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 2869d16c34888bec55bded3b8aefd0203f56d3b0) @@ -17,6 +17,7 @@ #include // for log() #include "Flow.h" +#include "FPOperationModes.h" //#include "NVDataMgmt.h" #include "Messaging.h" #include "MessageSupport.h" @@ -241,14 +242,22 @@ if ( getTargetROPumpFlowRateMLPM() > 0 ) { ///transition to closed loop - resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, getTargetROPumpDutyCyclePCT(), 0 ); + if ( getCurrentOperationMode() == FP_MODE_GENP ) + { + roPumpDutyCyclePctSet = getCurrentROPumpDutyCyclePCT(); + } + else + { + roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateMLPM() ); + } + resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, roPumpDutyCyclePctSet, 0.0F); state = RO_PUMP_CONTROL_TO_TARGET_FLOW_STATE; } // If there is a target pressure set, transition to the PI controller and control to pressure. else if ( getTargetROPumpPressure() > 0.0F ) { //transition to closed loop - resetPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), 0 ); + resetPIController( PI_CONTROLLER_ID_RO_PUMP_PRES, getTargetROPumpPressure(), 0.0F ); state = RO_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; } else if ( (F32)getTargetROPumpDutyCyclePCT() == 0.0F )