How to Commission Analog Scaling Without Trusting the HMI Number
A field walkthrough for analog scaling: ranges, engineering units, Modbus word order, NAMUR thresholds — so PLC, SCADA, HMI and historian agree.
The HMI number can be wrong everywhere at once
The operator screen reads 47.3 bar. The trend agrees, the alarm is quiet, and the transmitter in the field is actually sitting at 74 bar because someone entered the span backwards in the PLC. Nothing looks wrong until the vessel does. That is the trap with analog scaling: a bad range still produces a believable number at every layer — PLC, SCADA, HMI, historian — so no single screen catches it.
An analog tag is not finished when the value shows up on the HMI. The number carries a contract from the field instrument all the way to the alarm logic and the historian, and every hand-off is a place that contract can break silently.
For each analog point, write down:
- Raw input range — 4–20 mA, 0–10 V, a pulse rate, or a raw register value.
- PLC scaling range and engineering units.
- SCADA tag type, precision, and display format.
- Alarm setpoints, and whether they live in process units or raw counts.
- Historian storage units and compression deadband.
- Any unit conversion used downstream for MES, reports, or dashboards.
Most scaling defects are trivial in isolation. They get expensive because six layers each show you something plausible.
Test the raw, scaled, and displayed value separately
Put three columns on your commissioning sheet — raw value, scaled process value, displayed value — and drive the loop through them.
| Check | Example | What it catches |
|---|---|---|
| Low signal | 4 mA equals 0.0 bar | Wrong zero, live-zero handling, bad range entry |
| Mid signal | 12 mA equals 50.0 bar | Reversed spans and integer truncation |
| High signal | 20 mA equals 100.0 bar | Wrong full scale or display clamp |
| Overrange | 21 mA shows bad quality, not 100 bar | Hidden clamping that masks instrument faults |
| Underrange | 3.6 mA shows bad quality, not 0 bar | Broken-wire detection and alarm behavior |
Don't sign off on one operating point. A transmitter that reads dead-on at 30 bar can still have the wrong span — you only see it at the ends, so walk the loop low, mid, high, and past both ends.
For the fault points, use real thresholds instead of eyeballing them. NAMUR NE43 defines the standard failure signaling for 4–20 mA loops: the usable measurement range is 3.8–20.5 mA, a downscale (low) fault is ≤ 3.6 mA, and an upscale (high) fault is ≥ 21 mA. Configure the analog input card to flag those as bad quality — do not clamp them back into range. Clamping is exactly how an instrument fault gets laundered into a normal-looking value.
Decide who owns the unit conversion
Projects mix units without noticing: °C and °F, bar and kPa, L/min and m³/h, mm and inch. The conversion needs one owner, or it happens twice and cancels — or worse, happens twice and doesn't.
There are really three places it can live:
- PLC owns process units. SCADA reads already-scaled engineering values. Clean for control and alarms.
- SCADA owns display units. The PLC keeps vendor-native values and the HMI converts for operators. Fine for monitoring-only, risky the moment an alarm depends on it.
- Historian or reporting owns business units. Process units are stored, reports convert to production units. Lets you change a report without touching control logic.
My default is the first one: the PLC holds engineering units and everything downstream reads them. Control and alarms then run on a single number, and you are not maintaining the same bar-to-kPa factor in three tools that will eventually disagree. Convert for display only when the value is monitoring-only — never for one an alarm trips on. And if a tag is called TankLevel_m, don't let a screen quietly draw it in feet without a label.
Scaling bugs are usually data-type bugs
Before you suspect the transmitter, suspect the bytes.
- Is the PLC register signed or unsigned? A 40000-count reading wraps to a negative number the moment it's read as signed 16-bit.
- Is the Modbus value 16-bit, 32-bit, float, or a scaled integer like a VFD speed reference?
- Check word order on every 32-bit float. Modbus never standardized how a float splits across two registers, so you will meet big-endian (ABCD), little-endian (DCBA), and both byte-swapped middle-endian variants (BADC, CDAB). Schneider/Modicon and the Enron/Daniel conventions disagree on purpose. A wrong order usually shows as a wildly large number or a stuck near-zero — not a small offset.
- Grep the PLC logic and gateway expressions for integer division.
raw / 100in integer math throws away the fraction before you ever scale it.
More decimal places are not better data. Showing three decimals on a ±0.5% pressure transmitter is a lie — the last two digits are noise the operator will chase. Display what the instrument can actually resolve, store enough for analysis, and don't put a high-resolution value into a historian tag configured as an integer.
A valid zero and a dead signal are not the same
A process zero and a failed signal both read 0.0, and confusing them is how a stuck flow meter looks like an empty pipe. This bites hardest on tanks, flows, pressures, and temperatures that legitimately sit near zero.
Commission these states on purpose and confirm each one shows as bad quality, not a clean value:
- Instrument disconnected.
- Input module underrange or overrange.
- PLC scaling block faulted.
- Comms lost between PLC and SCADA.
- Gateway serving stale data.
- Manual override or simulation active.
The HMI has to show quality, not just value, and the historian has to keep enough quality to later explain why a trend went flat, missing, or pinned.
Fix scaling before you touch the alarms
Tune alarms after scaling is proven, never before — otherwise you're tuning around a wrong signal and you'll re-tune everything once the scaling is fixed.
Then check that:
- Setpoints use the same units the operator sees.
- Deadband suits the noise on the scaled signal, not the raw counts.
- Rate-of-change alarms use the right time base.
- High-high and low-low limits sit inside the instrument's valid range — a HH above 20 mA never trips.
- Any alarm message with a number in the text carries its unit.
- Bypass and maintenance modes don't also suppress bad-quality indication.
If the PLC alarms in raw counts, put the engineering-unit equivalent in the alarm list too. Nobody investigating at 2 a.m. should have to reverse a register count into pressure.
Trend it during the loop test — historians hide scaling errors
Historians make scaling mistakes look normal, because a wrong-but-consistent scale still draws a smooth line. So move the signal deliberately during the loop test and watch the history:
- Trend raw and scaled side by side while the loop is stroked.
- Confirm historian units match HMI units.
- Set the compression deadband on the scaled value, not the raw one — 0.5 mA of deadband means something different after scaling.
- Check that backfilled and store-and-forward values used the same scaling version.
- Log the effective date of any range change.
Changing a range after startup is not an HMI edit — it changes how old and new data compare. For anything feeding production or quality records, the effective date is the only thing that lets you read the trend across the change.
The failure modes you'll actually meet
- A 0–10 V input configured as a 4–20 mA loop.
- A transmitter ranged 0–16 bar while SCADA assumes 0–10 bar.
- A 32-bit float with the word order reversed.
- A gateway clamping bad values to zero without setting bad quality.
- The HMI showing percent while the alarm runs in engineering units.
- Compression deadband left at its pre-conversion width after a unit change.
- A report converting units a second time because the tag name never carried one.
What to keep per tag
For every signal that matters, keep one compact record: tag name and description; instrument range and calibration date; raw signal or register format; PLC scaling expression or block reference; engineering units and display precision; alarm limits and deadband; historian tag, units, and compression; the tested values at low, mid, high, underrange, and overrange; and who witnessed it, when.
The day someone swaps the transmitter, migrates the HMI, or asks why the production report doesn't match the operator screen, that record is the only place the original contract still exists.