DataDistributionModule
The DataDistributionModule is the edge-side measurement hub. It ingests values from data-collector modules and, according to the tag configuration and routing, delivers them to the required destinations.
The possible routings are:
Hot Path: Routes measurements directly to cloud for real-time services like dashboards, alerts, and low-latency analytics.
Cold Path: Routes measurements to cost-efficient archival stores (e.g., object storage/databases) for batch processing, long-term retention, and historical analysis.
Local Historian: Stores measurements in a historian database running on the edge device as a module or within the on-premises network for onsite trending and offline access.
Internal: Routes the measurement to another edge module—for example, for enrichment, local calculations, or write-back.
Routing can be scheduled or triggered when the measurement value changes, depending on weather the tag has defined a sampling rate or not.
Cyclic measurement buffer
The DataDistributionModule contains an in-memory cyclic buffer that keeps most recent measurements available at the edge, for all tags. The buffer uses a retention policy to delete the oldest measurements. It accepts late and out-of-order timestamps, preserving event time so downstream systems can reconstruct the correct sequence.
The buffer is used to ensure, that the correct measurements are routed, even if measurements arrive out-of-order. It also ensures that limited tag history is available at the edge, for visualization, analytics or other purposes, without calling cloud services.
Measurement Routing
Routing is driven by tag configuration. For measurements originating from other modules (e.g., Modbus, MQTT, Emulator), the module reads the tag’s routing rules and forwards accordingly. You can send the same measurement to multiple targets—hot path for low-latency dashboards and alarms, cold path for durable storage, local historian for on-site trending, or specific edge modules for further processing. Routing can be scheduled (e.g., every second/minute or via cron-like expressions) or on change, where the module forwards immediately when a value updates or crosses a defined deadband/threshold. The cyclic buffer smooths bursts and link interruptions while keeping timestamps intact.
Calculations (Equations)
Tags can also define calculations that output derived measurements (KPIs, totals, normalized values, etc.). Equations reference other tags and are evaluated in two modes: scheduled, to produce a stable cadence (for example every 1s or 1m), or on change, to recompute as soon as any referenced input updates. Results are emitted as first-class measurements and then routed using the same rules as raw inputs. Because the buffer accepts out-of-order inputs, equations can handle late arrivals correctly and still publish ordered outputs per target. Output types and formatting follow the tag’s settings, ensuring downstream consumers see consistent, typed measurements.
Equations produce measurements like any other tag.
They can be evaluated on a schedule (e.g., every 1 s / 1 min) or on change (when any referenced tag updates).
Results are typed according to the tag’s MeasurementType, then routed per the tag’s routing rules (hot path, cold path, local historian, internal).
Last updated
Was this helpful?