Phase Template: tank-pressure-test¶
Mix tank N₂ pressure-hold leak test. Use this phase as an integrity
gate before any batch that needs a sealed tank. It seals the vessel,
drives the closed-loop N₂ blanket PID controller to test_pressure,
isolates, holds for hold_time, and measures the pressure decay. The
tank passes if decay is within max_decay. A fail self-issues
COMMAND('Hold') so an operator must investigate before the
procedure continues.
reactor-pressure-test opens a discrete N₂
valve directly. This phase pressurizes through the tank's PID
pressure controller (pressure_controller.SP) and uses the
outlet valve as the vent path.
Where to find it¶
System endpoint → Equipment Library → Phases → select tank-pressure-test.
graph TD
Start([initial]) --> CO[close_outlet]
CO -->|"outlet_valve.FB = FALSE"| PZ[pressurize<br/>SP := test_pressure]
PZ --> WP[wait_pressure]
WP -->|"pressure >= 95% test_pressure"| IS[isolate<br/>SP := 0]
IS --> RS[record_start]
RS --> H[holding]
H -->|"holding.T >= hold_time"| CK[check_decay]
CK -->|"start − end <= max_decay<br/>priority 0"| PASS[pass]
CK -->|"start − end > max_decay<br/>priority 1"| FAIL[fail<br/>COMMAND('Hold')]
PASS --> V[vent]
FAIL --> V
V -->|"pressure <= 1.1"| COF[close_outlet_final]
COF -->|"outlet_valve.FB = FALSE"| Done([complete])
style FAIL fill:#ffe0b2,stroke:#e65100,stroke-width:2px,color:#000
See Phases for the diagram conventions.
What you see when it runs¶
| Element | Meaning |
|---|---|
| Active step | Which integrity stage is running — wait_pressure, holding, check_decay, etc. |
| Shared variables | start_pressure and end_pressure captured in step actions for the decay calculation |
| Parameters | test_pressure, hold_time, max_decay |
HMI screenshot pending
An annotated capture of a running tank-pressure-test phase
on the holding step will be added here.
Parameters¶
| Parameter | Type | Unit | Range | Default | Required |
|---|---|---|---|---|---|
test_pressure |
REAL | bar | 1.2-3.0 | 2.0 |
yes |
hold_time |
TIME | — | 30s-5m |
1m |
yes |
max_decay |
REAL | bar | 0.02-0.5 | 0.05 |
yes |
TIME parameters take duration strings ("45s", "1m30s", "5m"),
not bare numbers.
Required control modules¶
| Role | Module type | Description |
|---|---|---|
pressure_controller |
analog-control | PID pressure controller driving N₂ supply valve |
pressure_sensor |
analog-sensor | Tank headspace pressure measurement |
outlet_valve |
discrete-valve | Tank outlet valve used as vent path during test |
Capability: mixing.
How it works¶
Each scan the SFC engine walks a multi-step integrity test with a selective divergence on the decay check and a selective convergence on the vent:
close_outletcloses the outlet valve to seal the tank and waits forFB = FALSE.pressurizewritestest_pressuretopressure_controller.SP— the PID loop drives the N₂ supply.wait_pressureholds until the headspace pressure reaches 95 % oftest_pressure.isolatezeroespressure_controller.SPto stop N₂ addition.record_startcaptures the decay-test start pressure into a shared variable.holdingholds forhold_time.check_decaycaptures the end pressure and diverges by priority:priority 0(pass) ifstart - end <= max_decaypriority 1(fail) if decay exceeds the limit
- The
failstep self-issuesCOMMAND('Hold'). The phase parks in ISA-88 Held so the operator canResetand retry, orStopand dispatch maintenance. - Both branches converge on
vent, which opens the outlet valve and holds until pressure bleeds to ≤ 1.1 bar. The vessel is always vented cleanly whether the test passed or failed. close_outlet_finalcloses the outlet beforecomplete.
The stopping and aborting charts zero the controller setpoint and open the outlet valve. An interrupted test therefore never leaves the operator a pressurized, sealed tank.
This is an integrity test phase. Both false-pass and false-fail
are possible failure modes. The max_decay budget should be chosen
with both in mind. Pair with an absolute-pressure alarm and a
timeoutSeconds backstop. See
Phases § Integrity tests.
Used in recipes¶
Run as a pre-batch integrity gate by every mix-tank recipe:
- sim-tank-blend-m1
- sim-tempered-fill-m1
- sim-pressurized-drain-m1
- sim-ph-adjust-m1
- sim-iterative-dose-m1
- sim-cip-cycle-m1
- sim-reaction-full-m1
- sim-api-isolation-m1
Try it¶
- HMI endpoint → Batch Execution → + New →
sim-tank-blend-m1→ Start - The
pressure-testis the first step onmix-tank-1— watch it run before the blend - Open Data endpoint → Trends on
pressure_sensor.PVandpressure_controller.SPto see the PID-driven ramp, the hold, and the vent - To exercise the fail branch, edit
tank-sim'sspec.simulationto inject a pressure decay that exceedsmax_decay. The phase will park in Held
Modify this template¶
Want to clone this and adapt it for your own equipment? Walk through Adaptation Guide for the full clone → rebind → deploy → run workflow, and Parameter Binding to understand how recipe values flow through to control-module tags.