Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -r0ad3c0f2ae387408c3ec608c0ac186c801591ee2 -rafb8316aee80115f0e0712a31a12adbd39a9cedf --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 0ad3c0f2ae387408c3ec608c0ac186c801591ee2) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision afb8316aee80115f0e0712a31a12adbd39a9cedf) @@ -1069,23 +1069,22 @@ { conductivitySensorStatus[ sensorNum ].currentAlphaValue = BICARB_SENSORS_ALPHA_LOW; } - else if( conductivitySensorStatus[ sensorNum ].calculatedTemperature > COND_TEMP_COMP_LOW_BOUNDS ) + else if ( conductivitySensorStatus[ sensorNum ].calculatedTemperature > COND_TEMP_COMP_LOW_BOUNDS ) { conductivitySensorStatus[ sensorNum ].currentAlphaValue = BICARB_SENSORS_ALPHA_HIGH; } else { conductivitySensorStatus[ sensorNum ].currentAlphaValue = TEMP_COMP_LINEAR( BICARB_SENSORS_ALPHA_SLOPE, BICARB_SENSORS_ALPHA_INTERCEPT, conductivitySensorStatus[ sensorNum ].calculatedTemperature ); } - break; default: // check temp range and apply alpha if ( conductivitySensorStatus[ sensorNum ].calculatedTemperature < COND_TEMP_COMP_LOW_BOUNDS ) { conductivitySensorStatus[ sensorNum ].currentAlphaValue = DIALYSATE_SENSORS_ALPHA_LOW; } - else if( conductivitySensorStatus[ sensorNum ].calculatedTemperature > COND_TEMP_COMP_LOW_BOUNDS ) + else if ( conductivitySensorStatus[ sensorNum ].calculatedTemperature > COND_TEMP_COMP_LOW_BOUNDS ) { conductivitySensorStatus[ sensorNum ].currentAlphaValue = DIALYSATE_SENSORS_ALPHA_HIGH; } Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -r0ad3c0f2ae387408c3ec608c0ac186c801591ee2 -rafb8316aee80115f0e0712a31a12adbd39a9cedf --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 0ad3c0f2ae387408c3ec608c0ac186c801591ee2) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision afb8316aee80115f0e0712a31a12adbd39a9cedf) @@ -89,8 +89,6 @@ static U32 roRRCount; ///< RO rejection ratio Number of samples in average buffer. static F32 roRRTankFillAvg; ///< Average RO rejection ratio during permeate tank fill state. static U32 roRRSampleIntervalCounter; ///< RO rejection ratio sample collection timer counter. -static U32 conductivityResistancePublishTimerCounter; ///< DD and FP Conductivity data publication counter. -static OVERRIDE_U32_T conductivityResistanceDataPublishInterval; ///< DD and FP Conductivity sensors publish time interval override. // ********** private function prototypes ********** @@ -100,7 +98,6 @@ static void filterConductivitySensorTemperatureReadings( void ); static void calcRORejectionRatio( void ); static void filterRORejectionRatioReadings( void ); -static void broadcastResistanceData( void ); /*********************************************************************//** * @brief @@ -119,7 +116,6 @@ ddConductivityPublishTimerCounter = DD_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT; fpConductivityPublishTimerCounter = FP_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT; roRRPublishTimerCounter = RO_DATA_PUBLISH_COUNTER_START_COUNT; - conductivityResistancePublishTimerCounter = RESISTANCE_DATA_PUBLISH_COUNTER_START_COUNT; roRejectionRatio = 0.0F; roRejectionRatioTankFill = 0.0F; roRRRunningSum = 0.0F; @@ -182,12 +178,6 @@ roRRDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; roRRDataPublishInterval.ovInitData = 0; roRRDataPublishInterval.override = OVERRIDE_RESET; - - conductivityResistanceDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - conductivityResistanceDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - conductivityResistanceDataPublishInterval.ovInitData = 0; - conductivityResistanceDataPublishInterval.override = OVERRIDE_RESET; - } /*********************************************************************//** @@ -260,6 +250,35 @@ /*********************************************************************//** * @brief + * The getFilteredUConductivity function gets the filtered current conductivity (in uS/cm) + * for a given conductivity sensor. + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Inputs: filteredcurrentConductivityReadings[] + * @details \b Outputs: none + * @param sensor ID of conductivity sensor to get filtered conductivity reading for. + * @return The filtered current conductivity (in uS/cm) for the given conductivity sensor + *************************************************************************/ +F32 getFilteredUConductivity( CONDUCTIVITY_SENSORS_T sensor ) +{ + F32 result = 0.0F; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = filteredcurrentUConductivityReadings[ sensor ].data; + if ( OVERRIDE_KEY == filteredcurrentUConductivityReadings[ sensor ].override ) + { + result = filteredcurrentUConductivityReadings[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_FILTERED_CONDUCTIVITY_SENSOR_ID, (U32)sensor ) + } + + return result; +} +/*********************************************************************//** + * @brief * The filterConductivitySensorReadings function filters the conductivity rates for * defined interval to get average conductivity rates. * @details \b Inputs: filteredConductivityReadings[] @@ -553,16 +572,22 @@ data.d29Cond = getFilteredConductivity( D29_COND ); data.d43Cond = getFilteredConductivity( D43_COND ); data.d74Cond = getFilteredConductivity( D74_COND ); - data.d17CondResist = getConductivityRawResistance( D17_COND ); - data.d27CondResist = getConductivityRawResistance( D27_COND ); - data.d29CondResist = getConductivityRawResistance( D29_COND ); - data.d43CondResist = getConductivityRawResistance( D43_COND ); - data.d74CondResist = getConductivityRawResistance( D74_COND ); - data.d17RTDResist = getConductivityRawRTD( D17_COND ); - data.d27RTDResist = getConductivityRawRTD( D27_COND ); - data.d29RTDResist = getConductivityRawRTD( D29_COND ); - data.d43RTDResist = getConductivityRawRTD( D43_COND ); - data.d74RTDResist = getConductivityRawRTD( D74_COND ); + data.d17CondResist = getConductivityRawResistance( D17_COND ); + data.d27CondResist = getConductivityRawResistance( D27_COND ); + data.d29CondResist = getConductivityRawResistance( D29_COND ); + data.d43CondResist = getConductivityRawResistance( D43_COND ); + data.d74CondResist = getConductivityRawResistance( D74_COND ); + data.d17RTDResist = getConductivityRawRTD( D17_COND ); + data.d27RTDResist = getConductivityRawRTD( D27_COND ); + data.d29RTDResist = getConductivityRawRTD( D29_COND ); + data.d43RTDResist = getConductivityRawRTD( D43_COND ); + data.d74RTDResist = getConductivityRawRTD( D74_COND ); + data.d17CondUncomp = getFilteredUConductivity( D17_COND ); + data.d27CondUncomp = getFilteredUConductivity( D27_COND ); + data.d29CondUncomp = getFilteredUConductivity( D29_COND ); + data.d43CondUncomp = getFilteredUConductivity( D43_COND ); + data.d74CondUncomp = getFilteredUConductivity( D74_COND ); + ddConductivityPublishTimerCounter = 0; broadcastData( MSG_ID_DD_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( DD_CONDUCTIVITY_DATA_T ) ); @@ -575,10 +600,12 @@ data.p9Conductivity = getFilteredConductivity( P9_COND ); data.p18Conductivity = getFilteredConductivity( P18_COND ); - data.p9CondResist = getConductivityRawResistance( P9_COND ); - data.p18CondResist = getConductivityRawResistance( P18_COND ); - data.p9RTDResist = getConductivityRawRTD( P9_COND ); - data.p18RTDResist = getConductivityRawRTD( P18_COND ); + data.p9CondResist = getConductivityRawResistance( P9_COND ); + data.p18CondResist = getConductivityRawResistance( P18_COND ); + data.p9RTDResist = getConductivityRawRTD( P9_COND ); + data.p18RTDResist = getConductivityRawRTD( P18_COND ); + data.p9CondUncomp = getFilteredUConductivity( P9_COND ); + data.p18CondUncomp = getFilteredUConductivity( P18_COND ); fpConductivityPublishTimerCounter = 0; broadcastData( MSG_ID_FP_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( FP_CONDUCTIVITY_DATA_T ) ); Index: firmware/App/Monitors/Conductivity.h =================================================================== diff -u -rb9d148dce4c70d0dca63f34fce73c22a7bfd4fbc -rafb8316aee80115f0e0712a31a12adbd39a9cedf --- firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision b9d148dce4c70d0dca63f34fce73c22a7bfd4fbc) +++ firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision afb8316aee80115f0e0712a31a12adbd39a9cedf) @@ -56,6 +56,11 @@ F32 d29RTDResist; ///< D29 raw resistance value from RTD F32 d43RTDResist; ///< D43 raw resistance value from RTD F32 d74RTDResist; ///< D74 raw resistance value from RTD + F32 d17CondUncomp; ///< D17 conductivity sensor value without temperature compensation + F32 d27CondUncomp; ///< D27 conductivity sensor value without temperature compensation + F32 d29CondUncomp; ///< D29 conductivity sensor value without temperature compensation + F32 d43CondUncomp; ///< D43 conductivity sensor value without temperature compensation + F32 d74CondUncomp; ///< D74 conductivity sensor value without temperature compensation } DD_CONDUCTIVITY_DATA_T; /// Conductivity data struct. @@ -67,6 +72,8 @@ F32 p18CondResist; ///< P18 raw resistance value from conductivity F32 p9RTDResist; ///< P9 raw resistance value from RTD F32 p18RTDResist; ///< P18 raw resistance value from RTD + F32 p9CondUncomp; ///< P9 conductivity sensor value without temperature compensation + F32 p18CondUncomp; ///< P18 conductivity sensor value without temperature compensation } FP_CONDUCTIVITY_DATA_T; /// RO rejection ratio data struct. @@ -91,6 +98,7 @@ F32 getTankFillRORejectionRatio( void ); F32 getRORRAverage( void ); F32 getTankFillRORRAverage( void ); +F32 getFilteredUConductivity( CONDUCTIVITY_SENSORS_T sensor ); BOOL testDDConductivitySensorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testDDConductivitySensorFilteredReadingsOverride( MESSAGE_T *message );