Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -rb0f71f7faa129e67fa5a36629801e4ae6a0173f4 -r66c624837b7b915415810e67249048ce5a46c163 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision b0f71f7faa129e67fa5a36629801e4ae6a0173f4) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 66c624837b7b915415810e67249048ce5a46c163) @@ -46,9 +46,9 @@ #define MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS (60 * MS_PER_SECOND) ///< Conductivity sensor error window #define RO_REJECTION_RATIO_REPORT_PERIOD (MS_PER_SECOND / TASK_PRIORITY_INTERVAL) ///< Broadcast RO rejection ratio message every second -#define RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE 1 ///< Out of range value for RO rejection ratio when CPi conductivity is zero +#define RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE 1.0 ///< Out of range value for RO rejection ratio when CPi conductivity is zero #define MAX_RO_REJECTION_RATIO_ALLOW 0.1 ///< Maximum RO Rejection ratio -#define MAX_CPO_CONDUCTIVITY_ALLOW 15 ///< Maximum CPo sensor conductivity value +#define MAX_CPO_CONDUCTIVITY_ALLOW 15.0 ///< Maximum CPo sensor conductivity value #define RO_REJECTION_RATIO_PERSISTENCE_COUNT (10 * MS_PER_SECOND / TASK_GENERAL_INTERVAL) ///< Number of persistence count for RO rejection ro // ********** private data ********** @@ -62,7 +62,7 @@ static U08 readCount[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Read count for conductivity readings. static U32 internalErrorCount[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Internal error count for conductivity readings. static OVERRIDE_F32_T compensatedConductivityValues[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Latest compensated conductivity values. -static OVERRIDE_F32_T roRejectionRatio; ///< Latest RO rejection ratio +static F32 roRejectionRatio; ///< Latest RO rejection ratio static OVERRIDE_U32_T conductivityDataPublishInterval = { COND_SENSOR_REPORT_PERIOD, COND_SENSOR_REPORT_PERIOD, 0, 0 }; ///< Conductivity sensors publish time interval override @@ -73,7 +73,6 @@ static void processCPiCPoSensorRead( U32 sensorId, U32 fgpaRead, U08 fpgaReadCount, U08 fpgaErrorCount, U08 fpgaSensorFault ); static F32 calcCompensatedConductivity( F32 conductivity, F32 temperature); static void calcRORejectionRatio( void ); -static F32 getRORejectionRatio( void ); static DATA_GET_PROTOTYPE( U32, getConductivityDataPublishInterval ); /************************************************************************* @@ -87,6 +86,7 @@ void initConductivitySensors( void ) { U32 i; + roRejectionRatio = 0.0; for ( i = 0; i < NUM_OF_CONDUCTIVITY_SENSORS; i++ ) { @@ -99,17 +99,15 @@ compensatedConductivityValues[ i ].override = OVERRIDE_RESET; } - roRejectionRatio.data = 0.0; - roRejectionRatio.ovData = 0.0; - roRejectionRatio.ovInitData = 0.0; - roRejectionRatio.override = OVERRIDE_RESET; - setFPGACPoProbeType( COND_CPO_SENSOR_PROBE_TYPE ); initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_CONDUCTIVITY_SENSOR_ERROR, MAX_CONDUCTIVITY_SENSOR_FAILURES, MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS ); - initPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, ALARM_DATA_TYPE_F32, COND_SENSOR_PERSISTENCE_COUNT, COND_SENSOR_PERSISTENCE_COUNT ); - initPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, ALARM_DATA_TYPE_F32, COND_SENSOR_PERSISTENCE_COUNT, COND_SENSOR_PERSISTENCE_COUNT ); - initPersistentAlarm( ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, ALARM_DATA_TYPE_F32, RO_REJECTION_RATIO_PERSISTENCE_COUNT, RO_REJECTION_RATIO_PERSISTENCE_COUNT ); + initPersistentAlarm( PERSISTENT_ALARM_INLET_WATER_HIGH_CONDUCTIVITY, ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, + COND_SENSOR_PERSISTENCE_COUNT, COND_SENSOR_PERSISTENCE_COUNT ); + initPersistentAlarm( PERSISTENT_ALARM_INLET_WATER_LOW_CONDUCTIVITY, ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, + COND_SENSOR_PERSISTENCE_COUNT, COND_SENSOR_PERSISTENCE_COUNT ); + initPersistentAlarm( PERSISTENT_ALARM_RO_REJECTION_RATIO_OUT_OF_RANGE, ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, + RO_REJECTION_RATIO_PERSISTENCE_COUNT, RO_REJECTION_RATIO_PERSISTENCE_COUNT ); } /************************************************************************* @@ -130,7 +128,7 @@ { conductivityDataPublicationTimerCounter = 0; calcRORejectionRatio(); - broadcastConductivityData( getRORejectionRatio(), getConductivityValue(CONDUCTIVITYSENSORS_CPI_SENSOR), + broadcastConductivityData( roRejectionRatio, getConductivityValue(CONDUCTIVITYSENSORS_CPI_SENSOR), getConductivityValue(CONDUCTIVITYSENSORS_CPO_SENSOR) ); } @@ -151,8 +149,8 @@ BOOL const isCondTooHigh = ( conductivity > COND_SENSOR_CPI_CPO_MAX_VALUE ); BOOL const isCondTooLow = ( conductivity < COND_SENSOR_CPI_CPO_MIN_VALUE ); - checkPersistentAlarm( ALARM_ID_INLET_WATER_HIGH_CONDUCTIVITY, isCondTooHigh, conductivity ); - checkPersistentAlarm( ALARM_ID_INLET_WATER_LOW_CONDUCTIVITY, isCondTooLow, conductivity ); + checkPersistentAlarm( PERSISTENT_ALARM_INLET_WATER_HIGH_CONDUCTIVITY, isCondTooHigh, conductivity ); + checkPersistentAlarm( PERSISTENT_ALARM_INLET_WATER_LOW_CONDUCTIVITY, isCondTooLow, conductivity ); } /************************************************************************* @@ -167,10 +165,9 @@ *************************************************************************/ void checkRORejectionRatio( void ) { - F32 const roRejectionRatio = getRORejectionRatio(); F32 const cpo = getConductivityValue( CONDUCTIVITYSENSORS_CPO_SENSOR ); BOOL const isRORejectionRatioOutOfRange = ( roRejectionRatio > MAX_RO_REJECTION_RATIO_ALLOW ) || ( cpo >= MAX_CPO_CONDUCTIVITY_ALLOW ); - checkPersistentAlarm( ALARM_ID_RO_REJECTION_RATIO_OUT_OF_RANGE, isRORejectionRatioOutOfRange, roRejectionRatio ); + checkPersistentAlarm( PERSISTENT_ALARM_RO_REJECTION_RATIO_OUT_OF_RANGE, isRORejectionRatioOutOfRange, roRejectionRatio ); } /************************************************************************* @@ -185,7 +182,7 @@ *************************************************************************/ F32 getConductivityValue( U32 sensorId ) { - F32 result = 0; + F32 result = 0.0; if ( sensorId < NUM_OF_CONDUCTIVITY_SENSORS ) { @@ -221,33 +218,13 @@ static F32 calcCompensatedConductivity( F32 conductivity, F32 temperature) { // EC = EC_25 * (1 + temp_coef * (temperature - 25)) - F32 const compensatedCoef = ( 1 + ( COND_SENSOR_TEMPERATURE_COEF * (temperature - COND_SENSOR_REFERENCE_TEMPERATURE) ) ); + F32 const compensatedCoef = ( 1.0 + ( COND_SENSOR_TEMPERATURE_COEF * (temperature - COND_SENSOR_REFERENCE_TEMPERATURE) ) ); return conductivity * compensatedCoef; } /************************************************************************* * @brief - * The getRORejectionRatio function gets the latest RO rejection ratio - * @details - * Inputs: roRejectionRatio - * Outputs: none - * @return RO rejection ratio - *************************************************************************/ -F32 getRORejectionRatio( void ) -{ - F32 result = roRejectionRatio.data; - - if ( OVERRIDE_KEY == roRejectionRatio.override ) - { - result = roRejectionRatio.ovData; - } - - return result; -} - -/************************************************************************* - * @brief * The calcRORejectionRatio function calculates the RO rejection ratio using * the cpi sensor conductivity value and cpo sensor conductivity value. * @details @@ -259,11 +236,11 @@ { F32 const cpi = getConductivityValue( CONDUCTIVITYSENSORS_CPI_SENSOR ); F32 const cpo = getConductivityValue( CONDUCTIVITYSENSORS_CPO_SENSOR ); - roRejectionRatio.data = RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE; + roRejectionRatio = RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE; - if ( cpi > 0 ) + if ( fabs(cpi) >= NEARLY_ZERO ) { - roRejectionRatio.data = cpo / cpi; + roRejectionRatio = cpo / cpi; } } @@ -394,52 +371,6 @@ /************************************************************************* * @brief - * The testSetRORejectionRatioOverride function overrides the RO Rejection ratio. - * @details - * Inputs : roRejectionRatio - * Outputs : roRejectionRatio - * @param value Override RO Rejection ratio value - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetRORejectionRatioOverride( F32 value ) -{ - BOOL result = FALSE; - - if ( isTestingActivated() ) - { - result = TRUE; - roRejectionRatio.ovData = value; - roRejectionRatio.override = OVERRIDE_KEY; - } - - return result; -} - -/************************************************************************* - * @brief - * The testResetRORejectionRatioOverride function resets the override of - * the RO Rejection ratio. - * @details - * Inputs : roRejectionRatio - * Outputs : roRejectionRatio - * @return TRUE if reset successful, FALSE if not - *************************************************************************/ -BOOL testResetRORejectionRatioOverride( void ) -{ - BOOL result = FALSE; - - if ( isTestingActivated() ) - { - result = TRUE; - roRejectionRatio.ovData = roRejectionRatio.ovInitData; - roRejectionRatio.override = OVERRIDE_RESET; - } - - return result; -} - -/************************************************************************* - * @brief * The testSetConductivityDataPublishIntervalOverride function overrides * the conductivity data publish interval. * @details