Index: firmware/App/Monitors/Pressure.c =================================================================== diff -u -raf3b8065167834683ec01c8c8342b3d196fca593 -r337136fc77fe5628fa727aac6252a06238561a10 --- firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision af3b8065167834683ec01c8c8342b3d196fca593) +++ firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 337136fc77fe5628fa727aac6252a06238561a10) @@ -40,19 +40,6 @@ #define SIZE_OF_PRESSURE_ROLLING_AVG ( PRESSURE_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered pressure moving average. #define SIZE_OF_PRESSURETEMP_ROLLING_AVG ( PRESSURE_TEMP_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered pressure temprature w/ 1 second moving average. -#define MAX_INLET_RO_PUMP_PRESSURE_WARNING 120.0F -#define MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG 30.0F ///< Minimum allowed Input low pressure value in psig without boost pump. -#define MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG 80.0F ///< Maximum allowed Input high pressure value in psig without boost pump. -#define MIN_INLET_WATER_PRESSURE_WARNING_BOOST_LOW_PSIG 10.0F ///< Minimum allowed Input low pressure value in psig with boost pump. -#define MAX_INLET_WATER_PRESSURE_WARNING_BOOST_HIGH_PSIG 80.0F ///< Maximum allowed Input high pressure value in psig with boost pump. -#define MIN_PRESSURE_RELIEF_WARNING_LOW_PSI 13.0F -#define MAX_PRESSURE_RELIEF_WARNING_HIGH_PSIG 17.0F -#define INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error in milliseconds. -#define INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range clear in milliseconds. -#define INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_TIMEOUT_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error in milliseconds. -#define INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_CLEAR_MS ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range clear in milliseconds. - - /// Defined states for the pressures monitor state machine. typedef enum PresMonitor_States { @@ -83,7 +70,6 @@ static OVERRIDE_F32_T filteredcurrentPressureReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< filtered current pressure sensor pressure readings (overrideable). static OVERRIDE_F32_T filteredcurrentPresTempReadings[ NUM_OF_PRESSURE_SENSORS ]; ///< filtered current pressure sensor temperature readings (overrideable). -//static RO_PRES_SENSORS_CAL_RECORD_T pressuresCalRecord; ///< Pressures calibration record. static FILTER_PRESSURE_READINGS_T filteredPressureReadings[NUM_OF_PRESSURE_SENSORS]; ///< Filtered pressure reading for pressure sensors. static FILTER_PRESSURE_TEMPERATURE_READINGS_T filteredPressureTempReadings[NUM_OF_PRESSURE_SENSORS]; ///< Filtered pressure reading for pressure sensors. @@ -96,15 +82,10 @@ static void filterPressureSensors( void ); static void filterPressureSensorReadings( void ); static void filterPressureSensorTemperatureReadings( void ); -//static F32 getCalibrationAppliedPressure( U08 sensorId, F32 pressure ); static F32 getConvertedPressure( PRESSURE_SENSORS_T sensor, F32 pressure ); static PRESSURE_STATE_T handlePressuresInitState( void ); static PRESSURE_STATE_T handlePressuresContReadState( void ); static void publishPressuresData( void ); -static void monitorPressureSenors( void ); -static void monitorOperationModeAlarms( FP_OP_MODE_T opMode ); -static void monitorPreGenAlarms( void ); -static void monitorGenPAlarms( void ); /*********************************************************************//** * @brief @@ -149,12 +130,6 @@ pressuresDataPublishInterval.ovData = PRESSURES_DATA_PUB_INTERVAL; pressuresDataPublishInterval.ovInitData = 0; pressuresDataPublishInterval.override = OVERRIDE_RESET; - - initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_FP_PRESSURE_RELIEF_OUT_LOW_RANGE, INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_FP_PRESSURE_RELIEF_OUT_HIGH_RANGE, INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_RELIEF_OUT_OF_RANGE_TIMEOUT_MS ); - initPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_REGULATOR_OUT_OF_RANGE, INLET_WATER_PRES_OUT_OF_RANGE_CLEAR_MS, INLET_WATER_PRES_OUT_OF_RANGE_TIMEOUT_MS ); } /*********************************************************************//** @@ -341,153 +316,13 @@ pressuresState = PRESSURE_INIT_STATE; break; } - - monitorPressureSenors(); // publish pressure/occlusion data on interval publishPressuresData(); } -/*********************************************************************//** - * @brief - * The monitorPressureSenors function monitors the temperature sensors' - * temperature value and raises an alarm if any of them are out of range - * for more than the specified time. - * @details \b Inputs: tempSensors - * @details \b Outputs: tempSensors - * @details \b Alarms: ALARM_ID_DD_TEMPERATURE_SENSOR_OUT_OF_RANGE when the - * measured temperature exceeds the maximum limit temperature. - * @return none - *************************************************************************/ -static void monitorPressureSenors( void ) -{ - monitorOperationModeAlarms( getCurrentOperationMode() ); -} - -static void monitorOperationModeAlarms( FP_OP_MODE_T opMode ) -{ - switch ( opMode ) - { - case FP_MODE_FAUL: - break; - - case FP_MODE_SERV: - break; - - case FP_MODE_INIT: - break; - - case FP_MODE_STAN: - break; - - case FP_MODE_PGEN: - monitorPreGenAlarms(); - break; - - case FP_MODE_GENP: - monitorGenPAlarms(); - break; - - case FP_MODE_DPGW: - break; - - case FP_MODE_DEGW: - break; - default: - // SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, tempSensorsExecState ); - // tempSensorsExecState = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES; - break; - } -} - /*********************************************************************//** * @brief - * The monitorPreGenAlarms function checks pressure alarm conditions for alarms that are - * monitored in Pre-Generate Permeate mode. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -static void monitorPreGenAlarms( void ) -{ - FP_PRE_GENP_MODE_STATE_T preGenState = getCurrentPreGenPState(); - F32 pressureM1 = getFilteredPressure( M1_PRES ); - F32 pressureP17 = getFilteredPressure( P17_PRES ); - F32 pressureP13 = getFilteredPressure( P13_PRES ); - BOOL isPresOutOfLowRange = FALSE; - BOOL isPresOutOfHighRange = FALSE; - BOOL isPresReliefOutOfLowRange = FALSE; - BOOL isPresReliefOutOfHighRange = FALSE; - - if ( pressureP13 > MAX_INLET_RO_PUMP_PRESSURE_WARNING ) - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE, pressureP13, MAX_INLET_RO_PUMP_PRESSURE_WARNING ) - } - - if (TRUE == isBoostPumpInstalled() ) - { - isPresOutOfLowRange = ( ( pressureM1 < MIN_INLET_WATER_PRESSURE_WARNING_BOOST_LOW_PSIG ) ? TRUE : FALSE); - isPresOutOfHighRange = ( ( pressureM1 > MAX_INLET_WATER_PRESSURE_WARNING_BOOST_HIGH_PSIG ) ? TRUE : FALSE); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, isPresOutOfLowRange, pressureM1, MIN_INLET_WATER_PRESSURE_WARNING_BOOST_LOW_PSIG ); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, isPresOutOfHighRange, pressureM1, MAX_INLET_WATER_PRESSURE_WARNING_BOOST_HIGH_PSIG ); - } - else - { - isPresOutOfLowRange = ( ( pressureM1 < MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ) ? TRUE : FALSE); - isPresOutOfHighRange = ( ( pressureM1 > MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ) ? TRUE : FALSE); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, isPresOutOfLowRange, pressureM1, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, isPresOutOfHighRange, pressureM1, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); - } - - if ( preGenState == FP_PRE_GENP_VERIFY_WATER ) - { - isPresReliefOutOfLowRange = ( ( pressureP17 < MIN_PRESSURE_RELIEF_WARNING_LOW_PSI ) ? TRUE : FALSE); - isPresReliefOutOfHighRange = ( ( pressureP17 > MAX_PRESSURE_RELIEF_WARNING_HIGH_PSIG ) ? TRUE : FALSE); - checkPersistentAlarm( ALARM_ID_FP_PRESSURE_RELIEF_OUT_LOW_RANGE, isPresReliefOutOfLowRange, pressureP17, MIN_PRESSURE_RELIEF_WARNING_LOW_PSI ); - checkPersistentAlarm( ALARM_ID_FP_PRESSURE_RELIEF_OUT_HIGH_RANGE, isPresReliefOutOfHighRange, pressureP17, MAX_PRESSURE_RELIEF_WARNING_HIGH_PSIG ); - } - -} - -/*********************************************************************//** - * @brief - * The monitorGenPAlarms function checks pressure alarm conditions for alarms that are - * monitored in Generate Permeate mode - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -static void monitorGenPAlarms( void ) -{ - F32 pressureM1 = getFilteredPressure( M1_PRES ); - F32 pressureP13 = getFilteredPressure( P13_PRES ); - BOOL isPresOutOfLowRange = FALSE; - BOOL isPresOutOfHighRange = FALSE; - - if ( pressureP13 > MAX_INLET_RO_PUMP_PRESSURE_WARNING ) - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_RO_INLET_PRESSURE_OUT_HIGH_RANGE, pressureP13, MAX_INLET_RO_PUMP_PRESSURE_WARNING ) - } - - if (TRUE == isBoostPumpInstalled() ) - { - isPresOutOfLowRange = ( ( pressureM1 < MIN_INLET_WATER_PRESSURE_WARNING_BOOST_LOW_PSIG ) ? TRUE : FALSE); - isPresOutOfHighRange = ( ( pressureM1 > MAX_INLET_WATER_PRESSURE_WARNING_BOOST_HIGH_PSIG ) ? TRUE : FALSE); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, isPresOutOfLowRange, pressureM1, MIN_INLET_WATER_PRESSURE_WARNING_BOOST_LOW_PSIG ); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, isPresOutOfHighRange, pressureM1, MAX_INLET_WATER_PRESSURE_WARNING_BOOST_HIGH_PSIG ); - } - else - { - isPresOutOfLowRange = ( ( pressureM1 < MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ) ? TRUE : FALSE); - isPresOutOfHighRange = ( ( pressureM1 > MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ) ? TRUE : FALSE); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_LOW_RANGE, isPresOutOfLowRange, pressureM1, MIN_INLET_WATER_PRESSURE_WARNING_LOW_PSIG ); - checkPersistentAlarm( ALARM_ID_FP_INLET_PRESSURE_OUT_HIGH_RANGE, isPresOutOfHighRange, pressureM1, MAX_INLET_WATER_PRESSURE_WARNING_HIGH_PSIG ); - } - -} - -/*********************************************************************//** - * @brief * The filterPressureSensorReadings function filters the pressures for * defined interval to get average pressure reading. * @details \b Inputs: filteredPressureReadings,currentPressureReadings @@ -617,10 +452,10 @@ /*********************************************************************//** * @brief - * The publishPressuresData function publishes RO pressures data at a set interval. + * The publishPressuresData function publishes FP pressures data at a set interval. * @details \b Inputs: pressuresDataPublicationTimerCounter * @details \b Outputs: pressuresDataPublicationTimerCounter - * @details \b Message \b Sent: MSG_ID_RO_PRESSURES_DATA to publish pressure data. + * @details \b Message \b Sent: MSG_ID_FP_PRESSURES_DATA to publish pressure data. * @return none *************************************************************************/ static void publishPressuresData( void )