UNS TagProvider Services (Reference) enable direct interaction with variables in remote systems. TagProvider Services provide:
- Dynamic external data access through auto-discovery
- Three connection patterns: Local Tags, Linked Tags (via DataLink), and Dynamic Tags (via Asset() syntax)
- Automatic data model discovery at runtime
- On-demand communication — activated when data is consumed, released when not
- Multi-protocol support (~16 discovery-capable connectors)
TagProviders allow consuming external data models directly, ideal for IoT systems and dynamic environments where device configurations change frequently.
Find a TagProvider Service
TagProviders vs Devices
Both TagProvider Services and the Devices module connect FrameworX to external systems. They are completely independent — they share nothing architecturally. Some protocols (MQTT, OPC UA, ControlLogix) are available in both, with different workflows.
Aspect | Devices Module | TagProvider Services |
|---|---|---|
Design philosophy | Define explicitly, validate strictly | Auto-discover, bind dynamically |
Tag creation | Required — every point maps to a local tag | Optional — Dynamic Tags need no pre-created tags |
Namespace control | Solution architect defines everything | External source can define structure |
Metadata | Full control (alarms, historian, scaling, units) | Full on Linked Tags; limited on Dynamic Tags |
Security | Granular per tag | Connection level |
Available protocols | ~100 (all industrial protocols) | ~16 (discovery-capable only) |
Configuration | Design-time | Runtime discovery |
Best for | SCADA control, regulatory compliance, FDA | IIoT monitoring, dynamic environments, UNS integration |
Can coexist? | Yes — same solution, even same protocol | Yes |
Supported TagProviders
Communication Protocols
- MQTT Client Connector — Standard MQTT broker connection
- MQTT Sparkplug B Collector — SparkplugB protocol
- OPC UA Client — Industrial standard
- AB Rockwell ControlLogix — Rockwell PLCs
- Codesys PLC Handler — Codesys PLCs
- Beckhoff TwinCAT — Beckhoff systems
Database Connectors
- SQL Database — Generic SQL data sources
- SQL Database Normalized — Normalized SQL schema
- InfluxDB — Time-series database
- FlowTimebaseDB — Flow Software historian
- MongoDB Database — Document database. Browse collections as a tag tree, register document fields as UNS tags via Tag Discovery; updates write back with $set. New in 10.1.5.
Application Integration
- Server to Server — FrameworX solution interconnection
- DataHub Communication — Distributed data aggregation
- LineMonitor / MES CoreM — Production monitoring
Enterprise Historians
- Canary Labs — Enterprise historian
- GE Proficy — Industrial historian
- OSIsoft Aveva PI — PI System
Dual-role connectors
Some connectors (Canary, InfluxDB, GE Proficy, SQL, MongoDB) can also serve as Storage Locations in the Historian module for archiving time-series data. That is a separate configuration in the Historian module — see Historian for details.
Configuration
Creating a Connection
- Navigate to Unified Namespace → TagProvider Services
- Click New Item
- Select protocol from the list
- Set the ServiceType: Tag Discovery (default) or Extension Module
- Configure connection parameters (PrimaryStation is protocol-specific — use
list_protocolsin MCP) - The connection appears in the Services grid and an Asset Tree folder is auto-created
All Properties
Property | Type | Required | Description |
|---|---|---|---|
Name | String | Yes | Unique connection identifier |
Protocol | Reference | Yes | Communication protocol (references DevicesProtocols) |
PrimaryStation | String | Yes | Main connection endpoint — format is protocol-specific |
ServiceType | Enum | No |
|
Description | String | No | Connection description |
BackupStation | String | No | Redundant endpoint for failover |
FailOverStation | String | No | Failover connection string |
ProtocolOptions | String | No | Protocol-specific configuration — format is protocol-specific |
Settings | String | No | Additional connection settings |
Timeout | String | No | Connection timeout value |
Access | String | No | Access mode configuration |
ReadTime | String | No | Read polling rate |
WriteTime | String | No | Write rate |
ServerIP | String | No | Server IP address for the connection |
Interface | String | No | Network interface binding |
InitialState | String | No | Initial state at runtime startup (enabled/disabled) |
RemoteSettings | String | No | Remote connection configuration |
Separators | String | No | Tag path separator configuration |
DriverVersion | String | No | Protocol driver version |
Category | String | No | Classification group for organizing connections |
Protocol-dependent fields
PrimaryStation, BackupStation, and ProtocolOptions formats vary by protocol. Always call list_protocols (MCP) or check the specific connector reference page before configuring these fields.
Protocol-Specific Settings
OPC UA
Setting | Description |
|---|---|
Server URL | OPC UA endpoint (e.g. |
Security Policy | None, Basic128Rsa15, Basic256, Basic256Sha256 |
Security Mode | None, Sign, SignAndEncrypt |
Authentication | Anonymous, Username/Password, Certificate |
MQTT
Setting | Description |
|---|---|
Broker | MQTT broker address |
Port | Broker port (default: 1883) |
Topic Structure | Topic pattern for subscription |
QoS | Quality of Service level (0, 1, 2) |
Client ID | Unique client identifier |
ControlLogix
Setting | Description |
|---|---|
IP Address | PLC IP address |
Slot | CPU slot number |
Path | Optional routing path |
SQL Database
Setting | Description |
|---|---|
Connection String | Database connection string |
Query | SQL query for data retrieval |
Refresh Rate | Poll interval (ms) |
MongoDB
Setting | Description |
|---|---|
PrimaryStation | Semicolon-delimited: |
Discovery | Level 0 lists collections; Level 1 samples the latest document and lists top-level field names. |
Address format | Single-dot |
Read / Write | Read returns latest document field (Quality 192 on hit, 0 on miss). Write applies |
DataLink Property
DataLink is a property on UnsTags — not on the TagProvider connection itself. When set on a tag, it binds that tag to a path in a TagProvider's discovered namespace.
Example: A tag Plant/Tank1/Temperature with DataLink set to MyMQTT/sensors/tank1/temp will automatically receive values from the MQTT broker whenever the tag is read. Communication is on-demand — activated when consumed, released when not.
This is the mechanism behind Linked Tags — tags that exist in the local UNS with full metadata (alarms, historian, scaling) but get their values from an external source.
See UNS Tag Discovery Reference for the full explanation of Local Tags, Linked Tags, and Dynamic Tags patterns.
Asset() Syntax Reference
Basic Syntax
Asset("/TagProviderName/Path/To/Tag")
ControlLogix Syntax
Asset("/MyPLC/DataType:TagName")
Asset("/MyPLC/DINT:MyTag")
Asset("/MyPLC/DINT:MyArray[0]")
Asset("/MyPLC/REAL:Temperature")
Supported Operations
Operation | Syntax |
|---|---|
Read |
|
Write |
|
Subscribe | Automatic in displays |
Data Type Handling
WPF Displays (.NET Framework 4.8)
Dynamic handling supported — types are automatically resolved.
HTML5/Portable (NetStandard 2.0)
Explicit conversion required:
Method | Returns |
|---|---|
| Integer |
| Double |
| String |
| Boolean |
| DateTime |
Access Modes
Mode | Description |
|---|---|
Read | Read-only access to external data |
Write | Write-only access (rare) |
ReadWrite | Full bidirectional access |
See Also
- TagProvider Services — Concept overview
- TagProvider Services How-to — Step-by-step procedures
- TagProvider Services Technology — Architecture deep dive
- UNS Tag Discovery Reference — Connection patterns (Local, Linked, Dynamic Tags)
- Connectors Library — All available connector reference pages
In this section...