Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -r2e21405574597474db0ebae86cdd7fa2d517f71c -r44f739bf3e9dfe0bfb5910a6a32fc4c5b1533af3 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 2e21405574597474db0ebae86cdd7fa2d517f71c) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 44f739bf3e9dfe0bfb5910a6a32fc4c5b1533af3) @@ -47,8 +47,10 @@ #define PRESSURE_SAMPLES_TO_AVERAGE ( 200 / TASK_PRIORITY_INTERVAL ) ///< Averaging pressure data over the reporting interval. #define PRESSURE_AVERAGE_MULTIPLIER ( 1.0F / (F32)PRESSURE_SAMPLES_TO_AVERAGE ) ///< Optimization - multiplying is faster than dividing. -#define MIN_VALID_PRESSURE_RANGE 0.0F ///< Minimum valid range on pressure reading. -#define MAX_VALID_PRESSURE_RANGE 200.0F ///< Maximum valid range on pressure reading. +#define MIN_VALID_PRESSURE_RANGE_PSIA 0.0F ///< Minimum valid range on pressure psia. +#define MAX_VALID_PRESSURE_RANGE_PSIA 200.0F ///< Maximum valid range on pressure psia. +#define MIN_VALID_BARO_PRESSURE_PSIA 10.1F ///< Minimum valid barometric pressure in psia. +#define MAX_VALID_BARO_PRESSURE_PSIA 15.4F ///< Maximum valid barometric pressure in psia. #define MAX_INLET_WATER_PRESSURE_WARNING_LOW 25.0F ///< Maximum allowed low pressure value. #define MIN_INLET_WATER_PRESSURE_WARNING_LOW 28.0F ///< Minimum allowed low pressure value. @@ -133,15 +135,16 @@ for ( i = 0; i < NUM_OF_PRESSURE_SENSORS; i++ ) { - pressures[ i ].data = 0.0; - pressures[ i ].ovData = 0.0; - pressures[ i ].ovInitData = 0.0; + pressures[ i ].data = 0.0F; + pressures[ i ].ovData = 0.0F; + pressures[ i ].ovInitData = 0.0F; pressures[ i ].override = OVERRIDE_RESET; msrdPressureSum[ i ] = 0; } initPersistentAlarm( ALARM_ID_INLET_WATER_PRESSURE_IN_LOW_RANGE, INLET_WATER_PRESSURE_PERSISTENCE_PERIOD, INLET_WATER_PRESSURE_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_DG_PRESSURE_OUT_OF_RANGE, PRESSURE_OUT_OF_RANGE_TIMEOUT_MS, PRESSURE_OUT_OF_RANGE_TIMEOUT_MS ); + initPersistentAlarm( ALARM_ID_DG_BARO_PRESSURE_OUT_OF_RANGE, PRESSURE_OUT_OF_RANGE_TIMEOUT_MS, PRESSURE_OUT_OF_RANGE_TIMEOUT_MS ); } /*********************************************************************//** @@ -183,7 +186,7 @@ *************************************************************************/ F32 getMeasuredDGPressure( U32 pressureID ) { - F32 result = 0.0; + F32 result = 0.0F; if ( pressureID < NUM_OF_PRESSURE_SENSORS ) { @@ -320,7 +323,7 @@ if ( ++pressureFilterCounter >= PRESSURE_SAMPLES_TO_AVERAGE ) { F32 adcSum; - F32 pressureBeforeCal = 0.0; + F32 pressureBeforeCal = 0.0F; F32 baroPressure = getBaroPressurePSI(); pressureFilterCounter = 0; @@ -354,10 +357,26 @@ for ( sensorId = 0; sensorId < NUM_OF_PRESSURE_SENSORS; sensorId++ ) { - pressureReading = getMeasuredDGPressure( sensorId ) + getBaroPressurePSI(); - isPressureOutOfRange = ( ( pressureReading < MIN_VALID_PRESSURE_RANGE ) || ( pressureReading > MAX_VALID_PRESSURE_RANGE ) ? TRUE : FALSE ); + switch ( sensorId ) + { + case PRESSURE_SENSOR_RO_PUMP_INLET: + case PRESSURE_SENSOR_RO_PUMP_OUTLET: + case PRESSURE_SENSOR_DRAIN_PUMP_INLET: + case PRESSURE_SENSOR_DRAIN_PUMP_OUTLET: + pressureReading = getMeasuredDGPressure( sensorId ) + getBaroPressurePSI(); + isPressureOutOfRange = ( ( pressureReading < MIN_VALID_PRESSURE_RANGE_PSIA ) || ( pressureReading > MAX_VALID_PRESSURE_RANGE_PSIA ) ? TRUE : FALSE ); + checkPersistentAlarm( ALARM_ID_DG_PRESSURE_OUT_OF_RANGE, isPressureOutOfRange, (F32)sensorId, pressureReading ); + break; - checkPersistentAlarm( ALARM_ID_DG_PRESSURE_OUT_OF_RANGE, isPressureOutOfRange, (F32)sensorId, pressureReading ); + case PRESSURE_SENSOR_BAROMETRIC: + if ( baroConvConsts.pressureSensitivity != 0 ) + { + pressureReading = getBaroPressurePSI(); + isPressureOutOfRange = ( ( pressureReading < MIN_VALID_BARO_PRESSURE_PSIA ) || ( pressureReading > MAX_VALID_BARO_PRESSURE_PSIA ) ? TRUE : FALSE ); + checkPersistentAlarm( ALARM_ID_DG_BARO_PRESSURE_OUT_OF_RANGE, isPressureOutOfRange, (F32)sensorId, pressureReading ); + } + break; + } } return result; @@ -377,14 +396,14 @@ { PRESSURES_DATA_T data; - data.roPumpInletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_INLET ); - data.roPumpOutletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_OUTLET ); - data.drainPumpInletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_DRAIN_PUMP_INLET ); - data.drainPumpOutletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ); - data.barometricPressure = getMeasuredDGPressure( PRESSURE_SENSOR_BAROMETRIC ); + data.roPumpInletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_INLET ); + data.roPumpOutletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_OUTLET ); + data.drainPumpInletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_DRAIN_PUMP_INLET ); + data.drainPumpOutletPressure = getMeasuredDGPressure( PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ); + data.barometricPressure = getMeasuredDGPressure( PRESSURE_SENSOR_BAROMETRIC ); + pressuresDataPublicationTimerCounter = 0; broadcastData( MSG_ID_DG_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( PRESSURES_DATA_T ) ); - pressuresDataPublicationTimerCounter = 0; } }