Appearance
Template Parameters
Last updated
License feature: Dashboard TemplatesParameters are what each placement fills in. They are the difference between a template and a copied dashboard.
Declaring parameters
In the template editor's Parameters panel, click Add parameter. It starts as param1, labeled "Parameter 1", type Text.
| Field | Description |
|---|---|
| Name | Used by bindings. Letters, numbers and underscores, starting with a letter or underscore. Two parameters cannot differ only in case |
| Label shown when placing | What the person placing the template sees. Write it for them: "Pump", "Line color" |
| Type | UDT instance, Text, Number, Yes / no, Color, Device, Tag |
| UDT type | UDT instance only: which UDT it accepts, or Any UDT type |
| Required | Marks the field with * when placing. It does not stop a placement being saved without it |
| Bin | Removes the parameter |
A name that breaks the rules is flagged under it straight away ("Use letters, numbers and underscores, starting with a letter." / "Another parameter already uses this name."), and saving then fails with the appliance's reason.
Renaming or removing a parameter does not update widgets bound to it; they show "Unknown parameter" until you rebind them.
The one that matters: UDT instance
A UDT instance already means this pump, on this device, at this tag prefix. A parameter of type UDT instance takes one, which is exactly what a faceplate needs.
Set which UDT the parameter accepts. That is what lets the binding picker offer the UDT's fields by name — you pick "Speed" from a list instead of typing a tag path, and the same template then works for every pump. Without it the panel warns "Without a UDT type, widgets cannot offer this UDT's fields by name." and the field list is empty.
A field binding resolves to the instance's device and the tag path <base path>/<instance name>/<field> (without the base path if the instance has none) — the same rule that created the instance's tags. A member of a nested UDT is offered by its path, such as Motor/Current. The binding uses the tag path, not the PLC address a member reads, so a member's Address can change without touching the template. See Tag UDTs.
The other types
| Type | Entered when placing as | What a binding receives |
|---|---|---|
| Text | A text box | The text |
| Number | A number box | The number |
| Yes / no | A checkbox | true or false |
| Color | A color picker | A color like #16a34a |
| Device | A text box | The text typed — it is not a device picker and does not select a device |
| Tag | A text box | Nothing: see the warning |
Warning: A Tag parameter cannot be filled in from the placement panel in this version. The panel offers a text box, but the parameter needs a device and a tag, so widgets bound to it always show "Parameter … is not set". Use a UDT instance parameter instead.
Parameters without a field arrive as static values, so they suit captions (a Text widget's Content), expression inputs and element bindings — for example a Text parameter area bound to the title, or a Number parameter limit used in an expression binding alongside a UDT field.
Binding a widget to a parameter
- Select a widget on the template canvas.
- Add a binding (or use Bind to tag on the title or content) and choose Parameter as its source.
- Pick the parameter under Select a parameter….
- For a UDT instance parameter, pick the field under Select a field… (shown as "Speed (float)").
The Parameter source only exists in the template editor. If the template has no parameters yet, the binding says "This template has no parameters yet. Add one in the Parameters panel, then bind to it here."
Expression bindings on the same widget can use parameter-bound values by binding name, as on a dashboard. Element bindings on a Symbol widget accept parameters too, so one mimic drawing serves every machine of a type.
When a parameter cannot be resolved
On a placement, a widget whose parameter cannot be resolved is shown grayed with Removed and the reason, never left blank. A faceplate quietly showing nothing is indistinguishable from a machine that is genuinely idle.
| Message | What happened |
|---|---|
| Unknown parameter "x" | The binding names a parameter the template no longer declares |
| Parameter "x" is not set | The placement left it empty (or it is a Tag parameter) |
| The instance for "x" no longer exists | It pointed at a UDT instance that has since been deleted |
| Field "y" no longer exists on this UDT | The UDT was edited and that field was removed or renamed |
| "x" is not a UDT instance, so it has no fields | A field was asked for on a non-UDT parameter |
One unresolvable binding marks the whole widget, even if its other bindings are fine.
Example: a pump faceplate
UDT Pump with fields Running (bool), Speed (float), Pressure (float), FaultCode (int). Template Pump faceplate with one parameter pump, type UDT instance, UDT type Pump, label "Pump".
| Widget | Position (x, y, w, h) | Binding |
|---|---|---|
| Status | 0, 0, 3, 2 | value → pump / Running |
| Value "Speed", Unit rpm | 3, 0, 3, 2 | value → pump / Speed |
| Gauge "Pressure" 0–16 bar | 0, 2, 6, 4 | value → pump / Pressure |
Pick "P-101 — Booster Station" under Preview with to check ranges and labels against real values, then Save.