Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This guide walks you through configuring the Unified Namespace (UNS) - the data foundation of your FrameworX solution. You'll create tags, build templates, organize your asset tree, and connect to external data sources.

Prerequisites:

  • Solution created in Solution Center
  • Designer open with solution loaded
  • Understanding of your data requirements



Configuration Workflow

  1. Define UserTypes (UDTs) - Create reusable data structures
  2. Build Asset Tree - Organize hierarchical structure
  3. Create Tags - Add variables using templates or basic types
  4. Configure Enumerations - Define discrete state values
  5. Add UNS Services (Optional) - Connect external data sources

Step 1: Create UserTypes (UDTs)

Creating a New UserType

  1. Navigate to Unified Namespace → UserTypes
  2. Click New
  3. In the "Create New UserType" dialog:
    • Enter Name (e.g., Motor_VFD)
    • Add Description
    • Click OK
  4. Add members to the template:
    • Type in the first row of the table
    • Press Enter after each member
    • Configure properties (same as tag properties)

Example Motor UserType

MemberTypeUnitsMinMaxDescription
RunningBoolean---Motor running status
Speed_SPFloat%0100Speed setpoint
Speed_PVFloat%0100Actual speed
CurrentFloatA0200Motor current
FaultCodeInteger-0999Error code

Step 2: Build Asset Tree

Creating Asset Structure

  1. Go to Unified Namespace → Asset Tree
  2. Create folders using one of these methods:
    • Click "Add Asset Folder" icon in toolbar
    • Right-click on root or existing folder → New Asset Folder
    • Right-click in tree area

Note: The "RootTags" folder is pre-defined and contains all tags not assigned to other folders.

Example Structure

Plant
??? WaterTreatment
?   ??? Intake
?   ??? Processing
?   ??? Distribution
??? PowerHouse
    ??? Boilers
    ??? Generators

Step 3: Create Tags

Method A: Using Create New Tag Dialog

  1. Click New Tag icon in top toolbar
  2. In the dialog, configure:
    • Name: Tag identifier
    • Type: Select data type or UserType
    • Properties: Optional device, alarm, historian settings
  3. Click OK

Method B: In Asset Tree

  1. Navigate to Unified Namespace → Asset Tree
  2. Select target folder
  3. Right-click → New Tag or use toolbar icon
  4. Configure tag properties in dialog

Method C: In Tags Grid

  1. Navigate to Unified Namespace → Tags
  2. Create tags by:
    • Click in empty row and type name
    • Press Insert key
    • Click "New Item" in grid controls
    • Paste from Excel (must have "Name" column)

Method D: Copy and Paste

  1. Select existing tags
  2. Right-click → Copy Selected Rows (or Ctrl+C)
  3. Right-click empty row → Insert Rows (or Ctrl+V)

Step 4: Configure Tag Properties

Essential Properties

PropertyDescriptionExample
NameUnique identifierPUMP01_SPEED
TypeData type or UserTypeFloat
StartValueInitial value at startup0
Min/MaxValue limits0 to 100
UnitsEngineering unitsRPM
FormatDisplay formatN2 (2 decimals)
RetentiveKeep value through restartValueOnly

Tag Types Available

  • Digital - Binary (0 or 1)
  • Integer - Whole numbers (-2,147,483,648 to 2,147,483,647)
  • Long - Large integers (64-bit)
  • Double - Floating point
  • Decimal - High precision
  • Text - String values
  • DateTime - Date and time
  • Timer - Built-in timer functions
  • DataTable - In-memory table
  • Reference - Dynamic tag pointer

Step 5: Configure Enumerations

  1. Navigate to Unified Namespace → Enumerations
  2. Click New in grid toolbar
  3. Enter enumeration name
  4. Add values:
    0 = Stopped
    1 = Running
    2 = Fault
  5. Apply to tags by selecting enumeration in tag properties

Step 6: Import Tags

From Excel

  1. Copy Excel data including column headers
  2. Ensure "Name" column exists
  3. Paste directly into Tags grid

From CSV

  1. Use Import button when grid is in focus
  2. Select CSV file
  3. Map columns to properties

Using Solution Import Tools

Navigate to Solution → Import for:

  • OPC Server browsing
  • ControlLogix import
  • PI System import
  • SQL database import

Step 7: Add UNS Services (Optional)

Creating Connection

  1. Navigate to Unified Namespace → UNS Services
  2. Click New UNS Service or use File → New → UNS Service Connection
  3. Configure connection parameters
  4. Test connection

Linking to Asset Tree

  1. Select asset folder
  2. Right-click → "Link Data from UNS Service"
  3. Browse and select remote data
  4. Data appears dynamically in tree

Testing Your Configuration

Test Mode

  1. Press F5 or click Run Test
  2. Monitor values in Asset Tree (Value column appears)
  3. Use Property Watch for detailed monitoring

Accessing Tags

Direct Tag Access:

Tag.PUMP01.Running
Tag.Area1/Line1/Temperature

Asset Method (for dynamic paths):

Asset("/Area1/Line1/Temperature")
Asset(client.Context.AssetPath + "State1")

Common Issues

Cannot see data in Asset Tree

  • Click Refresh button to reload tree

Tag not updating

  • Check device mapping if using Device Module
  • Verify UNS Service connection if using external data

Changes to UserType not reflected

  • UserType changes don't auto-update existing instances
  • Must recreate or manually update instances

Best Practices

? Create UserTypes before tags for consistency ? Organize Asset Tree to match physical/logical structure
? Use consistent naming conventions ? Set appropriate retentive settings for critical values ? Configure security at tag level when needed ? Use enumerations for state-based tags


Next Steps

  • [P2: Process Modules →] Configure devices and alarms
  • [Devices Module →] Connect to field equipment
  • [DataExplorer →] Browse and import external data

TO DO: Text Development and consolidation

Introduction

This guide focuses on building an effective data model within the platform, utilizing the Unified Namespace architecture. It covers the concepts of DataTemplates, Asset Tree, and DataExplorer tools, and explains how to integrate TagProviders for a comprehensive data management solution.

On this page:

Design Concepts

The following main concepts are key to properly organize your data in the Platform. 

  • DataTemplates
  • Advanced DataTypes
  • Server Tags  vs Client Tags
  • Root Tags vs Tags in the AssetTree
  • When to use TagProviders

DataTemplates

The use of UDT (User Data Types) and their planning at the start of modeling is essential. Gather information about whether your field equipment or other data sources already have that definition, and import them into the platform when possible.

You can also easily create the DataTemplate within the platform and use the Scripts and Devices module to map the data model you defined to the data sources, which can provide the data in a completely distinct way.

In summary, follow conventions when available, and extend with the platform features. All time invested beforehand in properly defining your Unified Namespace is largely recovered during the development and maintenance of the application.

Advanced DataTypes

Each tag supports various types, from basic types such as Digital and Double to advanced ones like Timers, DataTable, and References. Each tag can also be an array of up to three dimensions. The correct selection and use of the Tag Types greatly simplify the use of those tags later in the Displays, Scripts, and Database Connections.

Server Tags vs Client Tags

The concept of Server Tags and Client Tags is explained in the section Client-Server Programming.

Essentially, the Client Tags will hold all the operations (Displays Client Users). As much as possible, you should leverage the built-in Client.DataContext properties and the built tools to persist user configurations.

Root Tags vs Tags in the Asset Tree

Each tag can have a single name, like Temp1, or be positioned inside the Asset Tree, like /Line1/Machine1/Temp1.

When a tag is not positioned in an Asset Folder tree, it's called a 'Root Tag'. Typically, all variables that are internal to your solution and you don't want to expose to other applications connecting with your solution can be kept as a Root Tag. The tags that will be used on the Displays and eventually served to other applications using the MQTT Broker or the OPC Server, or other integration API, should be placed in the Asset hierarchy.

A good practice to avoid the list of Root Tags growing too much is to use DataTemplates. For instance, you can create a Client Root Tag named 'UI' that is based on the Data Template 'UI'. In that template, you can place all custom tags related to managing the User Interface, like ReportStartDate, or any tag you need to create for client context to use in the user interface. Similarly, you can create a Server Tag and a Template named "Admin" for all variables you need for your internal administration of the application, instead of creating multiple variables in the root.

When to use TagProviders Connections

When you have applications connecting with data sources that regularly change Tag Names, addresses, and assets, that is the typical scenario to use TagProviders. The TagProvider features allow you to insert a node in your Asset Tree hierarchy that is dynamically populated with the current tags and assets available at that time from the external data source.

Configuration Workflow

  1. Creating DataTemplates:

    • Navigate to Unified Namespace → DataTemplates.

    • Use 'New' to create a User Data Type (UDT) for structuring data.

    • Define properties (variables) in the UDT for your data model.

  2. Working with the Asset Tree:

    • Go to Unified Namespace → Asset Tree.

    • Create new asset folders and tags as needed.

    • Organize tags and assets hierarchically for easy navigation.

  3. Leveraging Data Explorer Tools:

    • Utilize Data Explorer for visualizing and managing your data model.

    • Explore tags and assets, and modify properties directly from the tool.

  4. Integrating TagProviders:

    • Add TagProvider Connections for integrating data from external systems.

    • Configure connections to external data sources like InfluxDB, MQTT, OPC UA, etc.

    • Map external data to your Unified Namespace.

Unified Namespace (Foundation)

Overview

The Unified Namespace (UNS) is the foundational data layer of your FrameworX solution, providing a single source of truth for all real-time and configuration data. It creates a standardized, hierarchical data model that all other modules reference, ensuring consistency across your entire application. Think of the UNS as the central nervous system of your solution - every piece of data flows through and is organized within this structure.

Where It Fits in the Solution

The UNS serves as the data foundation that all other pillars build upon:

  • Process Modules - Populate tag values from field devices
  • Application Modules - Read and write tags through scripts and databases
  • User Interface - Display and modify tag values
  • External Systems - Access data through TagProviders and APIs

Core Components

Tags - Real-Time Data Points

Tags are the fundamental data variables in your solution:

  • Basic Tags - Simple data points (temperature, pressure, status)
  • Complex Tags - Structured data using User Data Types
  • System Tags - Built-in tags for runtime information
  • Reference Tags - Pointers to external data sources
  • Array Tags - Collections of similar data points

Asset Tree - Hierarchical Organization

Organize tags in a logical structure matching your process:

  • Plant Structure - Site → Area → Line → Equipment
  • Functional Groups - By system or subsystem
  • Geographic Layout - By location or zone
  • Custom Hierarchies - Match your organization
  • Dynamic Navigation - Runtime tree browsing

User Data Types (UDTs) - Reusable Templates

Create templates for complex equipment and systems:

  • Standard Objects - Motors, valves, pumps, PIDs
  • Composite Types - Combine multiple data types
  • Inheritance - Base types with variations
  • Nested UDTs - Complex hierarchical structures
  • Automatic Instantiation - Create multiple instances

TagProviders - External Data Integration

Connect to external data sources without copying data:

  • OPC UA - Browse external OPC servers
  • MQTT - Subscribe to broker topics
  • Databases - Live database queries
  • Web Services - REST API connections
  • Cloud Platforms - IoT hub integration

Configuration in Designer

Creating Tags

Using the Tag Grid

  1. Navigate to Unified NamespaceTags
  2. Click in empty row or press Insert
  3. Configure essential properties:
    • Name - Unique identifier (e.g., Tank1_Level)
    • Type - Data type selection
    • Initial Value - Startup value
    • Description - Documentation

Tag Data Types

  • Boolean - True/False, On/Off states
  • Integer - Whole numbers (-2,147,483,648 to 2,147,483,647)
  • Long - Large whole numbers (64-bit)
  • Float - Single precision decimal
  • Double - Double precision decimal
  • String - Text values
  • DateTime - Date and time stamps

Bulk Tag Creation

  • Copy/Paste - From Excel or CSV
  • Fill Down - Replicate patterns
  • Import Wizard - From external sources
  • Template Generation - Create similar tags
  • Scripted Creation - Programmatic generation

Building the Asset Tree

Creating Asset Hierarchy

  1. Go to Unified NamespaceAsset Tree
  2. Right-click to add levels:
    • Level 1 - Enterprise/Site
    • Level 2 - Area/Department
    • Level 3 - Line/Process
    • Level 4 - Equipment/Device
    • Level 5+ - Components

Organizing Tags in Assets

  • Drag and Drop - Move tags to assets
  • Auto-Creation - Generate from tag names
  • Bulk Assignment - Using naming patterns
  • Dynamic Binding - Runtime association
  • Template Mapping - UDT to asset linking

Asset Properties

  • Name - Display name in tree
  • Path - Full hierarchical path
  • Category - Asset classification
  • Properties - Custom metadata
  • Security - Access control

Creating User Data Types

Defining a UDT

  1. Navigate to Unified NamespaceUser Data Types
  2. Click New Type
  3. Add members:
    • Value Members - Data points
    • Reference Members - Links to other tags
    • Expression Members - Calculated values
    • Array Members - Collections

Example: Motor UDT

Motor (User Data Type)
??? Running (Boolean) - Motor running status
??? Speed (Float) - Current speed in RPM
??? Current (Float) - Motor current in Amps
??? Hours (Double) - Runtime hours
??? StartCmd (Boolean) - Start command
??? StopCmd (Boolean) - Stop command
??? FaultCode (Integer) - Fault status
??? Properties
    ??? Scaling - Speed 0-1800 RPM
    ??? Alarms - High current, Fault
    ??? History - Log speed and current

UDT Inheritance

Create base types and variations:

  • Base Motor - Common properties
  • VFD Motor - Adds frequency control
  • Servo Motor - Adds position control
  • 2-Speed Motor - Adds speed selection

Configuring TagProviders

Adding External Sources

  1. Go to Unified NamespaceTagProviders
  2. Click New Provider
  3. Select provider type:
    • OPC UA Client - Connect to OPC servers
    • MQTT Client - Subscribe to topics
    • Database - Live SQL queries
    • REST API - Web service calls

Provider Configuration

  • Connection String - Server address and credentials
  • Update Rate - Polling or subscription interval
  • Browse Settings - Filter and namespace
  • Mapping Rules - Tag name transformation
  • Error Handling - Failover behavior

Tag Properties & Configuration

Essential Properties

  • Name - Unique identifier in namespace
  • Type - Data type of the tag
  • Value - Current runtime value
  • Quality - Good, Bad, Uncertain
  • Timestamp - Last update time

Scaling & Engineering Units

  • Raw Range - Device min/max values
  • Scaled Range - Engineering unit range
  • Units - Engineering unit text (°F, PSI, GPM)
  • Decimal Places - Display precision
  • Clamp - Limit to range

Advanced Properties

  • Retentive - Maintain value through restart
  • Initial Value - Startup value if not retentive
  • Min/Max - Value limits for writes
  • Deadband - Change threshold for events
  • Array Size - For array tags

Security & Access

  • Read Security - Who can read value
  • Write Security - Who can write value
  • Visibility - Show/hide in browsing
  • Audit - Log all changes
  • Lock - Prevent runtime writes

Data Explorer

Browsing Namespace

Navigate and search the unified namespace:

  • Tree View - Hierarchical browsing
  • List View - Flat list with filters
  • Search - Find tags by name or property
  • Recent - Recently accessed tags
  • Favorites - Bookmarked tags

Testing Values

Verify tag configuration before runtime:

  • Write Values - Test tag writes
  • Watch Window - Monitor changes
  • Quality Simulation - Test bad quality
  • Force Values - Override for testing
  • Trace Changes - Log value changes

Import/Export Tools

  • Excel Import/Export - Bulk tag management
  • CSV Format - Simple data exchange
  • XML Export - Complete configuration
  • Tag Cross Reference - Usage report
  • Documentation - Generate tag lists

Runtime Behavior

Value Updates

How tag values change during runtime:

  • Device Writes - From field equipment
  • Script Writes - From calculation logic
  • Client Writes - From operator UI
  • Expression Updates - Calculated values
  • Provider Updates - External sources

Quality Management

OPC-compliant quality codes:

  • Good - Valid current value
  • Bad - Communication failure or error
  • Uncertain - Questionable reliability
  • Sub-Status - Detailed quality information
  • Quality Propagation - Through calculations

Event Generation

Tags generate events on:

  • Value Change - Above deadband
  • Quality Change - Good to bad
  • Write Attempts - Success or failure
  • Alarm Conditions - Limit violations
  • Security Violations - Unauthorized access

Best Practices

Naming Conventions

  • Use consistent hierarchical naming (Area_Equipment_Signal)
  • Avoid special characters except underscore
  • Include units in name when relevant (Tank1_Level_FT)
  • Use standard abbreviations consistently
  • Document naming standards

Organization Strategy

  • Mirror physical or logical plant structure
  • Group related tags in UDTs
  • Use asset tree for navigation
  • Plan for expansion from start
  • Consider maintenance access patterns

Performance Optimization

  • Set appropriate deadbands to reduce events
  • Use arrays for similar data points
  • Minimize expression complexity
  • Group related tags for device reads
  • Archive unused tags

Data Integrity

  • Use retentive tags for critical values
  • Set min/max limits to prevent errors
  • Configure quality handling in calculations
  • Implement redundant data paths
  • Regular backup of configuration

Troubleshooting

SymptomLikely CauseSolution
Tag value not updatingNo device mappingCheck device point configuration
Quality shows "Bad"Communication failureVerify device connection
Cannot write to tagSecurity restrictionCheck write permissions
Expression not calculatingSyntax errorReview expression syntax
UDT changes not reflectedInstances not updatedRecreate or refresh instances
Asset tree not showing tagsTags not assignedAssign tags to asset nodes
Provider tags unavailableConnection failedCheck provider configuration

Common Patterns

Pattern 1: Equipment Module

Create UDT for complete equipment control:

  • Status inputs (running, faulted, ready)
  • Control outputs (start, stop, reset)
  • Analog values (speed, position, load)
  • Statistics (runtime, cycles, efficiency)

Pattern 2: Process Area

Organize by ISA-95 levels:

  • Enterprise → Site → Area → Line → Cell → Unit

Pattern 3: Calculated KPIs

Use expressions for real-time calculations:

  • Efficiency = (Good_Count / Total_Count) * 100
  • OEE = Availability * Performance * Quality

Pattern 4: External Integration

Layer external data with TagProviders:

  • Local control tags (read/write)
  • Remote monitoring tags (read-only)
  • Cloud analytics tags (periodic update)

Related Modules

AI Assistant Data

<details> <summary>Structured Information for AI Tools</summary>

json

{
  "module": "Unified Namespace",
  "pillar": "Foundation",
  "purpose": "Central data model and single source of truth",
  "components": {
    "tags": {
      "types": ["Boolean", "Integer", "Long", "Float", "Double", "String", "DateTime"],
      "features": ["Scaling", "Retentive", "Arrays", "Security", "Quality"]
    },
    "assetTree": {
      "levels": ["Enterprise", "Site", "Area", "Line", "Equipment"],
      "organization": "Hierarchical navigation structure"
    },
    "UDTs": {
      "capabilities": ["Templates", "Inheritance", "Nesting", "Reusability"],
      "commonTypes": ["Motor", "Valve", "PID", "Tank", "Pump"]
    },
    "tagProviders": {
      "types": ["OPC UA", "MQTT", "Database", "REST API"],
      "purpose": "External data integration"
    }
  },
  "commonTasks": [
    "Create tags",
    "Build asset hierarchy",
    "Define UDTs",
    "Configure providers",
    "Import from Excel",
    "Set security"
  ],
  "dependencies": {
    "feeds": ["Devices", "Scripts", "Providers"],
    "consumers": ["Displays", "Alarms", "Historian", "Reports"]
  },
  "bestPractices": [
    "Consistent naming",
    "Logical hierarchy",
    "Appropriate data types",
    "Security configuration",
    "Documentation"
  ]
}

...