Skip to content

UnitProcedureTemplate: cip-vessel-cleaning

A complete CIP cycle for a pharmaceutical mixing vessel: pre-rinse, hot caustic wash, intermediate rinse, conditional hot acid wash, final rinse with conductivity endpoint, and N₂ blowdown. Use this UnitProcedureTemplate as the top of a mix-tank-style CIP master recipe. It composes the CIP operation templates into a reusable, parameterized cleaning cycle.

In ISA-88 terms this is a UnitProcedureTemplate, one level above OperationTemplates, bound to a single unit and suitable for direct reference by a MasterRecipe.

Where to find it

System endpointEquipment LibraryUnit Procedures → select cip-vessel-cleaning.

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 --> BD[blowdown]
    BD --> Done([done])

Linear six-step sequence. The only conditional is acid-wash, skipped internally by cip-hot-wash-op when acidWashRequired = 0.

What you see when it runs

Element Meaning
Unit procedure node The top-level node of the batch's procedural tree — one per allocated unit
Operation children The six operations listed below, executed in order
Active operation Highlighted on the tree; click in to see its child phases

HMI screenshot pending

An annotated capture of a running cip-vessel-cleaning procedural tree will be added here.

Operations

# Step OperationTemplate Description
1 pre-rinse cip-rinse-op WFI pre-rinse to remove gross residue
2 caustic-wash cip-hot-wash-op Hot caustic wash (NaOH) for organic soil removal
3 intermediate-rinse cip-rinse-op WFI rinse to remove caustic residue
4 acid-wash cip-hot-wash-op Hot acid wash (phosphoric acid) for inorganic scale — skipped when acidWashRequired=0
5 final-rinse cip-conductivity-rinse-op WFI rinse with conductivity endpoint verification
6 blowdown cip-blowdown-op N₂ blowdown for tank drying

Capability: mixing.

Parameters

All parameters are optional with defaults, and master recipes bind recipe-level values to these via parameterBindings on the unit-procedure step. TIME parameters take duration strings ("45s", "1m30s", "5m"). A bare number is not a duration.

Parameter Type Unit Default
preRinseFillLevel REAL L 300
preRinseAgitateSpeed REAL % 40
preRinseDuration TIME 5m
causticFillLevel REAL L 350
causticWashTemp REAL degC 75
causticHeatOutput REAL % 80
causticAgitateSpeed REAL % 60
causticContactTime TIME 30m
interRinseFillLevel REAL L 300
interRinseAgitateSpeed REAL % 40
interRinseDuration TIME 5m
acidWashRequired REAL 1
acidFillLevel REAL L 300
acidWashTemp REAL degC 60
acidHeatOutput REAL % 70
acidAgitateSpeed REAL % 50
acidContactTime TIME 20m
finalRinseFillLevel REAL L 350
finalRinseAgitateSpeed REAL % 50
finalRinseDuration TIME 5m
conductivityLimit REAL µS/cm 15.0
blowdownPressure REAL bar 1.5
blowdownPressurizeTime TIME 15s
blowdownHoldTime TIME 2m
blowdownVentTime TIME 10s

How it works

The batch controller expands this template into a six-operation SFC when the batch starts. Each operation runs its own child phases sequentially, and the unit procedure advances when the current operation completes.

  1. pre-rinse and caustic-wash always run.
  2. intermediate-rinse removes caustic before the acid wash.
  3. acid-wash runs only if the calling recipe sets acidWashRequired = 1. Otherwise the operation's internal skip_if_zero gate bypasses every child phase.
  4. final-rinse records the cleanliness verdict. The conductivity check measures against conductivityLimit and logs a PASSED or FAILED operator message, then the cycle advances either way. Review the message before releasing the vessel. Re-run a rinse if it failed.
  5. blowdown dries the vessel before release.

Used in recipes

Try it

  1. HMI endpointBatch Execution+ Newsim-cip-cycle-m1Start
  2. Expand the procedural tree to see this UnitProcedureTemplate at the top with its six operation children
  3. Click into each operation as it activates to watch the child phases advance
  4. Re-run the recipe with acidWashRequired = 0 (via a formula override) to verify acid-wash completes instantly in the tree