Back to projectsMuhamad Syafiq
In development

PC-Based HMI Platform

A complete HMI product that runs on ordinary Windows PCs instead of dedicated HMI panels. Engineers draw machine screens in a designer, deploy a signed bundle to the machine PC, and a runtime service drives the PLCs and reports to a central server.

The HMI Designer editing a Manual Mode screen: an object ribbon across the top, the project tree with 12 screens on the left, the canvas with a branded title bar and five station buttons, and the properties panel showing the selected Station 1 function key set to go to the Station 1 screen.
The designer on a standard machine template: a Manual Mode screen with one function key selected, set to open the Station 1 screen.

The problem

Every machine we build needs an operator screen, and that usually means a dedicated HMI panel plus the vendor's design software and runtime licence. The panel is a closed box: limited storage, limited history, and data that is hard to get out to the rest of the factory.

Our machines already have Windows PCs on them. I wanted one platform we own end to end: a designer our own engineers author screens in, a runtime on the machine PC, drivers for the PLCs we actually use, and a path for production data to reach a central server. It is built to be sold to customers, so installers, signed bundles, licensing and updates are part of the product.

The designer, on the engineering PC

  • Ribbon of 29 object types (buttons, lamps, numeric entry, trend and bar charts, alarm lists, faceplates) plus a library of 583 shapes.
  • Every edit is a command with an inverse, so everything can be undone.
  • Compile (F5) checks the project and signs the bundle; Simulate (F8) runs the screens offline or online against the real PLC.
  • Tag import from Sysmac Studio, live tag watch and a communication log for commissioning.
  • An AI assistant that drafts a screen from a plain English or Malay prompt, which the engineer keeps or discards.

The runtime, on the machine PC

  • Drivers for Modbus TCP/RTU/ASCII, Siemens S7, OMRON FINS, OMRON NJ/NX over EtherNet/IP, OPC UA and serial or TCP instruments, all behind one driver contract.
  • A tag cache where every value carries its quality and timestamp. Bad data shows as a placeholder, never as a wrong number.
  • ISA-18.2 alarms, a historian with trends, recipes with read-back, and production and OEE modules.
  • A command gate: every write is checked against the operator's role, read-only tags are refused, and each write lands in an audit trail.
  • Northbound OPC UA server and Sparkplug B with store-and-forward, so a central server can collect from many machine PCs.
A Line 1 production screen: cycle time, good parts, rejects and yield for the shift, with bar charts of station cycle time, output per hour and rejects by reason.
A production monitor faceplate: shift yield, the bottleneck station highlighted, output per hour and rejects by reason.
Built into the designer

The AI Assistant: describe a screen, get a screen

The engineer types what the screen must do, in English or Malay. The assistant reads the project first (its screens, tags, devices, shapes and theme) and writes a plan: every object it will place and the tag each one binds to. Nothing changes until the engineer checks the plan and clicks Build. After Build, the assistant reviews its own screen and the engineer chooses Keep or Discard.

It never deploys and never writes to a PLC. Any address it could not find in the tag list is marked "Guessed", so a made-up address can't slip through, and every run shows its cost against a cap.

The AI Assistant window: the prompt asking for a Production screen 40 in the iRadar theme, the activity log showing a valid plan of 1 screen and 20 items at an estimated cost of USD 0.006, and the plan table binding value tiles to NX_Series station total tags.
Steps 1 and 2: one sentence in, a checked plan out. 20 items, each bound to a real tag in the project, for an estimated USD 0.006.
The designer after Build: a new Production screen 40 in the iRadar theme with the machine state, ten value tiles for station 1 to 5 totals and rejects, five station navigation keys and the standard footer, 44 objects and 16 bindings.
The result after Build: 44 objects and 16 tag bindings in the company theme, with keys to each station screen. The overlay shows the tag behind every value.

What engineers ask it to do

Design a screen from scratch

"Make a nice main screen in the iRadar theme. Design it yourself and decide what goes on it."

A full main screen with shift production, a station summary and navigation, laid out in the company theme.

Work in Malay

"Buat skrin 65 bernama Pengeluaran dalam tema iRadar, tunjukkan jumlah dan reject stesen 1 hingga 3."

A plan with Malay captions, each station's total and reject bound to its tag.

Edit the open screen

"Make the Stop button red and put the three motor lamps in one row under the buttons."

The screen changes as one step, so a single Ctrl+Z takes it back.

Check a screen for mistakes

One click on Checks, on the open screen.

Findings such as a missing alarm banner, or a Motor 2 control bound to the wrong tag.

Add devices and data transfer

"Add a Modbus TCP cobot named Cobot1 at 192.168.1.50 and copy its registers 200 and 201 into D300 and D301."

New device and transfer rows in the plan, each one checked before it enters the project.

Answer questions about the project

"Which tag tells me the machine state, and what do its values mean?"

The tag, its device and type, and a table of what each value means, read from the project.

Devices: one form for every PLC

Each device is a PLC, instrument or other HMI the project talks to. One form covers nine drivers, and it shows only the fields the chosen driver uses. Test connection checks the link from the designer before anything is deployed.

Device configuration: an OMRON NX_Series device over EtherNet/IP with 17 tags, and its edit form open with the driver list showing Modbus TCP, Modbus RTU, Siemens S7, OMRON FINS, EtherNet/IP, Mitsubishi MC, Beckhoff ADS, OPC UA client and Instrument.
An OMRON NJ/NX over EtherNet/IP, and the nine drivers the form offers.

Tags: names, not addresses

Screens, alarms and recipes use a tag's name, never its raw address, so a PLC address can change without touching a single screen. Every tag carries its type and unit, shows whether it is used, and can be imported from Sysmac Studio, OPC UA or a CSV.

Tag editor: 17 tags on NX_Series, all OK, with HMI_St2_Total selected showing its source, address, UInt16 type and pcs unit.
The tag editor: 17 tags on one PLC, all checked OK, with one tag open for editing.

Instruments: scales and meters without a PLC

Serial and TCP instruments such as weighing indicators and panel meters connect directly. A library holds ready profiles with every command and the address each reply fills, and a profile marked as tested has been run against the real instrument. For a new instrument, the AI can draft its profile from the maker's manual.

Instrument library: the FS-8000C weighing indicator profile, tested on the real instrument, at 9600 7E1 with commands Read weight every 200 ms, Tare, Zero, Show gross and Show net, and addresses weight in kg, status, stable and net mode.
The instrument library: a weighing indicator profile, tested on the real instrument.

How it was built

I wrote the architecture and the decisions; AI coding agents wrote most of the code under them. The work ran as a chain of short, self-contained sessions, one at a time. Each session wrote its acceptance test first, then built, tested, committed and reported. The chain stopped whenever a session hit a decision that was mine to make, such as the screen schema or the driver contract.

The first end-to-end version took seven days. The solution is now 30 projects of C#, with every session's measurements kept as evidence files in the repository.

Built with

C# / .NET 10WPFgRPC named pipesOPC UAModbus TCP/RTUSiemens S7OMRON FINSEtherNet/IPSparkplug BSQLiteWindows 11 IoT LTSC

In active development. The code is private, but I'm happy to walk through the architecture and a live demo of the designer.

Ask me about this projectSee other projects