03/03/2026
OfflineHi,
I'm working with ModelDesign file. How does the attributes AccessLevel and WriteAccess of a property element in a ModelDesign file relate to Attributes on a node in addressspace? Example where AccessLevel and WriteAccess are used:
<opc:ObjectType SymbolicName="EXOAnalogInputType" BaseType="ua:BaseObjectType" SupportsEvents="false">
<opc:Children>
<opc:Property SymbolicName="UserDescription" DataType="ua:String" ModellingRule="Mandatory" WriteAccess="0"></opc:Property>
<opc:Property SymbolicName="Title" DataType="ua:String" ModellingRule="Mandatory"></opc:Property>
<opc:Property SymbolicName="Unit" DataType="ua:String" ModellingRule="Mandatory" AccessLevel="ReadWrite"></opc:Property>
<opc:Property SymbolicName="Status" DataType="ua:UInt16" ModellingRule="Mandatory" Historizing="true"></opc:Property>
</opc:Children>
</opc:ObjectType>
SupportsEvents -> EventNotifier
05/30/2017
OfflineThe issue is how the autogenerated code deals with those attributes.
The autogenerated does not automatically copy AccessLevel and WriteAccess attributes when instances are created.
This is because there is no 100% "correct" option available and it is necessary for the users to the autogenerated classes to set these attributes to values that make sense for their application.
Similar issue may exist with SupportsEvents since actually supporting events requires the HasNotifier hierarchy be wired up and if the user application does not set up HasNotifier hierarchy properly then EventNotifier should not indicate SupportsEvent.
Historizing also have the same issue. Without wiring a historian into the application the flag needs to be false.
The same code that connects the historian is responsible for setting Historizing properly.
03/03/2026
OfflineThanks for the answer!
I am examining the node for EXOAnalogInputType in PredefinedNodes in my NodeManager (which derives from CustomNodeManager2). I drill down to the child node representing the Unit property, and its AccessLevel is set to 1 (CurrentRead) rather than the expected 3 (CurrentReadOrWrite) according to the model design file in the post above.
I can't find any trace of this value in the address space, neither in the corresponding type nor in instances created from that type.
Why is AccessLevel a valid property in a ModelDesign file if its value is ultimately ignored?
1 Guest(s)


Log In

Usage Policy