/************************************************************************** * * Copyright (c) 2020-2023 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file ConductivitySensors.h * * @author (last) Dara Navaei * @date (last) 09-Aug-2022 * * @author (original) Quang Nguyen * @date (original) 13-Jul-2020 * ***************************************************************************/ #ifndef __CONDUCTIVITYSENSORS_H__ #define __CONDUCTIVITYSENSORS_H__ #include "DGCommon.h" /** * @defgroup ConductivitySensors ConductivitySensors * @brief Conductivity Sensors monitor module. Monitors and filters conductivity sensor readings. * The module uses Atlas Scientific EC OEM for conductivity sensors CPi and CPo with probe type K 1.0 and 0.1 respectively. * * Conductivity Sensor Pre-ROF (CPi) * Diality P/N: 100511-002 * Manufacturer: Sensor Development Inc. * Manufacture P/N: CS51-1.0-PT1000-1/2” NPT-4’ * * Conductivity Sensor Post-ROF (CPo) * Diality P/N: 100511-001 * Manufacturer: Sensor Development Inc. * Manufacture P/N: CS51-0.1-PT1000-1/2” NPT-4’ * * Conductivity Sensor Module (same module type is used for CPi and CPo) * Diality P/N: 100512-001 * Manufacturer: Atlas Scientific * Manufacture P/N: EC-OEM * * @addtogroup ConductivitySensors * @{ */ // ********** public definitions ********** #define RO_REJECTION_RATIO_OUT_OF_RANGE_VALUE 1.0F ///< Out of range value for RO rejection ratio when CPi conductivity is zero. /// Enumeration of conductivity sensors. typedef enum ConductivitySensors { CONDUCTIVITYSENSORS_CPI_SENSOR = 0, ///< Inlet water conductivity sensor CONDUCTIVITYSENSORS_CPO_SENSOR, ///< Outlet water conductivity sensor CONDUCTIVITYSENSORS_CD1_SENSOR, ///< Post-acid concentrate conductivity sensor CONDUCTIVITYSENSORS_CD2_SENSOR, ///< Post-bicarbonate concentrate conductivity sensor NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors } CONDUCTIVITY_SENSORS_T; /// Conductivity data struct. typedef struct { F32 roRejectionRatio; ///< RO rejection ratio F32 cpi; ///< CPi conductivity sensor value F32 cpo; ///< CPo conductivity sensor value F32 cd1; ///< CD1 conductivity sensor value F32 cd2; ///< CD2 conductivity sensor value F32 cpiRaw; ///< CPi raw conductivity sensor value (without 2% temperature compensated) F32 cpoRaw; ///< CPo raw conductivity sensor value (without 2% temperature compensated) F32 cd1Raw; ///< CD1 raw conductivity sensor value (without 2% temperature compensated) F32 cd2Raw; ///< CD2 raw conductivity sensor value (without 2% temperature compensated) U32 cpiSensorStatus; ///< CPi conductivity sensor status U32 cpoSensorStatus; ///< CPo conductivity sensor status U32 cd1SensorStatus; ///< CD1 conductivity sensor status U32 cd2SensorStatus; ///< CD2 conductivity sensor status } CONDUCTIVITY_DATA_T; // ********** public function prototypes ********** void initConductivitySensors( void ); void execConductivitySensors( void ); SELF_TEST_STATUS_T execConductivitySensorsSelfTest( void ); void checkInletWaterConductivity( void ); F32 getConductivityValue( U32 sensorId ); BOOL testSetConductivityOverride( U32 sensorId, F32 value ); BOOL testResetConductivityOverride( U32 sensorId ); BOOL testSetRawConductivityOverride( U32 sensorId, F32 value ); BOOL testResetRawConductivityOverride( U32 sensorId ); BOOL testSetConductivityDataPublishIntervalOverride( U32 interval_ms ); BOOL testResetConductivityDataPublishIntervalOverride( void ); /**@}*/ #endif