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;