Remove an offset in HMI scaling using PLC raw counts

5 min read · Published November 10, 2026

Enter the HMI offset in PLC raw counts, not degrees. A 500 °C bias stored in tenths of a degree is 5,000 counts, so an HMI range of -500 to 32,267 against PLC 0 to 32,767 removes only 50.0 °C and leaves the reading 450.0 °C high. Set the HMI range to -5,000 to 27,767: both spans stay 32,767 counts, the slope stays 1, and every displayed value drops by the full stored bias.

Enter the offset in PLC raw counts. A temperature tag that carries a 500 °C bias and stores tenths of a degree holds that bias as 5,000 counts. An HMI scaling range of -500 to 32,267 against PLC 0 to 32,767 therefore subtracts 500 counts, which is 50.0 °C, and leaves every reading 450.0 °C high. Enter the offset the way the PLC stores it: set the HMI range to -5,000 to 27,767. Both spans stay 32,767 counts, the slope stays 1, and every displayed value drops by the full 5,000-count bias. This page shows the arithmetic, the three-point check that verifies the mapping, and where the conversion belongs if alarms or logged data also need the true temperature.

Why 500 °C is 5,000 counts

An HMI numeric tag with scaling maps the PLC range onto the HMI range as a straight line:

displayed = HMI min + (raw - PLC min) x (HMI span / PLC span)

With PLC endpoints 0 and 32,767 and HMI endpoints -500 and 32,267, both spans are 32,767 counts, the slope is 32,767 / 32,767 = 1, and the formula reduces to displayed = raw - 500. Equal spans always behave this way: the amount the display shifts is whatever you typed at the low HMI endpoint, in raw counts.

The bias in the PLC logic was added in degrees with an implied decimal place. At ten counts per °C, 500.0 °C is 5,000 counts stored in the tag. Subtracting 500 counts removes 50.0 °C and leaves 4,500 counts, or 450.0 °C, of bias on every reading.

The same two-point line drives analog scaling all over the floor: scaling a 4-20 mA pressure transducer for an HMI display works live inputs, and converting raw ADC values to engineering units with an offset covers the offset case end to end.

Symptoms and what each points to

  • Every reading exactly 450.0 °C high. The offset went in as degrees into a tag stored in tenths: 500 counts entered where 5,000 belong, a factor of ten short.
  • Every reading ten times the true value. The implied decimal was handled twice, once in the endpoints and once in the format. HMI shows the value ten times too small: fix the scaling works that fault in detail.
  • The panel reads true but alarms, trends or logged values stay wrong. The range change touched one display object; those consumers still read the biased tag.
  • Digits look right but the point sits in the wrong place, or #### appears. Decimal position is a display-format setting, separate from scaling; PLC pressure scaling shows three decimal places covers that split.

Confirm the stored format before touching endpoints

Read the raw integer at a temperature you trust and let the subtraction find the bias.

  1. Hold the process near a reference reading, say 25.0 °C, and note the raw tag value.
  2. Convert the true temperature with the suspected factor: 25.0 x 10 = 250 counts.
  3. Bias counts = stored raw - true counts. A stored 5,250 gives 5,250 - 250 = 5,000, which matches a 500.0 °C bias in tenths.
  4. A subtraction that lands on 500 means the tag stores whole degrees and the existing HMI range was already shifting the right number of counts; look at the decimal format instead.
  5. If nothing lands on a round bias, read the rung that adds the offset in the PLC logic before editing endpoints. A guessed bias produces a temperature that looks plausible and reads wrong.

Set the HMI range in counts

  1. Open the numeric tag's scaling settings in your HMI software, the tab where the PLC range and HMI range endpoints are entered.
  2. Leave the PLC range at 0 to 32,767, the full positive span of a signed 16-bit integer.
  3. Enter the HMI range as -5,000 to 27,767: the 5,000-count bias taken off both endpoints, so the span stays 32,767 and the slope stays 1.
  4. Leave the tag type as signed decimal. The fault was offset units; a format change would alter how negative results behave at the low end.
  5. Set one decimal place in the display object's format settings, so 1,800 counts shows as 180.0. Endpoints place the value, the format places the point.
  6. Save, download the project by the panel's normal transfer procedure, and run the three-point check below.

Worked example: oven holding 180.0 °C

The tag stores tenths and the PLC logic adds a 500.0 °C bias to keep the integer positive.

  1. True reading in counts: 180.0 x 10 = 1,800 counts.
  2. Stored tag value: 1,800 + 5,000 = 6,800 counts.
  3. Old scaling, PLC 0 to 32,767 against HMI -500 to 32,267: slope 32,767 / 32,767 = 1, displayed 6,800 - 500 = 6,300 counts, shown as 630.0 °C. Error: 630.0 - 180.0 = 450.0 °C high.
  4. Corrected scaling, PLC 0 to 32,767 against HMI -5,000 to 27,767: slope still 1, displayed 6,800 - 5,000 = 1,800 counts, shown as 180.0 °C. Exact.

Endpoints move the same way: raw 0 shows -500.0 °C and raw 32,767 shows 2,776.7 °C, each 5,000 counts below storage. Raw 5,000 shows 0.0 °C, the bias point.

Verify at three raw values

  • Bias point: raw 5,000 must show 0.0 °C.
  • Process point: raw 6,800 must show 180.0 °C.
  • Full scale: raw 32,767 must show 2,776.7 °C.

Keep the raw integer visible on a second panel while you commission so a mapping error can't be mistaken for a process change. When the three points agree and the decimal sits one place right of the last digit, the scaling is finished.

Where the offset belongs long term

The range shift corrects one display object. The tag still carries 5,000 counts of bias, so an alarm tuned on the displayed number trips 500.0 °C off, trends and logs stay biased, and a second panel on the same register inherits the same problem. Decide once where the conversion lives:

  • Display-only need on one panel: the range shift above is the whole job.
  • Alarms, logging or any second consumer: subtract in the PLC once, beside where the bias is added, and correct every consumer the same way. Test alarm limits against known values before enabling them.

Recommendation: Enter every scaling offset in raw counts, multiplying the degree value by ten for a tag stored in tenths. For this case set HMI -5,000 to 27,767 against PLC 0 to 32,767, keep both spans at 32,767 counts, leave the tag type and PLC logic untouched, and verify the result at raw 5,000, 6,800 and 32,767. Move the conversion into the PLC only when alarms or logged data need the true value too, and then move it for every consumer at once.

Questions

What if the tag stores hundredths of a degree?

Multiply the degree bias by 100. A 500 °C bias in hundredths is 50,000 counts, which exceeds the 32,767 maximum of a signed 16-bit integer, so the bias cannot ride in the same register at that resolution. That overflow is one reason bias tricks are done in tenths. With a hundredths tag, the offset has to run as a 32-bit value or be split in the logic, and the subtraction check in this article exposes it at once: the stored value will not fit.

What does the tag hold for a below-zero reading?

The bias keeps doing its job. A true -10.0 °C is -100 counts in tenths; add the 5,000-count bias and the tag stores 4,900. The corrected HMI mapping gives 4,900 - 5,000 = -100 counts, displayed as -10.0 by a signed decimal tag. If the display clips the sign or wraps to a huge number, the tag type is unsigned or the format hides negatives, and that has to be fixed before the scaling can be trusted.

Can the HMI span differ from the PLC span?

Yes, but the slope then stops being 1 and every count scales by the span ratio. Mapping PLC 0 to 32,767 onto an HMI span of 16,383 halves every value, which makes a decimal mistake and a span mistake hard to tell apart. Keep the spans equal whenever the conversion is a pure shift, and save unequal spans for real rescaling jobs such as a 4-20 mA input, where the endpoints come from the instrument range.

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