Part IV — Control
Anticipation, Limits, and Nested Control
Online, with a lab for each exercise: thinking-in-diagrams.aryehnielsen.com
Feedback control diagramsPart IV · Control · Chapter 9 of 12 · the second of two chapters on feedback control diagrams
What happens when correction isn’t enough? A correction can come too late, stop at a limit, follow noise in a reading, or be needed before any gap opens, and one loop’s corrective action can be another’s target. A feedback control diagram shows where each happens, and where a person takes over.
A marathon run to plan
A runner aims to finish a marathon, 42.2 kilometers, in 3 hours 30 minutes. Her watch projects her finish time from her pace so far. While the projection is later than 3:30 she sets herself a faster target pace, and while it is earlier, a slower one. Pace is minutes per kilometer, so the faster she runs, the lower it is.
At the end of each kilometer the watch shows her lap pace, her average over that kilometer. When it is more than 5 seconds slower than her target pace she runs harder; more than 5 seconds faster, she eases off. She runs no harder than the effort she can hold to the finish.
At 30 kilometers she sees a hill ahead and runs harder before she reaches it. If the day turns hot, she drops the plan and runs by feel.
Her two gaps thinking-in-diagrams.aryehnielsen.com/control/sense-compare-correct/#target-and-gap are minutes behind plan, the projected finish time less the target finish time, and seconds too slow, the lap pace less the target pace.
What the notation expresses
Feedforward
Feedforward is a path of signals from an external driver to a corrective action that passes through no gap. Hill’s gradient → her effort, +, is one: she runs harder as the hill nears, before her pace slows and any gap opens. The gradient also acts on her pace, +, so if she misjudges the hill, she corrects the difference only once the lap pace reads it, up to a kilometer later. Feedforward has no mark of its own.
Sampling and filters
Sampling is how often the measured value updates, and a filter is how it is smoothed. Each is drawn as a delay on the return path thinking-in-diagrams.aryehnielsen.com/control/sense-compare-correct/#delays-in-control, a signal delay thinking-in-diagrams.aryehnielsen.com/accumulation/stocks-inside-feedback/#material-and-signal-delays. Her pace → lap pace carries one: the lap pace is sampled once a kilometer and averaged over it, so a water station or a corner barely moves it, and a slowdown shows up to a kilometer late.
Deadband
A deadband is a range of gaps within which the corrective action stays as it is. It is written beside the gap’s signal to the corrective action: deadband ±5 seconds per kilometer on seconds too slow → her effort. She sets it wider than the few seconds by which her lap pace varies at an unchanged effort.
Saturation
Saturation is the most a corrective action can reach, however wide the gap. It is written beneath the corrective action’s name as at most and its limit: at most the effort she can hold to the finish. At that limit a wider gap changes her effort no further: on a steep hill her pace slows, and the seconds lost are made up only after the top.
Saturation is not a nonlinear effect thinking-in-diagrams.aryehnielsen.com/feedback/delays-drivers-and-competing-loops/#nonlinear-effects. A nonlinear effect belongs to a signal: how strongly one variable changes another across its range. Saturation belongs to the corrective action: a bound on the variable itself, whichever signal reaches it, the gap’s or the gradient’s.
Check your understanding
A basement floods, and someone sets a dehumidifier to bring its air down to 50% relative humidity. The dehumidifier runs flat out, removing at most 20 liters of water a day, and for a week the air stays far wetter than 50%. In a feedback control diagram of the basement, how is that limit drawn?
- a as at most 20 liters a day, written beneath water removed, the corrective action
- b as a nonlinear effect on the signal from water removed to the basement's humidity
- c as a deadband on the signal from the humidity gap to water removed
Competing targets
A shared corrective action is one corrective action on two or more control loops. If she also kept her heart rate below 165 beats a minute, her effort would be the corrective action of a heart-rate loop too. On the hill, as in coupled loops thinking-in-diagrams.aryehnielsen.com/feedback/loops-that-amplify-loops-that-correct/#coupled-loops, seconds too slow would raise her effort while beats too many lowered it, and no effort would close both gaps.
A cross-effect is a signal from a variable of one control loop to a variable of another, itself on no declared loop. A museum gallery with a temperature loop and a humidity loop has one: heater output → gallery humidity, −, since warming air lowers its relative humidity, so each correction of the temperature opens a humidity gap.
Nested loops
A nested loop is a control loop whose target is another loop’s corrective action. B2, keeping to the finish time, runs from minutes behind plan through target pace and on through B1’s gap, effort and pace to her finish time. Nothing marks the nesting: target pace keeps its one role, corrective action, and its signal into seconds too slow makes it B1’s target.
B1 closes a gap within a kilometer or two, and B2 moves the target pace over many: loop dominance thinking-in-diagrams.aryehnielsen.com/feedback/delays-drivers-and-competing-loops/#loop-dominance here runs by timescale, B1 dominating her effort over a kilometer and B2 over the race.
Override and false alarms
An override is a variable a person sets whose signal reaches a corrective action, replacing the loop’s rule for a while; override is written above its name. Effort she picks by feel → her effort: when the day turns hot she drops the plan, and while she runs by feel neither gap changes her effort.
A false alarm is a gap opened by the reading alone. Among tall buildings the watch’s satellite fix drifts, and the lap pace can read 20 seconds slow while her pace holds. By the loop’s rule she would run harder; by override she holds her effort for that kilometer.
The bad diagram
What’s wrong with this diagram of a museum gallery’s humidity?
A museum keeps a gallery’s paintings near 50% relative humidity, and a humidifier adds moisture when the air is drier than that. On a winter day each door a visitor opens lets in cold outdoor air, which, warmed, lowers the gallery’s relative humidity for a minute. The reading, taken straight from the gallery’s humidity, drops, and the humidifier starts, then stops as the air recovers: every door opened changes its output. The lab’s check for at least one deadband reports:
0 signals with a deadband. Brief: at least 1. A deadband is written on the signal from a gap to a corrective action.
The corrected diagram
Corrected, the measured value is hourly average humidity, a filter drawn as a delay on the return path, and the gap’s signal carries deadband ±10 percentage points: while the gap is less than 10 points either way, the humidifier output stays as it is. With the target at 50%, those gaps span the Bizot Green Protocol’s range for paintings, 40–60% relative humidity.
Changed: 1 label. Signals: 1 delay added, 1 deadband added.
Notation moves
| Notation move | When | What it shows | Example |
|---|---|---|---|
| Draw a signal from an external driver to a corrective action | The external driver is seen before it arrives | Feedforward: a correction before any gap opens | hill’s gradient → her effort |
| Mark a delay on the return path | The reading is sampled or averaged | A reading arriving late | her pace → lap pace |
| Write deadband and its band beside the gap’s signal | Small gaps go uncorrected | Which gaps no correction answers | deadband ±5 seconds per kilometer |
| Write at most and the limit beneath a corrective action | The corrective action has a most it can reach | Where a wider gap stops changing it | at most the effort she can hold to the finish |
| Give two control loops one corrective action | Two targets rest on one variable | A shared corrective action | her effort, on pace and heart-rate loops |
| End one loop’s corrective action at another loop’s gap | One loop moves another’s target | A nested loop | target pace → seconds too slow |
| Write override above a variable a person sets | Someone can set the loop’s rule aside | Where a person replaces the rule | effort she picks by feel |
Common misreading
Read one way, correcting after every reading keeps a quantity closest to its target. In Deming’s funnel experiment, marbles dropped through a funnel aimed at a mark land scattered around it. Moving the funnel after each drop, from where it stands, by the opposite of the last marble’s miss doubles the variance of where the marbles land (Deming, 1986, as Pyzdek reproduces it). Each move answers a miss that came from chance, and adds a miss of its own.
Changing her effort after each kilometer to cancel the few seconds by which her last lap pace missed her target pace adds that change to the next lap’s variation, and her pace scatters wider; inside the deadband of ±5 seconds per kilometer, her effort stays as it is.
The strongest objection
A diagram of roles holds no number for how hard a loop corrects: how much her effort changes for each second too slow. With the loop’s delays, that number determines whether it settles or oscillates: raised far enough, it makes a loop oscillate, and the longer the delay, the more slowly a loop can be made to correct (Åström and Murray).
Tuning lies outside the diagram. Where the delay sits and where an external driver enters are on it, and they set what any tuning can do. However hard she corrects each second too slow, her effort changes for the hill only after the lap pace reads it; the feedforward path from hill’s gradient changes it before. For a slow reading, the delay to shorten is on the return path: a lap pace averaged over 500 meters arrives sooner, and varies more from lap to lap.
Check your understanding
Check your understanding
A smoke alarm hangs by a kitchen's toaster. When the smoke it reads passes its trigger it sounds, and someone opens the window and fans the smoke out. Toast browned too far sets it off with no fire, so the household presses its hush button, which silences it for ten minutes; then it reads the smoke again. In a feedback control diagram of the kitchen, what is the hush button pressed?
- a an override, its signal ending at the alarm's sound
- b a new target: a higher trigger for smoke
- c an external driver acting on the smoke in the kitchen
A furnace with feedforward, redrawn
Redrawn from Peter Woolf and others, Chemical Process Dynamics and Controls (University of Michigan), section 11.2, “Feed Forward Control”, on LibreTexts eng.libretexts.org/Bookshelves/Industrial_and_Systems_Engineering/Chemical_Process_Dynamics_and_Controls_(Woolf)/11%3A_Control_Architectures/11.02%3A_Feed_forward_control-_What_is_it_When_useful_When_not_Common_usage., the furnace drawn after “This system can also be represented by the following”. CC BY 3.0 creativecommons.org/licenses/by/3.0/.
Its boxes dropped and the lines between them drawn as variables with roles: its temperature setpoint as target outlet temperature, the target; its output as outlet temperature, the controlled variable; its output sensor’s reading as measured outlet temperature, the measured value; its input flow disturbance as rate of incoming fluid, the external driver; the gap, which it leaves inside its temperature controller, drawn as degrees below target, and that controller as the signal from the gap to fuel gas flow, the corrective action; its disturbance sensor and feed-forward controller as the signal from rate of incoming fluid to fuel gas flow; polarities added from its text, and the loop named.
Question 1 of 3
Which path in the redrawing is feedforward?
- a Rate of incoming fluid → outlet temperature, −.
- b Measured outlet temperature → degrees below target, −.
- c Rate of incoming fluid → fuel gas flow, +.
Question 2 of 3
Fuel gas flow already rises with the rate of incoming fluid. What is left for B1 to correct?
- a Whatever the feedforward rule gets wrong, and any change it doesn’t read, such as in the furnace itself.
- b Nothing while the rate of incoming fluid changes, since the feedforward has already made up for it.
- c Only a change in the target outlet temperature.
Question 3 of 3
Heat from the burning fuel takes time to pass into the fluid and reach the outlet. Where would a delay be drawn?
- a On measured outlet temperature → degrees below target, since the reading comes back late.
- b On rate of incoming fluid → fuel gas flow, since feedforward arrives late.
- c On fuel gas flow → outlet temperature, B1’s forward path.
Exercises
Passing the checks means meeting the brief, not being right.
FC 06 Entry gates at a concert as trains arrive
Your palette
variable polarity loop balancing loop external driver gapa role, written above its variable's name stock flow cloud signal targeta role, written above its variable's name corrective actiona role, written above its variable's name controlled variablea role, written above its variable's name measured valuea role, written above its variable's name feedforward
FC 06 Entry gates at a concert as trains arrive
Feedforward, then correction
Fans reach a stadium concert by train and queue at the entry gates. The stewards aim for a wait of about ten minutes, which at the gates' pace is a queue of about 600 people. Every few minutes a steward counts the queue, and the further the count runs above 600, the more gates the stewards open. A full train brings about 1,000 fans to the gates within a few minutes of arriving. The station's arrivals board shows each train due, and when it shows a full train the stewards open more gates before its fans reach the queue. Count the queue in people, and time in minutes.
The brief
- Read the trains due on the arrivals board into gates open, by a path that passes no gap.
- Draw trains arriving as an external driver acting on the flow of people joining the queue.
- Close one control loop through the flow of people passing through the gates: the gap, gates open, the people queuing and the stewards' count.
- The feedforward path and the gap's signal both end at gates open.
Your palette
On the page before this sheet.
Draw here
In the lab, with the brief’s structure checked as you draw: thinking-in-diagrams.aryehnielsen.com/control/anticipation-limits-and-nested-control/#exercise-feedback-control-06
FC 07 Tuning a guitar with a clip-on tuner
Your palette
variable polarity delay loop balancing loop external driver gapa role, written above its variable's name signal targeta role, written above its variable's name corrective actiona role, written above its variable's name controlled variablea role, written above its variable's name measured valuea role, written above its variable's name deadband
FC 07 Tuning a guitar with a clip-on tuner
A noisy reading, a wait, and a band left alone
Amara tunes her guitar's high E string to about 330 Hz with a clip-on tuner, which shows how many cents the string sits sharp or flat of E. Right after she plucks, the reading wobbles by several cents as the note rings and fades, so she waits about two seconds for it to settle before she reads it. When the settled reading is more than 3 cents flat she turns the peg to tighten the string, further the flatter it reads; when it is more than 3 cents sharp she turns the peg back; within 3 cents she leaves the peg alone. The strings are new, and as they stretch the string goes flat between tunings.
The brief
- Mark the wait while the tuner's reading settles as a delay on the return path.
- Write her 3 cents either way as a deadband on the signal from the gap to the peg.
- Draw the pluck's wobble as an external driver acting on the tuner's reading.
- Leaving the peg alone inside 3 cents is the deadband, not a second variable.
Your palette
On the page before this sheet.
Draw here
In the lab, with the brief’s structure checked as you draw: thinking-in-diagrams.aryehnielsen.com/control/anticipation-limits-and-nested-control/#exercise-feedback-control-07
FC 08 A home reef aquarium
Your palette
variable polarity loop balancing loop gapa role, written above its variable's name signal targeta role, written above its variable's name corrective actiona role, written above its variable's name controlled variablea role, written above its variable's name measured valuea role, written above its variable's name behavior note
FC 08 A home reef aquarium
Three targets, one shared corrective action
Keiko keeps a reef aquarium at home and holds three quantities near targets: the water at 25 °C, its salinity at 35 parts per thousand, and its alkalinity at 8 dKH. A thermometer in the tank reads the temperature, and the heater's output rises the cooler it reads. Once a week she reads the salinity with a refractometer and tests the alkalinity with a kit, then changes part of the water for new salt water mixed at 34 parts per thousand and 11 dKH: the higher the salinity reads, or the lower the alkalinity, the more water she changes that week. The new water comes from a bucket a few degrees cooler than the tank. The harder the heater runs, the faster the water evaporates, leaving its salt behind.
The brief
- Close three control loops, for temperature, salinity and alkalinity, each with its target, reading and gap.
- Make the water changed per week the corrective action of both the salinity loop and the alkalinity loop.
- Draw the heater's signal to salinity and the water changes' signal to the water temperature as cross-effects.
- A behavior note names the tradeoff between the loops.
Your palette
On the page before this sheet.
Draw here
In the lab, with the brief’s structure checked as you draw: thinking-in-diagrams.aryehnielsen.com/control/anticipation-limits-and-nested-control/#exercise-feedback-control-08
FC 09 A mail service's spam filter
Your palette
variable polarity loop reinforcing loop balancing loop boundary external driver gapa role, written above its variable's name signal targeta role, written above its variable's name corrective actiona role, written above its variable's name controlled variablea role, written above its variable's name measured valuea role, written above its variable's name overridea role, written above its variable's name evidence coding
FC 09 A mail service's spam filter
Two loops on one corrective action, and a person's release
A mail service filters spam for hundreds of millions of users. It aims to let no more than 1 message in 1,000 reaching inboxes be spam, and to lose no more than 1 real message in 10,000 to spam folders. Users report the spam that gets through, and complain when real mail goes missing; the service's engineers read both each day and set how strict the filter is, stricter as reports rise and less strict as complaints rise. New spam campaigns start around the world every day, whatever the filter does. The engineers believe that each time the filter is made stricter, spammers change their tactics and get more spam through, but nobody has measured it. A user who finds a real message in the spam folder can mark it not spam, which releases it and makes the filter less strict for messages like it. Draw the model's boundary around spam filtering at the service, its users and the spammers' tactics.
The brief
- Draw a named boundary, with new spam campaigns worldwide outside it as an external driver.
- Close two control loops through filter strictness: one on spam reaching inboxes, read from users' reports, and one on real mail lost to spam folders, read from complaints.
- Declare the reinforcing loop through spammers' new tactics, inside the boundary.
- Draw users' releases of messages marked not spam as an override whose signal ends at filter strictness.
- The override is named as a quantity, mail released as not spam, which someone can count and read later.
Your palette
On the page before this sheet.
Draw here
In the lab, with the brief’s structure checked as you draw: thinking-in-diagrams.aryehnielsen.com/control/anticipation-limits-and-nested-control/#exercise-feedback-control-09
FC 10 Cooling a data center through a heatwave
Your palette
variable polarity delay loop balancing loop external driver gapa role, written above its variable's name evidence coding behavior note signal targeta role, written above its variable's name corrective actiona role, written above its variable's name controlled variablea role, written above its variable's name measured valuea role, written above its variable's name saturation overridea role, written above its variable's name
FC 10 Cooling a data center through a heatwave
Nested loops, a limit, and a person taking over
A data center's cooling units blow cold air into its server rooms. A thermometer in that supply air reads its temperature every few seconds, and the units raise their cooling output the further it reads above the supply-air target. Engineers set that target: each hour they read the temperature at the servers' air inlets, which they hold near 27 °C, and lower the supply-air target the warmer the inlets read. The cooling output can rise no higher than the chillers' full output. In a heatwave the supply air warms, and once the chillers are at full output it keeps warming however low the target is set. The engineers can then set the cooling output themselves, in place of the units' rule, or shut down some servers, which they believe lowers the inlet temperature, though nobody knows by how much.
The brief
- Nest the fast loop on the supply air inside the slow loop on the server inlet temperature, whose corrective action is the supply-air target.
- Write the chillers' full output as the limit on cooling output.
- Draw the heatwave as an external driver acting on a controlled variable.
- Draw the engineers' own cooling setting as an override whose signal ends at cooling output.
- Code the signal for how much shutting down servers lowers the inlet temperature as a hypothesis.
- Recovery shows only in a later hourly inlet reading: the slow loop closes on that reading, not on the supply air.
Your palette
On the page before this sheet.
Draw here
In the lab, with the brief’s structure checked as you draw: thinking-in-diagrams.aryehnielsen.com/control/anticipation-limits-and-nested-control/#exercise-feedback-control-10
CS 09 Kelsham Primary School: a floor on staffing and the council's loop
Your palette
variable polarity delay loop balancing loop external driver gapa role, written above its variable's name stock flow cloud signal targeta role, written above its variable's name corrective actiona role, written above its variable's name controlled variablea role, written above its variable's name measured valuea role, written above its variable's name feedforward saturation deadband
CS 09 Kelsham Primary School: a floor on staffing and the council's loop
Saturation, a deadband, feedforward and a nested loop
The governors can cut staff hours only as far as one teacher for each of the four classes. Within a school year the reserve rises and falls by up to £10,000 as funding arrives and pay goes out, so they change staff hours only when the budget report, read each term, differs from the reserve they must hold by more than £10,000. Around their loop runs the county council's: once a year David Brennan reads the school's spending for each pupil in its accounts, and the further it runs above the county's, the higher the reserve, from £60,000 up, that the council requires the governors to hold. He also forecasts the school's starters from the births in the villages four years ahead, and on a falling forecast the council raises the reserve it requires before the October count falls. The pupils on roll bring in funding and share the school's spending, and neither the governors nor the council sets them. Count the reserve in pounds, and time in years.
The brief
- Nest the governors' loop on the reserve inside the county council's loop on spending for each pupil, whose corrective action is the reserve the council requires.
- Write the hours above one teacher a class as the limit on staff hours cut.
- Write the £10,000 the reserve moves within a school year as a deadband on the gap's signal to staff hours cut.
- Read births in the villages into the reserve the council requires through David Brennan's forecast, by a path that passes no gap.
- Mark the budget report each term and the accounts each year as delays on the two return paths.
- Once staff hours cut reaches its limit, a higher reserve required changes nothing: both loops act through the same corrective action.
Your palette
On the page before this sheet.
Draw here
In the lab, with the brief’s structure checked as you draw: thinking-in-diagrams.aryehnielsen.com/control/anticipation-limits-and-nested-control/#exercise-case-09
Sources
- Karl Johan Åström and Richard M. Murray, Feedback Systems: An Introduction for Scientists and Engineers fbswiki.org/wiki/index.php/Main_Page, second edition (Princeton University Press, 2021): chapter 1, on feedforward and nested loops; chapters 10 and 14, on how a delay limits a loop; chapter 11, on gain raised until a loop oscillates, and a throttle held at its limit on a steep hill.
- W. Edwards Deming, Out of the Crisis (MIT Center for Advanced Engineering Study, 1986), chapter 11, the funnel experiment, as reproduced by Yonatan Reshef, “The Funnel Experiment” sites.ualberta.ca/~yreshef/orga432/funnel.html (University of Alberta course notes), and by Thomas Pyzdek, The Quality Engineering Handbook qualityamerica.com/LSS-Knowledge-Center/statisticalprocesscontrol/tampering_effects_and_diagnosis.php, on the doubled variance.
- Bizot Group, The Bizot Green Protocol nationalmuseums.org.uk/media/uk_museum_cop/bizot_green_protocol_2023.pdf (refreshed September 2023), on 40–60% relative humidity for canvas paintings and other objects that absorb moisture.
- Helena Rodwell, “Can You Turn the Heating Up?” conservation.fitzmuseum.cam.ac.uk/?p=64 (The Fitzwilliam Museum), on warming lowering relative humidity.
Answers
Chapter 9 · Anticipation, Limits, and Nested Control
A basement floods, and someone sets a dehumidifier to bring its air down to 50% relative humidity. The dehumidifier runs flat out, removing at most 20 liters of water a day, and for a week the air stays far wetter than 50%. In a feedback control diagram of the basement, how is that limit drawn?
- a as at most 20 liters a day, written beneath water removed, the corrective actionYes. Saturation belongs to the corrective action. Past 20 liters a day a wider gap changes the water removed no further, so the air dries only as fast as 20 liters a day allows.
- b as a nonlinear effect on the signal from water removed to the basement's humidityNot quite. Each liter removed dries the air as much at full output as at half, so that signal is unchanged. The limit is on the water removed itself, whichever signal reaches it.
- c as a deadband on the signal from the humidity gap to water removedNot quite. A deadband is a range of gaps small enough that the corrective action stays as it is. Here the gap is wide and the water removed is as large as it can be.
A smoke alarm hangs by a kitchen's toaster. When the smoke it reads passes its trigger it sounds, and someone opens the window and fans the smoke out. Toast browned too far sets it off with no fire, so the household presses its hush button, which silences it for ten minutes; then it reads the smoke again. In a feedback control diagram of the kitchen, what is the hush button pressed?
- a an override, its signal ending at the alarm's soundYes. Someone sets it, and for ten minutes it replaces the rule from the gap to the alarm's sound. The burnt toast is a false alarm: the reading passes the trigger with no fire.
- b a new target: a higher trigger for smokeNot quite. The trigger is unchanged: ten minutes later the same smoke sets the alarm off again. A new target would last until someone changed it back.
- c an external driver acting on the smoke in the kitchenNot quite. The burnt toast is that: it adds smoke from outside the loop. The hush button changes no smoke; it silences the alarm.
Question 1 of 3
Which path in the redrawing is feedforward?
- a Rate of incoming fluid → outlet temperature, −.Not quite. That is the external driver acting on the controlled variable: more cold fluid to heat lowers the outlet temperature. A feedforward path ends at a corrective action.
- b Measured outlet temperature → degrees below target, −.Not quite. That signal carries the reading back to the gap, on B1’s return path: feedback. A feedforward path passes through no gap.
- c Rate of incoming fluid → fuel gas flow, +.Yes. It runs from an external driver to the corrective action through no gap. Woolf and others give the rule: 10% more fluid coming in takes about 10% more heat, and the fuel gas flow is raised at once, before the outlet cools.
Question 2 of 3
Fuel gas flow already rises with the rate of incoming fluid. What is left for B1 to correct?
- a Whatever the feedforward rule gets wrong, and any change it doesn’t read, such as in the furnace itself.Yes. The rule sets the fuel from the rate of incoming fluid alone, about 10% for 10%. Any gap that opens at the outlet, from the rule’s misjudgment or from anything else that moves the outlet temperature, is read only through B1, which Woolf and others combine with the feedforward for that reason.
- b Nothing while the rate of incoming fluid changes, since the feedforward has already made up for it.Not quite. The feedforward acts on a forecast of the fuel needed, not on the outlet temperature. If the forecast is off, a gap opens, and only B1 reads it.
- c Only a change in the target outlet temperature.Not quite. A new target opens a gap that B1 closes, but so does anything that moves the outlet temperature away from it, the feedforward’s misjudgments included.
Question 3 of 3
Heat from the burning fuel takes time to pass into the fluid and reach the outlet. Where would a delay be drawn?
- a On measured outlet temperature → degrees below target, since the reading comes back late.Not quite. That would be a reading arriving late, on the return path. Here the reading is prompt; the heat is slow, between the fuel and the outlet.
- b On rate of incoming fluid → fuel gas flow, since feedforward arrives late.Not quite. Woolf and others describe the feedforward change in fuel as immediate. Its slowness comes after, as for every change in fuel, on fuel gas flow → outlet temperature.
- c On fuel gas flow → outlet temperature, B1’s forward path.Yes. A change in fuel reaches the outlet late, and so does every correction B1 makes. The feedforward path starts that change as soon as more fluid comes in, instead of waiting for the outlet to cool and a gap to open.
FC 06 Entry gates at a concert as trains arrive
This is one defensible answer, not the only one. Yours can differ and still hold up: the lab’s checks show whether it has the brief’s structure.
One stock, people queuing, counted in people: the controlled variable. Joining fills it from a cloud and passing through drains it to a cloud, both in people per minute. Extra people queuing is the gap, read from the queue for a ten-minute wait (−) and the stewards' count of the queue (+); it sets gates open (+), whose signal reaches the valve of passing through (+). B1 runs through passing through, counted − out of the stock, and has one − step, so it is balancing. Trains arriving act at the valve of joining, and reach gates open through the trains due on the arrivals board: a feedforward path, passing no gap, so the gates open before a train's fans join the queue.
Why it works
- The arrivals board's signal ends at gates open, not at the gap, so it changes the gates before the queue grows
- Gates open has two signals in, from the gap and from the arrivals board, and one out, to the valve of passing through
- The stewards' count is a variable apart from the people queuing, and the target is a queue in people, so the gap compares one quantity
- Trains arriving act on the controlled variable at the valve of joining, never on the gap
- The one − step, passing through draining the stock, makes the loop balancing
Step by step
- People queuing, the controlled variable, a stock counted in people, with the time unit a minute: the stewards aim for about 600, a ten-minute wait at the gates' pace.
- Joining, from a cloud for the station, and passing through, to a cloud for the stadium: fans count from when they join the queue until they pass a gate.
- Stewards' count of the queue, the measured value, with a + signal from the stock: a steward counts the queue every few minutes.
- Queue for a ten-minute wait, the target, and extra people queuing, the gap, read from the count (+) and the target (−): how far the count runs above 600.
- Gates open, the corrective action, with a + signal from the gap and a + signal to the valve of passing through, which close B1, opening gates, through the stock: the longer the queue, the more gates the stewards open, and the faster fans pass through.
- Trains arriving, an external driver, with a + signal to the valve of joining, off the loop: a full train brings about 1,000 fans to the queue within a few minutes.
- Trains due on the arrivals board, with + signals from trains arriving and to gates open, a feedforward path: the stewards open gates on the board's news of a full train, before its fans add to the count.
What another defensible answer might vary
Another defensible answer might count the target and the stewards' estimate in minutes of waiting rather than people, or draw the fans walking from the platform as a stock of their own between the station and the queue. What stays the same is one stock in people with joining in and passing through out, the time unit a minute, one balancing control loop through passing through, trains arriving at the valve of joining, and one path from trains arriving to gates open that passes no gap.
FC 07 Tuning a guitar with a clip-on tuner
This is one defensible answer, not the only one. Yours can differ and still hold up: the lab’s checks show whether it has the brief’s structure.
The string's pitch is the controlled variable, and the pitch of E the target. Cents flat is the gap, read from the pitch of E (+) and the tuner's settled reading (−); it sets how far she turns the peg to tighten (+), and the peg raises the string's pitch (+). The signal from the gap to the peg carries deadband ±3 cents: inside it the peg stays put. The settled reading follows the string's pitch two seconds late: a delay on the return path. B1 has one − step, so it is balancing. New strings stretching lower the string's pitch (−); the pluck's wobble, counted in the cents it adds to the reading, sharp or flat, acts on the reading (+).
Why it works
- The deadband is written on the signal from the gap to the peg: within 3 cents either way, a change in the gap changes nothing at the peg
- The two-second wait for the reading to settle is a delay between the string's pitch and the reading: the return path
- The pluck's wobble acts on the tuner's reading, not on the string: it is noise in what she reads
- New strings stretching act on the string's pitch, the controlled variable, never on the gap
- The one − step, from the settled reading to the gap, makes the loop balancing
Step by step
- The string's pitch, the controlled variable: the high E string, tuned to about 330 Hz.
- Tuner's settled reading, the measured value, with a + signal from the string's pitch, delayed about two seconds while the note rings and the reading settles: a delay on the return path.
- Pitch of E, the target, and cents flat, the gap, read from the target (+) and the settled reading (−): a reading sharp of E puts the gap below zero.
- Peg turned to tighten, the corrective action, with a + signal from the gap carrying deadband ±3 cents and a + signal to the string's pitch, which close B1, tuning the string: a reading 2 cents flat leaves the peg where it is, and one 5 cents flat turns it.
- Two external drivers, off the loop: new strings stretching, with a − signal to the string's pitch, which goes flat between tunings, and the pluck's wobble, with a + signal to the reading, which shifts what she reads but not the string.
What another defensible answer might vary
Another defensible answer might name the gap cents off E and the corrective action peg turned, a turn back counted below zero. What stays the same is one balancing control loop, one delay between the string's pitch and the reading, deadband ±3 cents on the signal from the gap to the peg, the wobble acting on the reading, and stretching acting on the string's pitch.
FC 08 A home reef aquarium
This is one defensible answer, not the only one. Yours can differ and still hold up: the lab’s checks show whether it has the brief’s structure.
Three control loops, each with its target, gap, corrective action, controlled variable and measured value. B1: degrees too cool, read from temperature wanted (+) and the thermometer reading (−), sets the heater output (+), which warms the water (+). B2: salinity too high, read from salinity wanted (−) and the salinity reading (+), sets the water changed per week (+), and new water mixed at 34 parts per thousand lowers the salinity (−). B3: alkalinity too low, read from alkalinity wanted (+) and the alkalinity test result (−), sets the same water changed per week (+), which raises the alkalinity (+). Each loop has one − step, so each is balancing. Two cross-effects join the loops: heater output raises salinity through evaporation (+), and water changed cools the water (−). The behavior note names the tradeoff.
Why it works
- Water changed per week is one variable, the corrective action of B2 and of B3, drawn once with a signal in from each gap
- Each of the three loops has its own target and its own reading, so each gap compares one quantity
- The cross-effects are signals between loops that lie on no declared loop: heater output to salinity, water changed to water temperature
- The two cross-effects close a longer loop, left undeclared, through the temperature and salinity gaps: the tradeoff the behavior note names
- Each loop has one − step, so each is balancing
Step by step
- Water temperature, a controlled variable, and the thermometer reading, its measured value, with a + signal from one to the other: the heater answers a thermometer in the tank, the one reading taken without her.
- Temperature wanted, the target, degrees too cool, the gap, and heater output, the corrective action, with the signals that close B1, heating: the cooler the thermometer reads below 25 °C, the harder the heater runs.
- Salinity and alkalinity, two more controlled variables, each with a + signal to its measured value: the refractometer's salinity reading and the kit's alkalinity test result, both taken once a week.
- Salinity wanted with salinity too high, and alkalinity wanted with alkalinity too low, two targets and two gaps: the salinity gap grows as the reading rises above 35 parts per thousand, the alkalinity gap as the test falls below 8 dKH.
- Water changed per week, one corrective action for both, with + signals from each gap, a − signal to salinity and a + signal to alkalinity, which close B2, freshening, and B3, restoring alkalinity: new water mixed at 34 parts per thousand and 11 dKH dilutes the salt and adds alkalinity.
- Two cross-effects, on no declared loop: heater output raises salinity (+), since warmer water evaporates faster and leaves its salt, and water changed lowers the water temperature (−), since the new water comes from a bucket a few degrees cooler.
- A behavior note on the tradeoff the two cross-effects make between the loops: no water change raises alkalinity without cooling the tank and, through the heater, raising its salinity.
What another defensible answer might vary
Another defensible answer might name the gaps salinity over target and alkalinity under target, or add a signal from the water temperature to salinity, a third cross-effect for evaporation. What stays the same is three targets, three readings and three gaps; one variable for the water changes, the corrective action of both the salinity loop and the alkalinity loop; and the two cross-effects, heater output to salinity and water changed to water temperature.
FC 09 A mail service's spam filter
This is one defensible answer, not the only one. Yours can differ and still hold up: the lab’s checks show whether it has the brief’s structure.
Filter strictness is the corrective action of two control loops. B1: excess spam in inboxes, read from spam in inboxes allowed (−) and spam reports (+), raises filter strictness (+), which lowers spam reaching inboxes (−). B2: excess real mail lost, read from real mail lost allowed (−) and complaints of lost mail (+), lowers filter strictness (−), which raises real mail lost to spam folders (+). Each has one − step, so each is balancing. R1 runs from filter strictness through spammers' new tactics to spam reaching inboxes and back through B1's gap, with no − step, so it is reinforcing; its first signal, from strictness to tactics, is coded as a hypothesis and drawn dashed, and the legend shows the coding. New spam campaigns worldwide sit outside the boundary, spam filtering at the mail service, acting on spam reaching inboxes. Messages released as not spam, the override, lower filter strictness (−).
Why it works
- Spammers' new tactics change with filter strictness, so they sit inside the boundary, on a loop, not outside it as an external driver
- New spam campaigns start whatever the filter does, so they are an external driver outside the boundary, with no signal into them
- One variable, filter strictness, is the corrective action of both balancing loops, and their gaps reach it with opposite polarities
- The override's signal ends at filter strictness, the corrective action, and is a step of no declared loop
- Only the engineers' belief, that stricter filtering brings new tactics, is dashed
Step by step
- Spam reaching inboxes and real mail lost to spam folders, two controlled variables, each with a + signal to its measured value: spam reports, from users who see the spam that gets through, and complaints of lost mail.
- Two targets and two gaps, each gap read from its target (−) and its measured value (+): excess spam in inboxes, against 1 message in 1,000, and excess real mail lost, against 1 in 10,000.
- Filter strictness, the corrective action of both, raised by excess spam (+) and lowered by excess real mail lost (−), with a − signal to spam reaching inboxes and a + signal to real mail lost, which close B1, catching spam, and B2, sparing real mail: the engineers set one filter from reports and complaints each day.
- The boundary, spam filtering at the mail service, with new spam campaigns worldwide outside it as an external driver, its + signal to spam reaching inboxes: campaigns start every day, and nothing at the service changes how many.
- Spammers' new tactics, with a + signal from filter strictness, the engineers' belief, coded as a hypothesis and dashed, and a + signal to spam reaching inboxes, which close R1, spammers adapting, through B1's measured value and gap, with the legend for the coding.
- Mail released as not spam, the override, with a − signal to filter strictness: each message a user marks not spam leaves the spam folder and loosens the filter for messages like it.
What another defensible answer might vary
Another defensible answer might count both targets in messages per day, or code the signal from spammers' new tactics to spam reaching inboxes as a hypothesis too, since the same belief runs through it. What stays the same is two balancing control loops sharing filter strictness, one reinforcing loop through spammers' new tactics inside a named boundary, new spam campaigns outside it, one override ending at filter strictness, and one signal coded as a hypothesis with the legend on.
FC 10 Cooling a data center through a heatwave
This is one defensible answer, not the only one. Yours can differ and still hold up: the lab’s checks show whether it has the brief’s structure.
Two control loops, one inside the other. B1, the fast loop: supply air too warm, read from the supply-air target (−) and the supply-air reading (+), raises cooling output (+), which cools the supply air (−); one − step, so balancing. B2, the slow loop: inlet degrees too warm, read from inlet temperature wanted (−) and the engineers' hourly inlet reading (+), lowers the supply-air target (−), whose signal reaches B1's gap (−), and B2 runs on through cooling output and the supply air to the server inlet temperature (+), read an hour late: three − steps, so balancing. The supply-air target is B2's corrective action and B1's target, so B1 is nested inside B2. Cooling output is at most the chillers' full output. The heatwave warms the supply air (+); the engineers' own cooling setting, the override, ends at cooling output (+); servers shut down lower the inlet temperature (−), a signal coded as a hypothesis, drawn dashed, with the legend.
Why it works
- The supply-air target keeps one role, B2's corrective action, and its signal into B1's gap is B1's target: no second role is drawn
- The hour between the inlet temperature and the engineers' reading is a delay on B2's return path, so B2 is slow and B1 fast
- The saturation sits beneath cooling output, the corrective action whose limit the heatwave reaches
- The heatwave acts on the supply-air temperature, a controlled variable, never on a gap or a target
- Only the less supported signal, from servers shut down to the inlet temperature, is dashed, and the legend shows the coding
Step by step
- Supply-air temperature, the fast loop's controlled variable, and the supply-air reading, its measured value, with a + signal from one to the other: the thermometer in the supply air reads it every few seconds.
- Supply air too warm, the gap, read from the supply-air reading (+) and the supply-air target (−), the target drawn with its role in the slower loop, corrective action, since the engineers reset it each hour from the inlet reading.
- Cooling output, the corrective action, with saturation at the chillers' full output, a + signal from the gap and a − signal to the supply air, which close B1, holding the supply air: the units cool harder the warmer the supply air reads, up to that limit.
- Server inlet temperature, the slow loop's controlled variable, with a + signal from the supply air, and the engineers' hourly inlet reading, its measured value, with a + signal from the inlets delayed an hour: a delay on the return path.
- Inlet temperature wanted, the target, and inlet degrees too warm, the gap, with a − signal from the gap to the supply-air target, which close B2, resetting the supply air, around B1: the warmer the inlets read each hour, the lower the engineers set the supply-air target.
- The heatwave, an external driver, with a + signal to the supply-air temperature: once the chillers run at full output, the supply air warms however low the target is set.
- The engineers' own cooling setting, the override, with a + signal to cooling output, and servers shut down, with a − signal to the inlet temperature, dashed as a hypothesis since nobody knows by how much, and the legend for the coding.
What another defensible answer might vary
Another defensible answer might draw the heatwave acting on the server inlet temperature instead, or add a behavior note on the inlet temperature climbing while cooling output sits at its limit. What stays the same is two balancing control loops, the fast one on the supply air nested inside the slow one on the inlet temperature, the supply-air target as the slow loop's corrective action, cooling output at most the chillers' full output, an override ending at cooling output, and one signal coded as a hypothesis with the legend on.
CS 09 Kelsham Primary School: a floor on staffing and the council's loop
This is one defensible answer, not the only one. Yours can differ and still hold up: the lab’s checks show whether it has the brief’s structure.
Two control loops, one inside the other. B1, holding the reserve: reserve short of its target, read from the reserve the council requires (+) and the reserve in the budget report (−), raises staff hours cut (+), which lowers the valve of spending (−), and spending drains the school's reserve (−), read by the report a term late: three − steps, so balancing. B2, holding spending for each pupil: spending above the county's, read from spending for each pupil in the accounts (+), a year late, and the county's spending for each pupil (−), raises the reserve the council requires (+), whose signal is B1's target, and runs on through B1's gap and staff hours cut to spending for each pupil (−): one − step, so balancing, with B1 nested inside it. Staff hours cut is at most the hours above one teacher a class, and the governors leave it as it is while the gap stays within ±£10,000. Births in the villages reach the reserve the council requires through the forecast of starters (+, then −), a feedforward path that passes no gap. The pupils on roll, an external driver, raise funding (+) and lower spending for each pupil (−).
Why it works
- The reserve the council requires keeps one role, B2's corrective action, and its signal into reserve short of its target makes it B1's target
- The saturation sits beneath staff hours cut: once the hours above one teacher a class are gone, a wider gap cuts no further, and neither loop can lower spending again
- The deadband sits on the signal from the gap to staff hours cut, as wide as the reserve's swing within a school year, so a term's swing changes no hours
- The forecast's path ends at a corrective action and passes no gap, so the council acts on births before the October count falls
- The two readings, each term and each year, are delays on the return paths: B1 corrects within a year, B2 over several
Step by step
- The school's reserve, B1's controlled variable, a stock counted in pounds, with the time unit a year, filled by funding from a cloud and drained by spending to another.
- Reserve in the budget report, the measured value, with a + signal from the stock delayed a term: the governors read the report each term, a delay on the return path.
- Reserve short of its target, the gap, read from the report (−) and the reserve the council requires (+), the target drawn with its role in the council's loop, corrective action, since the council sets it from £60,000 up.
- Staff hours cut, the corrective action, with saturation at the hours above one teacher a class, a + signal from the gap with a deadband of ±£10,000 and a − signal to the valve of spending, which close B1, holding the reserve: a term's swing changes no hours, and no gap cuts below one teacher a class.
- Spending for each pupil, B2's controlled variable, with a − signal from staff hours cut, and spending for each pupil in the accounts, its measured value, with a + signal from it delayed a year: David Brennan reads the accounts once a year.
- County's spending for each pupil, the target, and spending above the county's, the gap, read from the accounts (+) and the target (−), with a + signal to the reserve the council requires, which close B2, holding spending for each pupil, around B1.
- Pupils on roll, an external driver, with a + signal to the valve of funding and a − signal to spending for each pupil, and births in the villages, a second, read through the forecast of starters into the reserve the council requires: a feedforward path that passes no gap.
What another defensible answer might vary
Another defensible answer might draw births in the villages → pupils on roll, delayed four years, so that the roll is no longer an external driver; send the forecast to staff hours cut, the governors acting on it; or read spending for each pupil from the flow of spending. What stays the same is two balancing control loops, the governors' nested inside the council's through the reserve the council requires, staff hours cut with its limit, a deadband on the signal from the reserve's gap, one feedforward path from births, and a delay on each return path.