Index: firmware/App/Controllers/BoostPump.c =================================================================== diff -u -rf4870116c87345ee0ea062df5b30187e1e113ddc -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Controllers/BoostPump.c (.../BoostPump.c) (revision f4870116c87345ee0ea062df5b30187e1e113ddc) +++ firmware/App/Controllers/BoostPump.c (.../BoostPump.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -46,8 +46,6 @@ #define BOOST_FLOW_CONTROL_I_COEFFICIENT 0.65F ///< I term for Boost pump flow control. #define BOOST_PRESSURE_CONTROL_P_COEFFICIENT 0.01F ///< P term for Boost pump pressure control. #define BOOST_PRESSURE_CONTROL_I_COEFFICIENT 0.01F ///< I term for Boost pump pressure control. -#define BOOST_PWM_STEP_LIMIT 0.50F ///< Current maximum PWM step limit used in Boost Profiles. -#define BOOST_RAMP_DOWN_DUTY_CYCLE_RATIO 0.03F ///< Pump ramp down duty cycle ratio when the pressure higher than max defined. #define BOOST_FLOW_TO_PWM_SLOPE 0.5F ///< Slope of flow to PWM line equation. #define BOOST_FLOW_TO_PWM_INTERCEPT 0.0F ///< Intercept of flow to PWM line equation. @@ -649,6 +647,8 @@ pumpData.p40TargetPressure = getTargetBoostPumpPressure(); pumpData.p40TargetFlow = getTargetBoostPumpFlowRateMLPM(); pumpData.p40TargetDutyCycle = getTargetBoostPumpDutyCyclePCT(); + pumpData.p40PumpDutyCyclePct = convertDutyCycleCntToPct( (U32)getFluidPumpPWMDutyCycle( P40_PUMP ) ); + pumpData.p40PumpFBDutyCyclePct = convertDutyCycleCntToPct( (U32)getFluidPumpReadPWMDutyCycle( P40_PUMP ) ); broadcastData( MSG_ID_FP_BOOST_PUMP_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&pumpData, sizeof( BOOST_PUMP_DATA_T ) ); boostPumpDataPublicationTimerCounter = 0; Index: firmware/App/Controllers/BoostPump.h =================================================================== diff -u -rf4870116c87345ee0ea062df5b30187e1e113ddc -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Controllers/BoostPump.h (.../BoostPump.h) (revision f4870116c87345ee0ea062df5b30187e1e113ddc) +++ firmware/App/Controllers/BoostPump.h (.../BoostPump.h) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -44,12 +44,14 @@ typedef struct { U32 p40PumpState; ///< Boost pump current state. - U32 p40PumpDutyCycle; ///< Boost pump duty cycle. + U32 p40PumpDutyCycle; ///< Boost pump duty cycle at driver level. U32 p40PumpFBDutyCycle; ///< Boost pump feedback duty cycle. F32 p40PumpSpeed; ///< Boost pump speed (RPM). F32 p40TargetPressure; ///< Boost pump target pressure for control. F32 p40TargetFlow; ///< Boost pump target flow ( in mL/min ) for control. F32 p40TargetDutyCycle; ///< Boost pump target duty cycle for open loop control. + F32 p40PumpDutyCyclePct; ///< Boost pump duty cycle as a percentage. + F32 p40PumpFBDutyCyclePct; ///< Boost pump feedback duty cycle as a percentage. } BOOST_PUMP_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -rf4870116c87345ee0ea062df5b30187e1e113ddc -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision f4870116c87345ee0ea062df5b30187e1e113ddc) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -45,8 +45,6 @@ #define ROP_FLOW_CONTROL_I_COEFFICIENT 0.65F ///< I term for RO pump flow control. #define ROP_PRESSURE_CONTROL_P_COEFFICIENT 0.01F ///< P term for RO pump pressure control. #define ROP_PRESSURE_CONTROL_I_COEFFICIENT 0.01F ///< I term for RO pump pressure control. -#define ROP_PWM_STEP_LIMIT 0.50F ///< Current maximum PWM step limit used in RO Profiles. -#define ROP_RAMP_DOWN_DUTY_CYCLE_RATIO 0.03F ///< Pump ramp down duty cycle ratio when the pressure higher than max defined. #define ROP_FLOW_TO_PWM_SLOPE 0.5F ///< Slope of flow to PWM line equation. #define ROP_FLOW_TO_PWM_INTERCEPT 0.0F ///< Intercept of flow to PWM line equation. @@ -633,6 +631,8 @@ pumpData.p12TargetPressure = getTargetROPumpPressure(); pumpData.p12TargetFlow = getTargetROPumpFlowRateMLPM(); pumpData.p12TargetDutyCycle = getTargetROPumpDutyCyclePCT(); + pumpData.p12PumpDutyCyclePct = convertDutyCycleCntToPct( (U32)getFluidPumpPWMDutyCycle( P12_PUMP ) ); + pumpData.p12PumpFBDutyCyclePct = convertDutyCycleCntToPct( (U32)getFluidPumpReadPWMDutyCycle( P12_PUMP ) ); broadcastData( MSG_ID_FP_RO_PUMP_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&pumpData, sizeof( RO_PUMP_DATA_T ) ); roPumpDataPublicationTimerCounter = 0; Index: firmware/App/Controllers/ROPump.h =================================================================== diff -u -rf4870116c87345ee0ea062df5b30187e1e113ddc -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision f4870116c87345ee0ea062df5b30187e1e113ddc) +++ firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -32,8 +32,8 @@ // ********** public definitions ********** -#define MAX_RO_FLOWRATE_MLPM 1500 ///< Maximum target RO flow rate in L/min. -#define MIN_RO_FLOWRATE_MLPM 0 ///< Minimum target RO flow rate in L/min. +#define MAX_RO_FLOWRATE_MLPM 1500 ///< Maximum target RO flow rate in mL/min. +#define MIN_RO_FLOWRATE_MLPM 0 ///< Minimum target RO flow rate in mL/min. #define MAX_RO_PRESSURE_PSI 120.0F ///< Maximum allowed pressure that the RO pump can go to. #define MIN_RO_PRESSURE_PSI 10.0F ///< Minimum allowed pressure that the RO pump can go to. @@ -54,12 +54,14 @@ typedef struct { U32 p12PumpState; ///< RO pump current state. - U32 p12PumpDutyCycle; ///< RO pump duty cycle. + U32 p12PumpDutyCycle; ///< RO pump duty cycle at driver level. U32 p12PumpFBDutyCycle; ///< RO pump feedback duty cycle. F32 p12PumpSpeed; ///< RO pump speed (RPM). F32 p12TargetPressure; ///< RO pump target pressure for control. F32 p12TargetFlow; ///< RO pump target flow ( in mL/min ) for control. F32 p12TargetDutyCycle; ///< RO pump target duty cycle for open loop control. + F32 p12PumpDutyCyclePct; ///< RO pump duty cycle as a percentage. + F32 p12PumpFBDutyCyclePct; ///< RO pump feedback duty cycle as a percentage. } RO_PUMP_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Drivers/FluidPump.c =================================================================== diff -u -r8d272582cbd2cb5fc0c6af0fead2867ce02658b0 -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Drivers/FluidPump.c (.../FluidPump.c) (revision 8d272582cbd2cb5fc0c6af0fead2867ce02658b0) +++ firmware/App/Drivers/FluidPump.c (.../FluidPump.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -311,7 +311,7 @@ * @param dutyCyclePct duty cycle count to be converted. * @return Value (0..0.99) indicating magnitude of PWM duty cycle as a percentage. *************************************************************************/ -F32 convertDutyCycleCntToPct( F32 dutyCycleCnt ) +F32 convertDutyCycleCntToPct( U32 dutyCycleCnt ) { F32 pwmCnt = (F32)MAX( ( dutyCycleCnt / MAX_FLUID_PUMP_PWM_DUTY_CYCLE ) , MIN_FLUID_PUMP_PWM_DUTY_CYCLE ); Index: firmware/App/Drivers/FluidPump.h =================================================================== diff -u -r8d272582cbd2cb5fc0c6af0fead2867ce02658b0 -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Drivers/FluidPump.h (.../FluidPump.h) (revision 8d272582cbd2cb5fc0c6af0fead2867ce02658b0) +++ firmware/App/Drivers/FluidPump.h (.../FluidPump.h) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -32,10 +32,10 @@ // ********** public definitions ********** -#define MAX_FLUID_PUMP_PWM_DUTY_CYCLE 500 ///< Maximum settable boost pump duty cycle magnitude. +#define MAX_FLUID_PUMP_PWM_DUTY_CYCLE 450 ///< Maximum settable boost pump duty cycle magnitude. #define MIN_FLUID_PUMP_PWM_DUTY_CYCLE 0 ///< minimum settable boost pump duty cycle magnitude. -#define MAX_FLUID_PUMP_DUTY_CYCLE_PCT 0.99F ///< Max duty cycle in percentage. +#define MAX_FLUID_PUMP_DUTY_CYCLE_PCT 0.90F ///< Max duty cycle in percentage. #define MIN_FLUID_PUMP_DUTY_CYCLE_PCT 0.0F ///< Min duty cycle in percentage. /// Enumerations of fluid pumps. @@ -57,7 +57,7 @@ U16 getFluidPumpReadPWMDutyCycle( FP_FLUID_PUMP_T pumpID ); F32 getFluidPumpRPM( FP_FLUID_PUMP_T pumpID ); -F32 convertDutyCycleCntToPct( F32 dutyCycleCnt ); +F32 convertDutyCycleCntToPct( U32 dutyCycleCnt ); U16 convertDutyCyclePctToCnt( F32 dutyCyclePct ); BOOL setFluidPumpPctToPWMDutyCycle( FP_FLUID_PUMP_T pumpID, F32 dutyCyclePct); Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -r410afd26b3ae5e372310c696c82f58c59235e10d -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 410afd26b3ae5e372310c696c82f58c59235e10d) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -107,7 +107,6 @@ currentPressureReadings[ X2_PRES ].data = convertPressureReading( getFPGAX2RawPressure(), PRES_MIN_PSI, PRES_MAX_PSI ); currentPressureReadings[ X3_PRES ].data = convertPressureReading( getFPGAX3RawPressure(), PRES_MIN_PSI, PRES_MAX_PSI ); currentPressureReadings[ X4_PRES ].data = convertPressureReading( getFPGAX4RawPressure(), PRES_MIN_PSI, PRES_MAX_PSI ); - currentPressureReadings[ X5_PRES ].data = convertPressureReading( getFPGAX5RawPressure(), PRES_MIN_PSI, PRES_MAX_PSI ); // Update and convert raw pressure sensor temperatures to deg C currentPresTempReadings[ M1_PRES ].data = convertPressureTempReading2DegC( getFPGAM1RawTemperature() ); @@ -119,7 +118,6 @@ currentPresTempReadings[ X2_PRES ].data = convertPressureTempReading2DegC( getFPGAX2RawTemperature() ); currentPresTempReadings[ X3_PRES ].data = convertPressureTempReading2DegC( getFPGAX3RawTemperature() ); currentPresTempReadings[ X4_PRES ].data = convertPressureTempReading2DegC( getFPGAX4RawTemperature() ); - currentPresTempReadings[ X5_PRES ].data = convertPressureTempReading2DegC( getFPGAX5RawTemperature() ); // Update read and error counters for each pressure sensor lastPressureReadCounter[ M1_PRES ].data = (U32)getFPGAM1ReadCount(); @@ -131,7 +129,6 @@ lastPressureReadCounter[ X2_PRES ].data = (U32)getFPGAX2ReadCount(); lastPressureReadCounter[ X3_PRES ].data = (U32)getFPGAX3ReadCount(); lastPressureReadCounter[ X4_PRES ].data = (U32)getFPGAX4ReadCount(); - lastPressureReadCounter[ X5_PRES ].data = (U32)getFPGAX5ReadCount(); // // Monitor pressure sensor health // checkPressureSensors(); Index: firmware/App/Drivers/PressureSensor.h =================================================================== diff -u -r051cd0430ef8342bd606115c98871e26dc24acf1 -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 051cd0430ef8342bd606115c98871e26dc24acf1) +++ firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -45,7 +45,6 @@ X2_PRES, ///< Pressure RO Concentrate X3_PRES, ///< Pressure after P32, concentrate drop X4_PRES, ///< Pressure drain drop - X5_PRES, ///< TBD NUM_OF_PRESSURE_SENSORS ///< Number of pressure sensors } PRESSURE_SENSORS_T; Index: firmware/App/Modes/ModeGenPermeate.c =================================================================== diff -u -rf4870116c87345ee0ea062df5b30187e1e113ddc -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Modes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision f4870116c87345ee0ea062df5b30187e1e113ddc) +++ firmware/App/Modes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -96,6 +96,18 @@ initGenPermeateMode(); setCurrentSubState( genPermeateState ); setModeGenPTransition( genPermeateState ); + + // Setting RO pump pwm at the start instead of + // each transition to allow testing of different target control + // while in Gen Permeate + if ( 0.0F == getGenPermeateRODutyCycle() ) // we skipped verify water via dialin + { + setROPumpTargetDutyCycle( GEN_PERMEATE_PWM_DEFAULT ); + } + else + { + setROPumpTargetDutyCycle( getGenPermeateRODutyCycle() ); + } return genPermeateState; } @@ -162,19 +174,10 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); // Current set to Medium recovery for alpha HW setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV,VALVE_STATE_OPEN ); - if ( TRUE == isBoostPumpInstalled() ) { setBoostPumpTargetPressure( GEN_PERMEATE_BOOST_PUMP_TGT_PSI ); } - if ( 0.0F == getGenPermeateRODutyCycle() ) // we skipped verify water via dialin - { - setROPumpTargetDutyCycle( GEN_PERMEATE_PWM_DEFAULT ); - } - else - { - setROPumpTargetDutyCycle( getGenPermeateRODutyCycle() ); - } break; case FP_GENP_TANK_FULL_STATE: @@ -193,14 +196,6 @@ } tankFullDelayTime = getMSTimerCount(); tankFullAlarmTimeout = getMSTimerCount(); - if ( 0.0F == getGenPermeateRODutyCycle() ) // we skipped verify water via dialin - { - setROPumpTargetDutyCycle( GEN_PERMEATE_PWM_DEFAULT ); - } - else - { - setROPumpTargetDutyCycle( getGenPermeateRODutyCycle() ); - } break; default: Index: firmware/App/Monitors/Pressure.c =================================================================== diff -u -r8d272582cbd2cb5fc0c6af0fead2867ce02658b0 -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 8d272582cbd2cb5fc0c6af0fead2867ce02658b0) +++ firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -639,7 +639,6 @@ data.x2Pressure = getFilteredPressure( X2_PRES ); data.x3Pressure = getFilteredPressure( X3_PRES ); data.x4Pressure = getFilteredPressure( X4_PRES ); - data.x5Pressure = getFilteredPressure( X5_PRES ); data.m1Temp = getFilteredPressureSensorTemperature( M1_PRES ); data.m3Temp = getFilteredPressureSensorTemperature( M3_PRES ); @@ -650,7 +649,6 @@ data.x2Temp = getFilteredPressureSensorTemperature( X2_PRES ); data.x3Temp = getFilteredPressureSensorTemperature( X3_PRES ); data.x4Temp = getFilteredPressureSensorTemperature( X4_PRES ); - data.x4Temp = getFilteredPressureSensorTemperature( X5_PRES ); broadcastData( MSG_ID_FP_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); pressuresDataPublicationTimerCounter = 0; Index: firmware/App/Monitors/Pressure.h =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -44,7 +44,6 @@ F32 x2Pressure; ///< Pressure RO Concentrate F32 x3Pressure; ///< Pressure RO Concentrate drop F32 x4Pressure; ///< Pressure drain drop - F32 x5Pressure; ///< Spare pressure sensor slot F32 m1Temp; ///< Temperature before pressure regulator (M1) F32 m3Temp; ///< Temperature after pressure regulator (M3) F32 p8Temp; ///< Temperature before inlet conductivity sensor (P8) @@ -54,7 +53,6 @@ F32 x2Temp; ///< Temperature RO Concentrate F32 x3Temp; ///< Temperature RO Concentrate drop F32 x4Temp; ///< Temperature drain drop - F32 x5Temp; ///< Spare pressure sensor slot } PRESSURE_TEMP_DATA_T; // ********** public function prototypes ********** @@ -68,7 +66,7 @@ BOOL testPressureSensorDataPublishIntervalOverride( MESSAGE_T *message ); //BOOL testPressureSensorFilteredReadingsOverride( MESSAGE_T *message ); -//BOOL testPressureSensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); +BOOL testPressureSensorFilteredTemperatureReadingsOverride( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Services/AlarmMgmtFP.c =================================================================== diff -u -r1cf11f4c1f6a1f1fd40270889723fbec040fc7ec -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/App/Services/AlarmMgmtFP.c (.../AlarmMgmtFP.c) (revision 1cf11f4c1f6a1f1fd40270889723fbec040fc7ec) +++ firmware/App/Services/AlarmMgmtFP.c (.../AlarmMgmtFP.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -113,7 +113,7 @@ if ( TRUE == isTransitionToFaultRequired() ) { // If alarm is a FP fault and the alarm manager can transition to fault immediately, go to fault mode - requestNewOperationMode( FP_MODE_FAUL ); + //requestNewOperationMode( FP_MODE_FAUL ); } } } Index: firmware/source/sys_main.c =================================================================== diff -u -r410afd26b3ae5e372310c696c82f58c59235e10d -r311c75cc5ac41b4b9ca4983df84e43af910f9be4 --- firmware/source/sys_main.c (.../sys_main.c) (revision 410afd26b3ae5e372310c696c82f58c59235e10d) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 311c75cc5ac41b4b9ca4983df84e43af910f9be4) @@ -208,6 +208,8 @@ initFaultMode(); initPreGenPMode(); initFilterFlush(); + initConcentrateFlush(); + initPermeateFlush(); } /*************************************************************************