Phase Template: reactor-n2-inert¶
Reactor N₂ inerting: a multi-cycle pressurize/vent purge to displace
oxygen from the headspace, followed by a final N₂ blanket. Use this
phase before any exothermic reaction that requires an inert
atmosphere. Each purge cycle pressurizes the reactor to
purge_pressure via the N₂ valve, then vents to atmospheric. After
purge_cycles iterations the N₂ valve holds open for a positive
blanket.
Where to find it¶
System endpoint → Equipment Library → Phases → select reactor-n2-inert.
graph TD
Start([initial]) --> INIT[init<br/>purge_count := 0]
INIT --> CV[close_vent]
CV -->|"NOT vent.FB"| ON[open_n2]
ON -->|"n2.FB"| PR[pressurizing]
PR -->|"pressure >= purge_pressure"| CN[close_n2]
CN -->|"NOT n2.FB"| OV[open_vent]
OV -->|"vent.FB"| VT[venting]
VT -->|"pressure <= 1.05 bar"| CC[close_vent_cycle<br/>++purge_count]
CC -->|"NOT vent.FB"| CK{check_cycles}
CK -.->|"purge_count < purge_cycles<br/>priority 0 (loop)"| ON
CK -->|"purge_count >= purge_cycles<br/>priority 1"| FB[final_blanket]
FB -->|"pressure >= 1.2 bar"| CNF[close_n2_final]
CNF -->|"NOT n2.FB"| Done([complete])
See Phases for the diagram conventions. The dashed back-edge is the per-cycle loop.
What you see when it runs¶
| Element | Meaning |
|---|---|
| Active step | Cycles through open_n2 → pressurizing → close_n2 → open_vent → venting → close_vent_cycle per iteration |
| Shared variables | purge_count — the loop counter, visible on the phase detail |
| Parameters | purge_pressure, purge_cycles |
HMI screenshot pending
An annotated capture of a running reactor-n2-inert phase
mid-purge will be added here.
Parameters¶
| Parameter | Type | Unit | Range | Default | Required |
|---|---|---|---|---|---|
purge_pressure |
REAL | bar | 1.5-4.0 | 2.0 |
yes |
purge_cycles |
INT | — | 2-5 | 3 |
yes |
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:
initzeroespurge_count.close_ventcloses the vent and waits forFB = FALSE.- The per-cycle loop starts at
open_n2: opens N₂, waits forFB = TRUE. pressurizingholds until the headspace reachespurge_pressure.close_n2closes the N₂ supply and waits forFB = FALSE.open_ventopens the vent and waits forFB = TRUE.ventingholds until pressure drops to ≤ 1.05 bar (atmospheric).close_vent_cyclecloses the vent and incrementspurge_count.check_cyclesdiverges by priority:priority 0(loop) ifpurge_count < purge_cyclespriority 1(exit) once the count is met
final_blanketopens N₂ until the headspace reaches ≥ 1.2 bar (positive blanket), thenclose_n2_finalseals it.
This is an integrity test phase. A purge with insufficient cycles leaves residual O₂, and too many cycles waste N₂ and batch time. Pair with overpressure and underpressure alarms across the cycle. See Phases § Integrity tests.
Used in recipes¶
Try it¶
- HMI endpoint → Batch Execution → + New →
sim-reactor-heat-m1→ Start - The
n2-inertstep runs afterpressure-test— click into the phase to watch the cycle counter increment - Open Data endpoint → Trends on
pressure_sensor.PVto see the sawtooth: pressurize topurge_pressure, vent to atmospheric, repeatpurge_cyclestimes, then final blanket rise