UNS  UserTypes (Reference), also referred as UDTs, or DataTemplates, extend the platform's predefined data types by defining custom types with properties tailored to business needs, enabling modeling of solution-specific data structures like equipment status and asset attributes. A UserType provide:

  • Custom data type definitions
  • Reusable tag structures
  • Hierarchical data modeling
  • Consistent asset representation
  • Property inheritance
  • Template-based tag creation

UserTypes allow creating complex data structures that standard types cannot represent, such as pumps, motors, tanks, or production lines.

In this page:

Creating UserTypes

  1. Navigate to Unified Namespace → UserTypes
  2. Click New button
  3. In dialog:
    • Name: Template identifier
    • Description: Documentation
  4. Click OK
  5. Add members in grid:
    • Type in first row
    • Press Enter to add
    • Configure properties per member

UserType Properties

PropertyDescriptionRequired
NameMember name within templateYes
TypeData type (built-in or nested template)Yes
ArrayArray size for memberNo
ParametersType-specific settingsNo
Min/MaxValue limitsNo
ScaleMin/MaxEngineering scaleNo
UnitsEngineering unitsNo
FormatDisplay formattingNo
EnumerationValue mappingsNo
StartValueInitial valueNo
RetentiveValue persistenceNo
DomainServer/Client scopeNo
VisibilityExternal accessNo
DisplayTextUI display textNo
RelativeAddressDevice addressingNo
DescriptionMember documentationNo

Using UserTypes

Creating Tags from Templates

  1. Go to Unified Namespace → Tags
  2. Click New Item
  3. In Type dropdown, select template
  4. Tag inherits all template members

Template Instance Example

Template: Motor
Members:
  - Running (Digital)
  - Speed (Double)
  - Temperature (Double)
  - AlarmStatus (Integer)

Tag: Motor1 (Type: Motor)
Access:
  @Tag.Motor1.Running
  @Tag.Motor1.Speed
  @Tag.Motor1.Temperature
  @Tag.Motor1.AlarmStatus

Nested Templates

Templates can contain other templates:

Template: PumpStation
Members:
  - Pump1 (Type: Motor)
  - Pump2 (Type: Motor)
  - FlowRate (Double)
  - Pressure (Double)

Access:
  @Tag.Station1.Pump1.Running
  @Tag.Station1.Pump2.Speed

Security Settings

PropertyControlsApplies To
EditSecurityModify permissionDesign-time
ReadSecurityRead accessRuntime
WriteSecurityWrite accessRuntime

Member Configuration

Supported Base Types

  • Digital
  • Integer
  • Long
  • Double
  • Decimal
  • Text
  • DateTime
  • Custom Templates

Array Members

Template: TankFarm
Members:
  - Tanks (Type: Tank, Array: 10)
  
Access:
  @Tag.TankFarm1.Tanks[0].Level
  @Tag.TankFarm1.Tanks[1].Temperature

Relative Addressing

For device communication:

Template: AnalogInput
Members:
  - Value (RelativeAddress: ".PV")
  - Status (RelativeAddress: ".ST")
  
Device mapping automatically appends to base address

Important Notes

<ac:structured-macro ac:name="info"> ac:rich-text-body When setting properties for array elements or template members (StartValue, Min, Max), these values won't display in the Designer DataGrid. Access them through Tag Properties dialog or at runtime.

Property changes to one instance don't propagate to others - each template instance operates independently. </ac:rich-text-body> </ac:structured-macro>


Common Use Cases

Motor Template

Members:
  - Running: Digital
  - Speed: Double (0-1800 RPM)
  - Current: Double (0-100 Amps)
  - Temperature: Double (0-200 °C)
  - HoursRun: Long
  - LastMaintenance: DateTime

Tank Template

Members:
  - Level: Double (0-100 %)
  - Temperature: Double (-50-150 °C)
  - Pressure: Double (0-10 Bar)
  - HighAlarm: Digital
  - LowAlarm: Digital
  - Product: Text

Production Line

Members:
  - Station1: Motor
  - Station2: Motor
  - ConveyorSpeed: Double
  - ProductCount: Integer
  - BatchID: Text
  - QualityScore: Double

Best Practices Checklist 

  • Plan template hierarchy - Design before implementation
  • Use meaningful names - Clear member identification
  • Document templates - Describe purpose and usage
  • Standard units - Consistent engineering units
  • Reuse templates - Avoid duplication
  • Version control - Track template changes
  • Test thoroughly - Verify all members

Troubleshooting

Template not appearing:

  • Save after creation
  • Check for naming conflicts
  • Verify no circular references
  • Review template hierarchy

Members not accessible:

  • Confirm tag uses template type
  • Check member names
  • Verify array indices
  • Review security settings

Values not retained:

  • Check retentive settings
  • Verify database connection
  • Review member configuration
  • Test with simple template




In this section...