The UaModeler provides several Consistency Checks for the custom model. You can call the Consistency Checks via the context menu of the model node in the Project Window. The checks are useful for information models that are not created by the UaModeler.
Consistency Check
The following Consistency Checks are implemented:
- Instances are congruent to types
- No mandatory children are missing, the TypeDefinitions of the children are subtypes or of the same TypeDefinition as the InstanceDeclarations.
- All types are inherited by the BaseTypes of UA
- All ObjectTypes are subtypes (directly or indirectly) of BaseObjectType. All VariableTypes are subtypes (directly or indirectly) of BaseVariableType. All DataTypes are subtypes (directly or indirectly) of BaseDataType.
- All Type names are unique
- The names of the types within a model are unique. The OPC UA specification does not forbid using the same name twice for different types, but you would get a compiler error in the generated code if names are used twice.
- ReferenceTypes are valid
- The Node Id of each Reference is the Node Id of a ReferenceType
- DataTypes of Variables are valid
- The DataType Attribute of each Variable is a Node Id of a DataType Node.
- Values have suitable types
- The values of variables fit to their DataTypeId.
- All Types are strongly typed
- The TypeDefinitions of the children are the same as the TypeDefinitions of their InstanceDeclarations.
- Names are not empty
- The DisplayName and the BrowseName of all UaNodes are not empty.
- All variables have values
- All UaNodes have non-null values.
- Test whether encoding nodes are valid
- Checks if structured DataTypes have at least a Default Binary encoding node and whether other encoding nodes have valid BrowseNames.
- Test whether encoding dictionary are valid
- Checks if DataType dictionary and description nodes exist and are valid. These nodes are used by generic clients that want to read structured DataTypes and cannot evaluate the DataTypeDefinition attribute of a DataType node.