enable direct interaction with variables in remote systems
, bypassing the need to create specific tags in the solution. They establish connections with tag sources, enhancing data access and explorationwithout creating local tags, establishing dynamic connections with external data sources for enhanced data access within the Unified Namespace.
On this page:
Table of Contents | ||||
---|---|---|---|---|
|
Children Display | ||||||
---|---|---|---|---|---|---|
|
Understanding TagProvider Connections
TagProviders allow connections with external systems to read or write data without creating local tags. Displays and other modules can directly access data from remote systems, even if their structure changes dynamically.
Automatic & Tagless Connections:
- Connect to external data sources and consume their data models in the Unified Namespace.
- Access all tags and data structures automatically with simple configuration.
- The connected provider’s tags and data models are available for use in various modules (Displays, Scripts, Reports, etc.).
- Support for various systems: Protocols, Historians, or Devices.
- Easily plot trend charts and access archived data from external Historians.
Devices vs TagProviders
Some connections can be done through Devices and TagProviders. To define which one works best for your application, you should look at how your data is structured.
Devices handle predefined, static data, ensuring control, security, and advanced metadata management, suitable for applications requiring strict validation like HMI and SCADA systems. These environments often require strict regulatory compliance, such as FDA validation in pharmaceutical production or stringent monitoring in manufacturing plants. Devices provide detailed metadata management, including retentiveness, security settings, and visibility control within the platform.
TagProviders are ideal for applications where data and device configurations change frequently, necessitating real-time update. That type of connections allows you to manage dynamic data, enabling flexible device addition, ideal for IoT and monitoring applications needing situational awareness, such as smart city infrastructures or home automation systems. For instance, TagProviders can dynamically integrate new environmental sensors in a smart energy grid, providing continuous updates and allowing city managers to respond promptly to changing conditions.
Supported TagProviders
Integration with Communication Protocols
- MQTT (standard and SparkPlugB)
- OPC-UA
- Rockwell ControlLogix
- Codesys enabled PLCs using PLC Handler
- Beckhoff TwinCAT Service
Integration with other Applications
Integration with Historian Systems
Info | ||
---|---|---|
| ||
When the TagProvider Connection is created for a Historian system, it will have two additional features:
|
Configuring TagProviders
To configure a TagProvider, navigate to the TagProviders Connection, press the plus button to open the Create TagProvider Connection dialog, select the target protocol, and provide the necessary information. After pressing the OK button, it will create and map a folder on the Assets Tree. Then, navigate to Unified Namespace / Assets Tree to customize the Alias. Right-click on the selected node and select the Edit Asset Folder option to open the configuration dialog.
Configuration Workflow
Identify the TagProvider: Based on the communication protocol (e.g., OPC UA, Modbus).Creating a new TagProvider Connection
Steps:
1.Navigate: Go to Unified Namespace / TagProvider Connections.2.New Item: Click the ‘New Item’ button to open the ‘Create New TagProvider’ dialog.
3.Select Protocol: Choose a communication protocol and assign a name.
4.Configure: Fill out the configuration table with:
Common Configuration Items:
- Provider: Specifies the platform the TagProvider will interface with.
- Access Mode: Determines permissions (Read, Write, ReadWrite).
- Name: User-defined identifier for the TagProvider instance.
- Description: Explains the purpose or platform it interfaces with.
- Test button: Verifies the connection settings.
After pressing the Ok button to configure the provider, it automatically creates a folder in the Assets Tree (Unified Namespace / Assets Tree).
Unique Configuration Parameters:
Each TagProvider has specific parameters tailored to its functionalities and technical requirements, ensuring proper data integration.
For example, using MQTTspB, the settings will be detailed similarly to Channels, Nodes, and Points.
Using TagProviders as Historian Storage Location:
Some TagProviders can be used with the Historian Module to define data storage locations. Typically, TagProviders for historian tools or MQTT can be used as Storage Locations.
By default, the Historian archives data in an SQL Database, but this can be extended with TagProviders.
→ See Historian Storage Locations for more information.
\
Overview
TagProvider Services provide:
- Dynamic external data access
- Tagless connections to remote systems
- Automatic data model discovery
- Real-time structure updates
- Multi-protocol support
- Historian integration capabilities
TagProviders allow consuming external data models directly, ideal for IoT systems and dynamic environments where device configurations change frequently.
TagProviders vs Devices
Aspect | Devices | TagProviders |
---|---|---|
Data Structure | Static, predefined | Dynamic, discovered |
Tag Creation | Required locally | Not required |
Metadata | Full control | Limited control |
Security | Granular per tag | Connection level |
Use Case | SCADA/HMI systems | IoT/Monitoring |
Validation | Strict (FDA) | Flexible |
Configuration | Design-time | Runtime discovery |
Supported TagProviders
Communication Protocols
- MQTT - Standard and SparkPlugB
- OPC UA - Industrial standard
- ControlLogix - Rockwell PLCs
- Codesys - PLC Handler
- TwinCAT - Beckhoff systems
Application Integration
- Server to Server - Solution interconnection
- LineMonitor - Production monitoring
Historian Systems
- Canary Labs - Enterprise historian
- InfluxDB - Time-series database
- GE Proficy - Industrial historian
- SQL Database - Generic SQL sources
<ac:structured-macro ac:name="info"> ac:rich-text-body
<p>Historian TagProviders provide two additional features:</p> <ol> <li>Automatic historian querying for TrendCharts using Asset() syntax</li> <li>Can be used as Storage Locations for archiving time-series data</li> </ol> </ac:rich-text-body> </ac:structured-macro>
Configuration
Creating Connections
- Navigate to Unified Namespace → TagProvider Connections
- Click New Item button
- Select protocol from list
- Configure connection parameters
- Test connection
- Asset folder auto-created
Common Parameters
Parameter | Description | Required |
---|---|---|
Name | Connection identifier | Yes |
Protocol | Communication type | Yes |
PrimaryStation | Main endpoint | Yes |
BackupStation | Redundant endpoint | No |
Access | Read/Write/ReadWrite | Yes |
Timeout | Response timeout | Yes |
Description | Documentation | No |
Protocol-Specific Settings
Each protocol requires unique parameters:
- OPC UA: Server URL, Security Policy
- MQTT: Broker, Topic structure
- ControlLogix: IP Address, Slot
- SQL: Connection string, Query
Using TagProviders
Asset Tree Integration
After configuration, TagProviders appear in Asset Tree:
/Root
/MyOPCServer (TagProvider)
/Line1
/Motor1
/Speed
/Temperature
Accessing Data
Asset() Syntax:
csharp
// Read value
double speed = Asset("/MyOPCServer/Line1/Motor1/Speed");
// Write value
Asset("/MyOPCServer/Line1/Motor1/Speed") = 100;
// ControlLogix specific
Asset("/MyPLC/DINT:MyTag");
Asset("/MyPLC/DINT:MyArray[0]");
In Displays:
xml
<TextBox Text="{Asset('/MyOPCServer/Line1/Motor1/Speed')}" />
In Scripts:
csharp
if (Asset("/MyOPCServer/Line1/Motor1/Running"))
{
// Motor is running
}
Data Type Handling
WPF Displays (.NET Framework 4.8)
Dynamic handling supported:
csharp
var value = Asset("/Path/To/Tag");
// Automatically handled as correct type
HTML5/Portable (NetStandard 2.0)
Explicit conversion required:
csharp
int intValue = TK.ToInt(Asset("/Path/To/Tag"));
string strValue = TK.ToString(Asset("/Path/To/Tag"));
bool boolValue = TK.ToDigital(Asset("/Path/To/Tag"));
Historian Integration
As Data Source
csharp
// TrendChart automatic query
TrendChart.Asset = "/HistorianProvider/Temperature";
// Automatically fetches historical data
As Storage Location
Configure in Historian → Storage Locations:
- Select TagProvider as target
- Map tags to historian points
- Define storage intervals
Best Practices
- Use appropriate technology - Devices for static, TagProviders for dynamic
- Test connections - Verify before production
- Handle failures - Configure backup stations
- Monitor performance - Check read/write times
- Document providers - Clear naming and descriptions
- Plan redundancy - Use backup stations
- Consider security - Access mode restrictions
Browsing Data
Asset Tree Browser
- Navigate to Unified Namespace → Asset Tree
- Select TagProvider folder
- Browse structure in tree
- View live values in grid
Object Browser
Use toolbar Object Browser for correct syntax:
- Click Object Browser icon
- Navigate to desired element
- Copy displayed AssetPath
Configuration Properties
Property | Description | Type |
---|---|---|
Protocol | Communication protocol | Selection |
ProtocolOptions | Protocol-specific settings | String |
PrimaryStation | Main connection endpoint | String |
BackupStation | Backup endpoint | String |
Settings | Configuration parameters | String |
Timeout | Response timeout (ms) | Integer |
IsHistorian | Historian capability | Boolean |
Access | Read/Write permissions | Enum |
ServerIP | Remote server address | String |
Troubleshooting
Connection failed:
- Verify network connectivity
- Check protocol settings
- Review authentication
- Test with simple query
No data visible:
- Confirm connection active
- Check Asset Tree mapping
- Verify access permissions
- Review protocol specifics
Performance issues:
- Reduce polling frequency
- Check network latency
- Optimize queries
- Use local caching
Type conversion errors:
- Use explicit conversion (HTML5)
- Verify data types match
- Check null values
- Review error messages
In this section...
Page Tree | ||||
---|---|---|---|---|
|
Working with TagProviders
Browsing Values
InUnified Namespace / Asset Tree, after linking a folder to the data from the TagProvider Connection, you can browse the tree. The right-side tables will update, showing the values of the variables in the selected folder.Reading and Writing Values from other Modules
After including TagProvider in the AssetTree Nodes, you can access that in using the Asset() method.
E.g.: If using ControlLogix, the final part of the AssetPath is the address, using same syntax used in Devices / Points: <ProviderName>.("<Type>:<Address>")
- Asset("/Folder1/DINT:MyPlcTag")
- Asset("/Area1/Line1/DINT:MyArray1DimDINT[0]")
Tip |
---|
The best way to pickup the right syntax, it is to use the Object Browser from the top Toolbar, and navigate to the element you need. The proper AssetPath is shown on that window as you navigate the tree. |
You can use the Asset() syntax, not only in scripts, but on Displays, and in all fields in the software where a Tag is expected, including:
- On Displays, mapping symbol properties and linking to dynamic properties.
- On Alarms, creating alarm events.
- On Historian, archiving the data.
Note that, in Portable/HTML5 displays, Assets cannot be treated as dynamic objects due to limitations in NetStandard 2.0. To use them as values or in expressions, you must first convert them to the required data type (e.g., integer, string, digital, DataTable) using methods such as TK.ToInt
, TK.ToString
, etc.
In this example, we converted the Asset to an integer using TK.ToInt
to determine if the object will be visible.
In WPF-only displays, which are based on .NET Framework 4.8, Asset calls return values that can be handled dynamically, without the need to explicitly define the data type.
TagProvider Connections Columns
TagProvider Connection Properties | |
---|---|
ID | Identifies the TagProvider. |
VersionID | Shows the specific version number. |
Name | Names the TagProvider connection for identification and reference. |
Protocol | Specifies the communication protocol used for the connection. |
ProtocolOptions | Defines additional options for the selected communication protocol. |
PrimaryStation | Sets the main station or endpoint for the data source connection. |
BackupStation | Specifies a backup station for redundancy in the connection. |
FailOverStation | Configures the station to use in case of primary and backup failures. |
Interface | Indicates the interface type used. |
Settings | Lists the configuration settings for the connection. |
Timeout | Sets the maximum time to wait for a response from the remote system. |
InitialState | Defines the initial state of the connection when established. |
RemoteSettings | Specifies settings for interacting with the remote system. |
DriverVersion | Indicates the version of the driver. |
Separators | Sets the separators used in the data format. |
IsHistorian | Indicates whether the connection involves a historian system. |
Access | Specifies the access level required to interact with the connection. |
ReadTime | Records the time taken to read data from the remote system. |
WriteTime | Records the time taken to write data to the remote system. |
ServerIP | Defines the IP address of the remote server. |
Level | Classifies the connection within a specific level or hierarchy. |
Category | Groups the connection within a specific category for organization. |
LockState | Indicates whether the connection settings are locked and cannot be modified. |
LockOwner | Identifies the owner responsible for locking the connection settings. |
DateCreated | Records the date and time when the connection was created. |
DateModified | Records the date and time when the connection was last modified. |
Description | Summarizes the purpose and details of the TagProvider connection. |
In this section:
Page Tree | ||||
---|---|---|---|---|
|