JasperNode vs. a traditional PLC
If you program PLCs, much of JasperNode will feel familiar — tags, I/O mapping, cyclic logic, an engineering tool. But the underlying model is different in a few load-bearing ways. This page is the honest comparison: what transfers, what changes, and what a PLC still does better today.
What carries over
Section titled “What carries over”- Tags and I/O mapping. You still bind named values to device registers and organise them into a
hierarchy. JasperNode’s
factory/line1/temperatureis the same idea as a symbolic tag in TIA or a UDT member in Studio 5000. - Reading the field, running logic, driving outputs. The job is unchanged: acquire inputs, compute, command outputs, on a cycle.
- Fieldbuses you know. Modbus (TCP/RTU), EtherCAT, Siemens S7, serial — JasperNode talks the same protocols.
- An engineering environment. There is a single tool to configure I/O, write logic, watch live values and commission. It happens to run in a browser.
What is different
Section titled “What is different”1. One data model — everything is a tag
Section titled “1. One data model — everything is a tag”A PLC keeps several separate worlds: the I/O image, data blocks/tags, the program organisation blocks, hardware configuration, and HMI tags — each edited in its own editor and stored its own way.
JasperNode collapses all of that into one live tree of tags. A sensor value is a tag. A setpoint
is a tag. A connector’s configuration is a tag (__sys/node/user/connectors/modbus/<id>/config).
The operating mode is a tag. System metrics are tags. There is no separate “config store” or “I/O
table” to learn — if you can browse and edit tags, you can see and change the entire node. See
Everything is a tag.
2. Event-driven logic, not a fixed scan
Section titled “2. Event-driven logic, not a fixed scan”A classic PLC runs a cyclic scan: every program block executes every scan, top to bottom, whether or not anything changed (Siemens OB1, Rockwell continuous MainTask).
JasperNode’s Logic Cycle is event-driven. A tag script runs only when one of its declared trigger tags actually changes value. If nothing changed, nothing runs. The closest PLC analogy is an interrupt OB (an event task), not OB1. This makes data flow explicit and cheap — you are never burning a scan on logic whose inputs are static.
The trade-off is timing. An event-driven soft cycle is excellent for reactive and supervisory logic but is not hard real-time. A deterministic, time-driven High Performance Cycle (sub- millisecond, compiled) is on the roadmap for continuous control and the safety story; it is not in the current release. For today, treat the Logic Cycle as supervisory/reactive logic, and keep hard, fast, safety-rated loops on dedicated hardware. See Logic & the Logic Cycle.
3. Logic is JavaScript attached to a tag — with one writer per tag
Section titled “3. Logic is JavaScript attached to a tag — with one writer per tag”Instead of ladder, structured text or function blocks in a vendor IDE, a JasperNode script is a
small async JavaScript function that lives on a tag. It declares which tags it reads (triggers
and extras) and computes a new value for its own tag only.
That last rule is deliberate and is the biggest mental shift: a script can set only its own tag’s value. To affect another tag, you write your own and let that tag’s subscribers react. Side effects propagate through an explicit, static dependency graph rather than through scattered writes. The benefits are traceability (you can always see what drives a value), safe testing, and clean AI reasoning. The cost is that “write a dozen outputs from one routine” becomes “a dozen tags each owning their own logic”.
This pairs with an atomic-tag-set rule shared with PLC practice: in normal operation each tag has exactly one writer. If an enabled connector owns a tag as an input, scripts cannot also write it — just as you would not have two routines fighting over one output coil.
4. Development is AI-first, with test-before-deploy built in
Section titled “4. Development is AI-first, with test-before-deploy built in”A PLC change is a manual edit followed by a download. JasperNode adds a built-in AI agent that can explore the tree, write logic and configure connectors through chat — and a runtime Deploy Gate that sits in front of process-affecting changes.
Depending on the node’s mode (development / commissioning / production), a logic change is tested against synthetic or live values — and, in commissioning and production, its downstream effects are re-simulated — before a human signs off and the change flips live atomically. Every transition is written to an audit trail. This is closer to “CI with a sign-off step” than to “download to the PLC”. See The AI agent & Deploy Gate.
5. Connectors are modular and software-defined
Section titled “5. Connectors are modular and software-defined”PLC I/O is largely tied to the vendor’s hardware catalogue and firmware. JasperNode connectors are software modules you add, configure, enable and remove at runtime — physical buses (Modbus, EtherCAT, S7, serial), network/cloud endpoints (MQTT incl. Sparkplug B, InfluxDB, a Modbus slave server, an HMI server) and built-in services. New connector types can be added without changing the core runtime. See Connectors and the Connector catalog.
6. Open and observable by default
Section titled “6. Open and observable by default”Every value supports MQTT-style wildcard subscriptions (factory/+/temperature, factory/#),
optional per-tag history, and a traceable dependency graph you can walk in the UI (the Flow
Exploration view shows a value’s upstream causes and downstream effects). Data is not locked
inside a proprietary runtime — it is one tree, subscribable and exportable.
7. It runs on commodity Linux
Section titled “7. It runs on commodity Linux”JasperNode is a single binary (or container) on a standard Linux device — an ARM edge gateway, an industrial PC, or a server — not dedicated PLC hardware. That lowers cost and eases integration with IT systems, at the price of choosing and maintaining the host yourself.
Side-by-side
Section titled “Side-by-side”| Aspect | Traditional PLC | JasperNode |
|---|---|---|
| Data model | Separate I/O image, data blocks, HW config | One live tag tree; config and state are tags |
| Execution | Cyclic scan (OB1 / MainTask) | Event-driven Logic Cycle (like an interrupt OB); time-driven HPC roadmap |
| Logic language | Ladder / ST / FBD in a vendor IDE | Async JavaScript attached to a tag |
| Write model | Routines write many tags | One writer per tag; a script writes only its own tag |
| Engineering tool | Vendor desktop IDE | Browser IDE served by the runtime |
| Change workflow | Edit → download | AI-assisted edit → test → sign-off → atomic deploy + audit |
| I/O | Vendor hardware catalogue | Software connectors, added/removed at runtime |
| Hardware | Proprietary PLC | Commodity Linux (edge device to server) |
| Observability | Vendor tools, tag tables | Wildcard subscriptions, history, dependency-graph views |
Where a PLC is still ahead today
Section titled “Where a PLC is still ahead today”This is a development release; be clear-eyed about it:
- Hard real-time determinism. The shipping Logic Cycle is event-driven and soft real-time. The deterministic High Performance Cycle is roadmap. For fast, jitter-sensitive control loops, a PLC (or JasperNode’s future HPC on suitable hardware) is the right tool.
- Safety certification. JasperNode is not yet safety-certified. It targets IEC 61508 SIL-3
in a later release on certified hardware (the CODESYS Safety / TwinCAT Safety model: certified
runtime
- certified hardware + customer application). Until then it is auditably safer at the supervisory layer — through change control, mode-gated AI, atomic deploy, separation of duties and safety/non-safety segregation — but it does not replace a safety PLC for SIL-rated functions.
- Ruggedised, certified hardware with vendor support and long lifecycles is a mature ecosystem; a Linux host is your responsibility to select and maintain.
The aim is not to discard the PLC model but to keep what works (tags, I/O mapping, cyclic intent) and remove what slows teams down (siloed data, opaque change control, vendor lock-in), with AI assistance throughout.
Quick translation for PLC programmers
Section titled “Quick translation for PLC programmers”| You know it as… | In JasperNode it’s… |
|---|---|
| Symbolic tag / UDT member | A tag at a path (factory/line1/temp) |
| I/O mapping in HW config | A connector mapping row (name, space, address, direction, type) |
| OB1 / continuous MainTask | (Roadmap) the time-driven High Performance Cycle |
| Interrupt / event OB | The event-driven Logic Cycle |
| Routine / function block | A script attached to a tag |
| Online edit + download | Edit → test → sign-off → atomic deploy |
| Retentive memory | Persisted tags (non-retentive = a memory-only tag) |
| Forcing an input | Disable the owning connector, then script/UI-write the tag |