HMI
HMI Programming Guide: Screens, Alarms, and Tag Mapping That Operators Actually Trust
A practical, vendor-neutral HMI programming guide covering screen hierarchy, ISA-101 layout, alarm management, and tag mapping between the PLC and the operator panel.
HMI programming is what turns a working PLC program into a system an operator can actually run. The PLC closes the loops; the HMI is where humans see what is happening, acknowledge alarms, change setpoints, and decide whether to keep producing or shut down. A great HMI prevents accidents. A bad one causes them.
This guide covers what professional HMI programmers actually do day to day: screen hierarchy, ISA-101 layout, alarm management, tag mapping between the PLC and the panel, and the security and testing practices that separate hobby projects from production-grade systems.
TL;DR — Key Takeaways
What is HMI Programming?
An HMI (Human Machine Interface) is the screen — a panel-mounted touchscreen, a thin client, or a PC running visualization software — that an operator uses to interact with a machine or process. HMI programming is the engineering work that produces that interface:
The graphical part is the most visible, but on a real project it is usually 30–40% of the work. The rest is tag architecture, alarm rationalization, and integration testing.
HMI vs SCADA vs DCS — Quick Disambiguation
| System | Scope | Typical Software |
|---|---|---|
| HMI | One machine or skid, local panel | Siemens WinCC Comfort, Rockwell FactoryTalk View ME, Pro-face GP-Pro EX |
| SCADA | Plant-wide supervision, multiple PLCs, historization | Ignition, FactoryTalk View SE, Wonderware/AVEVA, WinCC Unified |
| DCS | Tightly integrated control + visualization for continuous process | Emerson DeltaV, Honeywell Experion, ABB 800xA |
Screen Hierarchy: The ISA-101 Four-Level Model
ISA-101 defines a four-level screen hierarchy that has become the de-facto standard for industrial HMIs:
A common rookie mistake is to put everything on Level 2 and skip the overview. Operators then lose situational awareness during upsets because they cannot see the whole plant on one screen.
The ISA-101 Color Palette (and Why It Looks Boring)
New HMI screens often look dramatic — black backgrounds, bright green pipes, blinking red lights. ISA-101 deliberately rejects that style. The recommended palette is:
The reason: when everything is colorful, nothing stands out. Reserving color exclusively for abnormal conditions means a single yellow indicator on an otherwise gray screen instantly draws the operator's eye. Studies by the Abnormal Situation Management Consortium have shown 30–40% faster operator response times on ISA-101-style HMIs versus traditional "Christmas tree" screens.
Tag Mapping: Connecting the HMI to the PLC
Every dynamic element on an HMI screen — a numeric value, an animated pump, a button, an alarm — is bound to a tag in the PLC. Good tag mapping is the single biggest determinant of whether an HMI project stays maintainable.
The golden rules
Pump_101.Run or Tank_201.Level_PV, never to %I0.3 or N7:42. If the I/O moves, the screens still work.REAL for analog values, BOOL for digital, INT or an enum for states. Mixing types between PLC and HMI causes silent rounding or truncation.Pump_101.Run, Pump_101.Fault, Pump_101.Hours. The HMI faceplate then binds to the structure once.degC, bar, %) as a tag property so the HMI can display it without hardcoding.Example: a pump faceplate
PLC UDT: PumpControl
Run : BOOL // operator command
Running : BOOL // confirmed feedback
Fault : BOOL // any fault active
FaultCode : INT // 0 = none, 1 = overload, 2 = no flow
RunHours : REAL // accumulated run time
InterlockOK : BOOL // safe to startHMI faceplate bindings:
Start button → Pump_101.Run (write BOOL)
Status lamp → Pump_101.Running (animate fill color)
Fault banner → Pump_101.Fault (visible when TRUE)
Fault message → Pump_101.FaultCode (lookup table → string)
Hours display → Pump_101.RunHours (numeric, 1 decimal)
Start enable → Pump_101.InterlockOK (button greyed out when FALSE)
Notice how the start button is greyed out when the interlock is not satisfied. That single design choice prevents dozens of "I pressed start and it did not work" support calls.
Alarm Visualization and ISA-18.2
Alarms are the most safety-critical part of an HMI. The relevant standard is ISA-18.2 / IEC 62682 Management of Alarm Systems for the Process Industries, complemented by EEMUA 191 in Europe.
The four alarm priorities
| Priority | Color | Operator Response Time | Typical Use |
|---|---|---|---|
| Low | Yellow | < 30 min | Trend deviation, advisory |
| Medium | Orange | < 10 min | Process value out of range |
| High | Red | < 3 min | Safety-related, production impact |
| Critical | Magenta + flash | Immediate | Shutdown trigger, safety system trip |
Alarm rationalization checklist
Before adding an alarm to the HMI, ask:
A well-rationalized system averages fewer than 1 alarm per 10 minutes per operator in steady state. If your alarm list is full, the answer is rationalization, not bigger screens.
Animation: Showing State, Not Decoration
HMI animation should communicate state, not draw attention for its own sake.
Security and User Roles
Modern HMIs support role-based access control. A typical setup:
Every privileged action should be logged with username, timestamp, old value, and new value. This is mandatory for FDA 21 CFR Part 11 in pharma and increasingly expected in food and beverage and energy.
Testing Your HMI Before Commissioning
A Practical Learning Path
If you are new to HMI programming, work through these in order:
You can practice the underlying PLC logic — the tag structures, the interlocks, the alarm conditions — directly in the TryPLC editor without needing a physical HMI panel. Once the PLC side is solid, the HMI work becomes mostly screen design and binding.
Summary
Good HMI programming is invisible: the operator runs the plant without thinking about the screens. Achieving that takes a structured screen hierarchy (ISA-101), a disciplined color palette, rationalized alarms (ISA-18.2), symbolic tag mapping, and rigorous testing. The graphics are the easy part — the architecture decisions you make in the first week of a project are what determine whether the HMI is still serving operators well in ten years or being torn out and replaced.
Frequently asked questions
What is HMI programming?
HMI programming is the work of designing the screens, alarms, navigation, and tag mappings that let an operator monitor and control a machine or process from a Human Machine Interface panel. It is not just drawing graphics — it covers screen hierarchy, alarm priorities, security, animation logic, and how every on-screen element is bound to a PLC tag.
Which HMI software should I learn first?
For Siemens shops, learn TIA Portal WinCC (Comfort or Unified). For Rockwell, learn FactoryTalk View ME and SE. For vendor-neutral work, Ignition by Inductive Automation is the most portable skill because it is used across many industries. The underlying concepts — screen hierarchy, alarm classes, tag bindings — transfer between all of them.
What is the difference between HMI and SCADA?
An HMI is the local operator interface for a single machine or skid, usually a panel on the equipment. SCADA (Supervisory Control and Data Acquisition) is a plant-wide system that aggregates data from many PLCs and HMIs, handles historization, and provides dashboards for supervisors. SCADA software like Ignition or FactoryTalk View SE can also act as an HMI, which is why the terms are sometimes used interchangeably.
What is ISA-101 and why does it matter for HMI design?
ISA-101 is the international standard for Human Machine Interfaces in process automation. It defines screen hierarchies (Level 1 overview, Level 2 unit, Level 3 detail, Level 4 diagnostic), a muted color palette that reserves bright colors for abnormal conditions, and consistent alarm representation. Following ISA-101 dramatically reduces operator error and is increasingly required by clients in oil and gas, pharma, and food and beverage.
How should I map PLC tags to HMI tags?
Use a single source of truth — a tag database in the PLC with descriptive names (Pump_101_Run, Tank_201_Level_PV) and import them into the HMI rather than retyping. Group tags by area or unit, keep data types consistent (REAL for analog, BOOL for digital, INT for states), and never bind an HMI element directly to a physical I/O address — always go through a symbolic tag so wiring changes do not break screens.
How many alarms should appear on an HMI screen at once?
Per the EEMUA 191 and ISA-18.2 guidelines, a well-designed system averages fewer than 1 alarm per 10 minutes per operator in steady state, and no more than 10 alarms in the first 10 minutes of a major upset. If your screens routinely show dozens of active alarms, the problem is alarm rationalization, not screen design — you need to remove nuisance alarms, set proper priorities, and add deadbands before adding more graphics.