Skip to main content
Version: Next

Protocol Bindings

A protocol binding is the link between a tag and its data source: which connection, which address, how to acquire it.

Tag Site1/Line1/Filler/Motor1/Speed (float · RPM · scaled 0–3000)
Binding PLC1 · opcua · ns=2;s=Motor1.Speed · subscribe · 1000 ms

The tag is the contract; the binding is the wiring. Swapping the wiring never changes the contract.

Binding fields

FieldDescription
ConnectionWhich connection to use.
Protocol typeopcua, mqtt, modbus, snmp, tcpudp.
AddressProtocol-specific: a NodeId, a topic, a register, an OID, a field index.
Polling modesubscribe, poll, read, write.
Sampling rate (ms)Publishing interval for subscribe; poll period for poll. Default 1000.
DeadbandPer-binding change threshold, applied before publishing.
ConfigProtocol-specific extras — MQTT QoS and JSON path, Modbus width and word order, and so on.
EnabledA disabled binding stops acquiring without being deleted.

Polling modes

ModeBehaviourUse for
subscribeThe source pushes on changeOPC-UA subscriptions, MQTT topics, TCP streams — always prefer this
pollQUBIQ reads on an intervalModbus, SNMP, and OPC-UA servers with poor subscription support
readRead on demand onlyValues needed occasionally by a script or screen, not continuously
writeWrite-onlyCommand/output points with no readback

subscribe moves change detection to the device, cuts network traffic, and gives you the source's own timestamps. Use poll only where the protocol has no alternative.

Choosing a sampling rate

The most common performance mistake is polling everything at 100 ms because it is possible.

Kind of valueReasonable rate
Fast process values driving a live trend250–1000 ms
Normal process values1000 ms
Temperatures, levels, slow analogues2000–5000 ms
Counters, totals, shift data5000–30000 ms
Infrastructure (SNMP)30000–60000 ms

The value on screen is only as fresh as the slowest link in the chain — the device's own scan time. Polling a PLC with a 500 ms scan every 100 ms yields four identical reads.

One binding per tag

A tag has at most one protocol binding. There is no precedence to reason about and no "which source won" to debug, because there is only ever one.

That shapes how you build the patterns people usually reach for:

What you wantHow to build it
Read here, write thereTwo tags — one bound subscribe to the source, one bound write to the destination — joined by a pipeline.
Protocol bridgeA pipeline: Industrial I/O subscribe on the source tag, then a write to the destination.
Redundant sourceA tag per source, plus an expression tag that picks the first with Good quality.

The pipeline is not a workaround here — it is where the logic belongs. "Republish Modbus to MQTT" is a decision with failure modes and ordering, and a pipeline makes both visible.

Address formats by protocol

ProtocolAddressExample
OPC-UANodeIdns=2;s=Motor1.Speed, ns=3;i=1042
MQTT (classic)Topic (+ optional JSON path)plant/line1/motor1/speed, $.data.rpm
MQTT (Sparkplug)Group/edge/device/metricPlant1/Line1/Filler/Speed
ModbusRegister address in its space40001, 30010
SNMPOID1.3.6.1.2.1.1.3.0
TCP/UDPField index2

Use each connection's Browse rather than typing addresses — it eliminates typos and pre-fills data types. → Connections

Enabling and disabling

Creating, editing, enabling, disabling and deleting a binding all require Bind a tag to a protocol. Reading bindings and their statistics requires View the namespace.

Disabling is the right way to take equipment out of service: the tag stays, its history stays, its screens stay, and acquisition stops. Deleting the binding leaves the tag unbound, which is what happens automatically if the connection is deleted.

Unbound tags

A tag with no binding is not an error:

  • Internal tags never have one by design.
  • Tags whose connection was deleted are left unbound deliberately, so you can re-point them at a replacement instead of losing the model.
  • Tags created ahead of the equipment during commissioning are unbound until the device arrives.

The namespace panel's binding statistics list them, which is worth a look before a commissioning review.

Rebinding after an equipment change

Old: PLC1 · ns=2;s=Motor1.Speed
New: PLC2 · ns=4;s=Drive_M1.ActualSpeed

Edit the binding. Nothing else changes — not the tag path, not the screens, not the alarms, not the history. The historian keeps the same tag identity, so trends span the changeover.

This is the whole reason the namespace layer exists.

Diagnosing a binding

SymptomCheck
Quality NotFoundThe address does not exist — typo, or the device program changed. Browse to confirm.
Quality Bad, connection healthyData-type mismatch, or the address is out of a readable range.
Quality Bad, connection downFix the connection first; bindings recover automatically.
Value never changesDeadband too large, or the source really is constant. Check with a deadband of 0 temporarily.
Value updates far slower than the sampling rateThe server is clamping the requested interval, or the device scan is slower.
Some tags on a connection are bad, most fineOPC-UA node quarantine, or an out-of-range Modbus block.

Next

User-defined types