Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -re706d20db89e55c51ba0c6f5c33842e117f965ab -rbb1b5860c4a87ee17537ae9f6ca690a4d74bc925 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision e706d20db89e55c51ba0c6f5c33842e117f965ab) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision bb1b5860c4a87ee17537ae9f6ca690a4d74bc925) @@ -17,6 +17,7 @@ #include // for log() #include "Flow.h" +#include "FPOperationModes.h" //#include "NVDataMgmt.h" #include "Messaging.h" #include "MessageSupport.h" @@ -40,7 +41,7 @@ #define ROP_CONTROL_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the RO pump is controlled. #define ROP_FLOW_CONTROL_P_COEFFICIENT 0.000065F ///< P term for RO pump flow control. -#define ROP_FLOW_CONTROL_I_COEFFICIENT 0.00020F ///< I term for RO pump flow control. +#define ROP_FLOW_CONTROL_I_COEFFICIENT 0.00022F ///< I term for RO pump flow control. #define ROP_MIN_FLOW_TO_CONTROL_PCT 0.75F #define ROP_PRESSURE_CONTROL_P_COEFFICIENT 0.15F ///< P term for RO pump pressure control. #define ROP_PRESSURE_CONTROL_I_COEFFICIENT 0.65F ///< I term for RO pump pressure control. @@ -241,7 +242,14 @@ if ( getTargetROPumpFlowRateMLPM() > 0 ) { ///transition to closed loop - roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateMLPM() ); + 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; }