Stop Forcing the Ramp/Soak Instruction to Hold
The Productivity 2000 ramp/soak instruction runs its profile automatically from step to step. It has no built-in "wait for operator" state between segments. Brewing recipes need that hold after a soak: add grain, check pH, pull a sample, confirm a transfer.
These are the usual quick fixes, and each one fails:
- Drop the instruction enable at end of soak. Disabling a profile instruction usually stops or resets the profile. Re-enabling can restart at step 1 rather than resume at the next segment.
- Load a huge soak time, then zero it on confirm. This works until someone edits the recipe on the HMI and the override value gets saved as a real soak time. You also get no clean indication that the batch is waiting on a person.
- Write a manual ramp/soak from timers and compares. This is where hand-built sequence logic grows to hundreds of rungs. Every added step multiplies the interlock paths, and debugging it at 2 a.m. is miserable.
What works is the Sequencer instruction, SEQ. Each step carries its own transition condition. One transition type, Duration & Event, requires both the step time and a tag condition before the step advances. That is a soak with an operator hold built in.
Check before moving on: List every point in the recipe where a person must act before the process continues. If that list is empty, keep the ramp/soak instruction and skip this procedure.
Map the Recipe Into Steps and Transition Types
Build the step table on paper first. Pick a transition type for each step based on what ends it:
| SEQ transition | Step advances when | Typical brewing use |
|---|---|---|
Duration |
Step time expires | Fixed soak with no operator action |
Event |
Tag goes true | Pure hold: "grain added", "transfer complete", or temperature-reached permissive |
Duration & Event |
Time expired AND tag true | Soak that must finish, then wait for operator confirm |
Duration or Event |
Time expired OR tag true | Step with a timeout, or a step the operator can skip early |
For each step, write down four things:
- Temperature setpoint, or the target if the step is a ramp
- Output states: pumps, valves, heater enable
- Transition type and duration
- The event tag, if any, and who or what sets it
A single Duration & Event step works when you want "soak, then hold." Split it into two steps when you want the HMI to show exactly when the batch is waiting on the operator:
- Soak step:
Durationtransition, holds setpoint. - Hold step:
Eventtransition on the confirm tag. Same setpoint, plus an output that drives an "Awaiting confirm" indicator.
The two-step version gives operators an unambiguous prompt. It also avoids the early-press problem covered in the next section.
Check: Every step in the table has exactly one exit condition. No step depends on a tag that nothing in the program or HMI ever sets.
Build the Operator Confirm Tag and HMI Handshake
The event tag is where most sequencer holds go wrong. Plan for two failure modes:
-
Momentary press during the soak. With
Duration & Event, both conditions must be true together. A momentary C-More pushbutton pressed early goes false again before the timer expires, and the step sits there. The operator thinks they confirmed, but the PLC never saw it at the right moment. - Latched tag never cleared. If the confirm bit stays true and the next step uses the same tag, that step's hold is skipped instantly.
Set it up this way:
- Create one Boolean confirm tag, named to your site convention.
- Write it from a C-More pushbutton set to latch the bit, not a momentary action.
- In ladder, clear the confirm tag whenever the sequence changes step. The instruction's current-step value is the reference; read it from the
SEQconfiguration dialog. - On the C-More screen, show the confirm button, or enable it, only while the hold step is active. Drive visibility from the "Awaiting confirm" output configured in the hold step.
Check: With the PLC online and the sequence idle, press the HMI button. The tag should latch. Force a step change and the tag should clear within one scan.
Configure the SEQ Steps and Output States
- Insert the
SEQinstruction in the task that owns the process stage. - Add steps in the order of your step table.
- For each step, set the transition type from the table. Enter the duration for time-based transitions and select the event tag for event-based ones.
- Click Show in the Outputs column to define the output states for that step: heater enable, pump run, valve open, and the "Awaiting confirm" indicator bit.
- Keep outputs that must persist across steps, such as the circulation pump, set in every step where they apply. Each step defines its own output state, so a pump left unchecked in one step turns off for that step.
The Drum instruction, DRM, offers the same transition conditions but works as a more binary output pattern. Use SEQ for recipe-style processes where steps carry meaning and operator interaction. Reach for DRM when the job really is a fixed on/off output pattern.
Check: Walk every step with the outputs disconnected or the process dry. Confirm each step energizes only its configured outputs, and that each hold step stops and waits until the confirm tag is set.
Tie Setpoints to the PID, Cascade, and Stepper Axis
The sequencer decides which step is active. Your control loops do the temperature work. Connect them explicitly:
- Setpoint per step. Use the active step to move the recipe setpoint into the loop setpoint. Hold the recipe values in the tags your C-More recipe function writes, so batch changes only touch data, not logic.
-
Ramps. For a ramp segment, give the step a
Durationtransition and move the setpoint toward target in logic while that step is active. Alternatively, end the ramp on anEventtransition driven by an at-temperature compare, which adds a temperature-reached permissive. - Cascade loop. On a jacketed vessel, mash temperature is the outer loop and jacket temperature the inner loop. The step writes to the outer loop setpoint only; the outer loop output feeds the inner setpoint. For steps that don't need the cascade's precision, run the jacket loop alone. Make that selection a per-step output so it switches deterministically.
- Stepper-driven cooling valve. Scale the axis in hardware configuration to engineering units, for example 20 pulses = 1% valve travel. The step then issues a move-to-position command in percent, such as 16%, instead of raw pulse counts. Derive the pulses-per-percent figure from your valve's full-travel pulse count.
Check: Step the sequence manually and watch the PID setpoint tag in a data view. Each step must load the right setpoint. The cooling axis must command the position in percent that the recipe calls for.
Split Stages Into Separate Sequences and Tasks
You can pack an entire batch into one SEQ. Don't. Build one sequence per major process stage, for example warm-up, mash, and ferment, and place each in its own task in the task manager.
- A fault or abort in one stage doesn't require walking through a 40-step list to find the active step.
- Each stage can be re-run on its own after an interruption.
- Recipe data maps cleanly: one block of recipe tags per stage.
Hand off between stages with a completion bit set in the last step of one sequence. That bit becomes the start or enable of the next. If you want an operator gate between stages as well, add a final hold step using the same confirm pattern.
Check: Finish warm-up in test and confirm mash starts only after the handoff bit, and not on a PLC run-mode transition.
Choose an Alternative If You Run Do-more
On a Do-more controller, the equivalent is stage programming inside a program block. Each stage holds its own logic and transitions to the next when your conditions are met: time, operator bit, or both. That covers the same soak-then-confirm pattern. The Do-more simulator lets you exercise the whole sequence without hardware.
Weigh the platform choice on the rest of the application. The Productivity side offers a form-driven cascade PID setup and axis scaling in engineering units. Do-more offers built-in high-speed I/O. Both can do the job. Pick the one whose PID and motion setup your team can maintain.
Check: Whatever platform you commit to, prototype one full stage, including a hold step, before buying hardware or writing the rest.
Verify the Whole Batch End to End
- Load a test recipe from the C-More with short soak times.
- Start the first stage. Confirm setpoints load per step and the cascade or single-loop selection switches as configured.
- At each hold: confirm the indicator lights and the button becomes available. Confirm the sequence does not advance until you press it.
- Press confirm early during a
Duration & Eventsoak. The step must still advance at end of soak, or the button must be unavailable until then. - Confirm the tag clears on every step change and the next hold step waits.
- Cycle power mid-soak. Record whether the sequence resumes or restarts, and decide whether that is acceptable for the process. Adjust retentive settings on the step and recipe tags if it isn't.
- Run a full batch with real product only after a full water run passes all of the above.
Get it running with water first, then fix the details properly before real product goes in.
FAQ
How do I make a Productivity SEQ step wait for an HMI button?
Set that step's transition to Event, or to Duration & Event if a soak time must also elapse, and select a Boolean tag written by a latching C-More pushbutton. Clear that tag in logic on every step change so it can't carry into the next hold.
How do I choose between SEQ and DRM for a batch recipe?
Both support Duration, Event, Duration & Event, and Duration or Event transitions. Use SEQ for recipe-style steps with operator holds and per-step output states set through the Outputs Show button. Use DRM for fixed on/off output patterns.
When should I stop troubleshooting and contact AutomationDirect support?
Stop if a step with a true event tag and an expired duration still refuses to advance. The same applies if the sequence skips steps or restarts unexpectedly after a power cycle once your tag handshake is verified clean. Capture the project file, firmware and software versions, and a data view of the step and event tags, then open a case through AutomationDirect's official technical support.