Anticipation, Limits, and Nested Control
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.
Print this chapter, with a sheet for each exercise and the answers at the back, from its PDF.
A marathon run to plan
Section titled “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 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
Section titled “What the notation expresses”Feedforward
Section titled “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
Section titled “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, a signal delay. 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
Section titled “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
Section titled “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. 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.
Competing targets
Section titled “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, 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
Section titled “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 here runs by timescale, B1 dominating her effort over a kilometer and B2 over the race.
Override and false alarms
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “Check your understanding”A furnace with feedforward, redrawn
Section titled “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, the furnace drawn after “This system can also be represented by the following”. CC 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.
Exercises
Section titled “Exercises”Passing the checks means meeting the brief, not being right.
FC 06Entry 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. checked by the lab
- Draw trains arriving as an external driver acting on the flow of people joining the queue. checked by the lab
- Close one control loop through the flow of people passing through the gates: the gap, gates open, the people queuing and the stewards' count. checked by the lab
- The feedforward path and the gap's signal both end at gates open. you check this
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
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, a signal or a loop label to change it. Double-click or double-tap a stock's name or units, a flow's name, a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a stock, a flow, a signal, a cloud, a variable or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Stocks S
- add a stock (press an empty spot) and name it.
- Flows M
- draw a flow by dragging from a stock or an empty spot to a stock or an empty spot, and name it; clouds appear at empty ends.
- Signals E
- draw a signal by dragging from a variable, a stock or a flow's valve to a variable or a flow's valve.
- Loop L
- declare a loop by selecting its signals and flows in order, then label and name it.
Keys
- R reverse the selected signal or flow
- P the selected variable's role, in turn: none, then each role this exercise offers
- +− the selected signal's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 15 checks passed; 15 pending.
- Read the trains due on the arrivals board into gates open, by a path that passes no gap. (Not started)
- Draw trains arriving as an external driver acting on the flow of people joining the queue. (Not started)
- Close one control loop through the flow of people passing through the gates: the gap, gates open, the people queuing and the stewards' count. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No effect runs into an external driver (Not started)
- Every stock has units (Not started)
- The time unit is given (Not started)
- Every stock has a flow in or out (Not started)
- Every flow has a name (Not started)
- Each gap reads a target and a measured value, with opposite polarities (Not started)
- Each measured value reads a controlled variable (Not started)
- Each gap closes a balancing loop (Not started)
- No external driver acts on a gap or a target (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
FC 07Tuning 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. checked by the lab
- Write her 3 cents either way as a deadband on the signal from the gap to the peg. checked by the lab
- Draw the pluck's wobble as an external driver acting on the tuner's reading. checked by the lab
- Leaving the peg alone inside 3 cents is the deadband, not a second variable. you check this
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
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, a signal or a loop label to change it. Double-click or double-tap a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a signal, a variable or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Signals E
- draw a signal by dragging from one variable to another.
- Loop L
- declare a loop by selecting its signals in order, then label and name it.
Keys
- R reverse the selected signal
- P the selected variable's role, in turn: none, then each role this exercise offers
- +− the selected signal's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 11 checks passed; 11 pending.
- Mark the wait while the tuner's reading settles as a delay on the return path. (Not started)
- Write her 3 cents either way as a deadband on the signal from the gap to the peg. (Not started)
- Draw the pluck's wobble as an external driver acting on the tuner's reading. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No effect runs into an external driver (Not started)
- Each gap reads a target and a measured value, with opposite polarities (Not started)
- Each measured value reads a controlled variable (Not started)
- Each gap closes a balancing loop (Not started)
- No external driver acts on a gap or a target (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
FC 08A 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. checked by the lab
- Make the water changed per week the corrective action of both the salinity loop and the alkalinity loop. checked by the lab
- Draw the heater's signal to salinity and the water changes' signal to the water temperature as cross-effects. checked by the lab
- A behavior note names the tradeoff between the loops. you check this
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
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, a signal or a loop label to change it. Drag a behavior note to move it. Double-click or double-tap a variable, a loop's label or name or a behavior note to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a signal, a variable, a loop label or a behavior note on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Signals E
- draw a signal by dragging from one variable to another.
- Loop L
- declare a loop by selecting its signals in order, then label and name it.
- Note N
- place a behavior note (press where it goes).
Keys
- R reverse the selected signal
- P the selected variable's role, in turn: none, then each role this exercise offers
- +− the selected signal's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 9 checks passed; 9 pending.
- Close three control loops, for temperature, salinity and alkalinity, each with its target, reading and gap. (Not started)
- Make the water changed per week the corrective action of both the salinity loop and the alkalinity loop. (Not started)
- Draw the heater's signal to salinity and the water changes' signal to the water temperature as cross-effects. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- Each gap reads a target and a measured value, with opposite polarities (Not started)
- Each measured value reads a controlled variable (Not started)
- Each gap closes a balancing loop (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
FC 09A 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. checked by the lab
- 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. checked by the lab
- Declare the reinforcing loop through spammers' new tactics, inside the boundary. checked by the lab
- Draw users' releases of messages marked not spam as an override whose signal ends at filter strictness. checked by the lab
- The override is named as a quantity, mail released as not spam, which someone can count and read later. you check this
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
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, a signal or a loop label to change it. Drag a boundary by its outline or its name to move it, and by the square at its corner to resize it. Double-click or double-tap a variable, a loop's label or name or a boundary's name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a signal, a variable, a loop label or a boundary on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Signals E
- draw a signal by dragging from one variable to another.
- Loop L
- declare a loop by selecting its signals in order, then label and name it.
- Boundary B
- drag out a boundary around the system, and name it.
Keys
- G legend on or off
- R reverse the selected signal
- P the selected variable's role, in turn: none, then each role this exercise offers
- +− the selected signal's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 15 checks passed; 15 pending.
- Draw a named boundary, with new spam campaigns worldwide outside it as an external driver. (Not started)
- 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. (Not started)
- Declare the reinforcing loop through spammers' new tactics, inside the boundary. (Not started)
- Draw users' releases of messages marked not spam as an override whose signal ends at filter strictness. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No effect runs into an external driver (Not started)
- External drivers sit outside every boundary (Not started)
- The legend is on when effects are coded or tagged (Not started)
- Each gap reads a target and a measured value, with opposite polarities (Not started)
- Each measured value reads a controlled variable (Not started)
- Each gap closes a balancing loop (Not started)
- No external driver acts on a gap or a target (Not started)
- Each override ends at a corrective action (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
FC 10Cooling 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. checked by the lab
- Write the chillers' full output as the limit on cooling output. checked by the lab
- Draw the heatwave as an external driver acting on a controlled variable. checked by the lab
- Draw the engineers' own cooling setting as an override whose signal ends at cooling output. checked by the lab
- Code the signal for how much shutting down servers lowers the inlet temperature as a hypothesis. checked by the lab
- Recovery shows only in a later hourly inlet reading: the slow loop closes on that reading, not on the supply air. you check this
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
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, a signal or a loop label to change it. Drag a behavior note to move it. Double-click or double-tap a variable, a loop's label or name or a behavior note to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a signal, a variable, a loop label or a behavior note on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Signals E
- draw a signal by dragging from one variable to another.
- Loop L
- declare a loop by selecting its signals in order, then label and name it.
- Note N
- place a behavior note (press where it goes).
Keys
- G legend on or off
- R reverse the selected signal
- P the selected variable's role, in turn: none, then each role this exercise offers
- +− the selected signal's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 15 checks passed; 15 pending.
- 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. (Not started)
- Write the chillers' full output as the limit on cooling output. (Not started)
- Draw the heatwave as an external driver acting on a controlled variable. (Not started)
- Draw the engineers' own cooling setting as an override whose signal ends at cooling output. (Not started)
- Code the signal for how much shutting down servers lowers the inlet temperature as a hypothesis. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No effect runs into an external driver (Not started)
- The legend is on when effects are coded or tagged (Not started)
- Each gap reads a target and a measured value, with opposite polarities (Not started)
- Each measured value reads a controlled variable (Not started)
- Each gap closes a balancing loop (Not started)
- No external driver acts on a gap or a target (Not started)
- Each override ends at a corrective action (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
CS 09Kelsham 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. checked by the lab
- Write the hours above one teacher a class as the limit on staff hours cut. checked by the lab
- Write the £10,000 the reserve moves within a school year as a deadband on the gap's signal to staff hours cut. checked by the lab
- Read births in the villages into the reserve the council requires through David Brennan's forecast, by a path that passes no gap. checked by the lab
- Mark the budget report each term and the accounts each year as delays on the two return paths. checked by the lab
- Once staff hours cut reaches its limit, a higher reserve required changes nothing: both loops act through the same corrective action. you check this
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
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, a signal or a loop label to change it. Double-click or double-tap a stock's name or units, a flow's name, a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a stock, a flow, a signal, a cloud, a variable or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Stocks S
- add a stock (press an empty spot) and name it.
- Flows M
- draw a flow by dragging from a stock or an empty spot to a stock or an empty spot, and name it; clouds appear at empty ends.
- Signals E
- draw a signal by dragging from a variable, a stock or a flow's valve to a variable or a flow's valve.
- Loop L
- declare a loop by selecting its signals and flows in order, then label and name it.
Keys
- R reverse the selected signal or flow
- P the selected variable's role, in turn: none, then each role this exercise offers
- +− the selected signal's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 17 checks passed; 17 pending.
- 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. (Not started)
- Write the hours above one teacher a class as the limit on staff hours cut. (Not started)
- Write the £10,000 the reserve moves within a school year as a deadband on the gap's signal to staff hours cut. (Not started)
- Read births in the villages into the reserve the council requires through David Brennan's forecast, by a path that passes no gap. (Not started)
- Mark the budget report each term and the accounts each year as delays on the two return paths. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No effect runs into an external driver (Not started)
- Every stock has units (Not started)
- The time unit is given (Not started)
- Every stock has a flow in or out (Not started)
- Every flow has a name (Not started)
- Each gap reads a target and a measured value, with opposite polarities (Not started)
- Each measured value reads a controlled variable (Not started)
- Each gap closes a balancing loop (Not started)
- No external driver acts on a gap or a target (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
Sources
Section titled “Sources”- Karl Johan Åström and Richard M. Murray, Feedback Systems: An Introduction for Scientists and Engineers, 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” (University of Alberta course notes), and by Thomas Pyzdek, The Quality Engineering Handbook, on the doubled variance.
- Bizot Group, The Bizot Green Protocol (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?” (The Fitzwilliam Museum), on warming lowering relative humidity.