Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r9b8889b096ae02246e939468fc843f467de8c6bb -re57a78613dfdcb22e9662d3e01e82c7a4de655a1 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 9b8889b096ae02246e939468fc843f467de8c6bb) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision e57a78613dfdcb22e9662d3e01e82c7a4de655a1) @@ -85,6 +85,8 @@ #define MAX_ALLOWED_MEASURED_PRESSURE_PSI 135 ///< Maximum allowed pressure that the sensor measures. RO pump shut off pressure is 140psi. #define MAX_PRESSURE_OUT_OF_RANGE_PERSISTENT_INTERVAL MS_PER_SECOND ///< Maximum allowed time that the pressure can be very high. #define MAX_ALLOWED_RAMP_UP_TIME ( 10 * MS_PER_SECOND ) ///< Maximum allowed ramp up time to a flow rate in ms. +#define MAX_ALLOWED_ROPUMP_PWM_PERCENT ( 0.95F ) ///< Maximum allowed RO Pump PWM . +#define MAX_ROPUMP_PWM_PERSISTENT_INTERVAL ( MS_PER_SECOND ) ///< Maximum allowed time that ROPump PWM can be high in ms. #define ROP_PSI_TO_PWM_DC(p) ( 0.2F + ( (F32)((p) - 100) * 0.01F ) ) ///< Conversion factor from target PSI to PWM duty cycle estimate. #define SAFETY_SHUTDOWN_TIMEOUT ( 3 * MS_PER_SECOND ) ///< RO pump safety shutdown activation timeout in ms. @@ -195,6 +197,9 @@ // Initialize the persistent alarm for not turning off the pump initPersistentAlarm( ALARM_ID_DG_RO_PUMP_DUTY_CYCLE_OUT_OF_RANGE, SAFETY_SHUTDOWN_TIMEOUT, SAFETY_SHUTDOWN_TIMEOUT ); + // Initialize the persistent alarm for maximum RO PWM exceeded + initPersistentAlarm( ALARM_ID_DG_MAX_RO_PWM, MAX_ROPUMP_PWM_PERSISTENT_INTERVAL, MAX_ROPUMP_PWM_PERSISTENT_INTERVAL ); + // Initialize the variables roControlTimerCounter = 0; roPumpOpenLoopTargetDutyCycle = 0; @@ -802,7 +807,13 @@ *************************************************************************/ static void setROPumpControlSignalDutyCycle( F32 dutyCycle ) { + etpwmSetCmpB( etpwmREG2, (U32)( (S32)( ( dutyCycle * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); + + // See if the maximum PWM alarm has occurred + bool isMaxPWM = dutyCycle > MAX_ALLOWED_ROPUMP_PWM_PERCENT ? TRUE : FALSE; + checkPersistentAlarm( ALARM_ID_DG_RO_PUMP_PRESSURE_OUT_OF_RANGE, isMaxPWM, dutyCycle, MAX_ALLOWED_ROPUMP_PWM_PERCENT ); + } /*********************************************************************//**