Terminal units: a zone below setpoint with its reheat maxed out
Workbook exercise zone-reheat-saturated · PNNL re-tuning chapter 7 · about 40 minutes
Goal
A cold zone is a complaint. The question for re-tuning is whether the box could have done more. If its reheat is already wide open and the zone is still below its heating setpoint, the box has run out of heating. That is a capacity or airflow problem to fix in the field, not a setting to tune. Find such a zone, tell it apart from an overcooled one, and see what happens when the data do not say how hard the reheat was working.
Learn more
Read these first (PNNL, free):
- Zone Heating and Cooling Control, the re-tuning guide for zones: what to check when a zone does not reach its heating setpoint.
- Chapter 7: Terminal Units in Air Distribution System of the re-tuning training, on reheat at the terminal box.
Datasets and licence
lbnl-fpu: LBNL's simulated fan-powered VAV terminal boxes, a year at one-minute resolution, fault-free plus labelled faults. Licence CC-BY-4.0 (open; cite it). A 2.2 GB download; the default subset ingests five runs. See its data issues.ornl-frp-vav: a real test building's rooftop unit and ten VAV boxes with electric reheat, one day per test scenario. Licence CC-BY-4.0 (open; cite it). The default subset is a 7.7 MB workbook. See its data issues.
From lbnl-fpu the exercise uses the five default runs (PFPU__fault_free,
PFPU__VAVDMPRStuck_50pct, PFPU__VAVDMPRStuck_100pct, PFPU__ReheatVLVStuck_0pct,
PFPU__ReheatVLVLeak_50pctMaxFlow). From ornl-frp-vav it uses only the ten boxes of the
fault-free day (RTU_VAV_<room>__d3_fault_free): a real building on a normal day.
Setup
In the lab
- Run
camber laband open the URL it prints (http://127.0.0.1:8765/lab?token=...). - Tick
lbnl-fpuandornl-frp-vavand press Fetch & ingest. - When the jobs are done, use each row's trends link to look at the data. This exercise uses its own configs: run them from the command line.
On the command line
camber datasets fetch lbnl-fpu
camber datasets ingest lbnl-fpu --store lab_store
camber datasets config lbnl-fpu --exercise zone-reheat-saturated --store lab_store --out rh.json
camber run rh.json --out rh_out
camber datasets fetch ornl-frp-vav
camber datasets ingest ornl-frp-vav --store lab_store
camber datasets config ornl-frp-vav --exercise zone-reheat-saturated--ornl-frp-vav --store lab_store --out rh_ornl.json
camber run rh_ornl.json --out rh_ornl_out
Both configs run the same three rules:
reheat_capacity_shortfallcounts the occupied samples with the zone more than 1.5 °F below its heating setpoint and the reheat at 90 % or more. It leaves out the warm-up after each occupied start.overcooling_severitymeasures how far, and for how long, a zone sits below its setpoints, but it sets samples with the reheat saturated apart as a heating shortfall.unmet_setpoint_hourscounts the cold (and hot) hours without asking about the reheat.
The lbnl-fpu config also runs reheat_penalty, for question 4. The box trends both the
controller's reheat demand and the valve's measured position: reheat_capacity_shortfall and
overcooling_severity read the demand (how hard the controller asks for heat), and
reheat_penalty reads the position (how much heat the valve lets through). The ornl-frp-vav config
limits itself to the fault-free day with an "equip" list.
Steps
- Look first. In the trend viewer, open
PFPU__ReheatVLVStuck_0pctfor a January weekday. Plot the zone temperature, its heating setpoint, the reheat valve signal, the airflow and its setpoint, and the discharge-air temperature. Then look atPFPU__fault_freeon the same day. - Run the
lbnl-fpuconfig and readreheat_capacity_shortfallfor each run: the share of samples in shortfall, the hours, the median deficit and the likely cause it names. - Tell shortfall from overcooling. Read
overcooling_severityandunmet_setpoint_hoursfor the same run. - Run the
ornl-frp-vavconfig. Which rooms are cold on the fault-free day? What doesreheat_capacity_shortfallsay about them?
Questions
- Which run has a zone below its heating setpoint with its reheat maxed out? For how much of the occupied time, how many hours, and how far below setpoint?
- Is that a heating-capacity problem or an airflow problem, according to CAMBER? What evidence does it use?
- How do
unmet_setpoint_hoursandovercooling_severitydescribe the same run? Why is "overcooled" the wrong word for it? - The reheat valve in that run is stuck shut, yet
reheat_capacity_shortfallfinds the reheat maxed out. Which valve signal does it read, and which doesreheat_penaltyread? What doesreheat_penaltyreport, and what does its caveat tell you? What would you check on site? - Which runs have heat to spare, and how can you tell?
- On the ORNL fault-free day, which rooms are too cold, and for how much of the occupied time? How deep does the worst one go below its heating setpoint?
- Why can CAMBER not tell whether those ORNL rooms had their reheat maxed out? What would you ask the building's operator to trend?
What CAMBER shows
- Findings.
reheat_capacity_shortfallreportsshortfall_pct,shortfall_hours,median_deficit_f,airflow_to_sp_ratio,discharge_temp_fandlikely_cause;overcooling_severityreports its depth tiers,max_depth_fand, separately,shortfall_severity, graded on both depth and share of samples (shortfall_depth_severityis the depth alone);unmet_setpoint_hoursreportstoo_cold_pct. - What is missing is also an answer. A rule that needs a signal the data do not have produces no finding for that box.
- Report.
camber report rh.json --out rh.htmlshows the same findings as a report, with their evidence charts; add--layout rcxfor the printable RCx report, with a page per issue.

Synthetic illustration, not this exercise's dataset: the reheat_capacity_shortfall evidence trend. The shaded spans are occupied hours below the heating setpoint while the reheat valve was already at 100 %.
Caveats
lbnl-fpuis simulated: the stuck-shut valve is the only saturated-reheat case in the default subset. The shortfall rules read the controller's demand; with only a measured position a stuck-shut valve would look like a box that never needed heat.- A parallel fan-powered box mixes in warm plenum air when its fan runs, so a few degrees of
discharge-air rise do not prove the coil is heating. The config sets
reheat_penalty'sfan_heat_fto"auto"to allow for that lift. - The ORNL building is real, but each scenario is one day. A day's cold room may be that day's weather or occupancy, not a fault.
- The shortfall thresholds (1.5 °F, 90 %, 5 % and 20 % of samples) are screening-grade judgement, not a standard's.
Going further
- The
fullsubset oflbnl-fpuadds reheat-coil fouling at three severities, on both the air and the water side. Does a fouled coil reach saturation, or does the controller hide it? (The drift rulevav_reheat_valve_driftis built for the early stage.) lbnl-b59has 35 underfloor terminals with a heating setpoint and a reheat valve in itsfullsubset, and its default config runsreheat_capacity_shortfallon them: a real building where the rule can see the valve.