Configuring Ramrod Simulator AOI Setup Bits in RSLogix 5000

Mark Townsend15 min read
Allen-BradleyRSLogix 5000Technical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

When a TURBINE reading on the Ramrod simulator will not track its DAMPER setting, or a THERMOCOUPLE trace sits flat at 75.0 while the heater drive reads 80, the simulator is usually working exactly as configured. The cause is a RAMROD_SETUP bit, a fan or disconnect left off, or a trend that stopped recording. Work the checks below in order. Each one names the reading to take and where to go next.

Load RAMROD_WARMUP onto a controller or emulator first

The warm-up project was written in RSLogix 5000 version 16.03. It ships as four pieces:

  • RAMROD_WARMUP.ACD: the runnable project, in v16.03 format.
  • RAMROD_WARMUP.L5K: an import/export copy for converting to whatever Logix version you have.
  • Ramrod_Simulator.L5X: the Ramrod Add-On Instruction on its own, version 1.1, for dropping into your own project.
  • Ramrod_Memory_Map.PDF: a handout with the I/O layout, a pseudo-schematic, and the RAMROD_SETUP bit assignments.

Bring it up like this:

  1. Open the ACD if your software version reads v16 projects. If it does not, create the project from the L5K import file instead.
  2. Check the controller slot. The Ramrod processor sits in slot 8 in the posted projects, which were developed on a v16.03 emulator. Match the controller slot in Controller Properties to your actual chassis or emulator slot before you download.
  3. Download and go to Run mode.
  4. Open the Ramrod instruction and confirm that the tag values update live.

The warm-up version has no PID or PIDE instructions. Every loop in it is open-loop and operator-driven. If you expected a controller output to move the dampers, that code does not exist yet.

Outcome: if the instruction values update, go to the trend check. If the project will not open or import, stop here. That is a software version or licensing problem, not a simulator problem.

Rule out the trend before you touch the logic

Check the trend first. A dead trend looks exactly like a dead process, and you will waste time toggling bits if you skip this.

  • Run button. Opening the Flow or Heat trend does not start it. Click Run at the top left.
  • Do not pause mid-test. Pausing and restarting usually dumps every trace off the chart. Let the trend run for the whole experiment.
  • Avoid the Value Bar. It can erase all recorded data. Read values from the Pen Values box at the upper right instead, or hover on a trace to get a ToolTip value for that timestamp.
  • Time span. Set it under Chart Properties, X-Axis tab. Use about 20 minutes for flow tests and 30 minutes for heat tests. The base-versus-tip comparison runs at 20 minutes. After any Chart Properties change, check that Run is still active.
  • Scaling. Set it under Chart Properties, Pens tab, Min and Max columns. Set Min to -5 so a trace at 0.0 stays visible instead of vanishing into the bottom border. Set Max 5 above the highest expected reading so you can see when a signal has pinned. The Heat trend uses 505.0, based on the top of the thermocouple range. By the same rule, a 0-100% flow signal gets 105 (derived).
  • Superimposed pens. Identical signals stack, and the last-added pen draws on top. On a fresh Flow trend you see only one line at 0.0 because every pen is at 0.0. Before you conclude a signal is missing, read Pen Values.
  • Hide pens you are not testing. In the Pens tab Visible column, click green to red for DAMPER_2 and TURBINE_2 during single-Ramrod tests.

Use Ctrl+Tab to flip between maximized windows (trend, Operators_Controls, Handy_Bits), or double-click the routine in the Controller Organizer.

Outcome: if the trend runs and scrolls, go to the setup word check.

Read the RAMROD_SETUP number at the bottom of the instruction

The Ramrod instruction displays RAMROD_SETUP as a decimal value at its bottom edge. The default configuration reads 2621480. Memorize that number. One glance tells you whether anyone has changed the internal configuration.

Decode any other value against the default like this:

2621480 = 2^21 + 2^19 + 2^5 + 2^3
        -> default bits ON: .3, .5, .19, .21
        -> default bits OFF: everything else, including .4, .20, .22, .23

Example reading after the heat tests: 11010088
11010088 - 2621480 = 8388608 = 2^23
        -> only change from default: bit .23 ON (half heat on Ramrod_2)

That decode matches the documented defaults:

  • Bit .5 = 1 and .4 = 0: retarded trim on DAMPER_1.
  • Bit .21 = 1 and .20 = 0: retarded trim on DAMPER_2.

For the meaning of bits .3 and .19, and for any bit not covered here, read the bit table in Ramrod_Memory_Map.PDF or the rung descriptions in Handy_Bits. Do not guess.

  • Reads 2621480: the configuration is clean. Go to the fan and damper check.
  • Reads anything else: subtract 2621480, break the difference into powers of two, and look up each bit. Either keep the change deliberately or restore defaults (see the reset section). Negative differences mean a default-ON bit was cleared.

Confirm fans and dampers before chasing zero flow

A TURBINE reading of 0.0 with the damper open means no fan is running. The simulator needs both the damper opening and the fans to produce air flow.

  • Ramrod_1 uses Fan_A_1 and Fan_B_1. Ramrod_2 uses Fan_A_2 and Fan_B_2.
  • In the Operators_Controls routine, right-click Turn_All_Fans_ON and select Toggle Bit. All four fans go green. Turn_All_Fans_OFF drops them all. For single fans, toggle the individual fan tags until green shows (green ON = fan ON).
  • Enter damper settings directly on the Ramrod instruction as DAMPER_1 and DAMPER_2. The damper trace steps instantly. The turbine trace ramps and settles over time, so wait for a flat line before you read it.

Baseline readings with default trim, useful as known-good references:

  • DAMPER_1 = 80, DAMPER_2 = 75, all fans ON: TURBINE_1 settles higher than TURBINE_2 because its damper is wider. TURBINE_2 settles at 59.2.
  • DAMPER_1 and DAMPER_2 both at 90, all fans ON: TURBINE_1 and TURBINE_2 both settle at 85.3. The traces superimpose.
  • Dampers at 0.0 and fans OFF: both turbines drop to 0.0.

Outcome: if flow appears but does not match the damper value, go to the trim check.

Match the turbine reading to the damper trim bits

Damper opening and air flow are not the same number, and the simulator does not intend them to be. Each damper has a selectable valve trim that shapes the flow-versus-opening curve:

  • Retarded: flow lags the opening. This is the default because the original hardware used a rotating butterfly damper whose response mostly resembled a retarded curve.
  • Linear: flow roughly equals the opening.
  • Advanced: flow leads the opening.

Use the settled TURBINE reading to identify which trim is active:

Observed settled reading (fans for that Ramrod ON) Cause: trim state Bit state
DAMPER_1 at 20 gives TURBINE_1 at 4.2; at 80 gives 67.4 Retarded (default) RAMROD_SETUP.5 = 1, .4 = 0
DAMPER_1 at 20 gives TURBINE_1 at 21.1; at 80 gives 84.2 Linear .5 = 0, .4 = 0
DAMPER_1 at 20 gives TURBINE_1 at 37.9; at 80 pins at 100 Advanced .4 = 1, .5 = 0
DAMPER_2 at 75 gives TURBINE_2 at 59.2 Retarded (default) .21 = 1, .20 = 0
DAMPER_2 at 75 gives TURBINE_2 at 98.7 Advanced .20 = 1, .21 = 0
TURBINE at 0.0 with damper open Fans OFF Fan tags in Operators_Controls
Flat traces at 0.0 and nothing scrolls Trend not running Run button

The trim bits are documented in three combinations only: retarded, linear, and advanced. Before you set both .4 and .5 to 1, check the memory map. The behavior of that combination is not covered here.

Reproduce the DAMPER_1 trim sweep to prove the bits on your copy:

  1. Restore defaults and confirm the instruction reads 2621480.
  2. Close both dampers to 0.0 and let both turbines settle at 0.0.
  3. Hide the DAMPER_2 and TURBINE_2 pens.
  4. Turn ON Fan_A_1 and Fan_B_1.
  5. Set DAMPER_1 to 20 and wait for TURBINE_1 to settle at 4.2. Set it to 80 and expect 67.4. Set it back to 20 and expect 4.2 again.
  6. In Handy_Bits, toggle RAMROD_SETUP.5 to 0 (linear). TURBINE_1 climbs to 21.1. Step to 80 and expect 84.2. Step back to 20 and expect 21.1.
  7. Toggle RAMROD_SETUP.4 to 1 (advanced). TURBINE_1 climbs to 37.9. Step to 80 and TURBINE_1 hits 100 and cannot go higher. Step back to 20 and expect 37.9.

What this means for tuning: a two-point average slope from 20 to 80 hides the curvature.

  • Retarded: (67.4 - 4.2) / 60 ≈ 1.05 %/%.
  • Linear: (84.2 - 21.1) / 60 ≈ 1.05 %/%.
  • Advanced: the 80% point is clipped at 100, so its slope is at least (100 - 37.9) / 60 ≈ 1.04 %/%.

The endpoints nearly agree, yet the flow at 20% opening ranges from 4.2 to 37.9. The local process gain, the slope at the operating point, is what a PID loop actually sees. To measure it, make small damper steps (a few percent) around the setpoint you intend to control at. Do not use full-range steps.

Treat an unexplained flow jump as a trim change

The classic symptom: TURBINE_2 climbs from 59.2 to 98.7 while the fans stay the same and DAMPER_2 stays at 75. Nothing the operator controls changed. The characteristic did: toggling RAMROD_SETUP.20 to 1 and .21 to 0 swapped DAMPER_2 from retarded to advanced trim.

In a plant, the same thing happens when someone replaces a leaking valve with one that looks identical but has a different trim. Many maintenance technicians do not know that valves are built with different trim characteristics. The loop that was stable yesterday now sees a much steeper process gain at its operating point, and it hunts or oscillates.

Work it in this order:

  1. Check the characteristic before you retune. On the simulator, compare RAMROD_SETUP to 2621480. On a real valve, compare the nameplate and trim specification of the installed valve with the original.
  2. Re-run a small-step open-loop test at the normal operating opening and compare the new flow change per percent of opening with the old one.
  3. Only then decide whether to restore the original trim or retune for the new gain.

Retuning first wastes time. You end up detuning a loop to hide a hardware substitution, and it misbehaves again at a different operating point.

Check the heater disconnects before you suspect the thermocouples

THERMOCOUPLE_1 and THERMOCOUPLE_2 at 75.0 is normal room temperature for the simulator. If they stay there after you set HEATER_DRIVE_1 and HEATER_DRIVE_2 to 80, check the disconnects. The heater drive setting does nothing while Heater_Disconnect_1 and Heater_Disconnect_2 are OFF.

Set up the heat test starting conditions and confirm each one:

  1. On the Ramrod instruction, set DAMPER_1 and DAMPER_2 to 90.0. Heat tests need air moving through the Ramrods.
  2. Set HEATER_DRIVE_1 and HEATER_DRIVE_2 to 80.0.
  3. Confirm both Heater_Disconnects read 0 (OFF).
  4. Toggle Turn_All_Fans_ON and confirm all four fans read 1.
  5. On the Heat trend, confirm TURBINE_1 and TURBINE_2 read 85.3 and both thermocouples read 75.0 (fully cooled). The heater drive traces sit superimposed at 80.0.
  6. Set the time span to 30 minutes and the scaling to -5 / 505.0, then click Run.
  7. In Operators_Controls, toggle Turn_Both_Heaters_ON. After a few seconds of deadtime, the thermocouple traces start to rise.

That delay between the disconnect closing and the first thermocouple movement is deadtime: heat has to travel from the element to the sensor before anything shows. Do not call it a fault. It is the parameter you are there to measure.

Outcome: if both heat systems respond identically, the setup is at default. If Ramrod_2 behaves differently, go to the next check.

Explain a slow or low Ramrod_2 with bits .22 and .23

Two setup bits change the heat behavior of Ramrod_2. Either Ramrod can be run in these modes. Look up the Ramrod_1 bit numbers in the memory map.

  • RAMROD_SETUP.23, half heat. Its description reads "only half heat available on Ramrod_2". The original hardware switched a heavy-duty diode in series with a 25-watt soldering iron element, giving a half-wave supply. Half-wave supply into a resistive element delivers half the average power of full-wave. The software reproduces that in its math. The result is a lower process gain: the temperature rises more slowly and settles lower for the same HEATER_DRIVE value.
  • RAMROD_SETUP.22, tip thermocouple. Its description reads "using tip mounted thermocouple for Ramrod_2 HEAT; increases deadtime on this system". The hardware carried two thermocouples. The base thermocouple touched the heating element and responded fairly quickly. The tip thermocouple sat about 3/4 inch out along the rod and responded later, because heat had to conduct down the rod to reach it.

Diagnose which one is active from the trend shape, with Ramrod_1 at default as the reference:

Ramrod_2 heat trace vs Ramrod_1 Cause
Starts rising at the same time but climbs slower and settles lower Half heat, .23 = 1
Waits longer before it starts rising Tip thermocouple, .22 = 1
Both of the above .22 and .23 both = 1
Identical to Ramrod_1 Both at default (0)

Measure deadtime directly from the trend:

  1. Start from the heat baseline with both Ramrods cooled to 75.0.
  2. Set the bit you want to compare on Ramrod_2 only.
  3. Toggle the heaters ON and note the time.
  4. Hover on each thermocouple trace to find the timestamp where it first leaves 75.0.
  5. Subtract the heater-ON time from each. The difference between the two Ramrods is the added deadtime from tip mounting.

A 20-minute span compresses the time axis enough to compare base and tip side by side. A 30-minute span shows the full settling better.

Why this matters for PID: longer deadtime forces lower controller gain and slower integral action if you want to avoid oscillation. A loop tuned on a base-mounted sensor and then moved to a tip-mounted sensor oscillates. Measure deadtime before you tune, and re-measure it any time the sensor location changes.

Restore defaults with Trigger_For_Default_Bit_Setup, and keep this pattern out of production

To wipe every setup bit back to factory state:

  1. Go to the top rung (or the bottom rung) of the Handy_Bits routine.
  2. Right-click Trigger_For_Default_Bit_Setup and select Toggle Bit.
  3. Check the number at the bottom of the Ramrod instruction. It should read 2621480.

How it works:

  • Handy_Bits is not normally scanned. Its JSR sits on a conditional rung in MainRoutine.
  • Online Toggle Bit writes straight into tag memory, so you can set or clear any RAMROD_SETUP bit from the Handy_Bits display even though its rungs never execute.
  • When you fire the trigger, the processor scans Handy_Bits once, and only once. Every bit on an OTL (Latch) instruction is written to 1. Every bit on an OTU (Unlatch) instruction is written to 0.
  • The latch and unlatch instructions in that routine are therefore the default configuration table. The trigger tag appears at both the top and the bottom of the routine, and toggling either one has the same effect.

Once the defaults are restored, walk down the rung descriptions and toggle only the bits your next test needs.

This construction is useful for teaching because it separates two things beginners confuse: tag memory (the bit boxes) and the ladder instructions that write to them. Do not use it in a production program:

  • Latch and unlatch instructions that never execute, feeding bits that are changed by hand, are unreadable to a technician troubleshooting at night.
  • Cross-reference shows multiple writers with no obvious execution path.

If you adapt the simulator for a real project, rip Handy_Bits out and write the setup word explicitly with a MOV of the default value on a documented reset condition, or manage the bits directly in the tag database.

Wire your own PID loop to the Ramrod_Simulator AOI

If you want closed-loop control before a PID-equipped version is available, import Ramrod_Simulator.L5X as an Add-On Instruction into your own project and write the loop yourself:

  1. Import the L5X and place one instance of the Ramrod instruction in a periodic or continuous routine.
  2. Map your PID or PIDE output to DAMPER_x for flow loops or to HEATER_DRIVE_x for heat loops. Use the matching TURBINE_x or THERMOCOUPLE_x as the process variable. Take the full I/O list from the memory map.
  3. Initialize RAMROD_SETUP to 2621480, or to your chosen test configuration, so that every run starts from a known plant.
  4. Before you tune, run the open-loop step tests above to get the process gain at your operating point and the deadtime.
  5. Change one setup bit at a time (trim, half heat, tip thermocouple) and watch how the tuned loop degrades. That is the skill the simulator exists to build.

The AOI is source protected. You cannot open it to inspect the internal math, so treat it as a black-box plant and characterize it from the outside with step tests, the same way you would a real process.

Stop and escalate when the problem is not the simulator: if neither the v16.03 ACD nor the L5K will open or import in your Logix version, or if no controller or emulator will accept the download, go to Rockwell Automation technical support or its knowledgebase for project conversion, emulator availability, and licensing. Also check which emulation products Rockwell currently supplies for your software version before you build a test bench around one.

FAQ

What happens if RAMROD_SETUP does not read 2621480?

At least one setup bit is off its default, so the plant no longer behaves like the reference readings. Subtract 2621480 from the displayed value and break the remainder into powers of two to find the changed bits. For example, 11010088 minus 2621480 is 2^23, meaning only bit .23 (half heat on Ramrod_2) is set. Alternatively, toggle Trigger_For_Default_Bit_Setup in Handy_Bits to restore defaults.

What happens if I change a damper from retarded to advanced trim on a tuned loop?

The process gain at the operating point jumps. With DAMPER_2 at 75, flow goes from 59.2 to 98.7 with no other change, so a loop tuned for retarded trim becomes too aggressive and can oscillate. Check the trim bits (.20/.21 for DAMPER_2, .4/.5 for DAMPER_1) before you touch the tuning.

What happens if the thermocouples stay at 75.0 after setting HEATER_DRIVE to 80?

The Heater_Disconnects are still OFF, and the drive setting has no effect until they close. Toggle Turn_Both_Heaters_ON in Operators_Controls, keep the dampers at 90 with all four fans running, and allow a few seconds of deadtime before the trace moves. The wait is longer if bit .22 (tip thermocouple) is set.

Back to blog