Index: firmware/App/Controllers/PermeateTank.c =================================================================== diff -u -r846073b88a25474464d43b4c0e8f300b52021f96 -ra4f89c8a38b6c77baaa141b38045b511b1887a21 --- firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 846073b88a25474464d43b4c0e8f300b52021f96) +++ firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision a4f89c8a38b6c77baaa141b38045b511b1887a21) @@ -43,7 +43,6 @@ static OVERRIDE_U32_T permeateTankPublishInterval; ///< Interval (in ms) at which to publish permeate tank data to CAN bus. static BOOL pendingStartPermeateTankController; ///< Flag indicates an air trap controller start request is pending. static BOOL pendingStopPermeateTankController; ///< Flag indicates an air trap controller stop request is pending. -static U32 tankFullDelayTime; ///< Time stamp to track delay before valve switch. // ********** private function prototypes ********** @@ -68,7 +67,6 @@ permeateTankPublishInterval.ovData = PERMEATE_TANK_PUMP_DATA_PUB_INTERVAL; permeateTankPublishInterval.ovInitData = PERMEATE_TANK_PUMP_DATA_PUB_INTERVAL; permeateTankPublishInterval.override = OVERRIDE_RESET; - tankFullDelayTime = 0; } /*********************************************************************//** @@ -274,10 +272,7 @@ } else if ( level == LEVEL_STATE_LOW ) { - if ( TRUE == didTimeout( tankFullDelayTime, PERMEATE_TANK_FULL_SWITCH_MS ) ) - { - state = PERMEATE_TANK_FILL_STATE; - } + state = PERMEATE_TANK_FILL_STATE; } return state; @@ -321,7 +316,6 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); - tankFullDelayTime = getMSTimerCount(); break; default: Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r846073b88a25474464d43b4c0e8f300b52021f96 -ra4f89c8a38b6c77baaa141b38045b511b1887a21 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 846073b88a25474464d43b4c0e8f300b52021f96) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision a4f89c8a38b6c77baaa141b38045b511b1887a21) @@ -75,7 +75,6 @@ static OVERRIDE_F32_T roPumpOpenLoopTargetDutyCycle; ///< Target RO pump open loop PWM. static BOOL roPumpStartControl; ///< boolean to determine when closed loop flow control starts static U32 roPumpClosedLoopStartTimeMS; ///< Timeout timer for RO pump to reach minimum target flow -static BOOL reachedMinimumFlow; ///< Flag indicating RO pump reached minimum target flow // ********** private function prototypes ********** @@ -134,7 +133,6 @@ roPumpOpenLoopTargetDutyCycle.ovInitData = 0.0; roPumpOpenLoopTargetDutyCycle.override = OVERRIDE_RESET; roPumpClosedLoopStartTimeMS = 0; - reachedMinimumFlow = FALSE; stopROPump(); } @@ -326,19 +324,6 @@ } } roControlTimerCounter = 0; - - //is flow rate less than 75% of the target flow rate wait for 10 seconds for timeout - if ( ( minRequiredFlowRate > currentFlowRate ) && ( reachedMinimumFlow == FALSE ) ) - { - if ( TRUE == didTimeout( roPumpClosedLoopStartTimeMS, FP_FLOW_RATE_BELOW_TARGET_TIMEOUT_MS ) ) - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_PERMEATE_FLOW_RATE_BELOW_TARGET, FP_FLOW_RATE_BELOW_TARGET_TIMEOUT_MS, currentFlowRate ) - } - } - else - { - reachedMinimumFlow = TRUE; - } } return state; Index: firmware/App/Modes/FPModes/FlushFilter.c =================================================================== diff -u -rbadf38264b5f9f238d46d860f165b1e1bb4311b7 -ra4f89c8a38b6c77baaa141b38045b511b1887a21 --- firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision badf38264b5f9f238d46d860f165b1e1bb4311b7) +++ firmware/App/Modes/FPModes/FlushFilter.c (.../FlushFilter.c) (revision a4f89c8a38b6c77baaa141b38045b511b1887a21) @@ -107,7 +107,6 @@ { case FILTER_FLUSH_IN_PROGRESS: filterFlushState = handleFilterFlushProgressState(); - checkInletTemperatures(); break; case FILTER_FLUSH_PAUSED: @@ -126,7 +125,7 @@ } // check inlet temperature m3 - checkInletTemperatures(); + checkFiletFlushInletTemperature(); // publish filter flush data on interval publishFilterFlushData(); Index: firmware/App/Monitors/WaterQualityMonitor.c =================================================================== diff -u -rfeffc616fe52aa0719cfabeb1d94f4d20b3d354b -ra4f89c8a38b6c77baaa141b38045b511b1887a21 --- firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision feffc616fe52aa0719cfabeb1d94f4d20b3d354b) +++ firmware/App/Monitors/WaterQualityMonitor.c (.../WaterQualityMonitor.c) (revision a4f89c8a38b6c77baaa141b38045b511b1887a21) @@ -37,6 +37,7 @@ #define INLET_TEMPERATURE_LOW_THRESHOLD_C 5.0F ///< Minimum allowed Inlet temperature in C. #define INLET_TEMPERATURE_HIGH_THRESHOLD_C 30.0F ///< Maximum allowed Inlet temperature in C. +#define INLET_TEMPERATURE_CRITICAL_THRESHOLD_C 40.0F ///< Maximum allowed Inlet temperature in C during filters flush state. #define INLET_TEMPERATURE_PERSISTENCE_TIMER_MS ( 5 * MS_PER_SECOND ) ///< Persistence timer to trigger alarm in ms. #define INLET_TEMPERATURE_PERSISTENCE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence timer to clear alarm in ms. @@ -308,7 +309,7 @@ /*********************************************************************//** * @brief - * The checkInletTemperature function checks the inlet water temperature + * The checkInletTemperatures function checks the inlet water temperature * against the temperature threshold and alarm if the temperature is out of range. * @details \b Inputs: temperatureP10 for featured or temperatureM3 for de-featured * @details \b Outputs: none @@ -318,9 +319,9 @@ * P10 or M3 temperature goes beyond high temperature limit * @return none *************************************************************************/ -void checkInletTemperature( void ) +void checkInletTemperatures( void ) { - F32 d1Temperature; + F32 temperatureD1; F32 temperatureP10; BOOL isTempOutOfLowRange = FALSE; BOOL isTempOutOfHighRange = FALSE; @@ -336,43 +337,32 @@ } else { - d1Temperature =getTemperatureValue( D1_TEMP ); - isTempOutOfLowRange = ( ( d1Temperature < INLET_TEMPERATURE_LOW_THRESHOLD_C ) ? TRUE : FALSE ); - isTempOutOfHighRange = ( ( d1Temperature > INLET_TEMPERATURE_HIGH_THRESHOLD_C ) ? TRUE : FALSE ); + temperatureD1 =getTemperatureValue( D1_TEMP ); + isTempOutOfLowRange = ( ( temperatureD1 < INLET_TEMPERATURE_LOW_THRESHOLD_C ) ? TRUE : FALSE ); + isTempOutOfHighRange = ( ( temperatureD1 > INLET_TEMPERATURE_HIGH_THRESHOLD_C ) ? TRUE : FALSE ); - checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_LOW_RANGE, isTempOutOfLowRange, d1Temperature, INLET_TEMPERATURE_LOW_THRESHOLD_C ); - checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_HIGH_RANGE, isTempOutOfHighRange, d1Temperature, INLET_TEMPERATURE_HIGH_THRESHOLD_C ); + checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_LOW_RANGE, isTempOutOfLowRange, temperatureD1, INLET_TEMPERATURE_LOW_THRESHOLD_C ); + checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_HIGH_RANGE, isTempOutOfHighRange, temperatureD1, INLET_TEMPERATURE_HIGH_THRESHOLD_C ); } } /*********************************************************************//** * @brief - * The checkInletTemperatures function checks the inlet water temperature + * The checkFiletFlushInletTemperature function checks the inlet water temperature * against the temperature threshold and alarm if the temperature is out of range. - * @details \b Inputs: temperatureP10, temperatureM3 + * @details \b Inputs: temperatureM3 * @details \b Outputs: none - * @details \b Alarms: ALARM_ID_FP_INLET_TEMPERATURE_OUT_LOW_RANGE when - * P10 or M3 temperature goes beyond low temperature limit. - * @details \b Alarms: ALARM_ID_FP_INLET_TEMPERATURE_OUT_HIGH_RANGE when - * P10 or M3 temperature goes beyond high temperature limit + * @details \b Alarms: ALARM_ID_FP_INLET_TEMPERATURE_OUT_CRITICAL_RANGE when + * M3 temperature goes beyond high temperature limit * @return none *************************************************************************/ -void checkInletTemperatures( void ) +void checkFiletFlushInletTemperature( void ) { - F32 temperatureP10 = getFilteredConductivitySensorTemperature( P9_COND ); F32 temperatureM3 = getFilteredPressureSensorTemperature( M3_PRES ); - BOOL isTempOutOfLowRange = FALSE; BOOL isTempOutOfHighRange = FALSE; - isTempOutOfLowRange = ( ( temperatureP10 < INLET_TEMPERATURE_LOW_THRESHOLD_C ) ? TRUE : FALSE ); - isTempOutOfHighRange = ( ( temperatureP10 > INLET_TEMPERATURE_HIGH_THRESHOLD_C ) ? TRUE : FALSE ); - checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_LOW_RANGE, isTempOutOfLowRange, temperatureP10, INLET_TEMPERATURE_LOW_THRESHOLD_C ); - checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_HIGH_RANGE, isTempOutOfHighRange, temperatureP10, INLET_TEMPERATURE_HIGH_THRESHOLD_C ); - - isTempOutOfLowRange = ( ( temperatureM3 < INLET_TEMPERATURE_LOW_THRESHOLD_C ) ? TRUE : FALSE ); - isTempOutOfHighRange = ( ( temperatureM3 > INLET_TEMPERATURE_HIGH_THRESHOLD_C ) ? TRUE : FALSE ); - checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_LOW_RANGE, isTempOutOfLowRange, temperatureM3, INLET_TEMPERATURE_LOW_THRESHOLD_C ); - checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_HIGH_RANGE, isTempOutOfHighRange, temperatureM3, INLET_TEMPERATURE_HIGH_THRESHOLD_C ); + isTempOutOfHighRange = ( ( temperatureM3 >= INLET_TEMPERATURE_CRITICAL_THRESHOLD_C ) ? TRUE : FALSE ); + checkPersistentAlarm( ALARM_ID_FP_INLET_TEMPERATURE_OUT_CRITICAL_RANGE, isTempOutOfHighRange, temperatureM3, INLET_TEMPERATURE_CRITICAL_THRESHOLD_C ); } /*********************************************************************//** Index: firmware/App/Monitors/WaterQualityMonitor.h =================================================================== diff -u -rbadf38264b5f9f238d46d860f165b1e1bb4311b7 -ra4f89c8a38b6c77baaa141b38045b511b1887a21 --- firmware/App/Monitors/WaterQualityMonitor.h (.../WaterQualityMonitor.h) (revision badf38264b5f9f238d46d860f165b1e1bb4311b7) +++ firmware/App/Monitors/WaterQualityMonitor.h (.../WaterQualityMonitor.h) (revision a4f89c8a38b6c77baaa141b38045b511b1887a21) @@ -48,6 +48,7 @@ void checkPermeateLowFlow( void ); void checkRODutyCycle( void ); void checkROInletPressure( void ); +void checkFiletFlushInletTemperature( void ); BOOL testROGetCurrentCalcuclatedDutyCycle();