Evaporator control and CIP sequencing on ControlLogix.
A five-effect dairy evaporator concentrates product around the clock, under vacuum and on steam, through a hundred automated valves and two dozen pumps. When the run ends it cleans itself in place, with caustic, acid and sanitizer washes, rinses and sprayballs all run by the sequencer. We've worked on these systems down to the individual word, including migrating this one from PLC-5 to ControlLogix and PlantPAx. The whole sequence now sits in data you can read: one table, one row per step.
The evaporator and the CIP skid.
CIP (clean-in-place) means washing the plant without taking pipes apart. A four-tank skid supplies the evaporator with rinse water, recovered rinse, caustic and acid. Each solution is dosed to strength, heated, pumped through every product path, and checked by conductivity before anything goes to drain.
How the sequencing engine works.
Every step of every mode has its own 64-word block of DINTs, called a chunk. Moving one pointer copies the active step's chunk into the evaluation buffer, and the decode from there is mechanical. Bits become valve and pump commands, and whole words become PID setpoints and VFD velocity references. To change the process you edit the table, not the ladder.
A chunk per step
Each step is 64 DINTs: six bit-packed "peg words," a step-time preset, and fifty-plus engineering values. The sequencer computes a pointer (step number times block length, clamped to the array) and copies that block into SeqData_Active. The active chunk is the state of the plant.
COP(Mode[ptr], Active[0], 64)Bits become valves
Peg words 0–5 carry 192 pins, each hard-mapped to one output: CIP skid valves, tank feeds, divert valves, dosing pumps, vacuum and discharge pumps, even PID-enable and peer-PLC handshake bits. The decode is a rack of one-bit rungs, each examining one pin and commanding one device. Nothing else writes to an output.
XIC(Active[0].21) → FV121.PCmd_OpenWords become setpoints
Whole DINTs in the same chunk are engineering values: supply temperature for the steam heat exchanger, tank fill levels with deadbands, pressure and flow setpoints for a dozen PIDE loops, and velocity setpoints written straight to the VFDs, like word 58 driving the CIP supply pump's speed reference every step.
MOV(Active[58], PP210.PSet_SpeedRef)The chart is the program
The chunks are authored in the pinning chart: a workbook with one sheet per mode, one row per step, one column per pin and setpoint. A macro downloads the arrays to the ControlLogix over RSLinx. Process engineers tune the sequence without anyone editing ladder.
Excel → download → ControlLogixThe nine operating modes.
The operator picks a product and presses start. After that, pulling vacuum, establishing water recirculation, bringing on steam, production and the wash that follows are all the same engine stepping through different tables.
The wash sequence, step by step.
This is the skim CIP recipe as it runs on the plant. Timed steps just run their clock. Gated steps also wait for proof, such as a conductivity target, a tank level or a confirmed flow, before the engine pins the next chunk.
Steps advance on proof
Every step carries its own advance criteria in the chunk: a timer preset in word 6, plus thresholds like "return conductivity at or below the reclaim target" in words 43–44. Debounce timers keep a splash of rinse water from faking a clean signal. A step that can't prove its conditions doesn't advance.
Sub-sequences overlay the main one
Sprayball forward/reverse and chemical dosing run as small step engines with their own chunk arrays. Their active chunks are OR-ed bitwise with the main chunk before the device rungs, so a dosing overlay can hold a feed valve open while the main sequence keeps walking, and the HMI shows both banners at once.
Pause without losing your place
A paused system freezes step timers and advancement while every device holds its pinned state. Because the state is the chunk, pausing is simple and resuming is exact. Branch steps jump the step number directly, so recovery paths and re-washes reuse the same table rows.
The pinning chart.
The chart is one workbook with a sheet per mode, a row per step and a column per pin. Read across a row and you see exactly what the plant does in that step. Read down a column and you can follow one valve through the whole wash. For a sequence of 50-plus steps, that's the whole engineering interface.
| Step | Description | Peg W0 | Peg W1 | Peg W2 | Time s | Supply °F | Lvl SP % | VFD Hz |
|---|---|---|---|---|---|---|---|---|
| 05 | Pre-Rinse Started · Reclaimed Water | 90 | 160 | 50 | 45.0 | |||
| 09 | Caustic Load Step · Pre-Wash | 3 | 160 | – | 30.0 | |||
| 12 | Recirculating Caustic (Pre-Wash) | 720 | – | – | 52.5 | |||
| 15 | Rinse to Drain Reclaim Water | 480 | 160 | 50 | 45.0 | |||
| 26 | Caustic Wash | 360 | – | – | 52.5 | |||
| 30 | Spray Subsequence on Caustic | 0 | – | – | 48.0 | |||
| 46 | Recirculate Sanitizer with Spray | … | … | … | 600 | – | – | 42.0 |
Three things make this chart more than documentation. It downloads itself. A macro writes the arrays straight into the ControlLogix, so the sheet and the PLC can't drift apart unnoticed. It keeps its history. Every row carries the reference pin from the original PLC-5 program, so the migration could be checked bit for bit against a sequence that had run for years. It's where changes are made. Commissioning tweaks, new products and changed chemistry are each a revision-numbered row edit in the chart, and the ladder stays untouched.
I/O, drives, and operator screens.
The sequencer is only as good as the hardware under it and the screens the operator sees. Both were rebuilt on standard parts: distributed I/O over EtherNet/IP, and a PlantPAx object with its faceplate for every device.
Distributed I/O
A local ControlLogix chassis plus three remote racks (1756 I/O at the evaporator and CIP skid, FLEX I/O at the far end), all over EtherNet/IP, with per-module comms watchdogs feeding the diagnostics program. Roughly two dozen I/O modules serve ~200 field devices: dozens of analog channels and hundreds of discrete points.
1756 · 1794 FLEX · EtherNet/IPDrives & peer PLCs
VFDs take their velocity setpoints from the chunk; an SMC soft starter sits on the same network as a generic Ethernet module. Peg word 5 even carries handshake pins for neighboring controllers, so the plant's receiving, utility and production PLCs get their handshake signals from the same step data as everything else.
VFD · SMC · 3 peer PLCs · MSGA PlantPAx object per device
Every valve, motor, drive, and loop is a PlantPAx Add-On Instruction (sixty-odd solenoid valve objects, a bank of four-state divert clusters, a mix-proof valve, two dozen motors, a dozen PIDE loops), each with its standard faceplate, simulation mode, and alarm shelf. An operator who has learned one faceplate can run them all.
P_ValveSO · P_VSD · P_PIDE · P_D4SDTell us about your process sequence.
Evaporators, batching, CIP or a legacy PLC migration: describe what runs your process today and we'll show you how we'd make it easier to read, verify and change.
Start a conversation