Connect UNS to external data services.

ReferenceModulesUNS → UIAsset | Tags | UserTypes | Enumerations | Services | Monitor


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

Database Connectors

Application Integration

Enterprise Historians

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.


Configuration

Creating a Connection

  1. Navigate to Unified Namespace → TagProvider Services
  2. Click New Item
  3. Select protocol from the list
  4. Set the ServiceType: Tag Discovery (default) or Extension Module
  5. Configure connection parameters (PrimaryStation is protocol-specific — use list_protocols in MCP)
  6. 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

TagDiscovery (default) or ExtensionModule

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. opc.tcp://server:4840)

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)


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

value = Asset("/path")

Write

Asset("/path") = value

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

TK.ToInt(value)

Integer

TK.ToDouble(value)

Double

TK.ToString(value)

String

TK.ToDigital(value)

Boolean

TK.ToDateTime(value)

DateTime


Access Modes

Mode

Description

Read

Read-only access to external data

Write

Write-only access (rare)

ReadWrite

Full bidirectional access


See Also


In this section...