Building a Faster
Virtual PLC
A virtual PLC only earns its place if it runs control programs quickly and predictably on ordinary industrial hardware. We measured ours against OpenPLC, the best-known open-source PLC runtime, across ten kinds of control work.
Control Seat was faster on eight of the ten. The wins spanned Boolean logic, integer math, timers, counters, and the control-loop test that comes closest to how a real process program runs.
A note on scope. These are software benchmarks in a controlled environment, not measurements of a finished controller wired to field I/O. They show where the engine stands today, not how a certified system behaves on a plant floor.
Control Seat led 8 of 10 tests
Control Seat was faster across logic, timers, counters, integer work, and realistic control loops.
| Workload | Control Seat | OpenPLC | Faster |
|---|---|---|---|
| Counters · 50 | 22 | 231 | Control Seat 10.5× |
| Timers · 50 | 25 | 162 | Control Seat 6.5× |
| Integer math · 100 | 119 | 420 | Control Seat 3.5× |
| Integer math · 1,000 | 1,339 | 4,531 | Control Seat 3.4× |
| Control loops · 100 | 118 | 219 | Control Seat 1.9× |
| Control loops · 10 | 13 | 18 | Control Seat 1.4× |
| Boolean logic · 100 | 19 | 26 | Control Seat 1.4× |
| Boolean logic · 1,000 | 192 | 254 | Control Seat 1.3× |
| Floating point · 100 | 128 | 82 | OpenPLC 1.6× |
| Floating point · 1,000 | 2,250 | 1,261 | OpenPLC 1.8× |
The number that actually matters
Counters produced the biggest headline, around ten times faster, but that is not the result I care about most. Counters are simple. The control-loop test is the one worth watching, because it mixes arithmetic, comparisons, limits, and state updates in a single pass. That is what a PLC does thousands of times a second in a running system.
Control Seat finished that workload about 1.9 times faster than OpenPLC. A synthetic loop is still synthetic, but this is the shape of real control code, and the engine handled it well.
Where OpenPLC won, and why we let it
OpenPLC came out ahead on the two floating-point tests, for a specific reason. It lets the compiler fuse a multiply and an add into one hardware step. That is quicker, but the answer can come out slightly different from one processor to the next. We do not allow that. A Control Seat program should compute the exact same numbers on every machine it runs on, so we keep the two operations separate.
When we rebuilt OpenPLC the same strict way, its floating-point lead went away. One of those tests flipped to us and the other came out a tie. We would rather stay predictable than win a row on a shortcut that changes results between processors.
Why a faster PLC is worth it
A PLC runs the same program on a fixed cycle, over and over. Every microsecond it does not spend on control logic is a microsecond left for everything else.
That headroom buys real things. The control program finishes well before its deadline even when the machine is busy, so timing stays predictable. Logging, live values, traces, and safety checks have room to run without crowding the logic. And an efficient engine means more controllers can share one industrial computer, or run on smaller, lower-power hardware.
None of that makes a PLC good on its own. Reliability, clean I/O, recovery after a fault, security, and staying consistent over months of uptime matter at least as much. A fast engine just gives the rest of the system the slack to do those jobs properly.
If you are working on controls infrastructure or evaluating software-defined PLCs, get in touch.
— Jack & Warren