Logix has two PID instructions, and their independent gains differ by exactly 60x

This comes up often enough to be worth writing down in one place.

Logix has two separate PID instructions — not two flavours of one. PIDE from the process instruction set (function block) and the classic PID from the special instruction set (usually ladder). In the dependent form their parameters are identical: Kc unitless, Ti in minutes/repeat, Td in minutes. In the independent form they are not.

PIDE, independent:
PGain — unitless
IGain — 1/minutes
DGain — minutes

Classic PID, independent:
.KP — unitless
.KI — 1/seconds
.KD — seconds

So for Kc = 2.5, Ti = 1.5 min/repeat, Td = 0.25 min:

P: PIDE 2.5, classic PID 2.5
I: PIDE 1.6667 (1/min), classic PID 0.0278 (1/s)
D: PIDE 0.625 (min), classic PID 37.5 (s)

Same controller, same tuning, and the I and D numbers differ by exactly 60.

Paste PIDE gains into a classic PID block and the integral runs 60x faster than you intended while the derivative is 60x weaker. Proportional is untouched, which is what makes it nasty — the loop looks roughly right at first and then walks away from you. And 1.6667 is a perfectly plausible number in either unit, so it survives an eyeball review. Nothing surfaces until commissioning.

Two things worth adding:

Rockwell documents Kd = Kc · Td · 60 for the classic PID directly. The symmetric integral relation Ki = Kc / (Ti · 60) follows from the stated units, but in the pages I found it is rendered as an image rather than text — if anyone has it in citable text form, I'd like the reference.

Separate trap inside the dependent form: the tag is called IGain, but it holds a time (minutes/repeat). A larger IGain there means a slower integral — the opposite of the independent form. The name says gain, the units say time, and only one of them is right.

Sources:

PIDE algorithm, both forms: Rockwell, Perform Common Process Loop Control Algorithms Using the PIDE Instruction, logix-wp008_-en-p, pp. 2–3
PIDE tag units: Studio 5000 Logix Designer instruction reference, Enhanced PID (PIDE)
Classic PID units: Studio 5000 Logix Designer instruction reference, Proportional Integral Derivative (PID)
Kd = Kc · Td · 60: FactoryTalk Design Studio instruction reference, Using PID instructions

Has anyone here actually hit the 60x version in the field — platform migration, or tuning copied off an old drawing? Curious whether it shows up more in conversions or in new work.
 
Thanks for writing this down — the "survives an eyeball review" part is the real problem, and it generalises well beyond PID.

On your first question: I don't have the page you're after, and I'd rather say that than hand you a citation I haven't read. But the relation is derivable from the units you already listed, which makes it checkable rather than citable:

- The dependent form gives Ti in minutes/repeat. In the classic PID's independent form, KI is declared in 1/seconds. Going from "one repeat per Ti minutes" to "per second" is one division by 60 and one multiplication by Kc: KI = Kc / (Ti × 60). With your numbers: 2.5 / (1.5 × 60) = 0.0278 ✓.
- The derivative goes the other way — minutes to seconds is a multiplication: KD = Kc × Td × 60. With your numbers: 2.5 × 0.25 × 60 = 37.5 ✓.

Both come out of the same single assumption (minutes vs seconds), which is why they move in opposite directions and both land on exactly 60.

On your second question — I have no field statistics, so treat this as reasoning rather than data. My expectation is that it shows up mostly on the conversion path, because the defect needs a number to cross a unit boundary. New work normally stays inside one instruction and one unit convention. The trigger is exactly what you guessed: tuning copied off an old drawing, or a loop migrated between instructions or platforms. It is the crossing that hurts, not the instruction.

The part I'd add to your write-up is how to catch it in one commissioning step, because reading numbers is what fails here. The integral time has an operational meaning, so measure it instead: run the loop on P only with a small constant error and the output safely inside its limits, note the output step. Then add I with D off. By definition the integral term repeats the proportional term once per Ti, so the output should roughly double after one Ti. Set Ti = 1.5 minutes and watch: if it doubles in about 1.5 seconds, you are looking at the 60× version.

Worth stressing that a normal step test usually will not reveal this. The error is a factor of 60 in the *slow* direction, and it presents as a loop that looks approximately right at first and then walks away — so it fails tests that are too short and too gentle. It has to be measured under a sustained error.

The habit we carry over from this class of defect: a tuning value never travels without its unit written next to it, and nothing is accepted on the basis of the number looking plausible. If you are pasting gains between platforms, check the destination's declared time base before the paste, not after.

(PIE/PIDE tag naming — `IGain` holding a time in the dependent form — is a good catch. Names that disagree with units are how the next person inherits the bug.)
 
Top