Heating and cooling at the air handler: a leaking valve, and coils that fight
Workbook exercise air-heat-cool · PNNL re-tuning chapter 5 · about 45 minutes
Goal
Look for heating and cooling energy spent against each other at the air handler: a cooling valve that passes chilled water while it is commanded shut, and heating and cooling coils open at the same time. Learn to tell a real fault from a design that heats and cools on purpose (a dual-duct unit, or dehumidification with reheat), and see how a margin set from the unit's own fan heat catches a small leak that a generic margin misses, and what that calibration costs.
Learn more
Read these first (PNNL, free):
- AHU Heating and Cooling Control, the re-tuning guide: its questions ask whether the heating and cooling coils are ever active together and whether the valves shut off fully. This exercise answers both from trends.
- Chapter 5: Air Handling Units of the re-tuning training, for the valve and coil trends to collect.
Datasets and licence
lbnl-sdahu: LBNL's simulated single-duct VAV air handler (cooling coil only), a year at one-minute resolution, with a labelled cooling-valve leak run. Licence CC-BY-4.0 (open; cite it). About 600 MB to download. The published leak "severities" turned out to be one 10 % leak: see its data issues.lbnl-ddahu: LBNL's simulated dual-duct air handler (a hot deck and a cold deck), a year at one-minute resolution. Licence CC-BY-4.0 (open; cite it). About 1.8 GB to download. See its data issues.irish-ahu: five and a half years of 15-minute BMS trends from one real air handler with heating and cooling coils and a leaving-air sensor after each. Licence CC-BY-4.0 (open; cite it). About 22 MB. See its data issues.
The equipment used: AHU__fault_free and AHU__coi_leakage_010 in ds-lbnl-sdahu,
DDAHU__fault_free in ds-lbnl-ddahu, and AHU__ahu in ds-irish-ahu.
Setup
In the lab
- Run
camber laband open the URL it prints (http://127.0.0.1:8765/lab?token=...). - Tick
lbnl-sdahu,lbnl-ddahuandirish-ahuand press Fetch & ingest. - The
lbnl-sdahuandirish-ahurows' report links run their default configs, which this exercise uses; the dual-duct part has its own config, run from the command line.
On the command line
camber datasets fetch lbnl-sdahu lbnl-ddahu irish-ahu
camber datasets ingest lbnl-sdahu lbnl-ddahu irish-ahu --store lab_store
camber datasets config lbnl-sdahu --store lab_store --out sdahu.json
camber run sdahu.json --out sdahu_out
camber datasets score lbnl-sdahu --store lab_store --findings sdahu_out/findings.json
camber datasets config lbnl-ddahu --exercise air-heat-cool--lbnl-ddahu --store lab_store --out hc_dd.json
camber run hc_dd.json --out hc_dd_out
camber datasets config irish-ahu --store lab_store --out irish.json
camber run irish.json --out irish_out
leaking_valvelooks at the hours when the fan runs and every coil valve is commanded shut. Then the supply air should be the mixed air plus the supply fan's heat. By default it calls a cooling leak when the air leaves more than 3 °F below the mixed air, and a heating leak when it leaves more than 3 °F above the mixed air plus a 2 °F fan-heat allowance. Where a coil has its own leaving-air sensor, that sensor is used instead of the supply air.- The
lbnl-sdahuconfig does not use the default cooling test. It setsmeasured_fan_heat_f: 1.0(this unit's fan heat, measured on its fault-free run),cool_delta_thr_f: 1.0andoccupied_only: true: a cooling leak is supply air that sits below the mixed air, in occupied hours. Read the config's comment for where the 1.0 °F came from. simultaneous_heat_coolcounts the occupied hours with both coil valves open, after setting aside the hours it can show are dehumidification with reheat (a cooling coil running below the entering air's dew point, followed by reheat).
Steps
- Look first. In the trend viewer, plot
AHU__fault_freeandAHU__coi_leakage_010on a cool spring day: the cooling-valve command, the mixed-air and the supply-air temperature. - Run the three configs and read the findings.
- The leak. Read
leaking_valveon both single-duct runs: the severity,chw_leak_pct,chw_median_delta_f(the median supply-minus-mixed-air temperature with the valve shut),cool_shift_fand the caveat. Then runcamber datasets scoreand read theleaking_valveline. Read the_commentand thebasisofleaking_valveinsdahu.json. - Both coils open. Read
simultaneous_heat_coolonDDAHU__fault_free, and its caveat. - A real unit. Read
simultaneous_heat_coolandleaking_valveon the Irish unit, and which temperature each coil was judged on.
Questions
- Does CAMBER flag the leaking cooling valve? What does the label score say?
- Compare
chw_median_delta_fon the leak run and the fault-free run. What does the difference tell you? Why would the rule's default 3 °F margin not call it a leak, and what in the config makes it one? Which run was the 1.0 °F measured on, and what does that do to the fault-free run's ok? - The dual-duct unit has both valves open for a large share of its occupied hours. Is that coil fighting? What does the rule's caveat ask you for?
- How would you tell dehumidification with reheat from coils fighting, on a unit that has a single air stream? Which trends would you ask for?
- What do the rules say about the Irish unit's two coils, and which sensors did they use?
What CAMBER shows
- Findings.
leaking_valvereportshw_leak_pct,chw_leak_pct,n_both_closed,chw_median_delta_f/hw_median_delta_fand which temperature judged each coil;simultaneous_heat_coolreportssimultaneous_hc_pct, how often each valve was open, and the dehumidification shares it set aside. - Score.
camber datasets scoreprints the true- and false-positive rates for the dataset's declared detectors, and which rules fired on each labelled run. - Caveats. Both rules say what they could not check (a missing coil sensor, a missing humidity or dew point, a missing fan signal). Read them before the verdict.

Synthetic illustration, not this exercise's dataset: the leaking_valve evidence trend. With the cooling valve at 0 %, the supply air still leaves several degrees colder than the mixed air: the coil passes chilled water. The shaded samples are the fan-on, both-valves-shut samples the rule counts as a leak.
Caveats
- One simulated leak, one size: the four published leak "severities" are byte-identical copies of one 10 % leak, so there is no severity sweep to learn a threshold from.
- The single-duct unit has no heating coil, so it cannot show simultaneous heating and cooling; the dual-duct unit shows it by design; the Irish unit is real but unlabelled.
- The Irish unit runs around the clock and trends no fan status, so its leak check includes any fan-off samples.
- The rules' default margins (3 °F, the 2 °F fan-heat allowance) are screening judgments. A smaller margin would catch a smaller leak and also more sensor noise.
- The config's 1.0 °F fan heat was measured on
AHU__fault_free, which the label score also counts as a negative: its clean verdict is in-sample. On your own unit, measure the fan heat on one known-good period and judge another.
Going further
- The Irish unit's valves were replaced on 2022-05-01. Add
"start"/"end"to thesourceblock ofirish.jsonand compare the leak check before and after the replacement. - Replace the
leaking_valveentry insdahu.jsonwith the plain"leaking_valve"(the defaults) and run again: the leak goes back to ok. - Calibrate out of sample: add
"start": "2018-01-01", "end": "2018-07-01"to thesourceblock, read the fault-free run'schw_median_delta_f, then judge July to December with that value asmeasured_fan_heat_f. - The exercise
air-economizeruses the same single-duct runs for the outdoor-air damper.