Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -re30951f62cdc9c52f20e9218df947d3860b3c7a7 -raa36ab1ed13d099286cedcbd066f7dce11146d13 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision e30951f62cdc9c52f20e9218df947d3860b3c7a7) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision aa36ab1ed13d099286cedcbd066f7dce11146d13) @@ -320,9 +320,9 @@ { F32 avgROFlow = (F32)measuredFlowReadingsSum * FLOW_AVERAGE_MULTIPLIER; - if ( ( avgROFlow == FLOW_SENSOR_ZERO_READING ) || ( measuredFlowReadingsSum == 0 ) ) + if ( ( roFlowReading == FLOW_SENSOR_ZERO_READING ) || ( roFlowReading == 0 ) ) { - measuredROFlowRateLPM.data = 0.0; + measuredROFlowRateLPM.data = 0.0; } else { @@ -439,17 +439,17 @@ roPumpControlModeSet = roPumpControlMode; // set initial PWM duty cycle roPumpPWMDutyCyclePctSet = roPumpPWMDutyCyclePct; - setROPumpControlSignalPWM ( roPumpPWMDutyCyclePctSet ); + setROPumpControlSignalPWM( roPumpPWMDutyCyclePctSet ); // reset controller - resetPIController ( I_CONTROLLER_ID_RO_PUMP_RAMP_UP, roPumpPWMDutyCyclePctSet ); + resetPIController( I_CONTROLLER_ID_RO_PUMP_RAMP_UP, roPumpPWMDutyCyclePctSet ); // set pump to on isROPumpOn = TRUE; result = RO_PUMP_RAMP_UP_STATE; } if ( roPumpOpenLoopTargetPWM > 0 && roPumpControlMode == PUMP_CONTROL_MODE_OPEN_LOOP ) { - setROPumpControlSignalPWM ( roPumpOpenLoopTargetPWM ); + setROPumpControlSignalPWM( roPumpOpenLoopTargetPWM ); isROPumpOn = TRUE; result = RO_PUMP_OPEN_LOOP_STATE; } @@ -560,19 +560,19 @@ RO_PUMP_STATE_T result = RO_PUMP_CONTROL_TO_TARGET_STATE; // control at set interval - if ( ++roControlTimerCounter >= ROP_CONTROL_INTERVAL ) + if ( ++roControlTimerCounter >= ROP_CONTROL_INTERVAL && roPumpControlModeSet == PUMP_CONTROL_MODE_CLOSED_LOOP ) { F32 actualPressure = getMeasuredDGPressure( PRESSURE_SENSOR_RO_PUMP_OUTLET ); F32 newPWM = runPIController( PI_CONTROLLER_ID_RO_PUMP, tgtROPumpPressure, actualPressure ); roPumpPWMDutyCyclePctSet = newPWM; setROPumpControlSignalPWM( newPWM ); -/*#ifndef EMC_TEST_BUILD +#ifndef EMC_TEST_BUILD newPWM = runPIController( PI_CONTROLLER_ID_RO_PUMP, tgtPres, actPres ); roPumpPWMDutyCyclePctSet = newPWM; setROPumpControlSignalPWM( newPWM ); -#endif*/ +#endif roControlTimerCounter = 0; } @@ -714,9 +714,14 @@ // publish RO pump data on interval if ( ++roPumpDataPublicationTimerCounter >= getPublishROPumpDataInterval() ) { - F32 measFlow = getMeasuredROFlowRate(); - F32 pumpPWMPctDutyCycle = roPumpPWMDutyCyclePctSet * FRACTION_TO_PERCENT_FACTOR; - broadcastROPumpData( tgtROPumpPressure, measFlow, pumpPWMPctDutyCycle, (U32)roPumpState ); + RO_PUMP_DATA_T valveData; + + valveData.roPumpTgtPressure = tgtROPumpPressure; + valveData.measROFlowRate = getMeasuredROFlowRate(); + valveData.roPumpPWM = roPumpPWMDutyCyclePctSet * FRACTION_TO_PERCENT_FACTOR; + valveData.roPumpState = (U32)roPumpState; + + broadcastROPumpData( &valveData ); roPumpDataPublicationTimerCounter = 0; } }