UnitProcedureTemplate: reactor-cip-cycle¶
A complete CIP cycle for a pharma reactor vessel: pre-rinse,
hot caustic wash, intermediate rinse, conditional hot acid wash,
final rinse with pH endpoint verification. Use this
UnitProcedureTemplate at the top of a reactor-specific CIP master
recipe. It mirrors the
cip-vessel-cleaning template used for
the mix tank, but targets the reactor's unit-specific control
modules (wfi_valve, outlet_valve, jacket_controller,
ph_sensor) via reactor-specific phase templates.
Referenced directly by the
sim-reactor-cip-m1 master
recipe. The recipe's procedure has two unit-procedure-level steps: a
one-phase unit procedure wrapping the reactor-pressure-test phase
(an integrity check, wrapped in a subChart so it sits at the same
level per ISA-88 §5.3.4 homogeneity) followed by this unit-procedure
template.
Where to find it¶
System endpoint → Equipment Library → Unit Procedures → select reactor-cip-cycle.
graph TD
Start([initial]) --> PR[pre-rinse]
PR --> CW[caustic-wash]
CW --> IR[intermediate-rinse]
IR --> AW["acid-wash<br/>(skip_if_zero: acidWashRequired)"]
AW --> FR[final-rinse]
FR --> Done([done])
Linear five-step sequence. The only conditional is acid-wash,
which the reactor-cip-hot-wash-op operation skips internally via
its own skip_if_zero parameter bound to acidWashRequired. No
SFC-level divergence is needed at this layer.
What you see when it runs¶
| Element | Meaning |
|---|---|
| Unit procedure node | The top-level node of the reactor's procedural tree |
| Operation children | The five reactor-specific operations listed below |
| Active operation | Highlighted on the tree; click in to see its child phase |
HMI screenshot pending
An annotated capture of a running reactor-cip-cycle procedural
tree will be added here.
Why reactor-specific¶
The reactor's cleaning topology differs from the mix tank's:
| Resource | Mix tank | Reactor |
|---|---|---|
| Water inlet | inlet_valve (on/off) |
wfi_valve (on/off) |
| Drain | outlet_valve (on/off) |
outlet_valve (modulating) |
| Heating | temp_controller (analog-control) |
jacket_controller (analog-control on the reactor jacket) |
| Conductivity sensor | yes | no |
| pH sensor | yes (for process use) | yes (for CIP final-rinse endpoint) |
Because the reactor uses a different set of roles, the generic
cip-rinse-op and
cip-hot-wash-op operations (which bind to
inlet_valve / outlet_valve / agitator) don't apply directly.
The reactor instead has three thin reactor-specific operation
templates wrapping the existing reactor-specific phase templates.
Operations¶
Each step of this unit procedure template calls one reactor-specific operation template. Each operation wraps exactly one phase. The operations exist so the UnitProcedureTemplate can call OperationTemplate resources per ISA-88 layering, and they add no behaviour of their own.
| # | Step | Operation | Phase | Description |
|---|---|---|---|---|
| 1 | pre-rinse |
reactor-cip-rinse-op |
reactor-cip-rinse |
WFI pre-rinse to flush gross residue through the outlet valve |
| 2 | caustic-wash |
reactor-cip-hot-wash-op |
reactor-cip-hot-wash |
Hot NaOH wash for organic soil — jacket-heated, agitated, held for contact time |
| 3 | intermediate-rinse |
reactor-cip-rinse-op |
reactor-cip-rinse |
WFI rinse to remove caustic residue |
| 4 | acid-wash |
reactor-cip-hot-wash-op |
reactor-cip-hot-wash |
Hot phosphoric acid wash for inorganic scale — skipped when acidWashRequired = 0 via the operation's skip_if_zero gate |
| 5 | final-rinse |
reactor-cip-ph-rinse-op |
reactor-cip-ph-rinse |
WFI rinse with pH endpoint — a pass prompts the operator to confirm cleanliness; a fail self-issues Hold for investigation |
Capability: reaction.
Parameters¶
The unit procedure template exposes parameters per operation step,
named with a prefix indicating which step it configures. All are
optional with defaults, and the master recipe binds each one to a
same-named recipe parameter. TIME parameters take duration
strings ("45s", "1m30s", "5m"). A bare number is not a
duration.
| Parameter | Type | Unit | Default |
|---|---|---|---|
preRinseFillLevel |
REAL | L | 500 |
preRinseAgitateSpeed |
REAL | % | 40 |
preRinseDuration |
TIME | — | 5m |
causticFillLevel |
REAL | L | 600 |
causticFillRate |
REAL | % | 75 |
causticWashTemp |
REAL | degC | 75 |
causticJacketOutput |
REAL | % | 80 |
causticAgitateSpeed |
REAL | % | 60 |
causticContactTime |
TIME | — | 30m |
interRinseFillLevel |
REAL | L | 500 |
interRinseAgitateSpeed |
REAL | % | 40 |
interRinseDuration |
TIME | — | 5m |
acidWashRequired |
REAL | 0/1 gate | 1 |
acidFillLevel |
REAL | L | 500 |
acidWashTemp |
REAL | degC | 60 |
acidJacketOutput |
REAL | % | 70 |
acidAgitateSpeed |
REAL | % | 50 |
acidContactTime |
TIME | — | 20m |
finalRinseFillLevel |
REAL | L | 600 |
finalRinseAgitateSpeed |
REAL | % | 50 |
finalRinseDuration |
TIME | — | 5m |
phTarget |
REAL | pH | 7.0 |
phTolerance |
REAL | pH | 1.0 |
How it works¶
The batch controller expands this template into a five-operation SFC when the batch starts. Each operation wraps exactly one reactor-specific phase, and the unit procedure advances when the current operation completes.
pre-rinseflushes gross residue through the outlet valve.caustic-washruns a jacket-heated NaOH contact hold.intermediate-rinseremoves caustic before the acid wash.acid-washruns only ifacidWashRequired = 1. Otherwiseskip_if_zerobypasses it.final-rinseacts as the release gate. After the rinse drains, the phase reads the pH sensor. Within tolerance ofphTarget, it prompts the operator to confirm the reactor is clean. Outside tolerance, it self-issuesCOMMAND('Hold')so an operator must investigate before the cycle continues.
Used in recipes¶
- sim-reactor-cip-m1 — reactor
CIP master recipe. The recipe calls this unit procedure template
once, after a one-phase unit-procedure step wrapping the
reactor-pressure-testphase.
Try it¶
- HMI endpoint → Batch Execution → + New →
sim-reactor-cip-m1→ Start - The first step on
reactor-1is the one-phase unit procedure wrappingreactor-pressure-test. This unit procedure activates after the test passes - Expand the procedural tree to see this template at the top with five operation children
- Click into each operation to watch its single child phase run