| Type | .NET Type | Description | Range |
|---|
| Digital | Int32 | Binary value | 0 or 1 |
| Integer | Int32 | Whole numbers | ±2,147,483,647 |
| Long | Int64 | Extended integers | 64-bit signed |
| Double | Double | Floating point | IEEE 754 double |
| Decimal | Decimal | High precision | 28-29 significant digits |
| Text | String | Unicode text | 2GB max |
| Json | String | JSON structured data | Built-in parsing |
| DateTime | DateTimeOffset | Date and time | Year 0001-9999 |
| TimeSpan | TimeSpan | Duration | Days to milliseconds |
| Guid | Guid | Unique identifier | 128-bit |
| DataTable | DataTable | In-memory table | Structured data |
| Image | Byte[] | Binary content | Any size |
| Timer | Int32 | Time patterns | Multiple modes |
| Mode | Behavior | Use Case |
|---|
| SquareWave | Toggle 0/1 at interval | Blinking, heartbeat |
| Pulse | Momentary 0→1→0 | Triggers, events |
| DelayOff | Hold value then reset | TOF timer |
| Comparer | Daily schedule | Time-based control |
Dynamic tag addressing:
| Code Block |
|---|
|
// Set reference target
@Tag.Reference1.Link = @Tag.TankFarm/Tank1/Level.GetName();
// Use reference
double level = @Tag.Reference1.Value; |
| Property | Description | Required |
|---|
| Name | Unique tag identifier | Yes |
| Type | Data type selection | Yes |
| Path | Asset tree location | No |
| Array | Array size (0 to N) | No |
| StartValue | Initial value at startup | No |
| Parameters | Type specific settings | No |
| Min/Max | Value limits | No |
| ScaleMin/Max | Engineering scale | No |
| Retentive | Value persistence | No |
| Domain | Server/Client scope | No |
| Visibility | External access level | No |
| Format | Display formatting | No |
| Units | Engineering units | No |
| Enumeration | Number to String (shows in Tag1.ValueAsString) | No |
| DefaultSymbol | Symbol used when dropping/pasting tags on display | No |
| Labels | Semicolon-delimited alternative names. Imports from skos:altLabel, searchable via search_uns and runtime_search_uns. Runtime-mutable and retentive — scripts, bindings, and (planned) operator UI can edit at runtime; writes persist across restarts. Unbounded text column (10.1.5+). | No |
| SourceIri | Full source IRI for the individual. External-system join key. Populated by the ontology importer, user-editable, editable at design time only. Immutable at runtime — the IRI is the tag's identity; if a rename is needed, re-import with owl:sameAs. Unbounded (10.1.5+). | No |
| Attributes | JSON column for ontology annotations not covered by the other columns (dcterms:*, alt-language labels keyed rdfs:label@pt, skos:note, owl:versionInfo, custom predicates). Runtime-mutable and retentive — edit via @Tag.X.SetAttribute(...) or the (planned) operator UI (10.1.5+). | No |
| Description | Documentation (1024 char) | No |
Tags in 10.1.5 carry three ontology columns alongside their real-time data: Labels, SourceIri, and Attributes. These columns populate from RDF/OWL individuals imported by the ontology importer and round-trip back through Export Tags → RDF / JSON.
Labels. Semicolon-delimited alternative names. Imports from skos:altLabel and skos:hiddenLabel. Searchable via search_uns (Designer) and runtime_search_uns (runtime) with one canonical scoring algorithm.SourceIri. Full source IRI for the individual. External-system join key. Preserved on re-export, so round-trip is lossless.Attributes. JSON column for ontology annotations not covered by other columns (dcterms:*, alt-language labels keyed rdfs:label@pt, skos:note, owl:versionInfo, custom predicates). Runtime-mutable and retentive
Tag ontology columns follow a class-vs-instance split shared with UserType and member-def columns (see UNS UserTypes Reference (10.1.5 draft)):
| Layer | SourceIri | Labels | Attributes |
|---|
| UserType | Design-time · immutable identity | Design-time | Design-time |
| Member-def | Design-time | Not modeled | Design-time |
| Tag (this page) | Design-time · immutable identity | Runtime-editable · retentive | Runtime-editable · retentive |
Tag Labels and Attributes are the only ontology columns an operator / script / UI can mutate at runtime. Writes land in the retentive database and survive restarts. Use promote_retentive_attributes before export to roll runtime overlays back into the cold-start data so the exporter produces a deterministic RDF/OWL file. Bindings can read all three columns but writes go through the property setter (script) or the planned operator UI — never through binding-write directly. SourceIri is the tag's ontology identity and never changes at runtime: if a rename is needed, re-import with owl:sameAs.
See Industrial Ontology Integration How-to for the full model.
AI / MCP page action (10.1.5+)
When Designer is navigated to the Tags page, the following action is exposed via the designer_action MCP tool:
designer_action("export_graph", "rj"). Mirrors the Export Tags toolbar dropdown. Accepts format=json (FrameworX native, round-trips with the Import Tags wizard), format=rj (W3C RDF/JSON, default for graph stores like GraphDB / Stardog / Fuseki), or format=jsonld (falls back to rj in 10.1.5 with a warning, native emitter in 10.1.6). The exported file lands in the solution's Exchange folder.
The action is listed in the tabActions array returned by get_state() only when the Tags tab is active. See Export your UNS to RDF/OWL/GraphDB for the broader export reference.
- Navigate to Unified Namespace → Asset Tree
- Right-click folder or click New Tag icon
- Enter tag name and properties
- Go to Unified Namespace → Tags
- Options:
- Click New Item for dialog
- Type directly in Name column
- Paste from external source
- Copy from another solution
- Import from CSV files
- Use Solution Import Tools
- EngWrapper API
Limits value updates:
| Code Block |
|---|
|
Absolute: +/- 5 units from last value
Percentage: 10% change required |
Map values to text:
| Code Block |
|---|
|
0 -> "Off"
1 -> "On"
2 -> "Auto" |
Domain Configuration
| Domain | Scope | Use Case |
|---|
| Server | Global across all clients | Device data, shared values |
| Client | Local to each session | User settings, local states |
| Level | External Access | Use Case |
|---|
| Private | None | Internal only |
| Protected | Read-only | Monitor only |
| Public | Read/Write | Full access |
Affects: OPC UA Server, MQTT Broker, TcpDataAccess
| Setting | Saves | Use Case |
|---|
| None | Nothing | Temporary values |
| ValueOnly | Value only | Operator setpoints |
| Properties | All including value | Complete state |
| PropertiesOnly | All except value | Configuration |
Storage: Dataset.DB.Retentive database
| Code Block |
|---|
|
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) |
| Code Block |
|---|
|
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 size N creates elements [0] to [N]:
| Code Block |
|---|
|
Array = 5 creates:
Tag[0], Tag[1], Tag[2], Tag[3], Tag[4], Tag[5]
(6 elements total) |
| Code Block |
|---|
|
@Tag.DataTableTag = @Dataset.Query.MyQuery.SelectCommand(); |
| Code Block |
|---|
|
@Tag.DataTableExample.StartBlockSet();
@Tag.DataTableExample[1].Column1 = value1;
@Tag.DataTableExample[2].Column2 = value2;
@Tag.DataTableExample.CommitBlockSet(); |
| Property | Type | Description |
|---|
| Value | Tag Type | Current value |
| Quality | Integer | OPC quality (0/64/192) |
| Timestamp | DateTimeOffset | Last change time |
- 0: Bad quality
- 64: Uncertain quality
- 192: Good quality
The TagNames are frequently referenced in these other configuration Tables:
- Node: Communication node
- Address: PLC/device address
- AccessType: Read/Write/ReadWrite
- Condition: Trigger logic
- Groups: Alarm categorization
- Limits: Threshold values
- Table: Storage location
- Deadband: Recording threshold
- DeadbandType: Absolute/Percentage
- 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
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