Skip to content

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 endpointEquipment LibraryPhases → 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 &gt;= purge_pressure"| CN[close_n2]
    CN -->|"NOT n2.FB"| OV[open_vent]
    OV -->|"vent.FB"| VT[venting]
    VT -->|"pressure &lt;= 1.05 bar"| CC[close_vent_cycle<br/>++purge_count]
    CC -->|"NOT vent.FB"| CK{check_cycles}
    CK -.->|"purge_count &lt; purge_cycles<br/>priority 0 (loop)"| ON
    CK -->|"purge_count &gt;= purge_cycles<br/>priority 1"| FB[final_blanket]
    FB -->|"pressure &gt;= 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_n2pressurizingclose_n2open_ventventingclose_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:

  1. init zeroes purge_count.
  2. close_vent closes the vent and waits for FB = FALSE.
  3. The per-cycle loop starts at open_n2: opens N₂, waits for FB = TRUE.
  4. pressurizing holds until the headspace reaches purge_pressure.
  5. close_n2 closes the N₂ supply and waits for FB = FALSE.
  6. open_vent opens the vent and waits for FB = TRUE.
  7. venting holds until pressure drops to ≤ 1.05 bar (atmospheric).
  8. close_vent_cycle closes the vent and increments purge_count.
  9. check_cycles diverges by priority:
    • priority 0 (loop) if purge_count < purge_cycles
    • priority 1 (exit) once the count is met
  10. final_blanket opens N₂ until the headspace reaches ≥ 1.2 bar (positive blanket), then close_n2_final seals 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

  1. HMI endpointBatch Execution+ Newsim-reactor-heat-m1Start
  2. The n2-inert step runs after pressure-test — click into the phase to watch the cycle counter increment
  3. Open Data endpointTrends on pressure_sensor.PV to see the sawtooth: pressurize to purge_pressure, vent to atmospheric, repeat purge_cycles times, then final blanket rise