Skip to content

Phase Template: fd-vacuum-decay-test

Filter-dryer vacuum decay leak test. Use this phase as an integrity gate before any filtration or drying recipe. It pulls the vessel down to target_vacuum, closes the pump, holds for hold_time, and measures the pressure rise. The vessel passes if the rise is within max_rise. A fail self-issues COMMAND('Hold') so an operator must investigate before the procedure continues.

Where to find it

System endpointEquipment LibraryPhases → select fd-vacuum-decay-test.

graph TD
    Start([initial]) --> CV[close_vent]
    CV -->|"NOT vent.FB"| SV[start_vacuum]
    SV -->|"vacuum.POS >= 80% setpoint"| EV[evacuating]
    EV -->|"pressure <= target_vacuum"| STV[stop_vacuum]
    STV -->|"vacuum.POS < 2"| RS[record_start]
    RS --> H[holding]
    H -->|"T >= hold_time"| CK[check_rise]
    CK -->|"end − start &lt;= max_rise<br/>priority 0"| PASS[pass]
    CK -->|"end − start &gt; max_rise<br/>priority 1"| FAIL[fail<br/>COMMAND&#40;'Hold'&#41;]
    PASS --> V[vent]
    FAIL --> V
    V -->|"pressure &gt;= 950 mbar"| CVF[close_vent_final]
    CVF -->|"NOT vent.FB"| 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
Shared variables start_pressure and end_pressure captured for the rise calculation
Parameters target_vacuum, vacuum_setpoint, hold_time, max_rise

HMI screenshot pending

An annotated capture of a running fd-vacuum-decay-test phase on the holding step will be added here.

Parameters

Parameter Type Unit Range Default Required
target_vacuum REAL mbar 50-500 200 yes
vacuum_setpoint REAL % 50-100 90 yes
hold_time TIME 30s-5m 1m yes
max_rise REAL mbar 5-100 20 yes

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

Required control modules

Role Module type Description
vacuum_controller analog-control Vacuum pump controller
pressure_sensor analog-sensor Vessel headspace pressure measurement
vent_valve discrete-valve Headspace vent valve for repressurization

Capability: filtration.

How it works

Each scan the SFC engine:

  1. close_vent closes the vent valve and waits for FB = FALSE.
  2. start_vacuum writes vacuum_setpoint to vacuum_controller.CMD and waits for the pump to ramp to 80 % of setpoint.
  3. evacuating holds until headspace pressure reaches target_vacuum mbar.
  4. stop_vacuum zeroes the pump and waits for POS < 2.
  5. record_start captures the hold-start pressure.
  6. holding holds for hold_time.
  7. check_rise captures the end pressure and diverges by priority:
    • priority 0 (pass) if end - start <= max_rise
    • priority 1 (fail) if rise exceeds the limit — self-issues COMMAND('Hold')
  8. Both branches converge on vent, which opens the vent valve and holds until pressure climbs to ≥ 950 mbar. The vessel is always repressurized to atmospheric whether the test passed or failed.
  9. close_vent_final closes the vent before complete.

This is an integrity test phase. Pair with an absolute-vacuum alarm and a timeoutSeconds backstop on the phase call. See Phases § Integrity tests.

Used in recipes

Try it

  1. HMI endpointBatch Execution+ Newsim-filter-dry-m1Start
  2. The vacuum-decay-test is the first step on filter-dryer-1 — watch it before the charge phase
  3. Open Data endpointTrends on pressure_sensor.PV to see the pull-down to target_vacuum, the hold, and the vent
  4. To exercise the fail branch, edit filter-dryer-sim's spec.simulation to inject a leak during the hold. The phase will park in Held on COMMAND('Hold')