UNS TagProvider Services (Reference) enable direct interaction with variables in remote systems. TagProvider Services provide:
TagProviders allow consuming external data models directly, ideal for IoT systems and dynamic environments where device configurations change frequently.
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 |
Dual-role connectors
Some connectors (Canary, InfluxDB, GE Proficy, SQL) 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.
list_protocols in MCP)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.
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 |
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 |
Setting | Description |
|---|---|
IP Address | PLC IP address |
Slot | CPU slot number |
Path | Optional routing path |
Setting | Description |
|---|---|
Connection String | Database connection string |
Query | SQL query for data retrieval |
Refresh Rate | Poll interval (ms) |
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("/TagProviderName/Path/To/Tag")
Asset("/MyPLC/DataType:TagName")
Asset("/MyPLC/DINT:MyTag")
Asset("/MyPLC/DINT:MyArray[0]")
Asset("/MyPLC/REAL:Temperature")
Operation | Syntax |
|---|---|
Read |
|
Write |
|
Subscribe | Automatic in displays |
Dynamic handling supported — types are automatically resolved.
Explicit conversion required:
Method | Returns |
|---|---|
| Integer |
| Double |
| String |
| Boolean |
| DateTime |
Mode | Description |
|---|---|
Read | Read-only access to external data |
Write | Write-only access (rare) |
ReadWrite | Full bidirectional access |