Overview
A master symbol is a GroupObject with a name in the GroupSymbol field. This name registers the group in the Symbols library, making it available for instantiation on any page. Each instance references the master and holds its own replacement values for the master's placeholders (replacers).
A popup symbol follows the same structure as a master symbol. The difference is in how it is invoked: a popup symbol is opened at runtime by the OpenPopup action and is destroyed when it is closed or when the page navigates away. A permanent symbol is placed directly on the page.
Creating a Master Symbol
The following steps describe building a simple pump symbol as an example. The same approach applies to any reusable element.
Place a symbol image from the Quick Menu (CTRL+Q) Symbols library on the page. Resize it and add a color animation expression linked to the appropriate variable, for example PLC1.Pump1_RunFeedback.
Add a Label object above the symbol. Use a descriptive placeholder as the object name, for example Label. Adjust font alignment and padding as needed.
Add an Input object to display a data value such as pump speed. Set it to read-only, configure the unit, and center the font.
Select all objects and press CTRL+G to group them into a GroupObject.
In the Group Decorator panel, enter a name in the GroupSymbol field, for example PumpMaster. The Group Decorator now shows Template in bold, indicating this group is registered as a master symbol.
Save the page with CTRL+S. The master is now available in the Symbols library and can be instantiated on any page in the project.
Configuring Master Replacers
Replacers are named placeholders in a master symbol. When an instance is created, each replacer is substituted with the replacement value provided for that instance.
With the master selected, click Master Replacers in the Group Decorator. The Edit Master dialog opens.
Add one row per placeholder using the Add (+) button. The columns are: Label (a descriptive label shown in the Edit Instance dialog), Replacer (the exact placeholder text to match and replace), and Default (the value pre-filled when creating a new instance).
For the pump example, add the following rows:
| Label | Replacer | Default |
|---|---|---|
| PLC device name | PLC | PLC1 |
| Pump tag name | Pump1 | Pump1 |
| Pump label text | Label | Pump 1 |
No rows match the filter.
Click OK and save the page. The replacers are now active for all instances created from this master.
Creating Instances
An instance is a copy of a master symbol with its own replacement values. Multiple instances of the same master can exist on the same page or on different pages.
Open the Quick Menu (CTRL+Q) and go to the Symbols panel. The library displays available masters in a folder tree; open a folder with its chevron, or use Expand All and Collapse All on the Home row. Click a master symbol name to open the Edit Instance dialog.
Enter a unique Symbol Name for this instance, for example Pump2. In the Replacement column, enter the value that substitutes each replacer for this instance.
Click OK to place the instance on the page. Repeat to create additional instances with different replacement values.
An existing symbol can also be duplicated with CTRL+D, or copied and pasted with CTRL+C and CTRL+V. The copy receives a new Symbol Name made of the original name and a short unique suffix, for example Pump2_a3f9c2. This applies to masters and instances alike, so a duplicated master keeps the original master visible in the Symbols library and two instances on the same page keep distinct names. Copying a copy replaces the suffix instead of adding a second one. A copied instance keeps its link to the same master and its replacement values. Rename the copy in the GroupSymbol field of the Group Decorator panel to give it a meaningful name.
A master symbol can contain an instance of another master symbol. Give the nested instance its own Symbol Name and, in its Replacement column, enter the replacer name of the surrounding master instead of a fixed value. The surrounding master passes its own replacement values through to the nested symbol, so creating an instance of the surrounding master applies the values entered for that instance to the nested symbol content as well, without a separate push on the nested master.
The Symbol Name of a nested symbol is defined once on the master that contains it and is copied into every instance of that master, so all copies carry the same name. A nested symbol is maintained through the master or the instance that contains it rather than on its own. Use a Symbol Name for it that is not used by any placed instance, so it stays recognizable in the Push to Instances dialog.
Masters do not need to be on the same page as their instances. It is common practice to maintain a dedicated page for master symbols. Masters and their instances can also be exported and imported into another project.
Pushing Changes from Master to Instances
When a master symbol is modified, changes must be propagated to instances using Push or Update.
To push from the master to one or more instances: select the master and click Push in the Group Decorator. The Push to Instances dialog lists all instances of this master with their page name and instance name. Out-of-date instances are pre-selected. Select the instances to update and click Push.
To update a single instance from the master: select the instance and click Update in the Group Decorator. The instance is updated to the master's current structure.
Pushing or updating a master that contains a nested symbol also re-applies the nested symbol replacements on every updated instance, so nested content stays in step with the values entered for each instance.
When the pushed master is used as a nested symbol, the Push to Instances dialog lists one row for each symbol that contains a copy of it, plus the master it is nested in, and every row carries the same instance name. A Replacement value entered on one of those rows is applied to all copies with that name on the same page. Set the values on the surrounding instance instead, and push the surrounding master to distribute them.
Changing the Replacement values of an existing instance in the Edit Instance dialog stores the new values on that instance. The instance content itself is rebuilt from the master on the next Push or Update, which is when the new values become visible on the page. Push or Update the instance after changing its Replacement values.
Because Push and Update rebuild the instance content from the master, any change made directly to the objects inside an instance is replaced by the master content. Make such changes on the master, or keep the instance on its current version by not pushing or updating it.
An instance can intentionally remain on an older version by choosing not to push or update it. This is useful when a specific instance requires a different layout or configuration.
Creating a Popup Symbol
A popup symbol is a group symbol that is opened at runtime by an OpenPopup action. Its creation is identical to creating a master symbol.
Design the popup content on the page. For a pump control popup, this typically includes a Start/Stop button linked to a run variable with a Toggle action, an Auto/Manual button for manual override, a speed input, and a label.
Add a close button and assign the ClosePopup action to it.
Optionally, add a Square object as a background panel. Give the content objects a higher layer index using the Up arrow in the Properties panel so the background square appears behind them, then include the square in the selection.
Select all objects, including the background square, and press CTRL+G to group them.
In the Group Decorator, enter a GroupSymbol name, for example PumpFaceplate.
Click Master Replacers and add the replacers needed by this popup. Using the same placeholder names as the master symbol (for example PLC, Pump1, Label) allows the replacers to cascade automatically when the popup is called from an instance.
Save the page with CTRL+S. The popup symbol is now available in the Symbols library.
The Fixed and Disable Drag options are available to control whether the operator can reposition the popup at runtime.
Assigning the OpenPopup Action
The OpenPopup action can be assigned to any object inside a master symbol. When the master is pushed to instances, the action's replacement values update automatically if the popup and master share the same replacer names.
Use ALT+Click to select an individual object inside the master group. In the Properties panel, set the Action to OpenPopup and click Configure. The Popup Configurator dialog opens.
In the Symbol field, select the popup symbol, for example PumpFaceplate. Set the Top and Left fields to position the popup on screen. Enable Fixed to lock the popup in place, or enable Disable Drag to show it at the specified position while preventing the operator from repositioning it.
In the replacer table, fill in the Replacement column. When the popup symbol uses the same replacer names as the master symbol, the values are cascaded: pushing the master to an instance also updates the popup's replacement values to match that instance automatically.
Click Save to close the Popup Configurator.
Click Push in the Group Decorator to propagate the change to all instances. To verify cascading on a specific instance, select it and click Instance Replacers in the Group Decorator to confirm that the popup's replacement values reflect the instance's replacer values. A replacer added to the master after the instances were placed is filled in on every instance with the master's default value by the next Push (or Update); open Instance Replacers to give an instance its own value.
When a page opens, it loads the popup symbols that the OpenPopup actions on the page open, together with the popups those popups open. Any other popup symbol, for example one opened from a script, is loaded from the server the first time it opens. When this takes longer than 150 ms, the mouse pointer shows a busy cursor and a spinner appears in the center of the screen until the popup opens. Clicking again while the popup loads opens it once.
Adding a Trend View to the Symbol
A Trend Analyst view can be attached to a master symbol so that each instance opens a trend pre-configured for its own variables.
Create a Button object outside the master group, style it, and assign the Trend Analyst action.
Copy the button (CTRL+C), select the master group, and press CTRL+V to paste the button into the group.
In runtime, click the Trend button to open the Trend Analyst. Click the gear icon, then the + button to add pens. Add the relevant variables (for example PLC.Pump1_SetSpeed and PLC.Pump1_Speed) and adjust colors.
Open Import/Export settings in the Trend Analyst and click Clipboard to copy the current pen configuration to the clipboard.
In design mode, open the Trend Analyst action on the button. Paste the JSON from the clipboard into the Config field, click Beautify to format it, then click Save.
Variable names in the configuration that match replacer names are substituted automatically when the master is pushed to instances. Each instance opens the Trend Analyst with a trend configuration pre-set to its own variables.
Click Push in the Group Decorator to propagate the trend configuration to all instances.
Showing Alarms on a Symbol
A symbol that is bound to a UDT instance (Bind in the Group Decorator, or a symbol created from the Asset Manager) can show the alarm state of that instance on the page. Check Alarm Indicator in the General section of the Group Decorator on the master symbol and Push the master to its instances.
At runtime an instance with active alarms shows a frame around the symbol in the colour of the highest active severity (Critical, High, Medium, Low, the same colours and symbols as the Alarm Viewer) and, on the top-left corner, the severity symbol with the number of active alarms of the bound UDT instance. Frame and symbol blink while one of those alarms is unacknowledged and stop blinking when all are acknowledged. When no alarm is active, nothing is shown.
The count covers the alarms that belong to the bound UDT instance only. Alarms of other instances on the same asset, and alarms that have returned to normal, are not included. A symbol that is not bound to a UDT instance shows no indicator.
Conclusion
Using master symbols, instances, and popup symbols, complex reusable components can be built and maintained efficiently. Changes to a master propagate to all instances through Push, and replacers ensure each instance references its own variables and configuration. The same approach applies to popup symbols, which serve as fully dynamic control panels that adapt automatically when pushed to new instances.