Protocols & capabilities
What Edge Gateway does today, and whether that has been proven on real equipment or, so far, only against a simulator. This page is the source the rest of the site quotes.
PLC & Industrial sources
The Edge Runtime carries 28 source protocols. Modbus TCP, RTU and ASCII have been proven against real equipment. The other 25 deploy today but have so far been tested only against simulators — where that or a reconstructed layer matters, the detail says so. A driver the runtime does not carry is refused at build time rather than producing a package that cannot run.
| Protocol | Detail |
|---|---|
| Modbus TCP | Read coils, discrete inputs, holding and input registers (FC01–FC04) with contiguous-read optimisation. |
| Modbus RTU | Serial lines with configurable baud, parity, data and stop bits; several slaves share one port with serialized requests. |
| Modbus ASCII | Serial framing that carries each byte as two hex characters with an LRC checksum, for older equipment that does not speak RTU. |
| Siemens S7 | S7-300, S7-400, S7-1200 and S7-1500 over ISO-on-TCP. Addresses the Siemens way: DB1.DBW20, M10.3, IW0, T5. 1200/1500 CPUs need PUT/GET enabled or non-optimized data blocks. |
| Siemens S7CommPlus | Symbolic access to S7-1200 and S7-1500. Reverse-engineered — the protocol is encrypted with no public specification — and it cannot produce the integrity digest that S7-1500 firmware V2.0 and later require, so those CPUs will refuse it. For a supported symbolic path use OPC UA, which every S7-1500 carries. |
| Siemens Fetch/Write | S5 and S7 CP cards over ISO-on-TCP; DB, M, E, A, P and Z areas (DB1.DBW0). Parts of the telegram layer are reconstructed and unverified against a CP card. |
| Siemens RK512 (3964R) | Serial, for S5 and older S7 CP cards. Data blocks only (DB1.DW0). The telegram layer is reconstructed and unverified against a CP card. |
| Allen-Bradley EtherNet/IP (CIP) | ControlLogix, CompactLogix and Micro800 symbolic tags, UDT members and arrays (Program:Main.Speed). |
| Allen-Bradley PCCC / DF1 | File-based addressing for SLC and PLC-5 (N7:0, B3:0/0, F8:0, T4:0.ACC). |
| Mitsubishi MELSEC MC | MC 3E/4E over TCP or UDP; D, M, X, W and ZR devices (D100). |
| Mitsubishi FX | FX-series programming protocol, serial or TCP. |
| Omron FINS | CIO, DM, WR, HR and AR memory areas over UDP, TCP or serial; NJ/NX supported. |
| Omron Host Link | Serial Host Link for CS/CJ/CP-series. |
| Beckhoff TwinCAT (ADS/AMS) | ADS symbolic access by AmsNetId (MAIN.fCycleTime). |
| GE SRTP | Series 90-30/90-70, PACSystems and VersaMax; %R, %AI, %AQ, %I, %Q, %M. |
| GE EGD | Ethernet Global Data exchanges — received as the PLC produces them, not polled. |
| Yaskawa MEMOBUS / MP | MP-series controllers over Ethernet or serial (MW00100). |
| AutomationDirect DirectNET | DirectLOGIC PLCs on a serial line; V-memory in octal, as the manuals write it (V2000). |
| Emerson Fisher ROC / ROC Plus | Flow computers over Ethernet or serial, addressed by TLP as the manual writes it (46,0,0). |
| DNP3 | Outstations over TCP or serial. Points by class (AI3), as a device profile writes them (g30v5 idx0), or group:variation:index. |
| BACnet/IP Client | Reads objects and properties from BACnet devices (analog-input:1.present-value). |
| OPC UA Client | Reads variables from any OPC UA server (a PLC, a SCADA, a machine controller, another gateway) by node id (ns=2;s=Pump.Speed). Anonymous or user name; None, Sign or SignAndEncrypt. Tested against a node-opcua server and the gateway's own OPC UA Server output, not yet against a vendor's PLC. |
| SNMP | Reads OIDs from network and infrastructure equipment (1.3.6.1.2.1.1.3.0). |
| MTConnect | Machine-tool data items over HTTP: /probe, /current and /sample. |
| M-Bus (EN 13757) | Wired M-Bus meters on a serial line. A meter answers with a whole telegram, so a tag names a record in it: record=0, or a quantity such as energy. |
| DLMS/COSEM (IEC 62056) | Smart meters over TCP by OBIS code (1.0.1.8.0.255), with the meter's own scaler and unit applied. TCP only — no serial HDLC. Parts of the stack are reconstructed. |
| WITS Level 0 | Drilling records received over TCP or serial, actively or passively. Not polled: the rig pushes, the gateway listens. |
| Yokogawa recorders | DX, DXP, DARWIN, CX, HR, MW and MX by channel (CH001). A channel reading Skip or Error is reported as bad quality, not as zero. |
Messaging, integration and outputs
Destinations the Edge Runtime carries. Each is a protocol adapter: it declares its own configuration and validates it before a project can be deployed.
| Protocol | Detail |
|---|---|
| MQTT | mqtt:// and mqtts://, QoS 0–2, retain, keep-alive, TLS with CA and client certificates, topic templates such as factory/{device}/{tag}. |
| HTTP / REST API | POST, PUT and PATCH with headers, API key, bearer or basic authentication, timeouts, retries and batching. |
| SQL database | SQLite, PostgreSQL, MySQL / MariaDB and SQL Server. One row per value, with retention and batched transactions. |
| OPC UA Server | Tags become read-only OPC UA variables with data type, engineering unit, status code and source timestamp. Clients browse, read and subscribe. |
| BACnet/IP | The gateway appears as a BACnet device with Analog and Binary Input objects, Object_Name, Units, Present_Value and Status_Flags. Answers Who-Is, ReadProperty and ReadPropertyMultiple. |
| WebSocket Server | A snapshot on connect and one message per update, for dashboards and applications. |
| Modbus RTU/ASCII to TCP/UDP converter | A serial Modbus bus published on a Modbus TCP socket (or MBAP over UDP, which several vendors ship though it is not in the specification), so a master that speaks only Ethernet reaches RTU or ASCII slaves. Forwards every function code; writes only when explicitly enabled. Shares the serial port with polling. Professional licence. |
| Modbus Server | The gateway acts as a Modbus slave: every routed tag — from S7, EtherNet/IP, a meter, anything the runtime reads — is served as holding and input registers (numbers) or coils (booleans) over Modbus TCP, RTU or ASCII, for equipment and software that only speak Modbus. Read-only towards the plant: write function codes are refused. A tag whose quality is not good is answered with exception 04 rather than a stale number. The register map is written next to the runtime's data so an integrator can read it. |
| Store & Forward | A bounded on-disk buffer per destination; data is replayed in order when the destination returns. |
Data processing
The transform nodes of the Edge Logic Editor, and what the Edge Runtime does with each. Scale, unit conversion and rename are applied to the tag once, before routing; the rest run on the route that carries the wire.
| Node | Detail |
|---|---|
| Scale & Offset | y = m·x + b, from raw registers to engineering units, with an optional clamp to a minimum and maximum and rounding to a number of decimals. |
| Unit conversion | Between compatible engineering units: temperature (degC, degF, K), power, energy, pressure, voltage, current, length, volume, flow, mass, time and frequency. Two different dimensions are refused at validation. |
| Deadband / Change filter | Absolute, percentage or any change; suppresses publishing while polling continues. |
| Expression | value * 1.8 + 32, or a formula over other tags by name, in a closed grammar with arithmetic, comparisons and a fixed set of functions. Never arbitrary JavaScript. The same grammar makes calculated tags. |
| Cast | To bool, integer, float or text, before the value is published. |
| Rename / Map | Rename tags, and map numeric or boolean values onto text. |
| Rate limit | Publish on an interval instead of on every change. |
| Debounce | A value is published once it has stayed unchanged for the quiet period; a flapping input gives one message, with the value it settled on. |
| Batch / Aggregate | Messages collected into one JSON array, sent when the count is reached or the window closes. |
| JSON template | A payload of your own shape from {{value}}, {{tag}}, {{device}}, {{unit}}, {{quality}}, {{ts}} and the standard envelope; sent as JSON when it parses, as text otherwise. |
Logic & routing
How data finds its way to the right destination, and the control nodes of the editor.
| Node | Detail |
|---|---|
| Routing to several destinations | One source can feed many destinations; different tag groups can go to different places. |
| Publish modes | On change, periodic, or on change with a heartbeat. |
| Quality reporting | A tag that stops being readable is reported as such. A stale value is never published as if it were current. |
| Alarms | High, low, equals, quality and expression rules with hysteresis, delays, severity and acknowledgement. |
| Condition / Route | Rules over the value, quality, tag name, device or topic (==, !=, <, >, between, contains, regex, is true, is false, is null / BAD, changed), one output each plus Otherwise. First match wins, or match all. Each output is its own route in the runtime. |
| Join | Several devices in one message: merged per poll cycle, a full snapshot on every update, or only once every joined device has reported. |
| Trigger / Inject | Through a Join it decides when the joined values are published; wired straight into an output it is a scheduled message with an optional constant payload. |
| Throttle | A queue depth per wire: new messages are dropped while more than that many wait for a destination that has fallen behind, so a slow output cannot back up the gateway. |
| Catch / Status | Reports a tag going bad and recovering, with the reason, and, over the whole flow, a destination whose delivery failed, as messages to the output it is wired to. |
Build a gateway with what is supported today
Modbus, Siemens, Allen-Bradley, Mitsubishi, Omron and twenty more in; MQTT, REST, SQL, OPC UA, BACnet/IP or WebSocket out — with transformations, routing, alarms and store and forward in between.