Hello all!
The UA Spec. Part 3, chapter 5.8.3 says about the DataType Attribute ‘IsAbstract’:
The IsAbstract Attribute specifies if the DataType is abstract or not. Abstract DataTypes can be used in the AddressSpace, i.e. Variables and VariableTypes can point with their DataType Attribute to an abstract DataType. However, concrete values can never be of an abstract DataType and shall always be of a concrete subtype of the abstract DataType.
My question:
When is it allowed or recommended to let a Variable point to an abstract DataType and when represent a Variable Node a concrete value?
If I look into the OPC Foundation ReferenceServer Sample there is a Variable Node ‘Integer’ which is from the DataType Integer as well as one Node from DataType UInteger. These two Nodes are not further specified (e. g. some reference to DataType Int32). In comparison with the CTT test script “Attribute Services/Attribute Write Values/010.js+011.js” each Integer or UInteger specified Node must support up to Int64 or UInt64.
Probably some one can explain it to me?!
Thanks and regards,
Martin
As written in Part 3, the DataType Attribute of a Variable can reference an abstract DataType. Although allowed, though, this is assumed to be rare and mainly used for “Number” and abstract sub-types of “Number”.
Servers may choose to use an abstract DataType if the concrete DataType for a Variable value is not known or even varies. When reading, of course, the Value has to have a concrete DataType.
One disadvantage of using abstract is that Clients have no clue which concrete sub-types are actually supported. Clients that detect an abstract DataType will then usually read the Value to determine the concrete DataType. But they have to be prepared to receive a different concrete DataType on the next Read …
The mentioned test scripts may be wrong and I already asked the compliance group to review.
1 Guest(s)