You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Current »

 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.

In this page:

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...

The root page @parent could not be found in space 93Draft.



  • No labels