Index: firmware/App/Controllers/PermeateTank.c =================================================================== diff -u -r2475e55c224cbd841d61b76f1618451efe6be1f5 -r61b54ff1d0ff5120a8f3654ff1acf4628f442ffd --- firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 2475e55c224cbd841d61b76f1618451efe6be1f5) +++ firmware/App/Controllers/PermeateTank.c (.../PermeateTank.c) (revision 61b54ff1d0ff5120a8f3654ff1acf4628f442ffd) @@ -35,25 +35,18 @@ #define PERMEATE_TANK_PUMP_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) for permeate tank broadcast #define PERMEATE_TANK_PUBLISH_COUNTER_START_COUNT 9 ///< Publishing counter offset #define PERMEATE_TANK_FULL_SWITCH_MS ( 1 * MS_PER_SECOND ) ///< State switch timeout in full state (in ms) -#define PERMEATE_TANK_EMPTY_LEVEL_VOL_ML 0 ///< Permeate tank volume in empty level ( in ml ) -#define PERMEATE_TANK_LOW_LEVEL_VOL_ML 957 ///< Permeate tank volume in low level ( in ml ) -#define PERMEATE_TANK_HIGH_LEVEL_VOL_ML 1345 ///< Permeate tank volume in high level ( in ml ) -#define PERMEATE_TANK_FULL_LEVEL_VOL_ML 1532 ///< Permeate tank volume in full level ( in ml ) -#define RINSE_PUMP_TARGET_FLOW 228.89 ///< Rinse pump rate + // ********** private data ********** static PERMEATE_TANK_STATE_T permeateTankControllerState; ///< Current state of permeate controller state machine. static U32 permeateTankDataPublicationTimerCounter; ///< Used to schedule permeate tank data publication to CAN bus. 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 tankFullAlarmTimer; ///< Time stamp to track alarm timeout during tank full. -static U32 tankFillAlarmTimer; ///< Time stamp to track alarm timeout during tank fill. static U32 tankFullDelayTime; ///< Time stamp to track delay before valve switch. -static F32 tankFullAlarmTimeout; ///< Permeate tank full alarm timeout -static F32 tankFillAlarmTimeout; ///< Permeate tank fill alarm timeout + // ********** private function prototypes ********** static PERMEATE_TANK_STATE_T handlePermeateTankManualControlState( void ); @@ -78,10 +71,6 @@ permeateTankPublishInterval.ovInitData = PERMEATE_TANK_PUMP_DATA_PUB_INTERVAL; permeateTankPublishInterval.override = OVERRIDE_RESET; tankFullDelayTime = 0; - tankFullAlarmTimer = 0; - tankFillAlarmTimer = 0; - tankFullAlarmTimeout = 0.0F; - tankFillAlarmTimeout = 0.0F; } /*********************************************************************//** @@ -164,46 +153,6 @@ /*********************************************************************//** * @brief - * The getTankFullAlarmTimeout function returns the tank full alarm timeout - * @details \b Inputs: none - * @details \b Outputs: tankFullAlarmTimeout - * @return the alarm timeout for tank full - *************************************************************************/ -F32 getTankFullAlarmTimeout( void ) -{ - F32 expectedDeprimeTime = 0.0F; - F32 expectedTankFullTime = 0.0F; - F32 ddConsumptionRate = getTDDialysateFlowrate() + RINSE_PUMP_TARGET_FLOW; - - expectedTankFullTime = ( ( PERMEATE_TANK_HIGH_LEVEL_VOL_ML - PERMEATE_TANK_LOW_LEVEL_VOL_ML ) / ddConsumptionRate ) * SEC_PER_MIN; - expectedDeprimeTime = ( ( PERMEATE_TANK_LOW_LEVEL_VOL_ML - PERMEATE_TANK_EMPTY_LEVEL_VOL_ML ) / ddConsumptionRate ) * SEC_PER_MIN; - tankFullAlarmTimeout = expectedTankFullTime + expectedDeprimeTime; - - return tankFullAlarmTimeout; -} - -/*********************************************************************//** - * @brief - * The getTankFillAlarmTimeout function returns the tank fill alarm timeout - * @details \b Inputs: none - * @details \b Outputs: tankFillAlarmTimeout - * @return the alarm timeout for tank fill - *************************************************************************/ -F32 getTankFillAlarmTimeout( void ) -{ - F32 expectedOverfillTime = 0.0F; - F32 expectedTankFillTime = 0.0F; - F32 ddConsumptionRate = getTDDialysateFlowrate() + RINSE_PUMP_TARGET_FLOW; - - expectedTankFillTime = ( ( PERMEATE_TANK_HIGH_LEVEL_VOL_ML - PERMEATE_TANK_LOW_LEVEL_VOL_ML ) / ddConsumptionRate ) * SEC_PER_MIN; - expectedOverfillTime = ( ( PERMEATE_TANK_FULL_LEVEL_VOL_ML - PERMEATE_TANK_HIGH_LEVEL_VOL_ML ) / ddConsumptionRate ) * SEC_PER_MIN; - tankFillAlarmTimeout = ( expectedTankFillTime + ( expectedOverfillTime / 2 ) ); - - return tankFillAlarmTimeout; -} - -/*********************************************************************//** - * @brief * The execPermeateTankController function executes the air trap control state machine. * @details \b Alarm: ALARM_ID_FP_SOFTWARE_FAULT if current permeate tank control * state is invalid. @@ -291,11 +240,6 @@ PERMEATE_TANK_STATE_T state = PERMEATE_TANK_FILL_STATE; LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); - if ( TRUE == didTimeout( tankFillAlarmTimer, getTankFillAlarmTimeout() ) ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_GEN_PERMEATE_TANK_FILL_TIMEOUT, level ) - } - // Transition to manual valve control state when requested if ( TRUE == pendingStopPermeateTankController ) { @@ -324,11 +268,6 @@ PERMEATE_TANK_STATE_T state = PERMEATE_TANK_FULL_STATE; LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); - if ( TRUE == didTimeout( tankFullAlarmTimer, getTankFullAlarmTimeout() ) ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_GEN_PERMEATE_TANK_FULL_TIMEOUT, level ) - } - // Transition to manual valve control state when requested if ( TRUE == pendingStopPermeateTankController ) { @@ -373,20 +312,18 @@ setValveState( P34_VALV, VALVE_STATE_CLOSED ); // Current set to Medium recovery for alpha HW setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_OPEN ); - tankFillAlarmTimer = getMSTimerCount(); break; case PERMEATE_TANK_FULL_STATE: setValveState( M4_VALV, VALVE_STATE_CLOSED ); - setValveState( M12_VALV, VALVE_STATE_CLOSED ); + setValveState( M12_VALV, VALVE_STATE_OPEN ); setValveState( P6_VALV, VALVE_STATE_OPEN ); setValveState( P11_VALV, VALVE_STATE_OPEN ); setValveState( P33_VALV, VALVE_STATE_OPEN ); setValveState( P34_VALV, VALVE_STATE_CLOSED ); setValveState( P37_VALV, VALVE_STATE_CLOSED ); setValveState( P39_VALV, VALVE_STATE_CLOSED ); tankFullDelayTime = getMSTimerCount(); - tankFullAlarmTimer = getMSTimerCount(); break; default: