HMI shows the value ten times too small: fix the scaling

6 min read · Published November 6, 2026

A numeric object that shows 0.4 for a PLC value of 4 has a scaling fault, not a digit fault. Data type, digit count and fractional digits choose how the value is read and drawn; only the object's scaling maps the register to engineering units. Enter two known endpoint pairs, then verify at both endpoints and one mid-range value.

A numeric object that draws 0.4 while the PLC register holds 4 has a scaling fault. The data-type, digit-count and fractional-digit settings on a numeric object choose how a value is read and how it is drawn; none of them converts the register's number into engineering units, so none of them will repair a reading that is off by a clean factor of ten. The repair lives in the object's scaling settings: map the register to the display range with two known endpoint pairs, then prove the screen at both endpoints and at one value in between. The same two-pair repair and three-point check apply to any shop-floor screen or andon board that draws a value from a PLC.

What the wrong reading tells you

Match the screen to one of these before you change a setting:

  • A clean factor of ten, the same factor at every reading. 0.4 on the screen for a register value of 4 is this fault. The object has no scaling, or its pairs are off by a factor of ten. Fix it with the steps below.
  • Wrong numbers that bear no relation to the process. The panel is reading the bits under the wrong rule: a data-type or register-format mismatch. Correct the interpretation first; the fix for an HMI panel that shows nonsense numbers from a PLC BCD analog register walks through that fault.
  • Right digits, missing decimal point. A presentation choice: the fractional-digit setting is 0. One setting to change, no scaling involved.
  • Correct at one operating point, wrong everywhere else. Scaling pairs exist, but the high raw endpoint disagrees with the transmitter's real span, so the slope is bent. Re-read the span; the checks at the end of this article find it.

A wrong multiplier produces the same clean factor on any scaled signal. A Modbus voltage that reads ten times high is the same fault with the gain pointing the other way.

What each setting does

Three settings sit on a numeric object, and each has one job.

Data type. Integer, BCD, binary and octal are interpretations of the same register. Pick the one that matches how the PLC program stores the value. The wrong pick produces unrelated wrong numbers, the second symptom above.

Scaling. The linear conversion from register value to displayed engineering value. Many HMI editors supply it as a conversion type on the object, with linear and square root offered; square root is for flow computations, and a measurement like this one wants linear.

Digit count and fractional digits. Presentation. Digit count sets how many digits the value occupies; fractional digits set how many places follow the decimal. The failing screen shows the difference: a register value of 4 drawn with two digits and one fractional digit comes out 0.4, because the decimal setting arranged the digits it was given. No conversion happened, so the value was still wrong by a factor of ten.

Scaling is a straight line through two points:

displayed = low display + (register - low raw) × (high display - low display) ÷ (high raw - low raw)

Two correct pairs define any linear range, including a span that starts above zero.

Enter the scaling, pair by pair

  1. Leave the PLC value alone. A register edited to suit one screen is wrong for every other screen, alarm and calculation that reads it. If the register also feeds an alarm or an interlock, this matters twice over: fix the display, confirm the raw range at the transmitter, and keep the controlled value untouched.
  2. Confirm the register's format. The object's data type must match the PLC storage. If the value is a float spread across two word registers, read it as a float first; displaying a PLC float stored in two word registers on an HMI covers that arrangement.
  3. Open the numeric object's configuration and find its scaling tab. The tab carries a worked example of an input-to-display pair; enter your own pairs in the same shape and enable the conversion.
  4. Enter two endpoint pairs from the real measurement. Take the register's value at a known low reading and at a known high reading from the transmitter's datasheet and the PLC program, never from the symptom on the glass.
  5. Set the presentation. Digit count wide enough for the largest scaled value, fractional digits for the resolution the operator needs: one place for 0.1 steps, two places for 0.01 steps.
  6. Repeat for each object. The grams-per-liter object and the percent object each get their own pairs; they never share a span.

Example: a register holding 4 that must read 4.0 g/L

Inputs. A concentration measurement draws its reading from a whole-number register. The misbehaving screen shows 0.4 for a register value of 4 where the correct reading is 4.0 g/L, and the object's display range is 0.00 to 6.00 g/L, so the register spans 0 to 6 over the range. That gives two endpoint pairs from the measurement itself: register 0 draws 0.00 g/L at live zero, register 6 draws 6.00 g/L at the top of the range.

Rule. Slope equals high display minus low display, divided by high raw minus low raw. Displayed value equals low display plus slope times the register value minus low raw.

Arithmetic.

  • Slope: (6.00 - 0.00) ÷ (6 - 0) = 6.00 ÷ 6 = 1.00 g/L per register unit
  • Trouble point: 0.00 + 1.00 × (4 - 0) = 4.0 g/L
  • Mid-range check: 0.00 + 1.00 × (2 - 0) = 2.00 g/L

The unscaled screen drew the same register as 0.4 g/L, exactly ten times small.

Result. Enter the pairs 0 → 0.00 and 6 → 6.00 in the object's scaling tab and enable the conversion. Set a digit count of 3 with two fractional digits, so 6.00 fits with its decimals.

Decision. After download, the screen must read 4.0 at register 4, 0.00 at register 0 and 2.00 at register 2. If it still reads 0.4, the pairs landed on a different object or the conversion is not enabled on this one. If it reads 4 with no decimal, the fractional-digit setting is 0; set it to 2. The concentration object takes the same treatment with its own span: if its register spans 0 to 100 across the range, the pairs are 0 → 0.00% and 100 → 100.00%, with a digit count of 5 so 100.00 fits.

Prove it at three points

  • Low endpoint. Register 0 must draw the low display value exactly, 0.00 in the example.
  • The trouble point. The value that drew 0.4 must now draw 4.0. This is the reading the operator who flagged the screen watches first.
  • One mid-range value. Register 2 against 2.00 g/L in the example. If both endpoints pass and this one fails, the high raw pair disagrees with the transmitter's real span; re-read the span from the datasheet and re-enter the pair.
  • Zero at every point. A register that never changes and draws 0.00 everywhere is a different fault: the object is not reaching the register at all. The article on CODESYS showing 0 for Modbus TCP analog values covers that dead-value case.

Recommendation: repair a factor-of-ten reading in the object's scaling tab, with two endpoint pairs taken from the transmitter's datasheet and the PLC program, and sign the job off with three checks: the value that drew 0.4 reads 4.0, register 0 reads 0.00, and register 2 reads 2.00. Scale each signal in one place, on the object when only screens read the register and in the PLC when logic or alarms read it too, and keep the register value untouched while you work.

Questions

Should I scale in the PLC or on the HMI object?

Scale each signal in one place. In the PLC, one conversion serves the logic, the alarms and every screen, and the objects display engineering values directly. On the object, the register stays raw for logic, but each screen needs its own pairs. Never both: the two gains multiply, and a gain of 10 in the PLC plus a gain of 10 on the object turns 4 g/L into 400. If more than one screen or an alarm reads the register, scale it in the PLC.

The reading is right at 0.00 but wrong in the middle of the range. Which pair is wrong?

The high pair. The zero pair sets where the line starts and the span pair sets its slope, so a reading that is correct at zero and wrong above it has a high raw endpoint that disagrees with the transmitter's real span. On a 4-20 mA input the usual cause is taking the raw zero at 0 mA: the transmitter's live zero sits at 4 mA, which is 20 percent of span.

Can I fix the screen by dividing the PLC value by ten in the logic?

That converts a display fault into a data change. The register then holds tenths of a gram per liter for every other screen, alarm and calculation that reads it, and each one needs the same correction or it inherits the error. Change the object's scaling and leave a shared register alone unless you can account for every consumer of that value.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote