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
| Field | Description |
|---|---|
| Connection | Which connection to use. |
| Protocol type | opcua, mqtt, modbus, snmp, tcpudp. |
| Address | Protocol-specific: a NodeId, a topic, a register, an OID, a field index. |
| Polling mode | subscribe, poll, read, write. |
| Sampling rate (ms) | Publishing interval for subscribe; poll period for poll. Default 1000. |
| Deadband | Per-binding change threshold, applied before publishing. |
| Config | Protocol-specific extras — MQTT QoS and JSON path, Modbus width and word order, and so on. |
| Enabled | A disabled binding stops acquiring without being deleted. |
Polling modes
| Mode | Behaviour | Use for |
|---|---|---|
subscribe | The source pushes on change | OPC-UA subscriptions, MQTT topics, TCP streams — always prefer this |
poll | QUBIQ reads on an interval | Modbus, SNMP, and OPC-UA servers with poor subscription support |
read | Read on demand only | Values needed occasionally by a script or screen, not continuously |
write | Write-only | Command/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 value | Reasonable rate |
|---|---|
| Fast process values driving a live trend | 250–1000 ms |
| Normal process values | 1000 ms |
| Temperatures, levels, slow analogues | 2000–5000 ms |
| Counters, totals, shift data | 5000–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 want | How to build it |
|---|---|
| Read here, write there | Two tags — one bound subscribe to the source, one bound write to the destination — joined by a pipeline. |
| Protocol bridge | A pipeline: Industrial I/O subscribe on the source tag, then a write to the destination. |
| Redundant source | A 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
| Protocol | Address | Example |
|---|---|---|
| OPC-UA | NodeId | ns=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/metric | Plant1/Line1/Filler/Speed |
| Modbus | Register address in its space | 40001, 30010 |
| SNMP | OID | 1.3.6.1.2.1.1.3.0 |
| TCP/UDP | Field index | 2 |
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
| Symptom | Check |
|---|---|
Quality NotFound | The address does not exist — typo, or the device program changed. Browse to confirm. |
Quality Bad, connection healthy | Data-type mismatch, or the address is out of a readable range. |
Quality Bad, connection down | Fix the connection first; bindings recover automatically. |
| Value never changes | Deadband too large, or the source really is constant. Check with a deadband of 0 temporarily. |
| Value updates far slower than the sampling rate | The server is clamping the requested interval, or the device scan is slower. |
| Some tags on a connection are bad, most fine | OPC-UA node quarantine, or an out-of-range Modbus block. |