NeoCore · Industrial edge runtime
AvailableNeoCore Edge Runtime: connect, run logic on site, secure the link
NeoCore is an industrial edge runtime that connects field equipment over Modbus, DNP3, IEC 60870-5-104, OPC UA, MQTT and BACnet, runs local logic on site, and supports TLS-secured IEC 104 and DNP3 communication based on IEC 62351. It is designed to add a secure communication layer in front of legacy devices that send unencrypted traffic.
TLS and IEC 62351-5 on DNP3 and IEC 104 · Modbus, BACnet/IP and MS/TP, OPC UA, MQTT · 400+ function blocks · Keeps running if the link is lost
What does NeoCore do on a site?
Secures legacy links
Runs NeoShift on site
Connects everything once
What do I need to run NeoCore?
NeoCore itself runs on Linux controllers. NeoStudio, its configuration environment, runs only on Windows. NeoStudio can simulate your function-block logic offline, but protocol drivers, I/O and real scan timing run only in the Linux runtime, either on a controller or, for testing, in the documented Debian x86 runtime inside a virtual machine.
| Component | Runs on | Notes |
|---|---|---|
| NeoCore runtime | Linux industrial controllers, x86 and ARM; Beckhoff TwinCAT/BSD | No Windows runtime. Windows CE, Win32 and QNX runtimes were removed in v5.0 |
| NeoStudio | Windows with .NET Framework 4.7.2 | Available on request. No macOS or Linux version |
| NeoPilot | Windows (64-bit .NET) | Operators can view published pages in a modern browser |
| IEC 104 Test Tool | Windows with .NET Framework 4.8.1 | Licence bound to one computer; not a full conformance test system |
- IEC 62351-5
- secure authentication on IEC 104 and DNP3, plus TLS
- Source: IEC 62351-5 PICS; IEC 104 driver manual
- 8
- concurrent DNP3 master sessions over TCP/IP
- Source: DNP3 driver manual
- 30
- Modbus master drivers per project
- Source: Modbus master driver manual
- 400+
- tested function blocks; your own in Lua or C
- Source: Logic engine manual v5.0
What is NeoCore?
NeoCore Edge Runtime is the NeoTechX software that turns a Linux industrial controller into an edge device that connects, decides and protects. NeoCore reads field equipment over industrial and building protocols, runs function-block control logic locally, and communicates with control systems and IT systems, including over IEC 60870-5-104 and DNP3 secured with TLS and IEC 62351-5 authentication.
NeoCore can read devices that use one of its supported protocols and document their data points, such as Modbus meters and drives, BACnet/IP and BACnet MS/TP controllers, OPC UA servers, EtherCAT I/O, Siemens S7 and Beckhoff TwinCAT PLCs and IEC 62056-21 meters. Compatibility with a specific device and firmware is confirmed during project scoping.
NeoCore runs logic, not only translation. Alarms, interlocks, scaling, scheduling and protocol mapping run on the device and keep running if the upstream link is lost. NeoCore is not a safety PLC.
Securing a legacy device with NeoCore
Why do integrators and facility teams choose NeoCore?
| Value | What it means |
|---|---|
| One runtime for every protocol on site | NeoCore can replace a chain of converters with one runtime, and passes events automatically between Modbus, DNP3, IEC 101/104 and MQTT without extra logic. |
| Security inside the protocol | TLS and IEC 62351-5 authentication run inside the IEC 104 and DNP3 drivers, and security counters are tags your logic and SCADA can alarm on. |
| Logic at the edge | 400+ tested blocks, Lua and C extensions, logic simulation in NeoStudio, live monitoring and forcing, and warm logic updates without stopping the device. |
| Reports first, commands when approved | When NeoShift runs on NeoCore, it starts read-only and commands only within a plan the customer signs. |
| Hardware choice | Runs on Linux controllers you may already stock, including Advantech industrial controllers and Beckhoff IPCs. Licences apply per runtime. |
How does NeoCore move data between systems?
NeoCore runs a fixed cycle: read every input from every driver, solve the logic once, write every output, repeat. The cycle time is set per project; in one documented example a 100 ms cycle did about 1 ms of work, and actual load depends on the project and hardware. Each driver keeps its own polling rate, so a Modbus meter can be read every second while logic runs every 100 ms.
NeoCore maps data between protocols with function blocks or its internal tag buffer. A value from a Modbus meter, an EtherCAT input or a TwinCAT variable can go to a control centre over DNP3 or IEC 104 and to IT systems over MQTT in the same project.
Does NeoCore send commands to our equipment?
NeoCore follows the NeoShift path whenever NeoTechX logic is in charge. During the assessment it reads the equipment and the supply side and reports; nothing is written. After the customer signs off a written plan, NeoCore issues commands automatically, limited to the points and ranges in that plan.
NeoCore behaves like any RTU when it serves your own SCADA. Commands your control centre sends through NeoCore over IEC 104 or DNP3 are yours from the first day, protected by select-before-operate and, where enabled, IEC 62351-5 authentication of critical commands.
Protocol drivers, roles and security
| Protocol | Role | Security | Key capabilities | Status |
|---|---|---|---|---|
| IEC 60870-5-104 | Slave (controlled station) | IEC 62351-5, TLS | TCP port 2404 by default; several slave instances on separate ports; optional single master IP; spontaneous, cyclic and interrogated reporting; select-before-operate with timeout; short pulse, long pulse and persistent outputs | Available |
| IEC 60870-5-104 | Master | Confirmed per project | Supported role | Available |
| IEC 60870-5-101 | Slave and master | n/a (serial) | Serial telecontrol | Available |
| DNP3 | Slave (outstation), serial or TCP | IEC 62351-5, TLS | TCP port 20000 by default; up to eight concurrent master sessions over TCP/IP (a serial link serves one master); select-before-operate; unsolicited reporting; time-sync request | Available |
| DNP3 | Master | Confirmed per project | Supported role | Available |
| Modbus RTU and TCP | Master | Network-level | Up to 30 master drivers per project; function codes 1, 2, 3, 4, 5, 6, 15, 16; 16-bit, 32-bit long and float, including byte-swapped; wake-up strings for battery-powered meters | Available |
| Modbus RTU and TCP | Slave | Network-level | Multiple instances (one per serial port, or separate TCP ports); addresses 1–255 | Available |
| BACnet/IP | Client and server | Network-level | Building controllers and BMS integration | Available |
| BACnet MS/TP | Supported (role confirmed per project) | Physical segment | Building controllers on RS-485 trunks | Available |
| OPC UA | Client and server | Per OPC UA configuration | open62541 open-source stack | Available |
| EtherCAT | Master | Physical segment | ETG-compliant I/O from several manufacturers; cyclic PDO and CoE access; no special hardware on Linux controllers; keep the cycle at or below 100 ms for typical coupler watchdogs | Available |
| Beckhoff TwinCAT ADS | Client | Per ADS routing | Read and write of TwinCAT PLC variables | Available |
| Siemens S7 | Client | Network-level | S7 PLC data access | Available |
| IEC 62056-21 | Reader | n/a | Meter reading | Available |
| MQTT | Client | TLS or frame encryption | Up to 30 MQTT drivers per project; publishes to up to eight brokers at once; QoS 0, 1, 2; raw, XML, JSON or user-defined payloads; data-model exchange with NeoPilot | Available |
| Redis, SQL (TDS), SQLite | Client | Per server configuration | Historian and IT integration | Available |
| Email publishing | Driver | Per mail server | Logic-triggered email; up to 100 recipients per driver instance; delivery diagnostics as tags | Available |
| Fatek PLC | Driver | n/a | Fatek PLC data access | Available |
Not supported: OCPP (EV chargers); Windows CE, Win32 and QNX runtimes; safety-PLC functions. Protocol support describes what the drivers implement; compatibility with a specific device is confirmed per project.
NeoCore specifications
| Area | Specification |
|---|---|
| Logic | Function-block programming with more than 400 ready, tested blocks (math, timers, counters, logic, packing and mapping, PID, filters, scaling, drive control, analog and digital alarms, run hours, chatter filter, scheduler); user blocks in Lua and C; unlimited program organisation units; explicit execution order |
| Runtime | Linux-based controllers; dedicated compiled runtime for Beckhoff TwinCAT/BSD; warm and cold logic updates without stopping; runtime monitoring and variable forcing; RTU status tool; last deployed project kept on the device for recovery |
| Logic cycle | Configurable per project; in one documented example a 100 ms cycle did about 1 ms of work (actual load depends on project and hardware) |
| Event handling | Automatic event passing between Modbus, DNP3, IEC 101/104 and MQTT |
| Telecontrol | IEC 60870-5-104 and -101 slave and master; DNP3 slave and master (serial and TCP) |
| Security | IEC 62351-5 secure authentication (HMAC-SHA-256, AES-256 key wrap, symmetric AES-256/HMAC-SHA-256 update-key change) and TLS for IEC 104 and DNP3; security statistics counters as tags |
| Redundant SCADA | DNP3 slave accepts up to eight concurrent master sessions over TCP/IP |
| IT and cloud | MQTT client publishing to up to eight brokers with TLS or frame encryption and raw, XML, JSON or custom data models; Redis; SQL (TDS); SQLite |
| Alarming | Logic-triggered emails, up to 100 recipients per driver instance, delivery diagnostics |
| Low-power devices | Poll control and wake-up strings for battery-powered meters; the processor sleeps for the unused part of each cycle |
| Local I/O (platform dependent) | Digital I/O, serial ports, CAN I/O card, hardware watchdog, status LEDs, cellular modem control with connect and signal-strength (RSSI) tags |
| Function-block state | Held on a RAM disk to avoid wear on device storage |
| Configuration | NeoStudio on Windows (.NET Framework 4.7.2), a screen per driver, simulation of logic (drivers, I/O and scan timing need the Linux runtime). Available on request. No macOS or Linux version |
| Licence | One runtime licence per controller, bound to the device; without a licence file the runtime runs for 30 minutes and then needs a controller restart |
| Limits | Linux runtime only; not a safety PLC; no real-time-kernel or microsecond-timing claims |
What hardware does NeoCore run on?
NeoCore is hardware-agnostic: it runs on Linux industrial PCs (IPCs). For field installations NeoTechX recommends only CSA-approved devices, for example IPCs from Advantech, or the Banana Pi BPI-6202 and BPI-6204. Check the CSA marking of the exact model and configuration you buy; NeoTechX does not state certification for a specific model unless the manufacturer documents it.
How does NeoCore secure DNP3 and IEC 104?
NeoCore authenticates critical commands with IEC 62351-5 on both IEC 104 and DNP3. When a master sends a critical command, NeoCore challenges it with up to 64 bytes of random data and acts only on a correct HMAC-SHA-256 response. Aggressive mode, which carries the command and its authentication in one frame, is also supported.
NeoCore encrypts IEC 104 and DNP3 traffic with TLS using X.509 certificates for the control centre and each NeoCore. Authentication statistics are tags, so SCADA can alarm on failed attempts.
| Item | NeoCore |
|---|---|
| MAC algorithm | HMAC-SHA-256; 8 or 16 octet MAC |
| Key wrap | AES-256 Key Wrap; AES-128 also supported |
| Update-key change | Symmetric AES-256 / HMAC-SHA-256 with a static update key; dynamic update-key change In development |
| User status change | Non-certificate method |
| Challenge-response; aggressive mode | Both supported |
| Users | One user with a configurable ID |
| Error messages | Transmitted; maximum count configurable |
Network exposure by deployment profile
NeoCore's network exposure depends on its job, and NeoTechX documents it per deployment rather than claiming one posture for all.
| Profile | Used for | Network behaviour | Status |
|---|---|---|---|
| NeoShift edge | NeoShift sites | Planned design: outbound-only; no listening port, no remote shell, no local management interface; per-device certificates; signed updates | In development |
| Secure RTU front end | IEC 104 or DNP3 outstation for your SCADA | Listens on the configured telecontrol port (2404, 20000) on the SCADA network; can accept a single master IP; IEC 62351-5 and TLS | Available |
| Data gateway | OT-to-IT flows | MQTT client connects outward to brokers over TLS; OPC UA server only where required on the OT network | Available |
Hardening of the NeoCore field image (no root SSH login, no default credentials, only required ports) is In development.
NeoCore runs on your premises and sends data only to the destinations you configure: your SCADA, your brokers, your databases. Services NeoTechX hosts, such as NeoShift, are hosted exclusively in Canadian data centres.
How can we buy NeoCore?
| Model | What you get |
|---|---|
| Runtime licence | NeoCore for a Linux industrial PC you supply |
| NeoCore Gateway | A CSA-approved IPC chosen with you, with NeoCore pre-configured and ready to commission |
| NeoCore OEM | Protocol stack and runtime licensed for embedding in your own RTU or gateway. NeoCore OEM |
| Configured project | NeoTechX technical specialists configure drivers, tag maps and logic to your approved design. NeoTechX delivers projects directly today; where a partner is engaged, NeoTechX supports the partner-led project |
| NeoStudio | Configuration environment for partners and integrators, available on request |
Pricing is set per project. Book a free assessment to discuss a written proposal.
Frequently asked questions
What is NeoCore Edge Runtime?
NeoCore Edge Runtime is industrial edge software from NeoTechX, a Canadian company based in Victoria, BC. NeoCore runs on a Linux industrial controller, connects field equipment over Modbus, DNP3, IEC 60870-5-104, OPC UA, MQTT and BACnet, runs local logic on site, and supports TLS-secured IEC 104 and DNP3 communication based on IEC 62351.
Which protocols does NeoCore support?
NeoCore supports IEC 60870-5-104 and -101 (slave and master), DNP3 (slave and master), Modbus RTU and TCP (master and slave), BACnet/IP and BACnet MS/TP, OPC UA (client and server), EtherCAT master, Beckhoff TwinCAT ADS, Siemens S7, IEC 62056-21, MQTT, Redis, SQL and email publishing.
Can NeoCore secure an old RTU that sends data unencrypted?
Yes. NeoCore is designed to sit in front of a legacy RTU or controller in the same panel, take its local connection, and carry its data to the control system over TLS-secured DNP3 or IEC 60870-5-104 with IEC 62351-5 secure authentication, without replacing the device.
Can NeoCore act as an IEC 60870-5-104 RTU?
Yes. NeoCore is an IEC 60870-5-104 controlled station on TCP port 2404 by default, with select-before-operate, spontaneous and interrogated reporting, clock synchronisation and optional restriction to one master IP. It supports IEC 62351-5 secure authentication and TLS.
Does NeoCore support DNP3 secure authentication?
NeoCore's DNP3 outstation supports IEC 62351-5 secure authentication with HMAC-SHA-256 and AES-256 key wrap, plus TLS. It accepts up to eight concurrent DNP3 master sessions over TCP/IP for redundant control centres; a serial port serves one master link.
Can we review NeoCore's IEC 104 implementation before purchase?
Yes. NeoTechX provides its completed IEC 104 device profile and IEC 62351-5 PICS on request by email, so an operator or integrator can review interoperability before purchase.
Does NeoCore send commands to my equipment?
When NeoShift runs on NeoCore, it starts read-only and commands only within a plan the customer signs off in writing. When NeoCore serves the customer's own SCADA as an RTU, control-centre commands pass through as with any RTU, protected by select-before-operate and IEC 62351-5.
What hardware does NeoCore run on?
NeoCore is hardware-agnostic and runs on Linux industrial PCs, such as Advantech industrial controllers, Beckhoff IPCs under TwinCAT/BSD or Linux, and Banana Pi BPI-6202 and BPI-6204. NeoTechX recommends only CSA-approved devices for field use. Raspberry Pi and BeagleBone Black are suitable for development and evaluation.
How is NeoCore programmed and licensed?
NeoCore is configured with NeoStudio for Windows, using Function Block Diagram with more than 400 tested blocks and custom blocks in Lua or C. NeoStudio is available on request. Each controller needs one NeoCore runtime licence bound to the device; without a licence file the runtime runs for 30 minutes and then needs a restart.
Tell us what is on your site.
We look at your devices and tell you plainly how NeoCore could connect or secure them. No obligation.
Sources
- Logic engine concepts manual v5.0 (2026) and logic engine catalogue v4.4
- IEC 60870-5-104 slave driver manual with IEC 62351 and TLS (2024); IEC 62351-5 PICS (March 2024)
- DNP3 slave driver manual (2026), section Multi Master Operation
- Modbus master and slave driver manuals (2026); MQTT driver manual (2026); EtherCAT master driver manual v1.0 (2026)
- Runtime guides for Beckhoff TwinCAT/BSD and Linux IPCs v1.1; Banana Pi BPI-6202; Raspberry Pi and BeagleBone Black
- NeoTechX service catalogue v4.3, section 4.1
This page describes NeoTechX products and services and how they are designed. It is not an offer, warranty or guarantee of results. Capabilities marked Pilot or In development may change. Fees, performance and data-handling terms are set only in a signed agreement.