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
- Navigate to Unified Namespace → UserTypes
- Click New button
- In dialog:
- Name: Template identifier
- Description: Documentation
- Click OK
- Add members in grid:
- Type in first row
- Press Enter to add
- Configure properties per member
UserType Properties
Property | Description | Required |
---|---|---|
Name | Member name within template | Yes |
Type | Data type (built-in or nested template) | Yes |
Array | Array size for member | No |
Parameters | Type-specific settings | No |
Min/Max | Value limits | No |
ScaleMin/Max | Engineering scale | No |
Units | Engineering units | No |
Format | Display formatting | No |
Enumeration | Value mappings | No |
StartValue | Initial value | No |
Retentive | Value persistence | No |
Domain | Server/Client scope | No |
Visibility | External access | No |
DisplayText | UI display text | No |
RelativeAddress | Device addressing | No |
Description | Member documentation | No |
Using UserTypes
Creating Tags from Templates
- Go to Unified Namespace → Tags
- Click New Item
- In Type dropdown, select template
- 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
Property | Controls | Applies To |
---|---|---|
EditSecurity | Modify permission | Design-time |
ReadSecurity | Read access | Runtime |
WriteSecurity | Write access | Runtime |
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...