Skip to main content

Why Industrial Routes?

Bridge the gap between your PLCs and MQTT without custom middleware. Read sensor data, write setpoints, and integrate industrial equipment into your IoT pipeline—using a single, consistent configuration pattern across all supported protocols.

Industrial Protocol Integration

Industrial routes enable direct communication between your Coreflux MQTT broker and industrial automation equipment. Read data from PLCs, write setpoints, and bridge the gap between IT and OT systems - all through standardized LoT (Language of Things) syntax.
Like a translator at an international meeting. Industrial routes speak both PLC (Modbus, S7, OPC UA) and MQTT—so your broker can read sensor data and send commands without custom glue code.

Supported Protocols

Modbus TCP Client

Poll PLCs and industrial devices over Modbus TCP.

Modbus Serial Client

RS-232/RS-485 serial communication with Modbus RTU devices.

Modbus TCP Server

Expose MQTT topics as Modbus registers and coils for SCADA and HMIs.

Siemens S7

Native S7 protocol for Siemens S7-200/300/400/1200/1500 PLCs.

OPC UA Client

Connect to remote OPC UA servers and poll device data into MQTT.

OPC UA Server

Expose MQTT topics as OPC UA nodes for SCADA and OT clients.

ADS (Beckhoff)

TwinCAT ADS protocol for Beckhoff PLCs with AutoDiscovery support.

Allen-Bradley

ControlLogix, CompactLogix, and other Rockwell Automation PLCs.

EtherNet/IP

CIP-based communication for Allen-Bradley and compatible devices.

FINS (Omron)

Omron FINS protocol for CJ/CS/CP series PLCs.

BACnet

BACnet/IP for building automation controllers (ASHRAE 135) — HVAC, lighting, and metering.

Protocol Comparison


Common Architecture

All industrial routes share a common architecture with three key components:

1. Connection Configuration

Each protocol has specific connection parameters:

2. MAPPING with Polling

MAPPING Definition A MAPPING is a scheduled, continuous polling operation that automatically reads data from industrial devices (PLCs, Modbus devices, etc.) at regular intervals and publishes the values to MQTT topics.
  • Polls: industrial device at regular intervals (EVERY)
  • Reads: multiple data points (TAGs) in a single operation
  • Publishes: each TAG value to its own MQTT topic
In LoT, you define a MAPPING like this:

Common MAPPING-level fields

These fields are available at the MAPPING level across all industrial protocols:
string
Base MQTT topic for publishing tag data. Each TAG publishes to {SOURCE_TOPIC}/{TAG_NAME}.
string
required
Polling interval (e.g. 500 MILLISECONDS, 1 SECOND).

3. TAG Definitions

TAG Definition A TAG is an individual data point within a MAPPING that represents a specific variable or register in an industrial device.
  • Identifies: a specific memory address in the device
  • Transforms: raw value using scaling, offset, and engineering units
  • Publishes: to a dedicated MQTT topic
  • Monitors: changes using deadband filtering
  • Data transformation: Scaling, offset, min/max validation
  • Change detection: Deadband to filter noise
  • Formatting: Publish as JSON or raw value
In LoT, you define a TAG like this:

Common TAG Parameters

These parameters are available across all industrial protocols:
string
required
Protocol-specific address (register number, variable path, NodeId, etc.).
string
Address type varies by protocol (e.g., HOLDING_REGISTER, DATABLOCK, SYMBOL).
string
required
Data type for the value. Common types: BOOL, INT16, UINT16, INT32, UINT32, FLOAT, DOUBLE, STRING.
string
Topic where PLC values are published. Subscribe here to receive sensor data.
string
Topic to send write commands. Publish a value here to write it to the PLC (requires WRITABLE true).
double
Multiplier applied to raw value. Formula: published_value = (raw_value * SCALING) + OFFSET. Default: 1.0.
double
Value added after scaling. Default: 0.0.
integer
Number of decimal places in published value. Default: 2.
double
Minimum allowed value. Values below this are filtered out.
double
Maximum allowed value. Values above this are filtered out.
double
Minimum change required to publish a new value. Reduces network traffic for slowly changing values. Default: 0.0.
string
Output format: VALUE_ONLY (just the value) or JSON (structured object with metadata). Default: VALUE_ONLY.
string
Engineering unit for documentation and JSON output (e.g., °C, bar, RPM).
string
Human-readable description of the TAG.
boolean
Allow writing to this TAG via DESTINATION_TOPIC. Default: false.
string
Byte order for multi-byte values: BIGENDIAN or LITTLEENDIAN. Default: BIGENDIAN.
string
Word order for 32-bit values: BIGENDIAN or LITTLEENDIAN. Default: BIGENDIAN.

4. SOURCE_TOPIC Configuration

There are two ways to configure where TAG values are published. Use group-level when you want consistent topic structure across all TAGs in a MAPPING; use individual TAG when you need custom paths per sensor (e.g., different namespaces for temperature vs pressure).

5. EVENT (On-Demand Operations)

Understanding on-demand operations in routes. EVENT Definition An EVENT is an on-demand operation that waits for messages on an MQTT topic, executes a specific action when triggered, and publishes the results back to another MQTT topic. Use EVENT when you need on-demand reads or writes (triggered by a message); use MAPPING for continuous polling. Syntax varies by protocol—see the protocol-specific docs (e.g., Modbus TCP Client) for details. In LoT, you define an EVENT like this:

Common EVENT Parameters

These parameters are available across all industrial protocols for EVENT definitions:
string
required
MQTT topic where the EVENT listens for trigger messages. Publish a message here to execute the operation.
string
required
MQTT topic where the EVENT publishes the result of the operation.
string
required
Protocol-specific specification of the operation (read or write) and its parameters. Uses LoT object syntax. See each protocol’s documentation for supported operations.

When to Use MAPPING vs EVENT

Use the right acquisition pattern for the job:
Most real-world routes combine both patterns: MAPPING for continuous monitoring and EVENT for on-demand operations within the same DEFINE ROUTE.

Basic Example Pattern

Cyclic Only

This minimal pattern works across all industrial protocols for continuous data acquisition:

Combined (Cyclic + On-Demand)

A production route typically combines MAPPING for continuous monitoring with EVENT for on-demand operations. Publish a message to the EVENT’s SOURCE_TOPIC to trigger a one-shot read or write, and receive the result on the DESTINATION_TOPIC:

Advanced Example Pattern

When you need engineering-unit conversion, noise filtering, range validation, or bidirectional control, add transformation and publishing parameters to your TAGs. This pattern builds on the basic structure above to unlock the full power of industrial routes.

Scaled and Filtered Monitoring

Apply scaling and offset to convert raw PLC register values into meaningful engineering units, and use deadband to suppress noise:

Writable Setpoints with Validation

Enable bidirectional control by marking TAGs as writable. Published values on the DESTINATION_TOPIC are written to the PLC, with MIN/MAX enforcing safe limits:

Best Practices

Group TAGs by update frequency:
  • Fast (50-100ms): Safety signals, real-time control
  • Medium (500ms-1s): Process values, sensor readings
  • Slow (5-30s): Configuration, counters, status
Reduce network traffic for slowly changing values:
Transform raw PLC values to engineering units in the route:
Include metadata in published messages:
Output:
Only enable WRITABLE for TAGs that need it, and use specific topics:

Next Steps

Choose the protocol that matches your equipment:

Modbus TCP Client

Start with the most common industrial protocol.

Siemens S7

Connect to Siemens PLCs directly.
Last modified on July 3, 2026