We are currently discussing how to implement variables as instances of the data type Enumeration and how to handle associated properties like EnumStringsor EnumValues. According to the specification, the EnumStrings property must be modeled as a child node of the Enumeration DataType. However, it is unclear whether it is permitted to add EnumStrings to a variable instance that uses this enumeration as its data type e.g., via a reference.
Is this allowed by the OPC UA specification?
If so, where is this explicitly defined in the base specification?

05/30/2017

If you have a Variable that is a Number where the list of Strings is not defined by a DataType then use MultiStateDiscreteType.
I try to show my question with an example:
Root
|->Objects
|->MyVariable (DataType Enumeration -> HeaterStatus)
|->EnumStrings (ns=3;i=3001) (Is it allowed to reference the EnumStrings property directly from the DataType?)
…
|-> DataType -> BaseDataType -> Enumeration -> HeaterStatus -> EnumStrings (ns=3;i=3001)
I checked some example servers where the EnumStrings only exists at the Enumeration definition.
Where is this defined in the specification?

05/30/2017

You can use EnumStrings on any variable since it is not explicitly prohibited.
The issue is best practices.
If you have an Enumeration DataType then it is on the DataType and does not need to be replicated.
But, for convenience, a Variable could have an HasProperty reference to the DataType Property.
Thank you for clarification, I created a Mantis issue https://mantis.opcfoundation.o…..p?id=10307.
1 Guest(s)