Versions Compared

Key

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

One linerDefine and manage tags in your UNS.

ReferenceModulesUnified Namespace UNS UIAsset Tree | Tags | UserTypes | Enumerations | TagProvider Services | Monitor


 UNS Tags (Reference) represent real-time variables and their associated historical records, providing a structured way to model process information by linking to physical devices, databases, or calculated values. 

Tags in the Unified Namespace provide:

  • Real-time data representation
  • Historical record association
  • Device communication mapping
  • Hierarchical organization
  • Type-safe data handling
  • Array and template support

Tags form the foundation of the solution's data model, connecting field devices to visualization, logic, and storage.

Table of Contents
maxLevel2
minLevel2
indent10px
excludeSteps
stylenone


Tag Types

Built-in Types

Type.NET TypeDescriptionRange
DigitalInt32Binary value0 or 1
IntegerInt32Whole numbers±2,147,483,647
LongInt64Extended integers±9.2×10¹?
DoubleDoubleFloating point±1.79×10³??
DecimalDecimalHigh precision28-29 significant digits
TextStringUnicode text2GB max
JsonStringJSON structured dataBuilt-in parsing
DateTimeDateTimeOffsetDate and timeYear 0001-9999
TimeSpanTimeSpanDurationDays to milliseconds
GuidGuidUnique identifier128-bit
DataTableDataTableIn-memory tableStructured data
ImageByte[]Binary contentAny size
TimerInt32Time patternsMultiple modes

Timer Types

ModeBehaviorUse Case
SquareWaveToggle 0/1 at intervalBlinking, heartbeat
PulseMomentary 0→1→0Triggers, events
DelayOffHold value then resetTOF timer
ComparerDaily scheduleTime-based control

Reference Type

Dynamic tag addressing:

csharp

// Set reference target
@Tag.Reference1.Link = @Tag.TankFarm/Tank1/Level.GetName();

// Use reference
double level = @Tag.Reference1.Value;

Configuration Properties

PropertyDescriptionRequired
NameUnique tag identifierYes
TypeData type selectionYes
PathAsset tree locationNo
ArrayArray size (0 to N)No
StartValueInitial value at startupNo
ParametersType-specific settingsNo
Min/MaxValue limitsNo
ScaleMin/MaxEngineering scaleNo
RetentiveValue persistenceNo
DomainServer/Client scopeNo
VisibilityExternal access levelNo
FormatDisplay formattingNo
UnitsEngineering unitsNo
DescriptionDocumentation (1024 char)No

Creating Tags

Method 1: Asset Tree

  1. Navigate to Unified Namespace → Asset Tree
  2. Right-click folder or click New Tag icon
  3. Enter tag name and properties

Method 2: Tags Grid

  1. Go to Unified Namespace → Tags
  2. Options:
    • Click New Item for dialog
    • Type directly in Name column
    • Paste from external source

Method 3: Import

  • Copy from another solution
  • Import from CSV files
  • Use Solution Import Tools
  • EngWrapper API

Tag Parameters

Deadband

Limits value updates:

Absolute: ±5 units from last value
Percentage: 10% change required

EnumerationSet

Map values to text:

0 → "Off"
1 → "On"
2 → "Auto"

Domain Configuration

DomainScopeUse Case
ServerGlobal across all clientsDevice data, shared values
ClientLocal to each sessionUser settings, local states

Visibility Levels

LevelExternal AccessUse Case
PrivateNoneInternal only
ProtectedRead-onlyMonitor only
PublicRead/WriteFull access

Affects: OPC UA Server, MQTT Broker, TcpDataAccess


Retentive Options

SettingSavesUse Case
NoneNothingTemporary values
ValueOnlyValue onlyOperator setpoints
PropertiesAll including valueComplete state
PropertiesOnlyAll except valueConfiguration

Storage: Dataset.DB.Retentive database


Format Strings

Numeric Formats

N0    → 123        (no decimals)
N2    → 123.45     (2 decimals)
C     → $123.00    (currency)
P     → 12.34%     (percentage)
X     → 7B         (hexadecimal)
E     → 1.23E+02   (scientific)

DateTime Formats

d     → 3/15/2024  (short date)
T     → 14:30:00   (long time)
yyyy-MM-dd HH:mm:ss → 2024-03-15 14:30:00

Array Configuration

Array size N creates elements [0] to [N]:

Array = 5 creates:
Tag[0], Tag[1], Tag[2], Tag[3], Tag[4], Tag[5]
(6 elements total)

DataTable Tags

Using Queries

csharp

@Tag.DataTableTag = @Dataset.Query.MyQuery.SelectCommand();

Manual Population

csharp

@Tag.DataTableExample.StartBlockSet();
@Tag.DataTableExample[1].Column1 = value1;
@Tag.DataTableExample[2].Column2 = value2;
@Tag.DataTableExample.CommitBlockSet();

Runtime Attributes

Core Properties

PropertyTypeDescription
ValueTag TypeCurrent value
QualityIntegerOPC quality (0/64/192)
TimestampDateTimeOffsetLast change time

Quality Codes

  • 0: Bad quality
  • 64: Uncertain quality
  • 192: Good quality

Additional Configuration

Device Integration

  • Node: Communication node
  • Address: PLC/device address
  • AccessType: Read/Write/ReadWrite

Alarm Settings

  • Condition: Trigger logic
  • Groups: Alarm categorization
  • Limits: Threshold values

Historian

  • Table: Storage location
  • Deadband: Recording threshold
  • DeadbandType: Absolute/Percentage

Best Practices Checklist 

  •  Use meaningful names - Follow naming conventions
  •  Set appropriate types - Match data characteristics
  •  Configure retentive - Preserve critical values
  •  Apply deadbands - Reduce unnecessary updates
  •  Document tags - Use Description field
  •  Organize in assets - Logical hierarchy
  •  Set security - Control access levels

Troubleshooting

Tag not updating:

  • Check device communication
  • Verify Quality = 192
  • Review deadband settings
  • Confirm not disabled

Wrong value format:

  • Check Format string
  • Verify Units configuration
  • Review scale settings

Array issues:

  • Confirm index in range
  • Check array size setting
  • Verify element access

Retentive not working:

  • Check database connection
  • Verify retentive setting
  • Review database permissions

In this section...

Page Tree
93DRAF
root@parentspaces