Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -rb5e25e2bf3b87f12f9d1beedf460b5884c8816e9 -rab6ac1bb140201e5737d594b3456038ea9e4725f --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision b5e25e2bf3b87f12f9d1beedf460b5884c8816e9) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision ab6ac1bb140201e5737d594b3456038ea9e4725f) @@ -40,13 +40,7 @@ #define DRAIN_PUMP_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the RO Pump data is published on the CAN bus -#define MAX_DRAIN_PUMP_PWM_STEP_CHANGE 0.01 ///< max duty cycle change for controller -#define MAX_DRAIN_PUMP_PWM_DUTY_CYCLE 0.99 ///< max duty cycle -#define MIN_DRAIN_PUMP_PWM_DUTY_CYCLE 0.05 ///< min duty cycle - #define DRP_CONTROL_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the Drain pump is controlled -#define DRP_P_COEFFICIENT 0.005 ///< P term for Drain pump control -#define DRP_I_COEFFICIENT 0.00015 ///< I term for Drain pump control #define DRP_SPEED_ADC_TO_RPM_FACTOR 12.94 ///< conversion factor from ADC counts to RPM for Drain pump #define DRP_SPEED_RPM_TO_ADC_FACTOR ( 1.0 / DRP_SPEED_ADC_TO_RPM_FACTOR ) ///< conversion factor from RPM to ADC counts for Drain pump @@ -113,11 +107,6 @@ void initDrainPump( void ) { stopDrainPump(); - - // initialize Drain pump PI controller - initializePIController( PI_CONTROLLER_ID_DRAIN_PUMP, MIN_DRAIN_PUMP_PWM_DUTY_CYCLE, - DRP_P_COEFFICIENT, DRP_I_COEFFICIENT, - MIN_DRAIN_PUMP_PWM_DUTY_CYCLE, MAX_DRAIN_PUMP_PWM_DUTY_CYCLE ); } /*********************************************************************//** @@ -160,7 +149,6 @@ stopDrainPump(); drainPumpState = DRAIN_PUMP_OFF_STATE; drainControlTimerCounter = 0; - resetPIController( PI_CONTROLLER_ID_DRAIN_PUMP, MIN_DRAIN_PUMP_PWM_DUTY_CYCLE ); } /*********************************************************************//** @@ -201,6 +189,7 @@ default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, 0, drainPumpState ) // TODO - replace 1st param with s/w fault enum + drainPumpState = DRAIN_PUMP_OFF_STATE; break; } } @@ -218,23 +207,25 @@ { DRAIN_PUMP_STATE_T result = DRAIN_PUMP_OFF_STATE; +#ifdef DEBUG_ENABLED // TODO - test code - remove later if ( GET_DIP_SW2_TEST() ) { setFPGAValveStates( 0x014F ); // TODO - test code - remove later setDrainPumpTargetSpeed( 1000 ); } +#endif // if we've been given a pressure, transition to control to target state if ( getTargetDrainPumpSpeed() > 0 ) { // set drain pump enable pin SET_DRAIN_PUMP_ENABLE(); + // set drain pump control mode + drainPumpControlModeSet = drainPumpControlMode; // set drain pump DAC drainPumpDACSet = drainPumpDAC; setFPGADrainPumpSpeed( drainPumpDACSet ); - // reset controller - resetPIController( PI_CONTROLLER_ID_DRAIN_PUMP, MIN_DRAIN_PUMP_PWM_DUTY_CYCLE ); // set pump to on isDrainPumpOn = TRUE; result = DRAIN_PUMP_CONTROL_TO_TARGET_STATE; @@ -266,13 +257,21 @@ drainControlTimerCounter = 0; } + if ( 0 == getTargetDrainPumpSpeed() ) + { + signalDrainPumpHardStop(); + result = DRAIN_PUMP_OFF_STATE; + } + +#ifdef DEBUG_ENABLED // TODO - test code - remove later if ( !GET_DIP_SW2_TEST() ) { signalDrainPumpHardStop(); setFPGAValveStates( 0x015F ); // TODO - test code - remove later result = DRAIN_PUMP_OFF_STATE; } +#endif return result; } @@ -434,15 +433,15 @@ /*********************************************************************//** * @brief - * The testSetTargetDrainPumpPressureOverride function overrides the target \n + * The testSetTargetDrainPumpSpeedOverride function overrides the target \n * drain pump speed (in RPM). * @details * Inputs : none * Outputs : targetDrainPumpSpeed * @param value : override target drain pump speed (in RPM) * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetTargetDrainPumpPressureOverride( U32 value ) +BOOL testSetTargetDrainPumpSpeedOverride( U32 value ) { BOOL result = FALSE; @@ -459,14 +458,14 @@ /*********************************************************************//** * @brief - * The testResetTargetDrainPumpPressureOverride function resets the override of the \n + * The testResetTargetDrainPumpSpeedOverride function resets the override of the \n * target drain pump speed (in RPM). * @details * Inputs : none * Outputs : targetDrainPumpSpeed * @return TRUE if override reset successful, FALSE if not *************************************************************************/ -BOOL testResetTargetDrainPumpPressureOverride( void ) +BOOL testResetTargetDrainPumpSpeedOverride( void ) { BOOL result = FALSE; Index: firmware/App/Services/PIControllers.c =================================================================== diff -u -r68fc03b5a22f14190146fc9069f022c109682b63 -rab6ac1bb140201e5737d594b3456038ea9e4725f --- firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision 68fc03b5a22f14190146fc9069f022c109682b63) +++ firmware/App/Services/PIControllers.c (.../PIControllers.c) (revision ab6ac1bb140201e5737d594b3456038ea9e4725f) @@ -55,7 +55,6 @@ static PI_CONTROLLER_T piControllers[ NUM_OF_PI_CONTROLLERS_IDS ] = { // Kp Ki uMax uMin ref meas err esw esum ctrl { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, // PI_CONTROLLER_ID_RO_PUMP - { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, // PI_CONTROLLER_ID_DRAIN_PUMP { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, // PI_CONTROLLER_ID_PRIMARY_HEATER { 0.0, 0.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } // PI_CONTROLLER_ID_TRIMMER_HEATER }; Index: firmware/App/Services/PIControllers.h =================================================================== diff -u -r138efd92a8645e0d2fe422409ef5a33dd2929a25 -rab6ac1bb140201e5737d594b3456038ea9e4725f --- firmware/App/Services/PIControllers.h (.../PIControllers.h) (revision 138efd92a8645e0d2fe422409ef5a33dd2929a25) +++ firmware/App/Services/PIControllers.h (.../PIControllers.h) (revision ab6ac1bb140201e5737d594b3456038ea9e4725f) @@ -33,7 +33,6 @@ typedef enum ControllerList { PI_CONTROLLER_ID_RO_PUMP = 0, ///< RO Pump controller. - PI_CONTROLLER_ID_DRAIN_PUMP, ///< Drain Pump controller. PI_CONTROLLER_ID_PRIMARY_HEATER, ///< Primary Heater controller. PI_CONTROLLER_ID_TRIMMER_HEATER, ///< Trimmer Heater controller. NUM_OF_PI_CONTROLLERS_IDS ///< Number of PI controllers. Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra75923f40bea362b44fc082ce8eebde7bfa97c9a -rab6ac1bb140201e5737d594b3456038ea9e4725f --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a75923f40bea362b44fc082ce8eebde7bfa97c9a) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision ab6ac1bb140201e5737d594b3456038ea9e4725f) @@ -1015,7 +1015,7 @@ * @param message : a pointer to the message to handle * @return none *************************************************************************/ -DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestDrainPumpSetPointOverrideRequest, testSetTargetDrainPumpPressureOverride, testResetTargetDrainPumpPressureOverride ) +DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestDrainPumpSetPointOverrideRequest, testSetTargetDrainPumpSpeedOverride, testResetTargetDrainPumpSpeedOverride ) /************************************************************************* * @brief