Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -recd204503f9f4837800080a58c07dac8a2e8d602 -r145fd716a856f864f39fb0f9884865f6e45b9256 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision ecd204503f9f4837800080a58c07dac8a2e8d602) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) @@ -7,8 +7,8 @@ * * @file ConcentratePumps.c * -* @author (last) Jashwant Gantyada -* @date (last) 02-Apr-2026 +* @author (last) Sameer Kalliadan Poyil +* @date (last) 16-Jun-2026 * * @author (original) Vinayakam Mani * @date (original) 19-Sep-2024 @@ -266,6 +266,7 @@ //Monitor Pump Park status monitorPumpParkStatus(); + //TODO: Uncomment once done. // Temporarily disable concentrate pump speed mismatch alarms // monitorPumpSpeed( D11_PUMP, ALARM_ID_DD_D11_PUMP_SPEED_CONTROL_ERROR ); // monitorPumpSpeed( D10_PUMP, ALARM_ID_DD_D10_PUMP_SPEED_CONTROL_ERROR ); @@ -851,6 +852,8 @@ concentratePumps[ pumpId ].currentPumpSpeed = 0.0F; // set target rate to zero pumpTargetSpeed[ pumpId ].data = 0.0F; pumpTargetRevCnt[ pumpId ].data = 0; + measuredPumpSpeed[ pumpId ].data = 0.0F; + concentratePumps[ pumpId ].pulseWidthUS = 0.0F; isDosingCompleted [ pumpId ] = TRUE; // Disable the motor when stopping, to take next revolution count @@ -867,7 +870,8 @@ { setFPGAD76PumpSetStepSpeed( CONCENTRATE_PUMP_ZERO_FLOW_RATE ); } - + //TODO: revert back once issue resolved +#if 0 // Park concentrate pump too if requested if ( TRUE == parkPump ) { @@ -888,6 +892,7 @@ } concentratePumps[ pumpId ].isConcPumpParkInProgress = TRUE; } +#endif } /*********************************************************************//** @@ -1116,16 +1121,26 @@ pulseWidthInMicroSeconds = pulseWidthCount * CONCENTRATE_PUMP_HALL_SENSE_PERIOD_RESOLUTION; concentratePumps[ pumpId ].pulseWidthUS = pulseWidthInMicroSeconds; - isPumpPulseWidthOut = ( pulseWidthInMicroSeconds <= (F32)CONCENTRATE_PUMP_MIN_ALLOWED_HALL_SENSOR_COUNT ? TRUE : FALSE ); + isPumpPulseWidthOut = FALSE; // Determine measured speed for the pump - if ( CONCENTRATE_PUMP_ZERO_FLOW_RATE == pulseWidthCount ) + if ( ( concentratePumps[ pumpId ].currentPumpSpeed <= NEARLY_ZERO ) || + ( CONCENTRATE_PUMP_ZERO_FLOW_RATE == pulseWidthCount ) ) { measuredPumpSpeed[ pumpId ].data = 0.0F; } - else if ( FALSE == isPumpPulseWidthOut ) + else { - measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; + isPumpPulseWidthOut = ( pulseWidthInMicroSeconds <= (F32)CONCENTRATE_PUMP_MIN_ALLOWED_HALL_SENSOR_COUNT ? TRUE : FALSE ); + + if ( FALSE == isPumpPulseWidthOut ) + { + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; + } + else + { + measuredPumpSpeed[ pumpId ].data = 0.0F; + } } // If pulse width is out of range capture pump out of range, pumpId and pulse width