Ratio Control: Blending Two Flows When You Only Get to Control One of Them
In ratio control one stream sets the pace and you trim the other. Where the multiplier goes, why actual ratio drifts, and starting up without off-spec.
A blend that reads 3.2% caustic when the recipe says 3.0% usually isn't a bad flowmeter. It's a ratio scheme that trims the wrong stream, or trims it too slowly, and drifts every time the upstream flow moves. Ratio control is the case where you don't get to hold both flows — one of them does whatever the upstream process wants, and your job is to keep the second one in proportion to it.
The stream you can't control is the wild stream (sometimes "uncontrolled" or "master flow"). The one you drive is the controlled stream. The classic layout: wild flow of a base liquid comes through at whatever rate the upstream unit delivers, and you meter in additive so the mix stays at a fixed fraction. Fuel-air on a burner, dilution water into a slurry, reagent into a waste stream to hit a pH target — same shape every time.
The one equation, and where people put it wrong
The controlled-stream setpoint is just:
SP_controlled = Ratio × Flow_wild
That multiply is the whole scheme. The mistake is what you multiply. I've seen ratio applied to the raw analog count off the transmitter instead of the flow in engineering units, so the "ratio" silently absorbs the span of both meters and nobody can read the number off the faceplate. Do the square-root extraction and scale both flows to engineering units first — if you're on DP flow meters, that low-flow cutoff matters here more than usual, because the wild flow will spend real time down near zero during startup and you don't want the extractor's noise floor multiplied straight into your reagent setpoint.
Two structurally different ways to wire it, and they don't behave the same:
- Setpoint ratio (open-loop ratio): compute
SP = Ratio × Flow_wildand hand it to the controlled-stream flow PID as its remote setpoint. This is what you want almost always. The flow loop still closes on its own measurement, so a sticky valve or a fouling meter on the controlled side gets corrected by that loop, not left to drift. - Actual ratio (closed-loop / metering ratio): compute
Ratio_actual = Flow_controlled / Flow_wildand run a PID on that against a ratio setpoint. Tempting because "the thing you care about is the ratio, so control the ratio." In practice it's a division that blows up as the wild flow goes to zero, and the loop gain changes with throughput. Reserve it for cases where the proportion itself is the tight spec and you can guarantee the wild flow never parks near zero.
Default to setpoint ratio with a real flow PID underneath. It degrades gracefully; the actual-ratio scheme doesn't.
Ratio isn't the recipe number — it carries the meter spans
Here's the trap that eats a shift on commissioning. The recipe says "5% additive by volume," so someone types 0.05 into the ratio station. The additive flow comes out at a tenth of that. Why: the ratio the PLC applies is the ratio of the two flow signals, and if your wild meter spans 0–400 m³/h and your additive meter spans 0–5 m³/h, a 5% volumetric blend is not 0.05 in signal terms.
Work it in engineering units and the ambiguity disappears. If both flows are already scaled to m³/h before the multiply, then Ratio = 0.05 genuinely means 5% and the faceplate reads what the process engineer expects. This is the single strongest argument for scaling first and multiplying second: the operator's ratio setpoint stays a physical number they can sanity-check against the recipe sheet. Put the multiply ahead of the scaling and you've buried two instrument spans inside a "unitless" constant that changes the day someone re-ranges a transmitter.
Actual ratio drifts from setpoint — and that's information
Bring up a live blend and you'll watch the measured ratio sit a percent or two off the setpoint even after the controlled flow loop is at setpoint. Before you chase it as an error, know where it comes from:
- Dynamic mismatch. The wild flow steps, the setpoint recomputes instantly, but the controlled flow valve takes seconds to catch up. During that lag the actual ratio is wrong even though the scheme is behaving perfectly. On a fast-moving wild stream this shows up as a ratio that oscillates around setpoint in step with upstream disturbances.
- Meter zero and low-flow behavior. Two DP flow meters with slightly different low-flow cutoffs give you a ratio that's junk below maybe 10% of span and only trustworthy up in the normal operating band. Don't tune to a ratio reading taken during a low-throughput lull.
- Valve resolution. A control valve that resolves to ~1% of travel can't hold a reagent flow tightly enough to keep a tight ratio at low additive rates. That's a hardware ceiling, not a tuning problem — no gain change fixes a valve that moves in visible steps.
If the steady-state ratio is consistently off — flows dead steady, both loops at setpoint, still reading 3.2 instead of 3.0 — then it's a calibration or scaling error, and now the drift is telling you something real. Split those two cases before you touch anything.
Lag matching, or why a good blend goes bad on transients
Steady state, ratio control is trivial. The engineering is all in the transients. When the wild flow changes, both streams have to arrive at the mixing point together in the new proportion. If the additive is injected 20 meters upstream of where the base flow is measured, or one line has far more transport lag than the other, the streams are in ratio on paper but a slug of off-ratio mix travels down the pipe on every upstream move.
The fix is a lead/lag (dynamic compensator) on the wild-flow signal before it hits the multiply, tuned so the computed setpoint leads or lags to line the two streams up at the junction. On a well-behaved slow blend you can often skip it. On anything with meaningful transport delay or a jumpy wild stream, it's the difference between a blend that holds spec through upsets and one that only holds when nothing is happening. Don't add it speculatively — measure the ratio excursion on a real wild-flow step first, and only reach for lead/lag if the transient error is out of spec.
Ratio bias — the knob operators actually want
A fixed multiply can't correct a persistent offset. If a downstream analyzer says the blend is running slightly rich no matter what, you want to nudge the whole relationship without retyping the ratio. That's ratio bias:
SP_controlled = (Ratio × Flow_wild) + Bias
The bias is a small additive trim, often driven by an outer composition or pH loop (this is really just cascade — the analyzer loop's output is the bias, and the ratio scheme is its inner mechanism). Keep the bias authority clamped. An unbounded bias means a stuck analyzer can walk your reagent flow to a rail while the ratio faceplate still reads a sane number and nobody's looking at the right screen. I clamp bias to something like ±10% of the nominal controlled flow and alarm when it sits at the clamp — a bias pinned at its limit is the analyzer telling you the ratio setpoint itself is wrong.
Startup is where blends dump product
The steady scheme is fine. The mess is the first two minutes. Wild flow is ramping from zero, the multiply is producing a tiny setpoint, and the controlled-flow loop is trying to hold a flow smaller than its valve can meter. A few things worth building in before first fill:
- Minimum wild flow to enable ratio. Below some threshold (say 10% of wild span), hold the controlled valve closed or on a fixed minimum rather than chasing a garbage setpoint computed from noise. Latch out of it once the wild flow is genuinely established.
- Bumpless mode changes. Operators run these blends in manual during startup and flip to ratio once flows stabilize. Track the ratio station's output to the actual controlled flow while in manual so the handover doesn't step the valve — same bumpless-transfer discipline as any cascade inner loop.
- Where the off-spec goes. Until the ratio is inside tolerance, that product isn't on-spec. Either recycle it, send it to a slop tank, or hold the downstream valve — decide this at design time, because "we'll just let the first batch settle" is how off-spec ends up in the product tank.
If you're commissioning one of these, the fastest sanity check: put both flows in engineering units on one trend, add a calculated Flow_controlled / Flow_wild pen, and step the wild flow by hand. A healthy scheme snaps the controlled flow to the new setpoint and the ratio pen returns to setpoint within a few loop time constants. A ratio pen that settles to the wrong steady value is scaling; one that overshoots and rings on every wild-flow step is a lag-matching or tuning problem. The trend tells you which before you've touched a single parameter.