...
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:
UserTypes allow creating complex data structures that standard types cannot represent, such as pumps, motors, tanks, or production lines.
Table of Contents maxLevel 2 minLevel 2 indent 10px exclude Steps style none
Every UserType carries ontology metadata alongside the familiar configuration properties. Import populates these columns from RDF/OWL source files, export serializes them back to triples, and semantic search ranks matches across them. See Industrial Ontology Integration How-to for the full model.
| Column | Where | Storage | UI | Round-trip |
|---|---|---|---|---|
| DisplayText | UserType row | Text, 255 chars | UserType properties grid | rdfs:label (primary) on the class IRI |
| Labels | UserType row | Text, unbounded, semicolon-delimited | UserType properties grid, label-chips | skos:altLabel per entry |
| SourceIri | UserType row | Text, unbounded | UserType properties grid | Subject IRI for class triples |
| BaseUserType | UserType row | Name reference to another UnsUserTypes row (resolved Name → ID at write time). Enables inheritance. Locked cells use LockedState=BaseType semantics. | UserType properties grid (dropdown) | rdfs:subClassOf <parent IRI> |
| Attributes | UserType row | JSON column, unbounded. Runtime-mutable via @Tag.X.Attributes. Retentive. | UserType properties grid, expandable JSON editor | Individual triples per prefix:localName (language-tagged for @lang-suffixed keys) |
The UDT member grid gained a single ontology column in 10.1.5:
| Column | Where | Storage | UI | Round-trip |
|---|---|---|---|---|
| SourceIri | Member-def row | Text, unbounded | UDT member grid column | Predicate IRI for the property declaration |
| 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. Imports from skos:prefLabel or primary rdfs:label (10.1.5+). | No |
| Labels | Alternative names, semicolon-delimited. Imports from skos:altLabel. Searchable by search_uns (10.1.5+). | No |
| SourceIri | Full source IRI for round-trip with external ontologies. Populated by the ontology importer, user-editable (10.1.5+). | No |
| BaseUserType | Parent UserType for single-parent inheritance. Maps to rdfs:subClassOf on export (10.1.5+). | No |
| Attributes | JSON column for ontology annotations not covered by other columns (dcterms:*, alt-language labels, custom predicates). Runtime-mutable and retentive (10.1.5+). | No |
| RelativeAddress | Device addressing | No |
| Description | Member documentation | No |
| Code Block | ||
|---|---|---|
| ||
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 |
Templates can contain other templates:
| Code Block | ||
|---|---|---|
| ||
Template: PumpStation Members: - Pump1 (Type: Motor) - Pump2 (Type: Motor) - FlowRate (Double) - Pressure (Double) Access: @Tag.Station1.Pump1.Running @Tag.Station1.Pump2.Speed |
| Property | Controls | Applies To |
|---|---|---|
| EditSecurity | Modify permission | Design-time |
| ReadSecurity | Read access | Runtime |
| WriteSecurity | Write access | Runtime |
| Code Block | ||
|---|---|---|
| ||
Template: TankFarm Members: - Tanks (Type: Tank, Array: 10) Access: @Tag.TankFarm1.Tanks[0].Level @Tag.TankFarm1.Tanks[1].Temperature |
For device communication:
| Code Block | ||
|---|---|---|
| ||
Template: AnalogInput Members: - Value (RelativeAddress: ".PV") - Status (RelativeAddress: ".ST") Device mapping automatically appends to base address |
| Info |
|---|
When setting properties for array elements or template members (StartValue, Min, Max), these values will not display in the Designer DataGrid. Access them through Tag Properties dialog or at runtime. Property changes to one instance do not propagate to others. Each template instance operates independently. |
| Code Block | ||
|---|---|---|
| ||
Members: - Running: Digital - Speed: Double (0-1800 RPM) - Current: Double (0-100 Amps) - Temperature: Double (0-200 C) - HoursRun: Long - LastMaintenance: DateTime |
| Code Block | ||
|---|---|---|
| ||
Members: - Level: Double (0-100 %) - Temperature: Double (-50-150 C) - Pressure: Double (0-10 Bar) - HighAlarm: Digital - LowAlarm: Digital - Product: Text |
| Code Block | ||
|---|---|---|
| ||
Members: - Station1: Motor - Station2: Motor - ConveyorSpeed: Double - ProductCount: Integer - BatchID: Text - QualityScore: Double |
Template not appearing:
Members not accessible:
Values not retained: