Index: firmware/App/Controllers/ROPump.h =================================================================== diff -u -r482f4465ccdb813922de506bf780e29f4fb2f84b -r604d8aaceeb8e0b650ac2054644333fc7717bb51 --- firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision 482f4465ccdb813922de506bf780e29f4fb2f84b) +++ firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision 604d8aaceeb8e0b650ac2054644333fc7717bb51) @@ -1,61 +1,84 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2020-2022 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 ROPump.h +* @file ROPump.h * -* @author (last) Sean Nash -* @date (last) 04-Jun-2020 +* @author (last) Dara Navaei +* @date (last) 31-Mar-2022 * -* @author (original) Sean -* @date (original) 04-Apr-2020 +* @author (original) Sean +* @date (original) 04-Apr-2020 * ***************************************************************************/ - -#ifndef __RO_PUMP_H__ -#define __RO_PUMP_H__ - -#include "DGCommon.h" - -/** - * @defgroup ROPump ROPump - * @brief RO Pump monitor and controller module. Controls and monitors the RO pump. - * - * @addtogroup ROPump - * @{ - */ - -// ********** public definitions ********** - -#define MAX_RO_PRESSURE 140 ///< Maximum target RO outlet pressure (in PSI). -#define MIN_RO_PRESSURE 100 ///< Minimum target RO outlet pressure (in PSI). - -// ********** public function prototypes ********** - -void initROPump( void ); -void execROPumpMonitor( void ); -void execROPumpController( void ); - -BOOL setROPumpTargetPressure( U32 roPressure, PUMP_CONTROL_MODE_T mode ); -void signalROPumpHardStop( void ); - -BOOL isReverseOsmosisPumpOn( void ); - -SELF_TEST_STATUS_T execROPumpTest( void ); -U32 getTargetROPumpPressure( void ); -F32 getMeasuredROFlowRate( void ); - -BOOL testSetROPumpDataPublishIntervalOverride( U32 value ); -BOOL testResetROPumpDataPublishIntervalOverride( void ); -BOOL testSetTargetROPumpPressureOverride( U32 value ); -BOOL testResetTargetROPumpPressureOverride( void ); -BOOL testSetMeasuredROFlowRateOverride( F32 value ); -BOOL testResetMeasuredROFlowRateOverride( void ); - -/**@}*/ - -#endif +#ifndef __RO_PUMP_H__ +#define __RO_PUMP_H__ + +#include "DGCommon.h" + +/** + * @defgroup ROPump ROPump + * @brief RO Pump monitor and controller module. Controls and monitors the RO pump and the flow meter. + * The flow meter is manufactured by SwissFlow, PN: 82015311. + * The diaphragm (RO) pump is manufactured by Aquatec, PN: 5889-2MM1-V724DY. + * + * @addtogroup ROPump + * @{ + */ + +// ********** public definitions ********** +#define MAX_RO_FLOWRATE_LPM 1.8 ///< Maximum target RO flow rate in L/min. +#define MIN_RO_FLOWRATE_LPM 0.2 ///< Minimum target RO flow rate in L/min. + +/// RO pump data struct. +typedef struct +{ + F32 roPumpTgtPressure; ///< RO pump target pressure. + F32 measROFlowRate; ///< RO flow rate measurement. + F32 roPumpDutyCycle; ///< RO pump duty cycle. + U32 roPumpState; ///< RO pump current state. + F32 roPumpTgtFlowRateLM; ///< RO pump target flow rate in L/min + F32 roPumpFBDutyCycle; ///< RO pump feedback duty cycle. + F32 roPumpMeasFlowWithConcPumps; ///< RO pump measured flow with the concentrate pumps. +} RO_PUMP_DATA_T; + +// ********** public function prototypes ********** + +void initROPump( void ); +void execROPumpMonitor( void ); +void execROPumpController( void ); + +SELF_TEST_STATUS_T execROPumpSelfTest( void ); + +BOOL setROPumpTargetFlowRateLPM( F32 roFlowRate, U32 maxPressure ); +BOOL setROPumpTargetFlowRateDelayed( F32 roFlowRate, U32 maxPressure, U32 delayMs ); + +void signalROPumpHardStop( void ); + +BOOL isROPumpRunning( void ); + +F32 getTargetROPumpFlowRate( void ); +F32 getMeasuredROFlowRateLPM( void ); +F32 getMeasuredROFlowRateWithConcPumpsLPM( void ); + +F32 getTargetROPumpPressure( void ); + +BOOL testSetROPumpDataPublishIntervalOverride( U32 value ); +BOOL testResetROPumpDataPublishIntervalOverride( void ); + +BOOL testSetMeasuredROFlowRateOverride( F32 value ); +BOOL testResetMeasuredROFlowRateOverride( void ); + +BOOL testSetTargetROPumpFlow( F32 flow ); + +BOOL testSetTargetROPumpPressure( U32 value ); + +BOOL testSetTargetDutyCycle( F32 value ); + +/**@}*/ + +#endif