Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -ra6737c3bcc8286c153b778c2c395f465e76aaafb -r5e77ff3ec89af3b613788694bacfcbd874682396 --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision a6737c3bcc8286c153b778c2c395f465e76aaafb) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 5e77ff3ec89af3b613788694bacfcbd874682396) @@ -891,6 +891,60 @@ /*********************************************************************//** * @brief + * The getConductivityRawResistance function gets the raw conductivity resistance + * value for a given conductivity sensor id. + * @details \b Inputs: conductivitySensorStatus[] + * @details \b Outputs: none + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @param sensorId conductivity sensor id + * @return temperature value + *************************************************************************/ +F32 getConductivityRawResistance( CONDUCTIVITY_SENSORS_T sensor ) +{ + F32 result = 0.0F; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = conductivitySensorStatus[ sensor ].rawResistance; + + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID1, sensor ) + } + + return result; +} + +/*********************************************************************//** + * @brief + * The getConductivityRawRTD function gets the raw RTD resistance + * value for a given conductivity sensor id. + * @details \b Inputs: conductivitySensorStatus[] + * @details \b Outputs: none + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. + * @param sensorId conductivity sensor id + * @return temperature value + *************************************************************************/ +F32 getConductivityRawRTD( CONDUCTIVITY_SENSORS_T sensor ) +{ + F32 result = 0.0F; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = conductivitySensorStatus[ sensor ].rawTemperature; + + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID1, sensor ) + } + + return result; +} + +/*********************************************************************//** + * @brief * The calculateConductivityUpdatedStandard function calculates the conductivity value. * @details \b Inputs: conductivitySensorCoefficients - Conductivity Coefficients * @details \b Inputs: conductivitySensorStatus - Raw measurement values Index: firmware/App/Drivers/ConductivitySensors.h =================================================================== diff -u -r336f6c49e05f515ca1250e0fd9ea97e5f5b5f11c -r5e77ff3ec89af3b613788694bacfcbd874682396 --- firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 336f6c49e05f515ca1250e0fd9ea97e5f5b5f11c) +++ firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 5e77ff3ec89af3b613788694bacfcbd874682396) @@ -107,6 +107,8 @@ F32 getConductivityTemperature( CONDUCTIVITY_SENSORS_T sensor ); U08 getConductivityReadCount( CONDUCTIVITY_SENSORS_T sensor ); U08 getConductivityTemperatureReadCount( CONDUCTIVITY_SENSORS_T sensor ); +F32 getConductivityRawResistance( CONDUCTIVITY_SENSORS_T sensor ); +F32 getConductivityRawRTD( CONDUCTIVITY_SENSORS_T sensor ); BOOL testConductivitySensorConductivityReadingsOverride( MESSAGE_T *message ); BOOL testConductivitySensorTemperatureReadingsOverride( MESSAGE_T *message ); Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -r0bcac6885c8461b05da276fd245b580b7339ddfd -r5e77ff3ec89af3b613788694bacfcbd874682396 --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 0bcac6885c8461b05da276fd245b580b7339ddfd) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 5e77ff3ec89af3b613788694bacfcbd874682396) @@ -34,7 +34,10 @@ #define COND_SENSOR_REPORT_PERIOD ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Broadcast conductivity values message every second. #define COND_SENSOR_UPDATE_INTERVAL ( 700 / TASK_PRIORITY_INTERVAL ) ///< Time in task intervals for new sensor data -#define DATA_PUBLISH_COUNTER_START_COUNT 40 ///< Data publish counter start count. +#define DD_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT 40 ///< Data publish counter start count. +#define FP_CONDUCTIVITY_DATA_PUBLISH_COUNTER_START_COUNT 41 ///< Data publish counter start count. +#define RO_DATA_PUBLISH_COUNTER_START_COUNT 42 ///< Data publish counter start count. +#define RESISTANCE_DATA_PUBLISH_COUNTER_START_COUNT 43 ///< Data publish counter start count. #define CONDUCTIVITY_SAMPLE_FILTER_MS ( 50 ) ///< Filter conductivity data for given time. Currently set to have 5 samples over 3.5s ( 700ms sample rate ) #define CONDUCTIVITY_TEMP_SAMPLE_FILTER_MS ( 50 ) ///< Filter conductivity temperature data for given time. Currently set to have 5 samples over 3.5s ( 700ms sample rate ) #define SIZE_OF_COND_ROLLING_AVG ( CONDUCTIVITY_SAMPLE_FILTER_MS / TASK_PRIORITY_INTERVAL ) ///< Filtered conductivity moving average sample count. @@ -53,7 +56,7 @@ } FILTER_CONDUCTIVITY_READINGS_T; /// Filter conductivity sensor temperature readings record. -typedef struct +typedef struct publishConductivitySensorsData { F32 conductivityTempReadings[ SIZE_OF_COND_TEMP_ROLLING_AVG ]; ///< Holds conductivity sample rolling average. U32 conductivityTempReadingsIdx; ///< Index for next sample in rolling average array. @@ -88,6 +91,8 @@ static U32 condtempSampleIntervalCounter; ///< Conductivity Temperature sensor sample collection timer counter. static U32 condDataCollectionTimeInterval; ///< Conductivity data collection time interval in task counts. static U32 condSampleIntervalCounter; ///< Conductivity sensor 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 ********** @@ -112,22 +117,23 @@ initConductivityTeensy(); initConductivitySensors(); - ddConductivityPublishTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - fpConductivityPublishTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - roRRPublishTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - roRejectionRatio = 0.0F; - roRejectionRatioTankFill = 0.0F; - roRRRunningSum = 0.0F; - roRRSamplesNextIndex = 0; - roRRCount = 0; - roRRTankFillAvg = 0.0F; - roRRAvg.data = 0.0F; - roRRAvg.ovData = 0.0F; - roRRAvg.ovInitData = 0.0F; - roRRAvg.override = OVERRIDE_RESET; - roRRSampleIntervalCounter = 0; - condtempDataCollectionTimeInterval= COND_SENSOR_UPDATE_INTERVAL; - condtempSampleIntervalCounter = 0; + 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; + roRRSamplesNextIndex = 0; + roRRCount = 0; + roRRTankFillAvg = 0.0F; + roRRAvg.data = 0.0F; + roRRAvg.ovData = 0.0F; + roRRAvg.ovInitData = 0.0F; + roRRAvg.override = OVERRIDE_RESET; + roRRSampleIntervalCounter = 0; + condtempDataCollectionTimeInterval = COND_SENSOR_UPDATE_INTERVAL; + condtempSampleIntervalCounter = 0; memset( &roRRSamples, 0, sizeof( roRRSamples ) ); @@ -156,20 +162,26 @@ condTempPrevReadCount[ sensor ] = 0; } - ddConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - ddConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - ddConductivityDataPublishInterval.ovInitData = 0; - ddConductivityDataPublishInterval.override = OVERRIDE_RESET; + ddConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + ddConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; + ddConductivityDataPublishInterval.ovInitData = 0; + ddConductivityDataPublishInterval.override = OVERRIDE_RESET; - fpConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - fpConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - fpConductivityDataPublishInterval.ovInitData = 0; - fpConductivityDataPublishInterval.override = OVERRIDE_RESET; + fpConductivityDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + fpConductivityDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; + fpConductivityDataPublishInterval.ovInitData = 0; + fpConductivityDataPublishInterval.override = OVERRIDE_RESET; - roRRDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; - roRRDataPublishInterval.ovData = COND_SENSOR_REPORT_PERIOD; - roRRDataPublishInterval.ovInitData = 0; - roRRDataPublishInterval.override = OVERRIDE_RESET; + roRRDataPublishInterval.data = COND_SENSOR_REPORT_PERIOD; + 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; + } /*********************************************************************//** @@ -552,6 +564,33 @@ broadcastData( MSG_ID_FP_RO_REJECTION_RATIO_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( RO_REJECTION_RATIO_DATA_T ) ); } + + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) == TRUE ) + { + // publish conductivity resistance data on interval + if ( ++conductivityResistancePublishTimerCounter >= getU32OverrideValue( &conductivityResistanceDataPublishInterval ) ) + { + CONDUCTIVITY_RESISTANCE_DATA_T data; + + 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.p9CondResist = getConductivityRawResistance( P9_COND ); + data.p18CondResist = getConductivityRawResistance( P18_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.p9RTDResist = getConductivityRawRTD( P9_COND ); + data.p18RTDResist = getConductivityRawRTD( P18_COND ); + conductivityResistancePublishTimerCounter = 0; + + broadcastData( MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_RESISTANCE_DATA_T ) ); + } + } } Index: firmware/App/Monitors/Conductivity.h =================================================================== diff -u -rb04db69f541f245e543df343257bcbdb73fbbc3d -r5e77ff3ec89af3b613788694bacfcbd874682396 --- firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision b04db69f541f245e543df343257bcbdb73fbbc3d) +++ firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision 5e77ff3ec89af3b613788694bacfcbd874682396) @@ -41,29 +41,48 @@ /// Conductivity data struct. typedef struct { - F32 d17Cond; ///< CD1 conductivity sensor value - F32 d27Cond; ///< CD2 conductivity sensor value - F32 d29Cond; ///< CD3 conductivity sensor value - F32 d43Cond; ///< CD4 conductivity sensor value - F32 d74Cond; ///< CD5 conductivity sensor value + F32 d17Cond; ///< D17 conductivity sensor value + F32 d27Cond; ///< D27 conductivity sensor value + F32 d29Cond; ///< D29 conductivity sensor value + F32 d43Cond; ///< D43 conductivity sensor value + F32 d74Cond; ///< D74 conductivity sensor value } DD_CONDUCTIVITY_DATA_T; /// Conductivity data struct. typedef struct { - F32 p9Conductivity; ///< (P9) conductivity sensor value - F32 p18Conductivity; ///< (P18) conductivity sensor value + F32 p9Conductivity; ///< P9 conductivity sensor value + F32 p18Conductivity; ///< P18 conductivity sensor value } FP_CONDUCTIVITY_DATA_T; /// RO rejection ratio data struct. typedef struct { - F32 rawRORejectionRatio; ///< RO rejection ratio during tank full and fill state - F32 rawRORejectionRatioTankFill; ///< RO rejection ratio during tank fill state - F32 avgRORejectionRatio; ///< RO rejection ratio average during tank full and fill state - F32 avgRORejectionRatioTankFill; ///< RO rejection ratio average during tank fill state - U32 genPermeateState; ///< Permeate tank state + F32 rawRORejectionRatio; ///< RO rejection ratio during tank full and fill state + F32 rawRORejectionRatioTankFill; ///< RO rejection ratio during tank fill state + F32 avgRORejectionRatio; ///< RO rejection ratio average during tank full and fill state + F32 avgRORejectionRatioTankFill; ///< RO rejection ratio average during tank fill state + U32 genPermeateState; ///< Permeate tank state } RO_REJECTION_RATIO_DATA_T; + +typedef struct +{ + F32 d17CondResist; ///< D17 raw resistance value from conductivity + F32 d27CondResist; ///< D27 raw resistance value from conductivity + F32 d29CondResist; ///< D29 raw resistance value from conductivity + F32 d43CondResist; ///< D43 raw resistance value from conductivity + F32 d74CondResist; ///< D74 raw resistance value from conductivity + F32 p9CondResist; ///< P9 raw resistance value from conductivity + F32 p18CondResist; ///< P18 raw resistance value from conductivity + F32 d17RTDResist; ///< D17 raw resistance value from RTD + F32 d27RTDResist; ///< D27 raw resistance value from RTD + 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 p9RTDResist; ///< P9 raw resistance value from RTD + F32 p18RTDResist; ///< P18 raw resistance value from RTD +} CONDUCTIVITY_RESISTANCE_DATA_T; + #pragma pack(pop) // ********** public function prototypes **********