← Articles
Trends/9 min read/ views

How to Scale HMI Trend Pens So the Screen Doesn't Lie to the Operator

Take trend axis defaults from OPC UA EURange, not 0-100. Clamping at 100% hides NAMUR NE 43 fault currents that land at -2.5% and 106.25%, plus alarm lines and commissioning checks.

TrendsHMISCADATagsTroubleshooting

A 1 °C oscillation on a 0-1000 °C axis is 0.4 pixels

Say the trend pane is 400 px tall and the axis runs 0 to 1000 °C. One degree is 0.4 px. Less than a single pixel.

The controller is working the valve continuously and the screen draws a straight line. The data is correct. The axis is wrong.

The opposite failure shows up just as often. Give every pen its own auto-scale and unrelated signals rise in the same shape. The display invents a correlation that is not in the process.

There is one point behind all of this: a trend axis is not the screen builder's taste. The numbers you need are usually already defined on the tag, and the trouble starts because nobody carried them across to the display.

Take the axis default from EURange

The AnalogItemType in OPC UA Part 8 (Data Access) does not carry only a value. It carries the properties you need to set an axis.

PropertyWhat it holdsWhere it belongs on a trend
EngineeringUnits (EUInformation)The unitAxis label
EURange (Range: Low/High)Range expected in normal operationDefault axis range
InstrumentRangeFull range the instrument can physically produceHow far to let the axis open

The wording Part 8 attaches to EURange is the interesting part: it is described as intended for automatically scaling a display such as a bar graph. The specification tells you outright that the value exists for display scaling, and engineers still retype 0 to 100 by hand on every screen.

Separating the two ranges is the whole trick. EURange is the axis default. InstrumentRange is the axis clamp. Set them to the same thing and you get the problem in the next section.

The UnitId inside EUInformation is the UN/CEFACT Recommendation 20 common code read as ASCII bytes. Degree Celsius is CEL, so 0x43 0x45 0x4C = 4408652. Pull the axis unit from the server instead of typing it and you stop seeing degC on one screen, °C on the next, and C on the third.

Clamping to 0-100% deletes the NE 43 fault signal

Scale 4-20 mA to 0-100%. NAMUR NE 43 puts instrument fault signalling outside the valid measuring range, so this is what you get.

NE 43 signalCurrentOn a 0-100% axis
Failure, downscale≤ 3.6 mA−2.5%
Valid measurement, low3.8 mA−1.25%
Valid measurement, high20.5 mA103.125%
Failure, upscale≥ 21.0 mA+106.25%

The arithmetic is (I − 4) / 16. Check it yourself. Every current the transmitter uses to say "I am broken" sits outside 0 to 100.

Pin the axis at 0-100 and 3.6 mA draws as 0% flat on the floor, 21 mA as 100% flat on the ceiling. Both look like values a healthy loop could produce. The operator reads a dead transmitter as "the tank is empty" or "the tank is full".

Open the axis to −5 to 110% and a pen leaving the band is obvious. That is my default for anything arriving from a 4-20 mA input. The screen looks slightly worse and a fault looks like a fault.

Some drivers clip to 0-100 before the value ever reaches the display, and then no axis setting will save you. Inject a real 3.6 mA at commissioning and confirm the tag arrives negative.

Decide what the trend is for first

ISA-101.01-2015 splits displays into a hierarchy, Level 1 (process area overview) through Level 4 (diagnostic and support), and asks that the project write these conventions down in an HMI style guide. Trends ride the same hierarchy. Before choosing an axis range, decide which level this trend lives on and which question it answers.

Trend useRoughly which levelScaling that fits
Operator overview1-2EURange as-is, unit shown
Loop tuning3-4Narrow band a few percent either side of the operating point
Alarm investigation3Alarm limits plus enough pre/post event time
Startup sequence2-3Digital states and analogs on one shared time base
Utility monitoring1Long window, fixed range that supports day-to-day comparison

One template will not cover all of them. Keep the shape standard; split the ranges and the pen sets.

The alarm line comes from the alarm system

If the tank level high alarm is 82%, the axis should make that relationship obvious. The real question is where the 82 comes from.

ISA-18.2-2016, and IEC 62682 which carries the same content, manages alarm limit and deadband as alarm attributes. Hard-code 82 into the display and when rationalization moves the limit to 78 the trend keeps drawing the old one. It stays that way for six months. Reference the alarm attribute, or at minimum keep a list of which screens hold a hard-coded copy.

Baseline checks for an operator trend:

  • The axis label carries the unit: %, °C, bar, kPa, A, rpm, m³/h.
  • Alarm limits are visible but not thick enough to hide the trace.
  • The normal operating band is not squeezed into a few pixels.
  • The same tag uses the same scale on related screens, and where it does not, there is a reason.

ISA-101.01 wants colour to mean state, not decoration. Put alarm red on a normal pen and red stops meaning anything on that screen.

Two or three axes, no more

Multiple axes are right when pressure, flow, and valve output have to be read together. They turn dangerous the moment each pen gets its own auto-scale.

Conditions for using them:

  • The relationship is process-relevant and expected.
  • Units sit next to the pen legend.
  • Pen colour and axis colour match.
  • Default ranges are fixed, so the screen reads the same way every time it is opened.

Keep a normal operator trend under about three numeric axes. If you need five, that is a diagnostic screen, not an operating screen.

Normalize, but say so on the screen

Percent-of-range makes valve output, level, and speed comparable on one display. It also hides real severity.

70% is 70 °C on one instrument and 700 °C on another. A normalized trend earns its place in commissioning or engineering diagnostics. Label the screen as normalized and keep the actual engineering-unit value one click away.

Do not use it on alarm investigation screens. Unless the alarm limits are normalized the same way and labelled, it only creates misreadings.

Whether to show zero

Motor current, flow, vibration, and valve output want a visible zero, because stopped, unloaded, and closed have to be readable at a glance. Values like reactor temperature, where the question is deviation around a setpoint, do better on a tight range that excludes zero.

The rule is short. Include zero when no flow, no output, or no current carries operational meaning. Go narrow when the question is how far you have drifted from the normal operating point.

Common failure modes

Auto-scale shrinks the upset

A value jumps from 20 to 60, the auto-scaled axis grows with it, and the line still looks moderate. The operator sees movement and misses severity.

For alarm-adjacent values, use a fixed scale or auto-scale with bounds. If auto-scale is allowed, show the current min and max prominently.

Pens look synchronized because the axes differ

The flow pen and the pressure pen both rise, but one axis spans 0 to 10 and the other 0 to 5000. Judging causality from shape alone is not safe.

When investigating, put related pens on comparable units or compare real numbers with the cursor readout. Check timestamps too. Similar line shapes are not evidence.

The conversion is applied twice

A Siemens S7 analog input returns 4-20 mA as raw 0 to 27648. That is 1728 counts per mA (27648 / 16). Above it, 27649 to 32511 is overrange and 32767 is overflow. The 3.6 mA from earlier arrives as −691 counts. Negative — and this is another place that must not be clipped at zero.

Trends mix live HMI tags, historian tags, and calculated tags. If the PLC block already converted to engineering units and the HMI tag divides by 27648 again, the line shape stays plausible while the numbers disagree with the faceplate. The ratio enters squared, so at small values it is easy to miss.

Check the tag source, unit, and conversion path for every pen. Put enough in the legend to identify the source, not just the display name.

Commissioning checks

  • Open the same tag on the overview screen, the faceplate, the alarm detail, and the historian trend. Compare units and scales.
  • Force or simulate values at low, normal, high, and near the alarm limit.
  • Inject a real 3.6 mA and 21.0 mA and watch whether the pen leaves the axis. Most systems fail here.
  • Confirm alarm limits and setpoints are readable at the default zoom.
  • If the HMI has a dark or high-contrast mode, check that no pen colour disappears.
  • Confirm the cursor readout shows actual value, unit, quality, and timestamp.
  • Check that a communication loss or bad quality does not render as a valid flat line.

Last thing

A trend should answer one operating question fast. If the question is stability, small movement has to be visible. If it is severity, the limits and a stable scale matter. If it is relationship, the units and axes have to be honest enough that the display does not invent one.

Next time you open a screen, start here. Pick one analog pen and check whether the axis high equals EURange.High. If it does not, find out whether anyone left on the project knows why.