How to have one display to share between many equipment, instead of having one display for each equipment.
How-to → Examples → Feature → UNS → Tag Reference Open Display Example
Two distinct "reference" concepts in FrameworX — do not confuse
This page is about (a) the Reference tag type — a runtime tag whose .Link property points to another tag of the same UserType. It is a runtime pointer / alias mechanism used to share a single display across many equipment instances.
The other concept is a Reference-type UDT member: a member declared with Type=Reference whose per-instance value points to another tag's /Attr envelope (for example, Mixer_M101.feedsInto = Reactor_R101/Attr). That second concept is the FX representation of an OWL owl:ObjectProperty — an ontology relation between named individuals — and round-trips through the RDF/OWL importer and exporter.
If you are modeling ontology relations (asset-to-asset edges, equipment-to-process links), see Industrial Ontology Integration How-to and Import an OWL/RDF ontology into your UNS instead.
Download the solution: Tag Reference Display Open Example.dbsln
This example demonstrates the use of the Reference Tag type to open displays.
Overview
When you click any of the buttons, a display will open and a reference tag will be linked to the corresponding machine. This way, you can use a single display for all machines — instead of creating one display per machine — simply by changing the reference tag.
Data Model (UNS)
UserType: Machine
All machines share the same UserType, which defines the following process variables:
Member | Type |
|---|---|
Temperature | Integer |
Pressure | Integer |
Power | Integer |
Tags
Tag | Type | Domain | Description |
|---|---|---|---|
Machine1 | Machine | Server | Instance of the Machine UserType |
Machine2 | Machine | Server | Instance of the Machine UserType |
Machine3 | Machine | Server | Instance of the Machine UserType |
RefMachine | Reference (Machine) | Server | Reference tag — points to whichever machine is currently selected |
EquipNumber | Integer | Server | Drives the reference tag during Previous/Next navigation |
Simulated Values
Machine | All Process Variables |
|---|---|
Machine 1 | 10 |
Machine 2 | 20 |
Machine 3 | 30 |
Displays
MainPage
The home screen. Contains three instances of the MyButton symbol, one per machine.
When clicked, the button:
- Sets
@Tag.RefMachine.Linkto the name of the selected machine tag - Sets
@Tag.EquipNumberto the corresponding machine number - Opens the MachineStatus display
MachineStatus (Shared Display)
This is the single shared display used for all machines. All bindings reference RefMachine, never a specific machine tag directly.
Element | Binding |
|---|---|
Temperature TextBox | @Tag.RefMachine.Temperature |
Pressure TextBox | @Tag.RefMachine.Pressure |
Power TextBox | @Tag.RefMachine.Power |
Because all bindings go through RefMachine, the same display automatically reflects whichever machine is currently linked, no need for 3 different displays.
MyButton Symbol
The buttons on MainPage are instances of the MyButton symbol. Using a Symbol instead of a plain button means any visual or behavioral change made to the symbol definition is automatically applied to every instance across all displays.
Symbol Labels (Inputs)
Label | Description |
|---|---|
Equipment | Tag reference for the target machine (e.g. @Tag.Machine1) |
EquipmentNumber | Integer identifying the machine (e.g. 1, 2, 3) |
Action Dynamic (on click)
The button executes three expressions on MouseLeftButtonDown:
Expression | Result |
|---|---|
| Written to |
| Written to |
| Opens the MachineStatus display |
Dynamic Label
The button label is built at runtime:
{#Equipment:(@Tag.Machine1).GetName().Replace("Tag.", "")}
This strips the Tag. prefix so the button displays a clean name like Machine1.
To inspect the symbol configuration: right-click any button → Edit Symbol, then check Settings → Label Text and Dynamics → Action.
For more information about Symbols and how to use mnemonics (#Equipment and #EquipmentNumber), refer to the Symbols Control Reference.
Navigation Header (Previous / Next)
The Header display includes Previous and Next buttons that are only visible when the MachineStatus display is open. They allow the operator to cycle through machines sequentially without returning to the main page.
An EquipNumber tag (Integer) drives the reference tag change.
Next Button Action
Expression | Result |
|---|---|
| Written to |
| Written to |
Previous Button Action
Expression | Result |
|---|---|
| Written to |
| Written to |
Both buttons use VisibilityDynamic with condition:
@Display.MachineStatus.IsOpened == true
So they only appear when the MachineStatus page is active.
Reference Tags — How They Work
A Reference tag is a special tag type that acts as a pointer to another tag of the same UserType. Instead of binding displays or actions directly to a specific machine tag, you bind them to the reference tag — and simply change what it points to at runtime.
In this demo, RefMachine is a Reference tag of type Machine. All displays bind through it, so switching which machine it points to is enough to update the entire screen.
The .Link Property
The .Link property is what you read or write to control which tag the reference is pointing to. It holds the target tag name as a string.
Usage Examples
Assigning directly from a tag name:
@Tag.RefMachine.Link = Tag.Machine1.GetName()
Building the link dynamically by concatenating a string with a tag value:
@Tag.RefMachine.Link = "Tag.Machine" + @Tag.EquipNumber.ToString()
Where This Pattern Appears in This Demo
Location | Element | How Reference Is Used |
|---|---|---|
MyButton Symbol | Action Dynamic (Expression 1) |
|
Header — Next Button | Action Dynamic (Expression 2) |
|
Header — Previous Button | Action Dynamic (Expression 2) | Same pattern as Next, with decrement logic |
MachineStatus Display | TextBox bindings |
|
MachineStatus Display | Debug TextBox |
|
In this section...