Index: firmware/App/Controllers/RinsePump.c =================================================================== diff -u -rcc893e9b6656058542c82ca3a72532944e46375b -re39cba3641902ed9c670f1ca7499f0b25b59bef1 --- firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision cc893e9b6656058542c82ca3a72532944e46375b) +++ firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision e39cba3641902ed9c670f1ca7499f0b25b59bef1) @@ -50,8 +50,6 @@ #define RINSE_PUMP_SPD_OUT_OF_RANGE_TOL_PCT 0.10F ///< Rinse pump commanded vs measured speed tolerance (10%). #define RINSE_PUMP_SPEED_OUT_PERSISTENCE_MS 500 ///< Persistence time (ms) before declaring speed-out-of-range alarm. #define RINSE_PUMP_MAX_RPM_ESTIMATE 3000U ///< Estimated max rinse pump RPM (for PWM-to-target conversion). -#define RINSE_PUMP_ZERO_U32 0U ///< Zero value for U32 variables (speed, counts). -#define RINSE_PUMP_ZERO_F32 0.0F ///< Zero value for F32 variables (error). // ********** private data ********** @@ -90,8 +88,8 @@ rinsePumpPwmPercentage.ovData = RINSE_PUMP_DEFAULT_PWM_PERCENT; rinsePumpPwmPercentage.ovInitData = RINSE_PUMP_DEFAULT_PWM_PERCENT; rinsePumpPwmPercentage.override = OVERRIDE_RESET; - rinsePumpMeasuredSpeed = RINSE_PUMP_ZERO_U32; - rinsePumpTargetSpeedRPM = RINSE_PUMP_ZERO_U32; + rinsePumpMeasuredSpeed = 0; + rinsePumpTargetSpeedRPM = 0; initPersistentAlarm( ALARM_ID_DD_D79_RINSE_PUMP_SPEED_OUT_OF_RANGE, 0, RINSE_PUMP_SPEED_OUT_PERSISTENCE_MS ); } @@ -167,7 +165,7 @@ { // Pulse width in 10us resolution U16 pumpPulseWidth = getFPGAD79RinsePumpPulseWidth(); - U32 pumpSpeedPerSec = RINSE_PUMP_ZERO_U32; + U32 pumpSpeedPerSec = 0; if ( ( RINSE_PUMP_PULSE_WIDTH_INVALID_MIN != pumpPulseWidth ) && ( RINSE_PUMP_PULSE_WIDTH_INVALID_MAX != pumpPulseWidth ) ) { @@ -178,17 +176,16 @@ } else { - rinsePumpMeasuredSpeed = RINSE_PUMP_ZERO_U32; + rinsePumpMeasuredSpeed = 0; } } /*********************************************************************//** * @brief - * The execRinsePumpMonitor function executes the rinse pump monitor. + * The execRinsePumpMonitor function executes the rinse pump monitor which + * calculates the rinse pump speed and monitors the rinse pump speed. * @details \b Inputs: none - * @details \b Outputs: publish rinse pump data - * @details \b Alarm: ALARM_ID_DD_D79_RINSE_PUMP_SPEED_OUT_OF_RANGE when - * commanded vs measured speed deviates beyond tolerance for RINSE_PUMP_SPEED_OUT_PERSISTENCE_MS (persistent alarm). + * @details \b Outputs: none * @return none *************************************************************************/ void execRinsePumpMonitor( void ) @@ -198,12 +195,8 @@ // Monitor pump speed monitorRinsePumpSpeed(); - - // Publish rinse pump data - publishRinsePumpData(); } - /*********************************************************************//** * @brief * The execRinsePumpController function executes the rinse pump state machine. @@ -214,7 +207,6 @@ *************************************************************************/ void execRinsePumpController( void ) { - switch( currentRinsePumpState ) { case RINSE_PUMP_STATE_INIT: @@ -234,6 +226,8 @@ break; } + // Publish rinse pump data + publishRinsePumpData(); } /*********************************************************************//** @@ -243,23 +237,25 @@ * RINSE_PUMP_SPEED_OUT_PERSISTENCE_MS. * @details \b Inputs: none * @details \b Outputs: none + * @details \b Alarm: ALARM_ID_DD_D79_RINSE_PUMP_SPEED_OUT_OF_RANGE when + * commanded vs measured speed deviates beyond tolerance for RINSE_PUMP_SPEED_OUT_PERSISTENCE_MS. * @return none *************************************************************************/ static void monitorRinsePumpSpeed( void ) { F32 rpTargetSpeed = (F32)rinsePumpTargetSpeedRPM; F32 rpMeasSpeed = (F32)rinsePumpMeasuredSpeed; - F32 rpError = RINSE_PUMP_ZERO_F32; + F32 rpError = 0.0; BOOL isRpSpeedOut = FALSE; F32 tolerance = RINSE_PUMP_SPD_OUT_OF_RANGE_TOL_PCT; if ( RINSE_PUMP_STATE_ON == currentRinsePumpState ) { rpError = fabs( rpMeasSpeed - rpTargetSpeed ); - if ( rpTargetSpeed > RINSE_PUMP_ZERO_F32 ) + if ( rpTargetSpeed > 0.0 ) { - rpError = rpError / rpTargetSpeed; + rpError = rpError / rpTargetSpeed; } isRpSpeedOut = ( rpError > tolerance ? TRUE : FALSE ); @@ -295,7 +291,7 @@ { RINSE_PUMP_STATE_T state = RINSE_PUMP_STATE_OFF; - rinsePumpTargetSpeedRPM = RINSE_PUMP_ZERO_U32; + rinsePumpTargetSpeedRPM = 0; if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { @@ -324,7 +320,7 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); // TODO should this conversion happen in setPWMCount function? - U08 pwmInCount = (U08)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); + U32 pwmInCount = (U32)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); rinsePumpTargetSpeedRPM = (U32)( ( (F32)pwmInCount / RINSE_PUMP_PWM_IN_COUNT_MAX ) * (F32)RINSE_PUMP_MAX_RPM_ESTIMATE ); @@ -383,7 +379,7 @@ data.d79PumpRPM = rinsePumpMeasuredSpeed; broadcastData( MSG_ID_DD_RINSE_PUMP_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( RINSE_PUMP_PAYLOAD_T ) ); - rinsePumpDataPublicationTimerCounter = RINSE_PUMP_ZERO_U32; + rinsePumpDataPublicationTimerCounter = 0; } }