Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -re0cdf49eb0f54239e5d765282e0952cea7ded1bd -r867521a9810f2218c34d96164fab614494a63f8d --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision e0cdf49eb0f54239e5d765282e0952cea7ded1bd) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 867521a9810f2218c34d96164fab614494a63f8d) @@ -63,6 +63,7 @@ #define EMSTAT_PICO_TIMING_NOT_MET_STATUS 0x11 ///< Measurement takes too long status. #define EMSTAT_PICO_FIFO_EMPTY_MASK 0x8000 ///< Emstat Pico buffer empty indication bit. #define DATA_PUBLISH_COUNTER_START_COUNT 40 ///< Data publish counter start count. +#define COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD ( 1 * MS_PER_SECOND ) ///< Conductivity sensor bad status persistence period. #pragma pack(push,1) /// Emstat pico measurement data package structure @@ -148,6 +149,7 @@ initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, COND_SENSOR_PERSISTENCE_PERIOD, COND_SENSOR_PERSISTENCE_PERIOD ); initPersistentAlarm( ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, RO_REJECTION_RATIO_PERSISTENCE_PERIOD, RO_REJECTION_RATIO_PERSISTENCE_PERIOD ); + initPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD, COND_SENSOR_BAD_STATUS_PERSISTENCE_PERIOD ); } /*********************************************************************//** @@ -420,25 +422,27 @@ static void processMeasurementDataPackage( U32 sensorId ) { EMSTAT_VARIABLE_T const * const measurementPtr = (EMSTAT_VARIABLE_T *)&package; - U32 const status = hexStrToDec( (U08 *)&measurementPtr->status, sizeof( measurementPtr->status ) ); + U32 status = hexStrToDec( (U08 *)&measurementPtr->status, sizeof( measurementPtr->status ) ); if ( EMSTAT_PICO_GOOD_STATUS == status ) { - U32 const prefix = prefixStrToSIFactor( measurementPtr->prefix ); - F32 const resistance = ( ( F32 )( hexStrToDec( measurementPtr->value, sizeof( measurementPtr->value ) ) - EMSTAT_PICO_MEASUREMENT_OFFSET ) / prefix ); - F32 const temperature = getTemperatureValue( associateTempSensor[ sensorId ] ); - F32 const conductivity = ( 1 / resistance * SIEMENS_TO_MICROSIEMENS_CONVERSION ); - F32 const compensatedCond = calcCompensatedConductivity( conductivity, temperature ); + U32 prefix = prefixStrToSIFactor( measurementPtr->prefix ); + F32 resistance = ( ( F32 )( hexStrToDec( measurementPtr->value, sizeof( measurementPtr->value ) ) - EMSTAT_PICO_MEASUREMENT_OFFSET ) / prefix ); + F32 temperature = getTemperatureValue( associateTempSensor[ sensorId ] ); + F32 conductivity = ( 1.0 / resistance * SIEMENS_TO_MICROSIEMENS_CONVERSION ); + F32 compensatedCond = calcCompensatedConductivity( conductivity, temperature ); - internalErrorCount[ sensorId ] = 0; + internalErrorCount[ sensorId ] = 0; compensatedConductivityValues[ sensorId ].data = getCalibrationAppliedConductivityValue( sensorId, compensatedCond ); - rawConductivityValues[ sensorId ] = conductivity; // store raw conductivity data from CD1 and CD2 + rawConductivityValues[ sensorId ] = conductivity; // store raw conductivity data from CD1 and CD2 + // Clear the alarm + checkPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, FALSE, status, EMSTAT_PICO_GOOD_STATUS ); } else { - compensatedConductivityValues[ sensorId ].data = 0.0; - rawConductivityValues[ sensorId ] = 0.0; + // TODO ucomment this looks like we get bad status several times + //checkPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, TRUE, status, EMSTAT_PICO_GOOD_STATUS ); } if ( EMSTAT_PICO_TIMING_NOT_MET_STATUS == status )