Most analog loops that "won't tune" have a signal or scaling problem, not a gain problem. The usual night-shift fixes make it worse:
- Cranking gain or integral. If the process variable (PV) is scaled wrong, the loop is chasing a number that isn't the process. More gain means more oscillation around the wrong value.
- Adding a fudge offset in ladder. A 4-20 mA signal has a live zero at 4 mA. An offset corrects one point and leaves the span wrong everywhere else.
- Swapping the channel to the other input type. A current signal on a voltage-configured channel, or the reverse, reads garbage or reads nothing. Changing range settings without checking the wiring can also damage the input.
Get it running, then fix it properly. Work through the checks below in order. Each one tells you which reading to take and where to go next.
Check 0: Decide What Each Signal Does in the Loop
A 4-20 mA signal and a 0-10 V signal on one PID loop can play several roles. Decide which one applies before you touch the configuration. The scaling target depends on it.
| Case | 4-20 mA role | 0-10 V role | Scale both to |
|---|---|---|---|
| A | PV from a transmitter | Remote setpoint (pot, HMI, or upstream controller) | The same engineering units, for example psi or °F |
| B | PV | A second measurement (feedforward, limit, or display) | Each signal's own units. Only the PV feeds the PID. |
| C | PV | Actually an output to a VFD or valve, not an input | PV in engineering units. The 0-10 V goes on an analog output module scaled from the PID output. |
Case C is common. Many drives take a 0-10 V speed reference. If the 0-10 V device is receiving a command rather than sending a measurement, it belongs on an output channel. Stop here and move it before going further.
Check 1: Measure the Signal at the Module Terminals
Take a meter to the input terminals with the process running.
-
4-20 mA channel. Break the loop and measure in series in mA, or use a clamp-on mA meter.
- Reading is 4-20 mA and tracks the process: the signal is good. Go to Check 2.
- Reading is 0 mA: there is no loop power. A 2-wire (loop-powered) transmitter needs an external DC supply in series with the loop. A 4-wire transmitter powers its own output. Confirm which type you have from the transmitter label or manual.
- Reading is below 4 mA: the transmitter is in a fault or underrange state, or the wiring is open or high-resistance.
-
0-10 V channel. Measure across the signal and common terminals.
- Reading is steady and in range: the signal is good. Go to Check 2.
- Reading drifts or jumps: voltage signals pick up noise and ground-loop offset. Check that the source common and the module common are referenced together. Ground the cable shield at one end only.
Stop here if a supply was ever wired straight across a current input with no transmitter in the loop. The input shunt may be damaged. Swap to a spare channel or module before you trust any reading.
Check 2: Read the Raw Channel Value Online
Go online with Productivity Suite and monitor the tag assigned to each analog channel in the hardware configuration.
- Raw value changes when the signal changes: the channel type and range match the wiring. Go to Check 3.
- Raw value stuck at zero or at maximum: the channel range does not match the signal (current vs voltage), the wiring is on the wrong terminal pair, or the module is not seen in the configuration. Check the module status and the channel range setting.
- Raw value changes but in the wrong proportion: the channel range is set to the wrong span, for example 0-20 mA instead of 4-20 mA. Correct the range.
Record the raw count at the minimum and maximum of the signal. Take the full-scale count range from the module datasheet. Do not assume it from another PLC family, because resolution and count range differ between modules.
Check 3: Scale to Engineering Units
The PID compares PV to setpoint. Both must be in the same units and the same data type. Scale using linear interpolation:
EU = (Raw - Raw_min) * (EU_max - EU_min) / (Raw_max - Raw_min) + EU_min
For a 4-20 mA signal, Raw_min is the count at 4 mA, not at 0 mA. If the channel is configured as 0-20 mA, 4 mA sits at 20% of full-scale counts. Use that count as the minimum, or the whole span is offset.
In current terms:
EU = (I_mA - 4) / 16 * (EU_max - EU_min) + EU_min
Worked example. This assumes a 4-20 mA transmitter ranged 0-100 psi. At 12 mA: (12 - 4) / 16 * 100 = 50 psi. Your meter reading from Check 1 should give the same result after scaling. If it doesn't, the scaling constants are wrong.
For 0-10 V: EU = V / 10 * (EU_max - EU_min) + EU_min.
Scale once, in one place:
- If the module configuration offers per-channel scaling, use that or a ladder scaling instruction, not both. Double scaling is a frequent cause of values that look almost right.
- Write the result to a floating-point tag. Integer math truncates the result and makes the PV step, which the derivative term amplifies.
Configure the PID and Verify
- Point the PID instruction's PV at the scaled engineering-unit tag. Point the setpoint at a tag in the same units. In Case A, that is the scaled 0-10 V tag.
- Set the output range to match what the analog output channel or drive expects. Scale the output to the output module's count range from its datasheet.
- Set the action:
- Reverse acting: output rises when PV falls below setpoint. Use for heating or pressure-by-pump.
- Direct acting: output rises when PV rises above setpoint. Use for cooling.
- Run the loop at a fixed, known update interval that is faster than the process responds. Integral and derivative math depend on that interval.
- Start in manual mode. Step the output by hand and confirm PV moves in the expected direction. Switch to auto at the current output to avoid a bump.
- Begin with modest proportional gain, a long integral time, and derivative off. Then tighten.
Verification:
- Compare the scaled PV against a local gauge or calibrator at two or more points.
- Make a small setpoint step. The PV should settle without sustained oscillation, and the output should stay off its limits in steady state.
- Pull the 4-20 mA signal briefly. Confirm your logic detects underrange and puts the loop in a safe state instead of driving the output to full.
Avoid the Recurring Pitfalls
| Symptom | Likely cause | Fix |
|---|---|---|
| PV reads a negative value at the low end | Scaled from 0 mA instead of 4 mA | Use the 4 mA count as Raw_min
|
| PV is right at one point, wrong elsewhere | Offset added instead of correcting the span, or scaling applied twice | Scale once and check two points |
| Output pegs at 100% and stays there | Wrong action, or PV and setpoint in different units | Correct the action; put both in the same units |
| Noisy 0-10 V PV and a jittery output | Common-mode noise, shield grounded at both ends | Ground the shield at one end; route away from motor leads; consider moving to 4-20 mA |
| Loop tunes on the bench, oscillates in the field | Loop update interval irregular or too slow | Run the PID on a fixed interval |
| Output goes to full on a broken transmitter wire | No underrange detection | Treat a signal below 4 mA as a fault; use the threshold from the transmitter manual |
FAQ
Why does my 4-20 mA PV show a negative value on the Productivity 3000?
The scaling uses 0 mA as the zero point. Set Raw_min to the count at 4 mA, which is 20% of full scale on a 0-20 mA range, and scale with EU = (I - 4) / 16 * span + min.
Why does my PID output go straight to 100% and stay there?
Either the loop action is wrong (direct vs reverse) or the PV and setpoint are in different units, so the error never closes. Put the loop in manual, step the output, confirm the PV direction, then set the action to match.
Why does my 0-10 V input read unstable when the 4-20 mA input is fine?
Voltage signals are sensitive to ground offset and induced noise, while current loops reject most of it. Reference the source common to the module common, ground the shield at one end only, and route the cable away from drive output wiring.
When should I stop troubleshooting and call AutomationDirect support?
Stop if the meter shows a clean in-range signal at the terminals but the raw channel value stays frozen with the range set correctly. Also stop if the module reports a fault in its status, or if a current input may have been damaged by direct supply voltage. Contact AutomationDirect technical support with the module model, the channel configuration, and your meter readings.