HMI Programming Tutorial: Screens, Tags, Alarms, and Navigation
HMI Programming Tutorial: Screens, Tags, Alarms, and Navigation
If you have been learning PLC programming, sooner or later you will need to build the operator's window into your machine — the touchscreen or monitor that shows what the process is doing and lets an operator make decisions without writing a line of ladder logic. That is an HMI.
An HMI (Human Machine Interface) is the graphical interface an operator uses to monitor and control an automated process. It displays process values, accepts operator inputs (setpoints, start/stop commands), and shows alarms when things go wrong. The PLC runs the control logic; the HMI is the face of that logic to the person standing in front of it.
This tutorial is vendor-neutral. The concepts — screens, tags, animations, alarms, navigation — apply to every major HMI platform: FactoryTalk View, Siemens WinCC, Weintek, Ignition, and any other you will encounter. Vendor-specific syntax differs. The design decisions do not.

HMI vs PLC: Two Different Jobs
Before anything else, get this distinction clear: the PLC runs the logic; the HMI shows it.
The PLC is the brain. It reads inputs, runs your ladder or structured text, and drives outputs. It does this whether or not there is a screen nearby. A PLC that has lost communication with its HMI will keep running normally — it just will not have an operator interface.
The HMI is the window. It reads values from the PLC's memory — tags — and displays them on screen. When an operator presses a button on the HMI, the HMI writes a value to a PLC tag, and the PLC logic responds to that tag change. The HMI itself does not run the logic; it just reads and writes to the PLC.
This is why a PLC fault and an HMI fault look completely different. If the PLC faults, the machine stops (or fails safe). If the HMI faults, the machine may keep running fine — you just lose visibility. That is a big deal for safety (you cannot see a dangerous condition), but it is worth knowing the two systems are independent.
The connection between them is almost always Ethernet in modern systems, using the PLC's native protocol (EtherNet/IP for Allen-Bradley, PROFINET for Siemens) or a common protocol like Modbus TCP or OPC UA. Older systems used serial RS-232/RS-485.
Screens and Navigation
An HMI project is built from screens — sometimes called pages or displays. You design each screen in the HMI software, then deploy the project to the HMI panel or PC. The operator navigates between screens using buttons you define.
Every project needs at least:
- Overview screen — top-level view of the whole process. Think of this as the operator's home page.
- Faceplates or detail screens — one per major loop or area. Clicking a pump on the overview jumps to the pump's detail screen with its setpoints, run hours, and alarms.
- Alarm screen — dedicated page listing active and historical alarms. Operators should be able to reach this from any screen with one button press.
- Navigation bar — consistent header or sidebar with buttons to reach the main screens. If an operator has to hunt for how to get to the alarm page during an incident, you have designed it wrong.
A screen looks complex until you realise it is built from a small set of objects. Almost every HMI screen is a combination of these:
- Static text and graphics — labels, equipment outlines, pipe drawings. These never change.
- Dynamic elements — numeric displays, status lamps, tank fill indicators. These change based on tag values.
- Input objects — pushbuttons, numeric entry fields, dropdown selectors. These write to PLC tags.
Tag Binding — How the Screen Comes Alive
A static screen is just a picture. Tag binding is what makes it live.
Every dynamic element on an HMI screen is bound to a tag — a named address in the PLC memory. When you create a numeric display showing pump discharge pressure, you bind it to the tag PT101_EU (or whatever your PLC program calls it). The HMI polls the PLC for that tag's value, typically every 100–500 milliseconds, and updates the display.
The binding always works the same way, regardless of vendor:
- Drop a numeric display object onto the screen.
- Open its properties.
- In the "tag" or "connection" field, browse to or type the PLC tag name.
- Set the display format (decimal places, units, scaling if needed at the HMI level).
- Done — the display will show the live value from the PLC.
Tag binding for input objects works the same way in reverse. A write binding: when the operator enters a value and confirms it, the HMI writes that value to the bound PLC tag.
Tag Types You Will Use Most
Read tags (PLC → HMI):
- Analog values: temperatures, pressures, levels, flow rates. Displayed as numeric values or as animated fill levels.
- Discrete status: motor running, valve open, fault active. Displayed as lamps (green/red) or as animated equipment states.
Write tags (HMI → PLC):
- Setpoints: the operator's desired temperature, pressure, or level target.
- Commands: start, stop, reset, mode select (auto/manual).
- Acknowledgements: alarm ACK, fault reset.
A common beginner mistake is binding an HMI start button directly to the motor output tag. Never do this. The HMI button should write to a command bit in the PLC — for example HMI_Motor_Start_Cmd — and your PLC ladder logic reads that command bit and decides whether to actually start the motor (checking permissives, interlocks, safety conditions). The PLC stays in charge of logic; the HMI only sends commands.
Try this right now: the motor-start-stop scenario shows a machine view where a start and stop button are wired to the PLC logic. Watch how the button writes a bit, and the PLC logic determines the output — the same separation of concerns as a real HMI.
Pushbuttons, Lamps, and Numeric Entry
These three object types make up probably 80% of what you will configure on most screens.
Pushbuttons
A pushbutton writes to a PLC tag when pressed. The most important setting after the tag binding is the action type:
- Momentary — writes a 1 while held, back to 0 on release. Use for start commands that the PLC seals in.
- Toggle — writes 0 or 1 alternately on each press. Use carefully — operator can lose track of the current state.
- Set on press / reset on release — same as momentary. Some vendors call it this.
- Write value — writes a specific numeric value to a tag. Use for mode changes (write 1 for Auto, 2 for Manual, 3 for Maintenance).
Always add a label to every pushbutton showing its function and, if it is a write-value button, what value it writes. "AUTO" is clear. "Mode 1" is not.
Status Lamps
A lamp or indicator changes appearance (colour, text, image) based on a tag value. The most common is a simple two-state lamp: green when the tag is 1 (motor running), grey or red when the tag is 0 (motor stopped or faulted).
Do not make up colour meanings. The ISA-101 standard (discussed in the next section) defines colour conventions. Deviating from them on a multi-panel project creates confusion that costs incidents.
Numeric Entry and Display
Numeric displays show a tag value as a number. Numeric entry fields let operators type a value and confirm it.
For every numeric entry field, set:
- Minimum and maximum allowed values (clamp at the HMI before the value reaches the PLC).
- Number of decimal places.
- Engineering units label (°C, kPa, L/min, % — on screen, not just in documentation).
- A confirm step (press Enter or tap a confirm button) to avoid accidental setpoint changes.
Alarm Design — The Most Important Screen Nobody Reads Until It's Too Late
Alarms on an HMI exist for one reason: to tell an operator that the process needs their attention. That is it. Every alarm that does not require operator action is a nuisance alarm, and nuisance alarms are how operators learn to ignore the alarm system. A plant with 300 active alarms in normal operation is a plant where nobody responds to alarms anymore.
Good alarm design follows three rules:
- Every alarm should require an operator action. If there is nothing the operator can do about it, it is not an alarm — it is a log entry.
- Every alarm should be unique. If PT-101 high and FIC-201 deviation both trigger on the same failure, that is two alarms for one event. Rationalise them to one.
- Alarms should tell the operator what to do, not just what happened. "P-101 discharge pressure high — check control valve PCV-101 position" is more useful than "PT-101 HIGH."
ISA-18.2 Alarm Priority
The ISA-18.2 standard defines four alarm priorities that most modern HMI platforms support directly:
| Priority | Meaning | Operator response time | |---|---|---| | 1 — Critical | Immediate risk to safety, equipment, or environment | Immediate | | 2 — High | Significant process deviation, will escalate | Within minutes | | 3 — Medium | Process deviation, not immediately critical | Within the hour | | 4 — Low | Advisory, informational | When convenient |
Set priorities consistently and your operators will know that when a Priority 1 alarm fires, they stop everything. When a Priority 4 fires, they can finish what they are doing first.
ISA-101 Colour Discipline — Why Industrial HMIs Look Grey
If you have seen a professional industrial HMI, you may have noticed the screens are mostly grey. This is not laziness or lack of creativity — it is intentional and it follows ISA-101.
The principle is simple: colour means something is abnormal. In a grey, monochromatic screen, a red alarm stands out immediately. An operator in a control room can see it across the room. On a screen where every pipe, valve, and readout is a different colour, a red alarm blends into the noise.
ISA-101 colour conventions:
| Colour | Meaning | |---|---| | Grey (medium) | Normal, inactive, background | | White | Tagname, label text | | Yellow | Warning — deviation, attention required | | Red | Alarm — abnormal condition, action required | | Green | Running, open, energised | | Blue | In automatic mode | | Magenta / Purple | Override active, out-of-service |
Start from a grey background. Use green to show running equipment. Use red only for active alarms and faults. After a week of working on a well-designed grey HMI, a screen full of multi-coloured objects looks like a video game — and in an alarm situation, it becomes a liability.
Vendor Landscape: One Honest Paragraph
The concepts above apply everywhere. The software you use to configure them differs by platform. FactoryTalk View ME/SE is the Allen-Bradley ecosystem product; it integrates tightly with Studio 5000 and ControlLogix hardware and is dominant in North American manufacturing. Siemens WinCC (available as WinCC Runtime, WinCC Unified, and WinCC Flexible for older panels) integrates with TIA Portal and S7 PLCs and is common wherever Siemens hardware runs. Weintek makes popular budget-to-mid-range touchscreens and uses EasyBuilder Pro as its configuration software — widely used in machinery OEMs, especially in Asia and emerging markets. Ignition (Inductive Automation) is software-based SCADA/HMI on a subscription model, gaining fast in applications where browser-based access and historian integration matter. All of them implement the same concepts: screens, tags, alarms, navigation.
The fastest way to learn is to practise on real control logic, then map it to an interface. The batch-mixer scenario shows a multi-step process with status outputs that would map directly to a machine overview screen. The level-alarm-stack scenario has the alarm priority logic you would design the alarm screen to display.
Common Mistakes in HMI Programming
No navigation hierarchy. Fifteen screens of equal importance with no clear home page means operators get lost under pressure.
Direct output binding from HMI buttons. The HMI writes to a command tag; the PLC logic decides the outcome. Never bypass the PLC logic.
Nuisance alarm flood. Every low-oil and high-temperature condition appearing simultaneously at startup because the engineer set the alarm limits too tight. Commission the alarms live — adjust limits until only real abnormal conditions trigger.
Inconsistent units. The PLC scales temperature in °C; the HMI display is labelled °F. It happens more often than you would think. Agree on units before you build any screen.
No testing protocol. Simulating every alarm, every mode, every screen transition before go-live. An HMI that works in demo mode but drops communication when the PLC has 500 tags polled simultaneously is a surprise nobody wants on day one of production.
Frequently Asked Questions
Q: Do I need to learn vendor-specific HMI software to be employable?
A: You will eventually work in a specific platform — most jobs are either FactoryTalk or WinCC depending on geography. But the conceptual skills in this guide (tag binding, alarm design, navigation structure, ISA-101 colour discipline) transfer across all of them. Someone who understands HMI design principles can learn any vendor tool in a few days. Someone who only knows one vendor's workflow struggles when the project uses a different platform.
Q: What is the difference between an HMI and SCADA?
A: An HMI is typically a single-panel or single-machine interface. SCADA (Supervisory Control and Data Acquisition) is a system that connects multiple PLCs and HMIs across a site or across sites, with centralised monitoring, historisation, reporting, and alarm management. SCADA runs on a server; HMI runs on a panel. The boundary is blurring (Ignition, for example, is both), but the conceptual distinction holds for most industrial applications.
Q: How often should the HMI poll the PLC for tag updates?
A: For process values (temperatures, pressures, levels), 500 ms is fine — processes do not change in microseconds. For discrete status (motor running, alarm active), 200–300 ms is better. Never poll faster than the PLC can respond, and be aware that a very large number of tags polled at high rate can saturate the PLC's communications processor. Group high-rate and low-rate tags into separate update groups if your platform supports it.
Q: Can HMI software run on a PC instead of a dedicated panel?
A: Yes. Most HMI platforms have a "Runtime" that runs on a standard industrial PC or even a regular Windows computer. The hardware panel is convenient because it is ruggedised and touch-enabled, but there is no technical requirement to use one. Ignition runs entirely in a browser, which makes it accessible from any device on the network.
Q: What is an HMI faceplate?
A: A faceplate is a small, reusable screen pop-up that shows the detail for one instrument loop — its current value, setpoint, mode (auto/manual), and alarm status. When an operator clicks a motor symbol or a tank on the overview screen, a faceplate pops up showing the details for that item. Faceplates make large HMI projects manageable because you design the faceplate once and reuse it for every instance of that device type across the site.
Practice the machine logic that an HMI would sit on top of. The batch-mixer scenario is free, runs in your browser, and exercises the multi-state logic that every HMI multi-step sequence is built on.