Sensors Edge Hub Logo
How to Scale a 4-20mA Signal in the PLC: Raw Counts to Engineering Units
Industrial Sensors · 16 min read · Jul 21, 2026 · By Rihards Niparts

How to Scale a 4-20mA Signal in the PLC: Raw Counts to Engineering Units

The HMI reads 437 psi. The gauge bolted to the tank reads 500. The scaling block "looks right" on screen. So where is the error actually hiding - the wiring, the raw count range, or the math itself?

A raw analog-to-digital count means nothing on its own. Every scaling block on every platform runs the same linear formula, and every scaling bug is that formula going wrong in one of three specific places. Once you know the formula and where it breaks, you can hand-check any 4-20mA conversion in under a minute.

TL;DR: Every 4-20mA scaling block runs the same linear interpolation: Engineering Value = ((mA - 4) / 16) x (Scale_max - Scale_min) + Scale_min. A 12 mA reading on a 0-1000 psi transducer works out to ((12 - 4) / 16) x 1000 = 500 psi. The PLC never sees milliamps directly - it sees raw counts from its analog-to-digital converter, and resolution depends on card bit depth: 12-bit spans 0-4095 counts (3.9 microamps/count), 14-bit spans 0-16383 counts (0.98 microamps/count), 16-bit spans 0-65535 counts (0.24 microamps/count), though noise typically knocks a "16-bit" card down to 13-14 effective bits (NotebookLM, Analog Signal Standards notebook, 2026).

This piece pairs with the 4-20mA vs 0-10V guide, which covers the base signal and its live-zero rationale, and with the NAMUR NE 43 guide for what a reading outside the normal band actually means. If you're deciding between controller platforms before you get to scaling at all, PLC vs PAC vs RTU is the place to start.

What Is the One Formula Behind Every 4-20mA Scaling Block?

Every 4-20mA scaling instruction, on every platform, runs the same linear interpolation: Engineering Value = ((mA_reading - 4) / 16) x (Scale_max - Scale_min) + Scale_min (NotebookLM, Analog Signal Standards notebook, 2026). Learn this one line and you've learned every vendor's scaling block at once.

Each term does a specific job. Subtracting 4 first removes the live-zero offset, since 4mA represents 0 percent of range, not 0mA. Dividing by 16 normalizes the reading against the full functional span of the signal, because 20mA minus 4mA equals 16mA. Multiplying by the engineering span and adding the minimum stretches that normalized fraction back out into real units - psi, gallons per minute, degrees, whatever the transducer measures.

Run the numbers on a worked example. A pressure transducer covers 0-1000 psi across its full 4-20mA range. At 12 mA, the formula gives ((12 - 4) / 16) x 1000 = 500 psi (NotebookLM, Analog Signal Standards notebook, 2026). Halfway up the current span lands exactly halfway up the engineering span, which makes sense - the relationship is linear from end to end.

Collapse Allen-Bradley's SCL, Siemens' FC105 SCALE, and Omron's YAWSCL down to their math, and they're the identical formula wearing three different names. An engineer who understands this line doesn't have to relearn scaling every time a project switches platforms - only the instruction name and the module inputs change.

Citation capsule: Every 4-20mA scaling block runs Engineering Value = ((mA_reading - 4) / 16) x (Scale_max - Scale_min) + Scale_min, regardless of vendor. A 12 mA reading on a 0-1000 psi transducer scales to exactly 500 psi (NotebookLM, Analog Signal Standards notebook, 2026).

What Does the PLC Actually See - Raw Counts, Not Milliamps?

The analog input card never reads "12 mA." It reads a raw digital count from its own analog-to-digital converter, and the scaling block's real job is translating that count back into the formula above (NotebookLM, Analog Signal Standards notebook, 2026). Milliamps are the label engineers talk in; counts are what the hardware and firmware actually pass around.

That distinction matters the moment something looks wrong. The ADC maps the 4-20mA span onto a count range set by the card's resolution - more on that in the next section - and the scaling instruction's input range has to match that count window exactly. Get the window wrong and the reading shifts, even though the milliamp signal arriving at the terminal is perfectly correct.

Illustration of a field transmitter on a pipeline connected by a long cable-tray run to a distant control building, where the current signal becomes a number

In practice, a common trap is treating the milliamp figure as the thing to debug, when the raw count register is the one that actually tells you what the card believes it's measuring. Pull up the raw count in the programming software before you trust anything downstream of it - the scaling block can only be as accurate as the count feeding it.

Citation capsule: An analog input card measures a raw digital count from its analog-to-digital converter, not milliamps directly - the scaling instruction's job is converting that count back into an engineering value using the linear formula (NotebookLM, Analog Signal Standards notebook, 2026).

12-Bit vs 14-Bit vs 16-Bit: Why Does Resolution Matter?

Card resolution sets how finely the 16 mA span gets sliced into discrete counts. A 12-bit card spans 0-4095 counts at 3.9 microamps per count, a 14-bit card spans 0-16383 counts at 0.98 microamps per count, and a 16-bit card spans 0-65535 counts at 0.24 microamps per count (NotebookLM, Analog Signal Standards notebook, 2026).

The resolution formula is simple: microamps per count equals 16 mA divided by (2^n - 1), where n is the card's bit depth (NotebookLM, Analog Signal Standards notebook, 2026). More bits means more counts across the same 16 mA span, which means each count represents a smaller slice of current - and a finer distinction between two nearly identical process values.

That precision matters most on small-span or high-accuracy loops. A temperature transducer covering a narrow 10-degree window benefits enormously from a 16-bit card's 0.24 microamp resolution; a wide-span level transmitter may never notice the difference between 12-bit and 16-bit in practice.

Here's the caveat competitors leave out: a "16-bit" card rated for 65,536 counts typically delivers only 13-14 effective bits once electrical noise is factored in (NotebookLM, Analog Signal Standards notebook, 2026). The advertised resolution assumes a perfectly clean signal, and real plant wiring is never perfectly clean.

Analog Input Resolution: 12-Bit vs 14-Bit vs 16-Bit Bar height reflects bit depth, not a linear count scale - counts and uA/count labeled per bar 12-bit 0-4095 counts 3.9 uA/count 14-bit 0-16383 counts 0.98 uA/count 16-bit 0-65535 counts 0.24 uA/count effective 13-14 bit Source: NotebookLM, Analog Signal Standards notebook
Advertised bit depth sets the theoretical resolution, but noise erodes a 16-bit card down to roughly 13-14 effective bits (NotebookLM, Analog Signal Standards notebook).

Citation capsule: Resolution follows microamps per count = 16 mA / (2^n - 1): 3.9 uA/count at 12-bit, 0.98 uA/count at 14-bit, 0.24 uA/count at 16-bit. A card rated for 16-bit resolution typically delivers only 13-14 effective bits once electrical noise is accounted for (NotebookLM, Analog Signal Standards notebook, 2026).

How Does the 250 Ohm Resistor Turn Current Into a Countable Voltage?

Most analog input cards don't measure current directly. They drop the 4-20mA loop across a precision resistor, commonly 250 ohm, producing a 1-5V range, and digitize that voltage instead (NotebookLM, Analog Signal Standards notebook, 2026). The ADC then converts that voltage into the raw count the scaling block reads.

Some cards carry the resistor built in; others need it wired externally across the input terminals. Either way, the math is fixed: 4mA times 250 ohm equals 1V, and 20mA times 250 ohm equals 5V. Whatever the card's ADC does with that 1-5V window sets the raw count range the scaling instruction has to match.

Loop supply headroom matters here too. The supply has to overcome the total loop resistance - wire, resistor, and transmitter burden combined - to push the full 20mA through at the top of range. A long cable run with too little supply voltage degrades accuracy before the signal ever reaches the ADC (NotebookLM, Analog Signal Standards notebook, 2026).

Noise on that voltage stage gets filtered before digitizing. A 0.1 microfarad capacitor across the receiver's input terminals knocks down high-frequency noise, and a 1 microfarad or larger capacitor targets 60 Hz noise from nearby power wiring. Some modules, including Siemens' AI 8xU/R/RTD/TC on the S7-1500, offer configurable built-in filtering instead of relying on discrete capacitors (NotebookLM, Analog Signal Standards notebook, 2026).

Signal Chain at the 12 mA Example Point Transmitter to loop to resistor to ADC to scaling block - value at every stage for a 0-1000 psi transducer Transmitter 12 mA 250 ohm Resistor 3 V ADC mid-scale count Scaling Block 500 psi Current becomes voltage, voltage becomes a raw count, count becomes engineering units Source: NotebookLM, Analog Signal Standards notebook
Every stage of the signal chain at the 12 mA / 500 psi worked example: 12 mA becomes 3V across a 250 ohm resistor, becomes a mid-scale raw count, becomes 500 psi (NotebookLM, Analog Signal Standards notebook).

Citation capsule: A 250 ohm precision resistor converts a 4-20mA loop into a 1-5V range before an ADC digitizes it, with 0.1 uF capacitors filtering high-frequency noise and 1 uF or larger capacitors targeting 60 Hz noise at the receiver terminals (NotebookLM, Analog Signal Standards notebook, 2026).

How Do You Scale an Analog Input on Allen-Bradley, Siemens, and Omron?

The formula never changes across platforms - only the instruction name and module numbers do. Allen-Bradley ControlLogix and CompactLogix scale with the SCL instruction in RSLogix or Studio 5000, reading 1756-IF16 or 1756-IF8 modules; Siemens S7-1200/1500 uses FC105 SCALE in TIA Portal with AI 4xU/I/RTD modules; Omron NJ/NX uses YAWSCL in Sysmac Studio with NX-AD units (NotebookLM, Analog Signal Standards notebook, 2026).

A worker at an open electrical cabinet beside a process tank on the plant floor, where the analog input card and its raw range configuration live

Each instruction wants the same two pieces of configuration: the raw input range and the engineering output range. The engineering range is whatever the transducer's datasheet specifies - 0-1000 psi, 0-500 GPM, whatever it measures. The raw input range is the part that trips people up, because it has to match the card's actual electrical range, not a number copied from a different project.

That's the single most important habit in this whole guide: never assume the raw range from memory or from a template project. Confirm it against the module's own documentation before you enter it into SCL, FC105 SCALE, or YAWSCL. If the Siemens vs Allen-Bradley input cards comparison is useful for discrete I/O differences between these two vendors, the same "check the datasheet, don't assume" discipline carries straight over to analog scaling.

I've seen a scaling block copied wholesale from an older project onto a new one, raw range and all, because the two projects "used the same card." They didn't - one module had different firmware defaults for its input range. The engineering values it produced were close enough to look plausible and wrong enough to matter, which is a worse combination than an obviously broken reading.

Citation capsule: The scaling formula stays identical across vendors - Allen-Bradley's SCL instruction on 1756-IF16/1756-IF8 modules, Siemens' FC105 SCALE on AI 4xU/I/RTD modules, and Omron's YAWSCL on NX-AD units all configure the same raw-input-to-engineering-output relationship, just under different names (NotebookLM, Analog Signal Standards notebook, 2026).

What Does the Scaling Line Look Like, and Where Does It Break?

Plot milliamps against percent of engineering span and the correct relationship is a straight line running from (4 mA, 0 percent) to (20 mA, 100 percent). The most common scaling bug draws a second, wrong line instead - one that starts at (0 mA, 0 percent), as if the signal were 0-20mA rather than 4-20mA.

That single mistake shifts the whole line, not just one end of it. At 12 mA, the correct line reads 50 percent - our 500 psi worked example. The wrong line reads 60 percent at the same current, because it treats the full 20mA as the top of a 0-20 span instead of a 16mA span starting at 4. The error isn't a one-time glitch; it's proportionally wrong at every single point on the line.

The Scaling Line: Correct vs. the Classic Missing-Offset Bug x-axis: 0-20 mA. y-axis: 0-100 percent of engineering span 0 4 12 20 Current (mA) 0% 50% 100% 12 mA = 50% = 500 psi wrong: 60% correct line: 4-20 mA wrong line: 0-20 mA Source: NotebookLM, Analog Signal Standards notebook
The correct line starts its rise at 4 mA; the classic missing-offset bug starts it at 0 mA instead, producing a proportionally wrong reading at every point (NotebookLM, Analog Signal Standards notebook).

That plotted line doubles as a one-minute hand-check. Note the mA reading, note what the HMI shows, and see which line it falls on. In practice, a wrong reading almost always traces back to one of three corruptions of this single line: a raw count window that doesn't match the card's real range, a missing 4mA offset (the wrong-line bug above), or integer math that truncates the fractional part before it reaches the display. Each leaves its own signature - a window mismatch produces a reading that's off by a fixed ratio across the whole range, a missing offset shows the exact "always 60 percent instead of 50 percent" pattern above, and truncation shows up as a reading that's a little low and inconsistent, never a clean multiple of anything.

If the noise on the loop itself is what's driving a reading toward the wrong side of a boundary, rather than the scaling math, that's a separate problem - see troubleshooting 4-20mA loop noise before you start second-guessing the scaling block.

Citation capsule: The correct 4-20mA scaling line runs from (4 mA, 0 percent) to (20 mA, 100 percent); the classic missing-offset bug draws a second line starting at (0 mA, 0 percent) instead, reading 60 percent where the correct value is 50 percent at 12 mA - a proportional error across the entire range, not a one-time glitch.

Why Is 4mA "Live Zero," and What Does an Out-of-Range Reading Mean?

4mA is 0 percent of the engineering span by design, and 0mA is never a valid reading - it signals a broken wire or a dead loop, not a legitimate 0 percent value (NotebookLM, Analog Signal Standards notebook, 2026). Any scaling block that treats 0mA as "0 percent" is quietly hiding a wiring fault instead of flagging one.

A common trap sits right here: clamping a scaling block's output at the low end so an out-of-range signal just reads as the engineering minimum. That looks tidy on an HMI, but it erases the difference between "the process is genuinely at its floor" and "the wire is cut." NAMUR NE 43 exists specifically to formalize that distinction, defining a valid measuring range of 3.8-20.5 mA, with faults declared at or below 3.6 mA and at or above 21.0 mA (NotebookLM, Analog Signal Standards notebook, 2026). The NAMUR NE 43 guide covers the full six-zone map and why manufacturers' exact fault values vary.

Whether your scaling logic clamps an out-of-range count to the nearest valid value or raises a discrete fault flag is a design choice for your specific process - and it's a choice worth making deliberately, not by default, because clamping silently and flagging loudly produce very different downstream behavior on an HMI trend.

Citation capsule: 4mA is the live-zero point, representing 0 percent of the engineering span by design, while 0mA is never a valid measurement - it signals a broken wire or a fully de-energized loop. NAMUR NE 43 formalizes the valid range at 3.8-20.5 mA with fault zones at or below 3.6 mA and at or above 21.0 mA (NotebookLM, Analog Signal Standards notebook, 2026).

How Do You Sanity-Check a Scaling Block During Commissioning?

A commissioning sanity check needs nothing more than a loop calibrator and a pencil. Inject 4 mA, 12 mA, and 20 mA in turn, read what the scaling block reports, and compare it against the formula worked out by hand for each point.

At 4 mA, the reported value should equal exactly Scale_min - if it doesn't, the offset is wrong before you even get to the math. At 20 mA, it should equal exactly Scale_max. At 12 mA, it should land at the midpoint of the engineering span, matching the 500 psi worked example from earlier if your transducer covers 0-1000 psi. Three points, three hand calculations, and a mismatch at any one of them tells you exactly where to look next.

A step-by-step version of that check:

  1. Set the loop calibrator to source exactly 4.00 mA into the input terminals.
  2. Read the scaled value on the HMI or in the programming software's watch table, and confirm it equals Scale_min.
  3. Step the calibrator to 12.00 mA and confirm the reading matches the hand-calculated midpoint of the engineering span.
  4. Step to 20.00 mA and confirm the reading equals Scale_max exactly.
  5. If any point is off, check the raw count in the watch table against the card's documented range before touching the scaling instruction's configuration.

This isn't a one-time startup task. Re-run it any time a scaling block is copied between projects, a module gets swapped, or an HMI reading and a field gauge stop agreeing - the same three-point check that catches a commissioning error catches a drifted one just as fast.

Frequently Asked Questions

How do you scale a 4-20mA signal in a PLC?

Apply Engineering Value = ((mA - 4) / 16) x (Scale_max - Scale_min) + Scale_min inside the platform's scaling instruction - SCL on Allen-Bradley, FC105 SCALE on Siemens, or YAWSCL on Omron (NotebookLM, Analog Signal Standards notebook, 2026).

What is the formula to convert raw counts to engineering units?

First convert the raw count to milliamps using the card's resolution, 16 mA divided by (2^n - 1), then run that milliamp value through the scaling formula above (NotebookLM, Analog Signal Standards notebook, 2026).

Why does my 12-bit and 16-bit analog input give different raw counts for the same signal?

Resolution scales with bit depth. A 16-bit card slices the same 16 mA span into far more counts, 0.24 microamps per count, than a 12-bit card at 3.9 microamps per count (NotebookLM, Analog Signal Standards notebook, 2026).

How do you scale an analog input in Studio 5000 with the SCL instruction?

Configure the SCL block's input range to match the 1756-IF16 or 1756-IF8 module's raw count range, and its output range to the engineering span - the instruction then applies the linear formula for you (NotebookLM, Analog Signal Standards notebook, 2026).

Why is my scaled reading off by a constant factor?

Check for a wrong raw count window, a missing 4mA offset, or integer truncation in the scaling math - these are the three ways the formula breaks, and each leaves a distinct symptom.

Conclusion

One linear formula governs every 4-20mA scaling block, regardless of platform. Resolution - bit depth - sets how finely that line is sliced into raw counts, and noise means your 16-bit card really behaves like a 13-14 bit one. A wrong reading is always a wrong raw window, a missing offset, or truncated math running through that same line - never a mysterious failure that resists diagnosis.

Next time an HMI value and a field gauge disagree, don't guess. Inject 4, 12, and 20 mA with a calibrator, check the raw count against the card's documented range, and run the formula by hand. For the base signal these numbers ride on, revisit the 4-20mA vs 0-10V guide; for what a reading outside 4-20mA actually means, see the NAMUR NE 43 guide. For the wider picture these loops fit into, start with the industrial sensors guide.

Frequently Asked Questions

How do you scale a 4-20mA signal in a PLC?
Apply Engineering Value = ((mA - 4) / 16) x (Scale_max - Scale_min) + Scale_min inside the platform's scaling instruction - SCL on Allen-Bradley, FC105 SCALE on Siemens, or YAWSCL on Omron (NotebookLM, Analog Signal Standards notebook, 2026).
What is the formula to convert raw counts to engineering units?
First convert the raw count to milliamps using the card's resolution, 16 mA divided by (2^n - 1), then run that milliamp value through the scaling formula above (NotebookLM, Analog Signal Standards notebook, 2026).
Why does my 12-bit and 16-bit analog input give different raw counts for the same signal?
Resolution scales with bit depth. A 16-bit card slices the same 16 mA span into far more counts, 0.24 microamps per count, than a 12-bit card at 3.9 microamps per count (NotebookLM, Analog Signal Standards notebook, 2026).
How do you scale an analog input in Studio 5000 with the SCL instruction?
Configure the SCL block's input range to match the 1756-IF16 or 1756-IF8 module's raw count range, and its output range to the engineering span - the instruction then applies the linear formula for you (NotebookLM, Analog Signal Standards notebook, 2026).
Why is my scaled reading off by a constant factor?
Check for a wrong raw count window, a missing 4mA offset, or integer truncation in the scaling math - these are the three ways the formula breaks, and each leaves a distinct symptom.