Skip to content

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 endpointEquipment LibraryPhases → 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 &gt;= 95% test_pressure"| IS[isolate<br/>SP := 0]
    IS --> RS[record_start]
    RS --> H[holding]
    H -->|"holding.T &gt;= hold_time"| CK[check_decay]
    CK -->|"start − end &lt;= max_decay<br/>priority 0"| PASS[pass]
    CK -->|"start − end &gt; max_decay<br/>priority 1"| FAIL[fail<br/>COMMAND&#40;'Hold'&#41;]
    PASS --> V[vent]
    FAIL --> V
    V -->|"pressure &lt;= 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:

  1. close_outlet closes the outlet valve to seal the tank and waits for FB = FALSE.
  2. pressurize writes test_pressure to pressure_controller.SP — the PID loop drives the N₂ supply.
  3. wait_pressure holds until the headspace pressure reaches 95 % of test_pressure.
  4. isolate zeroes pressure_controller.SP to stop N₂ addition.
  5. record_start captures the decay-test start pressure into a shared variable.
  6. holding holds for hold_time.
  7. check_decay captures the end pressure and diverges by priority:
    • priority 0 (pass) if start - end <= max_decay
    • priority 1 (fail) if decay exceeds the limit
  8. The fail step self-issues COMMAND('Hold'). The phase parks in ISA-88 Held so the operator can Reset and retry, or Stop and dispatch maintenance.
  9. 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.
  10. close_outlet_final closes the outlet before complete.

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:

Try it

  1. HMI endpointBatch Execution+ Newsim-tank-blend-m1Start
  2. The pressure-test is the first step on mix-tank-1 — watch it run before the blend
  3. Open Data endpointTrends on pressure_sensor.PV and pressure_controller.SP to see the PID-driven ramp, the hold, and the vent
  4. To exercise the fail branch, edit tank-sim's spec.simulation to inject a pressure decay that exceeds max_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.