TAG002: undefined-udt-parameter
{Param} in a UDT member names no parameter at all
| Code | TAG002 |
| Name | undefined-udt-parameter |
| Category | Tags and gateway (TAG) |
| Default severity | error |
| Enabled by default | yes |
| Fix available | no |
| ign-lint equivalent | none |
What it does
Section titled “What it does”Checks the {Name} placeholders of parameter-bound properties
({"bindType": "parameter", "binding": "..."}) of UDT definition
members. A name is reported when it is neither a built-in parameter
(InstanceName, PathToParentFolder, PathToTag, TagName,
ParentInstanceName, RootInstanceName) nor a parameter of any UDT
definition or UDT instance of the tag provider. Names are compared
case-insensitively.
The check is deliberately provider-wide: Ignition resolves a placeholder through the enclosing instances, so a member of a UDT that is nested in another UDT may use the outer UDT's parameters, and instances may add parameters of their own. A name that nothing in the provider defines can never be substituted. Placeholders that are not plain names (offsets, formats) are not checked, nor are providers whose tags are not in the workspace.
Why is this bad?
Section titled “Why is this bad?”An undefined parameter is not substituted: the OPC item path, tooltip or
other property keeps the literal {Name} text, so the member reads from
the wrong address or shows the placeholder to operators.
Example
Section titled “Example”The UDT declares DeviceName:
{"opcItemPath": {"bindType": "parameter", "binding": "ns=1;s=[{Device}]Speed"}}Use instead:
{"opcItemPath": {"bindType": "parameter", "binding": "ns=1;s=[{DeviceName}]Speed"}}Generated from the rule metadata by iglint generate-docs; iglint rule TAG002 prints the same page in the terminal. Source: docs/rules/TAG002.md.