Index: firmware/App/Controllers/BoostPump.c =================================================================== diff -u -r2506bb824f04982d4cf6ad3d81853f863b2f9c11 -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Controllers/BoostPump.c (.../BoostPump.c) (revision 2506bb824f04982d4cf6ad3d81853f863b2f9c11) +++ firmware/App/Controllers/BoostPump.c (.../BoostPump.c) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -18,7 +18,7 @@ //#include #include "BoostPump.h" -#include "FlowSensor.h" +#include "Flow.h" //#include "NVDataMgmt.h" #include "Messaging.h" #include "MessageSupport.h" @@ -79,7 +79,7 @@ static U32 boostPumpDataPublicationTimerCounter; ///< Used to schedule Boost pump data publication to CAN bus. static OVERRIDE_U32_T boostPumpDataPublishInterval; ///< Interval (in ms) at which to publish boost pump data to CAN bus. static U32 boostControlTimerCounter; ///< Determines when to perform control on Boost pump. -static OVERRIDE_F32_T targetBoostPumpFlowRate; ///< Target Boost flow rate (in L/min). +static OVERRIDE_U32_T targetBoostPumpFlowRate; ///< Target Boost flow rate (in L/min). static OVERRIDE_F32_T targetBoostPumpPressure; ///< Target Boost max allowed pressure (in PSI). static F32 boostPumpDutyCyclePctSet; ///< Currently set Boost pump PWM duty cycle. static F32 boostPumpOpenLoopTargetDutyCycle; ///< Target Boost pump open loop PWM. @@ -92,7 +92,7 @@ static BOOST_PUMP_STATE_T handleBoostPumpOpenLoopState( void ); static F32 boostPumpPresToPWM( F32 targetPressure ); -static F32 boostPumpFlowToPWM( F32 targetFlow ); +static F32 boostPumpFlowToPWM( U32 targetFlow ); static void stopBoostPump( void ); static void publishBoostPumpData( void ); @@ -129,9 +129,9 @@ boostPumpDataPublishInterval.ovData = BOOST_CONTROL_INTERVAL; boostPumpDataPublishInterval.ovInitData = 0; boostPumpDataPublishInterval.override = OVERRIDE_RESET; - targetBoostPumpFlowRate.data = 0.0F; - targetBoostPumpFlowRate.ovData = 0.0F; - targetBoostPumpFlowRate.ovInitData = 0.0F; + targetBoostPumpFlowRate.data = 0; + targetBoostPumpFlowRate.ovData = 0; + targetBoostPumpFlowRate.ovInitData = 0; targetBoostPumpFlowRate.override = OVERRIDE_RESET; targetBoostPumpPressure.data = 0.0F; targetBoostPumpPressure.ovData = 0.0F; @@ -206,11 +206,11 @@ } // If there is a target flow set, transition to the PI controller and control to flow - else if ( ( getTargetBoostPumpFlowRateLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + else if ( ( getTargetBoostPumpFlowRateMLPM() > 0 ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { // Set pump to on isBoostPumpOn = TRUE; - boostPumpDutyCyclePctSet = boostPumpFlowToPWM( getTargetBoostPumpFlowRateLPM() ); + boostPumpDutyCyclePctSet = boostPumpFlowToPWM( getTargetBoostPumpFlowRateMLPM() ); setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); state = BOOST_PUMP_CONTROL_TO_TARGET_FLOW_STATE; } @@ -253,7 +253,7 @@ } // If there is a target flow set, transition to the PI controller and control to flow - else if ( ( getTargetBoostPumpFlowRateLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + else if ( ( getTargetBoostPumpFlowRateMLPM() > 0 ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { ///transition to closed loop resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, boostPumpDutyCyclePctSet, 0.0F ); @@ -276,7 +276,7 @@ BOOST_PUMP_STATE_T state = BOOST_PUMP_CONTROL_TO_TARGET_FLOW_STATE; // Check if need to switch control modes - if ( getTargetROPumpPressure() > 0.0F && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + if ( getTargetBoostPumpPressure() > 0.0F && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { // Transition to target pressure resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_PRES, boostPumpDutyCyclePctSet, 0 ); @@ -291,7 +291,7 @@ // Control at set interval else if ( ( ++boostControlTimerCounter >= BOOST_CONTROL_INTERVAL ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { - boostPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, getTargetBoostPumpFlowRateLPM(), getFlowRate( P7_FLOW ) ); + boostPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, getTargetBoostPumpFlowRateMLPM(), getFilteredFlow( P7_FLOW ) ); setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpDutyCyclePctSet ); boostControlTimerCounter = 0; } @@ -311,7 +311,7 @@ { BOOST_PUMP_STATE_T state = BOOST_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; - if ( ( getTargetBoostPumpFlowRateLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) + if ( ( getTargetBoostPumpFlowRateMLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == boostPumpControlMode ) ) { ///transition to target flow resetPIController( PI_CONTROLLER_ID_BOOST_PUMP_FLOW, boostPumpDutyCyclePctSet, 0.0F ); @@ -344,17 +344,17 @@ * @param boostFlowRate which is target Boost flow rate in mL/min * @return TRUE if new target flow rate is set successfully, FALSE if not *************************************************************************/ -BOOL setBoostPumpTargetFlowRateLPM( F32 boostFlowRate ) +BOOL setBoostPumpTargetFlowRateMLPM( U32 boostFlowRate ) { BOOL result = FALSE; // First of all, the flow rate must be in range - if ( ( boostFlowRate <= MAX_BOOST_FLOWRATE_LPM ) && ( boostFlowRate >= MIN_BOOST_FLOWRATE_LPM ) ) + if ( ( boostFlowRate <= MAX_BOOST_FLOWRATE_MLPM ) && ( boostFlowRate >= MIN_BOOST_FLOWRATE_MLPM ) ) { targetBoostPumpFlowRate.data = boostFlowRate; boostPumpControlMode = PUMP_CONTROL_MODE_CLOSED_LOOP; // Get the initial guess of the duty cycle - boostPumpDutyCyclePctSet = boostPumpFlowToPWM( getTargetBoostPumpFlowRateLPM() ); + boostPumpDutyCyclePctSet = boostPumpFlowToPWM( getTargetBoostPumpFlowRateMLPM() ); boostControlTimerCounter = 0; isBoostPumpOn = TRUE; @@ -402,7 +402,7 @@ boostControlTimerCounter = 0; isBoostPumpOn = TRUE; // Clear previous target data - if ( getTargetBoostPumpFlowRateLPM() > 0.0F ) + if ( getTargetBoostPumpFlowRateMLPM() > 0 ) { targetBoostPumpFlowRate.data = 0.0F; } @@ -445,7 +445,7 @@ // Set the new duty cycle of the pump setFluidPumpPctToPWMDutyCycle( P40_PUMP, boostPumpOpenLoopTargetDutyCycle ); // Clear previous target data - if ( getTargetBoostPumpFlowRateLPM() > 0.0F ) + if ( getTargetBoostPumpFlowRateMLPM() > 0 ) { targetBoostPumpFlowRate.data = 0.0F; } @@ -479,15 +479,15 @@ /*********************************************************************//** * @brief - * The getTargetBoostPumpFlowRateLPM function gets the current target Boost pump + * The getTargetBoostPumpFlowRateMLPM function gets the current target Boost pump * flow rate. * @details \b Inputs: targetBoostPumpFlowRate * @details \b Outputs: none - * @return the current target Boost flow rate (in L/min). + * @return the current target Boost flow rate (in mL/min). *************************************************************************/ -F32 getTargetBoostPumpFlowRateLPM( void ) +U32 getTargetBoostPumpFlowRateMLPM( void ) { - F32 flowRate = getF32OverrideValue( &targetBoostPumpFlowRate ); + U32 flowRate = getU32OverrideValue( &targetBoostPumpFlowRate ); return flowRate; } @@ -518,7 +518,7 @@ * @param targetFlow target flow value to control in in L/min * @return the current target Boost pump PWM in a percentage. *************************************************************************/ -static F32 boostPumpFlowToPWM( F32 targetFlow ) +static F32 boostPumpFlowToPWM( U32 targetFlow ) { F32 dutyCyclePct = BOOST_FLOW_TO_PWM( targetFlow ); @@ -602,7 +602,7 @@ pumpData.p40PumpFBDutyCycle = (U32)getFluidPumpReadPWMDutyCycle( P40_PUMP ); pumpData.p40PumpSpeed = getFluidPumpRPM( P40_PUMP ); pumpData.p40TargetPressure = getTargetBoostPumpPressure(); - pumpData.p40TargetFlow = getTargetBoostPumpFlowRateLPM(); + pumpData.p40TargetFlow = getTargetBoostPumpFlowRateMLPM(); pumpData.p40TargetDutyCycle = boostPumpOpenLoopTargetDutyCycle; broadcastData( MSG_ID_FP_BOOST_PUMP_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&pumpData, sizeof( BOOST_PUMP_DATA_T ) ); @@ -640,7 +640,7 @@ * @details \b Inputs: targetBoostPumpPressure * @details \b Outputs: targetBoostPumpPressure * @param message Override message from Dialin which includes the value - * that override boost pump data publish interval with (in ms) + * that override target pressure * @return TRUE if override successful, FALSE if not *************************************************************************/ BOOL testBoostPumpTargetPressureOverride( MESSAGE_T *message ) @@ -653,16 +653,16 @@ /*********************************************************************//** * @brief * The testBoostPumpTargetFlowOverride function overrides the Boost pump - * data publish interval. + * target flow rate in ml/min. * @details \b Inputs: targetBoostPumpFlowRate * @details \b Outputs: targetBoostPumpFlowRate * @param message Override message from Dialin which includes the value - * that override boost pump data publish interval with (in ms) + * that override target flow * @return TRUE if override successful, FALSE if not *************************************************************************/ BOOL testBoostPumpTargetFlowOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, &targetBoostPumpFlowRate ); + BOOL result = u32Override( message, &targetBoostPumpFlowRate, MIN_BOOST_FLOWRATE_MLPM, MAX_BOOST_FLOWRATE_MLPM ); return result; } Index: firmware/App/Controllers/BoostPump.h =================================================================== diff -u -r319d8e8f56e60bec2c38c79e1de0acc4841551a9 -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Controllers/BoostPump.h (.../BoostPump.h) (revision 319d8e8f56e60bec2c38c79e1de0acc4841551a9) +++ firmware/App/Controllers/BoostPump.h (.../BoostPump.h) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -32,10 +32,10 @@ // ********** public definitions ********** -#define MAX_BOOST_FLOWRATE_LPM 1.5F ///< Maximum target Boost flow rate in L/min. -#define MIN_BOOST_FLOWRATE_LPM 0.0F ///< Minimum target Boost flow rate in L/min. -#define MAX_BOOST_PRESSURE_PSI 40.0F ///< Maximum allowed pressure that the Boost pump can go to. -#define MIN_BOOST_PRESSURE_PSI 10.0F ///< Minimum allowed pressure that the Boost pump can go to. +#define MAX_BOOST_FLOWRATE_MLPM 1500 ///< Maximum target Boost flow rate in mL/min. +#define MIN_BOOST_FLOWRATE_MLPM 0 ///< Minimum target Boost flow rate in mL/min. +#define MAX_BOOST_PRESSURE_PSI 40.0F ///< Maximum allowed pressure that the Boost pump can go to. +#define MIN_BOOST_PRESSURE_PSI 10.0F ///< Minimum allowed pressure that the Boost pump can go to. /// Boost pump data record. typedef struct @@ -45,7 +45,7 @@ U32 p40PumpFBDutyCycle; ///< Boost pump feedback duty cycle. F32 p40PumpSpeed; ///< Boost pump speed (RPM). F32 p40TargetPressure; ///< Boost pump target pressure for control. - F32 p40TargetFlow; ///< Boost pump target flow ( in L/min ) for control. + F32 p40TargetFlow; ///< Boost pump target flow ( in mL/min ) for control. F32 p40TargetDutyCycle; ///< Boost pump target duty cycle for open loop control. } BOOST_PUMP_DATA_T; @@ -58,12 +58,12 @@ void signalBoostPumpStop( void ); BOOL isBoostPumpRunning( void ); -BOOL setBoostPumpTargetFlowRateLPM( F32 roFlowRate ); +BOOL setBoostPumpTargetFlowRateLPM( U32 roFlowRate ); BOOL setBoostPumpTargetPressure( F32 roPressure ); BOOL setBoostPumpTargetDutyCycle( F32 duty ); F32 getBoostFeedbackDutyCycle( void ); -F32 getTargetBoostPumpFlowRateLPM( void ); +U32 getTargetBoostPumpFlowRateMLPM( void ); F32 getTargetBoostPumpPressure( void ); BOOL testBoostPumpDataPublishIntervalOverride( MESSAGE_T *message ); Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r2506bb824f04982d4cf6ad3d81853f863b2f9c11 -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 2506bb824f04982d4cf6ad3d81853f863b2f9c11) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -77,7 +77,7 @@ static U32 roPumpDataPublicationTimerCounter; ///< Used to schedule RO pump data publication to CAN bus. static OVERRIDE_U32_T roPumpDataPublishInterval; ///< Interval (in ms) at which to publish boost pump data to CAN bus. static U32 roControlTimerCounter; ///< Determines when to perform control on RO pump. -static OVERRIDE_F32_T targetROPumpFlowRate; ///< Target RO flow rate (in L/min). +static OVERRIDE_U32_T targetROPumpFlowRate; ///< Target RO flow rate (in L/min). static OVERRIDE_F32_T targetROPumpPressure; ///< Target RO max allowed pressure (in PSI). static F32 roPumpDutyCyclePctSet; ///< Currently set RO pump PWM duty cycle. static F32 roPumpOpenLoopTargetDutyCycle; ///< Target RO pump open loop PWM. @@ -90,7 +90,7 @@ static RO_PUMP_STATE_T handleROPumpOpenLoopState( void ); static F32 roPumpPresToPWM( F32 targetPressure ); -static F32 roPumpFlowToPWM( F32 targetFlow ); +static F32 roPumpFlowToPWM( U32 targetFlow ); static void stopROPump( void ); static void publishROPumpData( void ); @@ -127,9 +127,9 @@ roPumpDataPublishInterval.ovData = RO_PUMP_DATA_PUB_INTERVAL; roPumpDataPublishInterval.ovInitData = 0; roPumpDataPublishInterval.override = OVERRIDE_RESET; - targetROPumpFlowRate.data = 0.0F; - targetROPumpFlowRate.ovData = 0.0F; - targetROPumpFlowRate.ovInitData = 0.0F; + targetROPumpFlowRate.data = 0; + targetROPumpFlowRate.ovData = 0; + targetROPumpFlowRate.ovInitData = 0; targetROPumpFlowRate.override = OVERRIDE_RESET; targetROPumpPressure.data = 0.0F; targetROPumpPressure.ovData = 0.0F; @@ -204,11 +204,11 @@ } // If there is a target flow set, transition to the PI controller and control to flow - else if ( ( getTargetROPumpFlowRateLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) + else if ( ( getTargetROPumpFlowRateMLPM() > 0 ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) { // Set pump to on isROPumpOn = TRUE; - roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateLPM() ); + roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateMLPM() ); setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpDutyCyclePctSet ); state = RO_PUMP_CONTROL_TO_TARGET_FLOW_STATE; } @@ -252,7 +252,7 @@ } // If there is a target flow set, transition to the PI controller and control to flow - else if ( ( getTargetROPumpFlowRateLPM() > 0.0F ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) + else if ( ( getTargetROPumpFlowRateMLPM() > 0 ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) { ///transition to closed loop resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, roPumpDutyCyclePctSet, 0 ); @@ -290,7 +290,7 @@ // Control at set interval else if ( ( ++roControlTimerCounter >= ROP_CONTROL_INTERVAL ) && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) { - roPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, getTargetROPumpFlowRateLPM(), getFlowRate( P16_FLOW ) ); + roPumpDutyCyclePctSet = runPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, getTargetROPumpFlowRateMLPM(), getFilteredFlow( P16_FLOW ) ); setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpDutyCyclePctSet ); roControlTimerCounter = 0; } @@ -310,7 +310,7 @@ { RO_PUMP_STATE_T state = RO_PUMP_CONTROL_TO_TARGET_PRESSURE_STATE; - if ( getTargetROPumpFlowRateLPM() > 0.0F && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) + if ( getTargetROPumpFlowRateMLPM() > 0 && ( PUMP_CONTROL_MODE_CLOSED_LOOP == roPumpControlMode ) ) { // Transition to target flow resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, roPumpDutyCyclePctSet, 0 ); @@ -335,25 +335,25 @@ /*********************************************************************//** * @brief - * The setROPumpTargetFlowRateLPM function sets a new target flow rate for the + * The setROPumpTargetFlowRateMLPM function sets a new target flow rate for the * RO pump. * @details \b Inputs: roPumpOpenLoopTargetDutyCycle * @details \b Outputs: targetROPumpFlowRate, roPumpControlMode, roPumpDutyCyclePctSet, * roControlTimerCounter, isROPumpOn * @param roFlowRate which is target RO flow rate in mL/min * @return TRUE if new target flow rate is set successfully, FALSE if not *************************************************************************/ -BOOL setROPumpTargetFlowRateLPM( F32 roFlowRate ) +BOOL setROPumpTargetFlowRateMLPM( U32 roFlowRate ) { BOOL result = FALSE; // First of all, the flow rate must be in range - if ( ( roFlowRate <= MAX_RO_FLOWRATE_LPM ) && ( roFlowRate >= MIN_RO_FLOWRATE_LPM ) ) + if ( ( roFlowRate <= MAX_RO_FLOWRATE_MLPM ) && ( roFlowRate >= MIN_RO_FLOWRATE_MLPM ) ) { targetROPumpFlowRate.data = roFlowRate; roPumpControlMode = PUMP_CONTROL_MODE_CLOSED_LOOP; // Get the initial guess of the duty cycle - roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateLPM() ); + roPumpDutyCyclePctSet = roPumpFlowToPWM( getTargetROPumpFlowRateMLPM() ); roControlTimerCounter = 0; isROPumpOn = TRUE; @@ -401,9 +401,9 @@ roControlTimerCounter = 0; isROPumpOn = TRUE; // Clear previous target data - if ( getTargetROPumpFlowRateLPM() > 0.0F ) + if ( getTargetROPumpFlowRateMLPM() > 0 ) { - targetROPumpFlowRate.data = 0.0F; + targetROPumpFlowRate.data = 0; } if ( roPumpOpenLoopTargetDutyCycle > 0.0F ) { @@ -444,9 +444,9 @@ // Set the new duty cycle of the pump setFluidPumpPctToPWMDutyCycle( P12_PUMP, roPumpOpenLoopTargetDutyCycle ); // Clear previous target data - if ( getTargetROPumpFlowRateLPM() > 0.0F ) + if ( getTargetROPumpFlowRateMLPM() > 0 ) { - targetROPumpFlowRate.data = 0.0F; + targetROPumpFlowRate.data = 0; } if ( getTargetROPumpPressure() > 0.0F ) { @@ -482,11 +482,11 @@ * flow rate. * @details \b Inputs: targetROPumpFlowRate * @details \b Outputs: none - * @return the current target RO flow rate (in L/min). + * @return the current target RO flow rate (in mL/min). *************************************************************************/ -F32 getTargetROPumpFlowRateLPM( void ) +U32 getTargetROPumpFlowRateMLPM( void ) { - F32 flowRate = getF32OverrideValue( &targetROPumpFlowRate ); + U32 flowRate = getU32OverrideValue( &targetROPumpFlowRate ); return flowRate; } @@ -516,7 +516,7 @@ * @param targetFlow target flow value to control in in mL/min * @return the current target RO pump PWM in a percentage. *************************************************************************/ -static F32 roPumpFlowToPWM( F32 targetFlow ) +static F32 roPumpFlowToPWM( U32 targetFlow ) { F32 dutyCyclePct = ROP_FLOW_TO_PWM( targetFlow ); @@ -533,9 +533,9 @@ *************************************************************************/ void signalROPumpHardStop( void ) { - if( targetROPumpFlowRate.data > 0.0F ) + if( targetROPumpFlowRate.data > 0 ) { - targetROPumpFlowRate.data = 0.0F; + targetROPumpFlowRate.data = 0; resetPIController( PI_CONTROLLER_ID_RO_PUMP_FLOW, MIN_FLUID_PUMP_DUTY_CYCLE_PCT, 0.0F ); } @@ -599,7 +599,7 @@ pumpData.p12PumpFBDutyCycle = (U32)getFluidPumpReadPWMDutyCycle( P12_PUMP ); pumpData.p12PumpSpeed = getFluidPumpRPM( P12_PUMP ); pumpData.p12TargetPressure = getTargetROPumpPressure(); - pumpData.p12TargetFlow = getTargetROPumpFlowRateLPM(); + pumpData.p12TargetFlow = getTargetROPumpFlowRateMLPM(); pumpData.p12TargetDutyCycle = roPumpOpenLoopTargetDutyCycle; broadcastData( MSG_ID_FP_RO_PUMP_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&pumpData, sizeof( RO_PUMP_DATA_T ) ); @@ -637,7 +637,7 @@ * @details \b Inputs: targetROPumpPressure * @details \b Outputs: targetROPumpPressure * @param message Override message from Dialin which includes the value - * that override ro pump data publish interval with (in ms) + * of the target pressure * @return TRUE if override successful, FALSE if not *************************************************************************/ BOOL testROPumpTargetPressureOverride( MESSAGE_T *message ) @@ -654,12 +654,12 @@ * @details \b Inputs: targetROPumpFlowRate * @details \b Outputs: targetROPumpFlowRate * @param message Override message from Dialin which includes the value - * that override ro pump data publish interval with (in ms) + * of the target flow * @return TRUE if override successful, FALSE if not *************************************************************************/ BOOL testROPumpTargetFlowOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, &targetROPumpFlowRate ); + BOOL result = u32Override( message, &targetROPumpFlowRate, MIN_RO_FLOWRATE_MLPM, MAX_RO_FLOWRATE_MLPM ); return result; } Index: firmware/App/Controllers/ROPump.h =================================================================== diff -u -r677d24e39a17598b46bb5a4656a0dd79cf6596e5 -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision 677d24e39a17598b46bb5a4656a0dd79cf6596e5) +++ firmware/App/Controllers/ROPump.h (.../ROPump.h) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -32,8 +32,8 @@ // ********** public definitions ********** -#define MAX_RO_FLOWRATE_LPM 1.5F ///< Maximum target RO flow rate in L/min. -#define MIN_RO_FLOWRATE_LPM 0.0F ///< Minimum target RO flow rate in L/min. +#define MAX_RO_FLOWRATE_MLPM 1500 ///< Maximum target RO flow rate in L/min. +#define MIN_RO_FLOWRATE_MLPM 0 ///< Minimum target RO flow rate in L/min. #define MAX_RO_PRESSURE_PSI 120.0F ///< Maximum allowed pressure that the RO pump can go to. #define MIN_RO_PRESSURE_PSI 10.0F ///< Minimum allowed pressure that the RO pump can go to. @@ -45,7 +45,7 @@ U32 p12PumpFBDutyCycle; ///< RO pump feedback duty cycle. F32 p12PumpSpeed; ///< RO pump speed (RPM). F32 p12TargetPressure; ///< RO pump target pressure for control. - F32 p12TargetFlow; ///< RO pump target flow ( in L/min ) for control. + F32 p12TargetFlow; ///< RO pump target flow ( in mL/min ) for control. F32 p12TargetDutyCycle; ///< RO pump target duty cycle for open loop control. } RO_PUMP_DATA_T; @@ -58,12 +58,12 @@ void signalROPumpHardStop( void ); BOOL isROPumpRunning( void ); -BOOL setROPumpTargetFlowRateLPM( F32 roFlowRate ); +BOOL setROPumpTargetFlowRateMLPM( U32 roFlowRate ); BOOL setROPumpTargetPressure( F32 roPressure ); BOOL setROPumpTargetDutyCycle( F32 duty ); F32 getROFeedbackDutyCycle( void ); -F32 getTargetROPumpFlowRateLPM( void ); +U32 getTargetROPumpFlowRateMLPM( void ); F32 getTargetROPumpPressure( void ); BOOL testROPumpDataPublishIntervalOverride( MESSAGE_T *message ); Index: firmware/App/Drivers/ConductivitySensor.c =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Drivers/ConductivitySensor.c (.../ConductivitySensor.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Drivers/ConductivitySensor.c (.../ConductivitySensor.c) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -15,7 +15,6 @@ * ***************************************************************************/ - #include // Used for calculating the polynomial calibration equation. #include // For memcpy @@ -598,8 +597,8 @@ if ( TRUE == conductivitySensorControl[ sensorID ].writeInProgress ) { - conductivitySensorControl[ sensorID ].writeComplete = TRUE; - conductivitySensorControl[ sensorID ].writeEnable = FALSE; + conductivitySensorControl[ sensorID ].writeComplete = TRUE; + conductivitySensorControl[ sensorID ].writeEnable = FALSE; if ( P9_COND == sensorID ) { clearFPGAP9WriteEnable(); Index: firmware/App/Drivers/FlowSensor.c =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Drivers/FlowSensor.c (.../FlowSensor.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Drivers/FlowSensor.c (.../FlowSensor.c) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -32,7 +32,7 @@ // ********** private data ********** -static OVERRIDE_F32_T currentFlowReadings[ NUM_OF_FLOW_SENSORS ]; ///< Current flow sensor pressure readings (overrideable). +static OVERRIDE_S32_T currentFlowReadings[ NUM_OF_FLOW_SENSORS ]; ///< Current flow sensor pressure readings (overrideable). static OVERRIDE_F32_T currentFlowTempReadings[ NUM_OF_FLOW_SENSORS ]; ///< Current flow sensor temperature readings (overrideable). // ********** private function prototypes ********** @@ -51,9 +51,9 @@ // Initialize override structures for each pressure sensor for ( sensor = FLOW_SENSOR_FIRST; sensor < NUM_OF_FLOW_SENSORS; sensor++ ) { - currentFlowReadings[ sensor ].data = 0.0F; - currentFlowReadings[ sensor ].ovData = 0.0F; - currentFlowReadings[ sensor ].ovInitData = 0.0F; + currentFlowReadings[ sensor ].data = 0; + currentFlowReadings[ sensor ].ovData = 0; + currentFlowReadings[ sensor ].ovInitData = 0; currentFlowReadings[ sensor ].override = OVERRIDE_RESET; currentFlowTempReadings[ sensor ].data = 0.0F; @@ -75,9 +75,9 @@ *************************************************************************/ void readFlowSensors( void ) { - // Update and convert raw flow rates to mL/min - currentFlowReadings[ P16_FLOW ].data = (F32)( (S16)getFPGAFlowP16() ); - currentFlowReadings[ P7_FLOW ].data = (F32)( (S16)getFPGAFlowP7() ); + // Update raw flow rates to mL/min + currentFlowReadings[ P16_FLOW ].data = ( (S16)getFPGAFlowP16() ); + currentFlowReadings[ P7_FLOW ].data = ( (S16)getFPGAFlowP7() ); // Update and convert raw flow sensor temperatures to deg C currentFlowTempReadings[ P16_FLOW ].data = (F32)( (S16)getFPGAFlowP16Temp() ) / FLOW_TEMPERATURE_DIVIDER; @@ -94,9 +94,9 @@ * @param sensor ID of flow sensor to get flow rate for. * @return The current flow rate (in mL/min) of the given flow sensor. *************************************************************************/ -F32 getFlowRate( FLOW_SENSORS_T sensor ) +S32 getFlowRate( FLOW_SENSORS_T sensor ) { - F32 result = 0.0F; + S32 result = 0; if ( sensor < NUM_OF_FLOW_SENSORS ) { @@ -162,7 +162,7 @@ *************************************************************************/ BOOL testFlowSensorReadingsOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, ¤tFlowReadings[0], NUM_OF_FLOW_SENSORS - 1 ); + BOOL result = s32ArrayOverride( message, ¤tFlowReadings[0], NUM_OF_FLOW_SENSORS - 1 ); return result; } Index: firmware/App/Drivers/FlowSensor.h =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Drivers/FlowSensor.h (.../FlowSensor.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Drivers/FlowSensor.h (.../FlowSensor.h) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -31,6 +31,9 @@ // ********** public definitions ********** +#define MIN_FLOW 0 ///< Minimum flow value used for overriding +#define MAX_FLOW 2000 ///< Maximum flow value used for overriding + /// Enumeration of flow sensors handled by this unit. typedef enum FlowSensors { @@ -44,7 +47,7 @@ void initFlowSensor( void ); void readFlowSensors( void ); -F32 getFlowRate( FLOW_SENSORS_T sensor ); +S32 getFlowRate( FLOW_SENSORS_T sensor ); F32 getFlowTemperature( FLOW_SENSORS_T sensor ); BOOL testFlowSensorReadingsOverride( MESSAGE_T *message ); Index: firmware/App/Monitors/Flow.c =================================================================== diff -u -r99498a5bab0a1f4c706376feceadc66df6d1c22e -r863f8f88c73ee5dd285242f6e131a14862b4f5c4 --- firmware/App/Monitors/Flow.c (.../Flow.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) +++ firmware/App/Monitors/Flow.c (.../Flow.c) (revision 863f8f88c73ee5dd285242f6e131a14862b4f5c4) @@ -253,7 +253,7 @@ for ( sensor = FLOW_SENSOR_FIRST; sensor < NUM_OF_FLOW_SENSORS; sensor++ ) { - F32 rawFlow = getFlowRate( sensor ); + F32 rawFlow = (F32)getFlowRate( sensor ); // TODO - calibrate