Skip to content

Phase Template: reactor-pressure-test

Reactor N₂ pressure-hold leak test. Use this phase as an integrity gate before any batch that needs a sealed reactor. It pressurizes the vessel to test_pressure, closes the N₂ supply, holds for hold_time, and measures the pressure decay. The reactor passes if decay is within max_decay. A fail self-issues COMMAND('Hold') so an operator must investigate before the procedure continues.

Where to find it

System endpointEquipment LibraryPhases → select reactor-pressure-test.

graph TD
    Start([initial]) --> CV[close_vent]
    CV -->|"vent_valve.FB = FALSE"| ON[open_n2]
    ON -->|"n2_valve.FB = TRUE"| PR[pressurizing]
    PR -->|"pressure_sensor.PV >= test_pressure"| CN[close_n2]
    CN -->|"n2_valve.FB = FALSE"| RS[record_start]
    RS --> H[holding]
    H -->|"holding.T >= 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_sensor.PV &lt;= 1.1"| CVF[close_vent_final]
    CVF -->|"vent_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 — pressurizing, 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 reactor-pressure-test phase on the holding step will be added here.

Parameters

Parameter Type Unit Range Default Required
test_pressure REAL bar 1.5-6.0 3.0 yes
hold_time TIME 30s-5m 1m yes
max_decay REAL bar 0.05-1.0 0.15 yes

TIME parameters take duration strings ("45s", "1m30s", "5m"), not bare numbers.

Required control modules

Role Module type Description
n2_valve discrete-valve Nitrogen supply valve
vent_valve discrete-valve Reactor headspace vent valve
pressure_sensor analog-sensor Reactor headspace pressure measurement

Capability: reaction.

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_vent closes the vent valve and waits for FB = FALSE.
  2. open_n2 opens the N₂ supply and waits for FB = TRUE.
  3. pressurizing holds until the headspace pressure reaches test_pressure.
  4. close_n2 closes the N₂ supply and waits for FB = FALSE.
  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 vent valve and holds until pressure bleeds to ≤ 1.1 bar. The vessel is always vented cleanly whether the test passed or failed.
  10. close_vent_final closes the vent before complete.

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. See Phases § Integrity tests.

Used in recipes

Try it

  1. HMI endpointBatch Execution+ Newsim-reactor-heat-m1Start
  2. The pressure-test is the first step — watch it run before anything else
  3. Open Data endpointTrends on pressure_sensor.PV to see the ramp to test_pressure, the hold, and the vent
  4. On a passing test the phase advances straight through to the next step (n2-inert). To exercise the fail branch, edit reactor-sim's spec.simulation to inject a pressure decay that exceeds max_decay. The phase will park in Held