« All blog posts

Importing Information Models from OPC UA NodeSet files

01.09.2020


Changelog

7.12.2020

  • Updated the test setup to use Prosys OPC UA SDK for Java 4.5.0-1291 and Prosys OPC UA Simulation Server 5.0.4-284
  • Variable Nodes with unsupported ValueRanks are excluded in the Code Generator’s configuration file to enable generating code for NodeSet files containing such variables
  • Tested new information models: Industrial Automation, Machinery and Machine Tool
  • Added publication dates of NodeSet files

Introduction to NodeSet files

OPC UA uses information models to provide semantics for the data exposed by an OPC UA Server. The standard OPC UA information model is defined in the fifth part of the specification and is used by all OPC UA Servers. This information model is used as a basis for defining new information models for various applications such as modeling devices and their components as Nodes.

OPC UA defines Information Model XML Schema, which specifies how to represent information models in XML format. XML-files representing information models are formally called OPC UA NodeSet files or simply NodeSet files. The OPC Foundation maintains a GitHub repository containing NodeSet files and other files.

Users can also generate NodeSet files for their own information models with OPC UA modeling tools such as OPC UA Modeler.

Prosys products and NodeSet files

Prosys OPC UA SDK for Java supports NodeSet files by loading the information model directly from a NodeSet file with loadModel methods of UaAddressSpace interface and by generating Java classes based on a NodeSet file or a group of NodeSet files with the Code Generator. Generating Java classes with the Code Generator allows augmenting the generated code to implement Methods defined in the information model. The generated code also makes it more convenient to add instances based on the TypeDefinitionNodes of the information model with Java classes representing them to the Server’s AddressSpace and handling those instances with clearly named methods. The code excerpt below demonstrates how instances of MotionDeviceSystemType and MotionDeviceType can be added easily to the Server’s AddressSpace with code generated from the Robotics information model.

// Add MotionDeviceSystem

MotionDeviceSystemType MDS = myNodeManager.createInstance(MotionDeviceSystemType.class, "MDS1");
DeviceSetFolder.addReference(MDS, Identifiers.Organizes, false);

// Add MotionDevice to MotionDeviceSystem

TypeDefinitionBasedNodeBuilderConfiguration.Builder conf = TypeDefinitionBasedNodeBuilderConfiguration.builder();
conf.addOptional(UaQualifiedName.from("http://opcfoundation.org/UA/Robotics/", "OnPath"));
conf.addOptional(UaQualifiedName.from("http://opcfoundation.org/UA/Robotics/", "InControl"));
conf.addOptional(UaQualifiedName.from("http://opcfoundation.org/UA/Robotics/", "FlangeLoad"));
conf.addOptional(UaQualifiedName.from("http://opcfoundation.org/UA/Robotics/", "AdditionalComponents"));
conf.addOptional(UaQualifiedName.from("http://opcfoundation.org/UA/Robotics/", "Inertia"));
conf.addOptional(UaQualifiedName.from("http://opcfoundation.org/UA/Robotics/", "CenterOfMass"));
myNodeManager.setNodeBuilderConfiguration(conf.build());
MotionDeviceType MD = myNodeManager.createInstance(MotionDeviceType.class, "MD1");
FolderType MotionDevicesFolder = MDS.getMotionDevicesNode();
MotionDevicesFolder.addComponent(MD);
MD.setManufacturer(new LocalizedText("MD1 Manufacturer"));
MD.setModel(new LocalizedText("MD1 Model"));
MD.setMotionDeviceCategory(MotionDeviceCategoryEnumeration.ARTICULATED_ROBOT);
MD.setProductCode("MD1 Product Code");
MD.setSerialNumber("MD1 Serial Number");

The Professional Edition of Prosys OPC UA Simulation Server can import Namespaces from NodeSet files. This allows adding instances of the imported ObjectType and VariableType Nodes to the Simulation Server’s AddressSpace in the Objects tab. As Simulation Server uses Prosys OPC UA SDK for Java, importing Namespaces from NodeSet files to Simulation Server is similar to loading them to any Server application developed with the SDK. However, the version of the SDK used by the Simulation Server isn’t always the latest version of the SDK, which means that there can be some differences between Server applications developed with the latest version of the SDK and Simulation Server using an older version of the SDK.

Incompatibility problems

Ideally, the NodeSet files available at the OPC Foundation’s GitHub repository could be used as they are by Prosys OPC UA SDK for Java and Prosys OPC UA Simulation Server. Unfortunately, not all of these NodeSet files can be used to import information models. While some NodeSet files require a newer version of the standard information model than the one supported by the SDK, some NodeSet files contain modeling errors that prevent using them without fixing them manually.

Name Clashes

The Code Generator also places some additional restrictions on the NodeSet files, and name clashes between the generated methods can happen in various situations. For example, let’s consider TemperatureControlType Node with two child Nodes: SetpointTemperature Variable of Double DataType and SetSetpointTemperature Method with a single InputArgument field with Double DataType. When processed with the Code Generator, the generated TemperatureControlType Java class will have two setSetpointTemperature methods with double parameter where one of the methods is for setting the Value of the SetpointTemperature Variable, and the other method is for calling the SetSetpointTemperature Method. These methods are implemented by TemperatureControlTypeNodeBase class, and their implementation is shown in the code excerpt below, where the first method sets the Value and the second method calls the Method. Other generated methods called by these two methods have been excluded from this excerpt. As different methods in a Java class must have different method signatures, this piece of code causes Java compiler errors.

@Mandatory
@Override
void setSetpointTemperature(Double value) {
	UaVariable node = getSetpointTemperatureNode();
	if (node == null) {
		throw new RuntimeException("Setting SetpointTemperature failed: does not exist (Optional Nodes must be configured in NodeBuilder)");
	}
	try {
		node.setValue(value);
	} catch(StatusException e) {
		throw new RuntimeException("Setting SetpointTemperature failed unexpectedly", e);
	}
}
  
@Override
public void setSetpointTemperature(Double setpoint) throws StatusException {
	doSetSetpointTemperature(ServiceContext.INTERNAL_OPERATION_CONTEXT, setpoint);
}

However, name clashes in the generated code can be fixed manually by renaming methods to give them unique method signatures. In the case of TemperatureControlType, renaming either of the two setSetpointTemperature methods in all classes it appears in would solve the name clash.

Unsupported ValueRanks

At the moment, the Code Generator supports Variable Nodes with ValueRanks of -1 and greater than or equal to 1. Some NodeSet files contain Variable Nodes with other ValueRanks such as -2 (except for BaseDataType) or -3 and generating code for such Nodes is not supported. In order to generate code for such NodeSet files, Nodes with unsupported ValueRanks must be excluded by adding the URI of the model and the BrowseName of the Node to the excludes elements of the Code Generator’s configuration file.

Test setup

The purpose of this blog post is to provide information on the compatibility of the NodeSet files available at the OPC Foundation’s GitHub repository with Prosys OPC UA SDK for Java and Prosys OPC UA Simulation Server.

The information model importing tests were performed with Prosys OPC UA SDK for Java version 4.5.0-1291 and Prosys OPC UA Simulation Server version 5.0.4-284. The SDK is tested with both code generation based on NodeSet files with the Code Generator and loading information models directly to a Server’s AddressSpace from NodeSet files with loadModel methods of UaAddressSpace interface. Simulation Server is tested with Import NodeSet File function of Namespaces tab.

The tested NodeSet files were downloaded from the OPC Foundation’s GitHub Repository’s v1.04 branch. No modifications were made to the NodeSet files. Most information models consist of a single NodeSet file, but some information models consist of multiple NodeSet files for modularity.

Note that the version of the information model specified in a NodeSet file is set manually and is not incremented every time the model is updated. Therefore, two NodeSet files representing an information model might have different contents despite them sharing the same version number!

Test results

The test results for the tested NodeSet files are summarized below.

Information Model Name NamespaceUri SDK: loadModel SDK: Code Generator Simulation Server
Global Discovery Server http://opcfoundation.org/UA/GDS/ Success Success Success
Safety http://opcfoundation.org/UA/Safety Success Success Success
Devices http://opcfoundation.org/UA/DI/ Success Success Success
Analyzer Devices http://opcfoundation.org/UA/ADI/ Success Success Success
AutoID http://opcfoundation.org/UA/AutoID/ Success Success with name clashes Success
AutomationML http://opcfoundation.org/UA/AML/ Success Success Success
http://opcfoundation.org/UA/AMLLibs/ Success with warnings Fail Success with warnings
CNC Systems http://opcfoundation.org/UA/CNC Success Success Success with warnings
Commercial Kitchen Equipment http://opcfoundation.org/UA/CommercialKitchenEquipment/ Success Success Success
CSPPlus for Machine http://opcfoundation.org/UA/CSPPlusForMachine/ Fail Fail Fail
FDI http://fdi-cooperation.com/OPCUA/FDI5/ Success Success Success
http://fdi-cooperation.com/OPCUA/FDI7/ Success Success Success
FDT http://opcfoundation.org/UA/schemas/FDT/1.0/ Success Success with name clashes Success
IEC61850 http://opcfoundation.org/UA/IEC61850-7-3 Fail Fail Fail
http://opcfoundation.org/UA/IEC61850-6 Untested Untested Untested
http://opcfoundation.org/UA/IEC61850-7-4 Untested Untested Untested
Industrial Automation http://opcfoundation.org/UA/IA/ Success Success Success
IO Link Devices and IO-Link Masters http://opcfoundation.org/UA/IOLink/ Success Success with name clashes Success
http://opcfoundation.org/UA/IOLink/IODD/ Success Success Success
ISA-95 http://www.OPCFoundation.org/UA/2013/01/ISA95 Success Fail Success
Machine Tool http://opcfoundation.org/UA/MachineTool/ Success Success with name clashes Success
Machine Vision http://opcfoundation.org/UA/MachineVision Fail Fail Fail
Machinery http://opcfoundation.org/UA/Machinery/ Success Success Success
MDIS http://opcfoundation.org/UA/MDIS Fail Fail Fail
MTConnect http://opcfoundation.org/UA/MTConnect/v2/ Fail Fail Fail
PackML http://opcfoundation.org/UA/PackML/ Success Success Success with warnings
Plastics and Rubber Machinery http://opcfoundation.org/UA/PlasticsRubber/GeneralTypes/ Success Success with name clashes Success
http://opcfoundation.org/UA/PlasticsRubber/IMM2MES/ Success Success with name clashes Success
http://opcfoundation.org/UA/PlasticsRubber/TCD/ Success Success with name clashes Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/GeneralTypes/ Success Success with name clashes after excluding Nodes Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/ExtrusionLine/ Success Success with name clashes Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Extruder/ Success Success with name clashes Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/HaulOff/ Success Success Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/MeltPump/ Success Success Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Filter/ Success Success Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Die/ Success Success Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Pelletizer/ Success Success Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Cutter/ Success Success Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Calibrator/ Success Success with name clashes Success
http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Corrugator/ Success Success Success
PLCopen http://PLCopen.org/OpcUa/IEC61131-3/ Success Success Success
POWERLINK http://opcfoundation.org/UA/POWERLINK/ Success Success Success
Process Automation Devices http://opcfoundation.org/UA/Dictionary/IRDI Success Success Success
http://opcfoundation.org/UA/PADIM/ Success Success with name clashes after excluding Nodes Success
PROFINET http://opcfoundation.org/UA/PROFINET/ Success with warnings Success with name clashes Success with warnings
Robotics http://opcfoundation.org/UA/Robotics/ Success Success Success
Sercos Devices http://sercos.org/UA/ Success Success Success
Tobacco Machines http://opcfoundation.org/UA/TMC/ Success Success with name clashes Success with warnings
Weighing Technology http://opcfoundation.org/UA/Scales Success Success Success with warnings


The detailed test results for the tested NodeSet files are presented below.

Global Discovery Server

NamespaceUri http://opcfoundation.org/UA/GDS/
Filename Opc.Ua.Gds.NodeSet2.xml
Model version 1.04.4
Publication date 8.1.2020
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


Safety

NamespaceUri http://opcfoundation.org/UA/Safety
Filename Opc.Ua.Safety.NodeSet2.xml
Model version 1.0
Publication date 31.10.2019
Latest change 17.7.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


Devices

NamespaceUri http://opcfoundation.org/UA/DI/
Filename Opc.Ua.Di.NodeSet2.xml
Model version 1.02.2
Publication date 2.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


Analyzer Devices

NamespaceUri http://opcfoundation.org/UA/ADI/
Filename Opc.Ua.Adi.NodeSet2.xml
Model version 1.01
Publication date 31.7.2013
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


AutoID

NamespaceUri http://opcfoundation.org/UA/AutoID/
Filename Opc.Ua.AutoID.NodeSet2.xml
Model version 1.01
Publication date 18.6.2020
Latest change 27.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
OpticalVerifierDeviceType has Scan Method with OutputArguments that have wrong WGS84Coordinate DataType instead of correct OpticalScanResult DataType, which causes the Code Generator to generate code with name clashes.

AutomationML

NamespaceUri http://opcfoundation.org/UA/AML/
Filename Opc.Ua.AMLBaseTypes.NodeSet2.xml
Model version 1.00
Publication date 22.2.2016
Latest change 28.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/AMLLibs/
Filename Opc.Ua.AMLLibraries.NodeSet2.xml
Model version Version number is missing in the NodeSet file
Publication date Publication date is missing in the NodeSet file
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded with warnings
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file succeeded with warnings

Additional information
The values of some Nodes in the NodeSet file could not be loaded when loading the information model from the NodeSet file with the SDK and Simulation Server.
The NodeSet file contains two ObjectType Nodes with BrowseName Communication, which would result into two Java classes with the same name in the same package, which causes the Code Generator to abort processing the NodeSet file.

CNC Systems

NamespaceUri http://opcfoundation.org/UA/CNC
Filename Opc.Ua.CNC.NodeSet.xml
Model version 1.0.0
Publication date 19.6.2017
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded with warnings

Additional information
Loading the NodeSet file with Simulation Server generates Bad_DecodingError warnings.

Commercial Kitchen Equipment

NamespaceUri http://opcfoundation.org/UA/CommercialKitchenEquipment/
Filename Opc.Ua.CommercialKitchenEquipment.NodeSet2.xml
Model version 1.0
Publication date 12.7.2019
Latest change 28.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


CSPPlus for Machine

NamespaceUri http://opcfoundation.org/UA/CSPPlusForMachine/
Filename Opc.Ua.CSPPlusForMachine.NodeSet2.xml
Model version 1.00
Publication date 28.11.2017
Latest change 27.6.2020
SDK: loadModel Loading from the NodeSet file failed
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file failed

Additional information
The NodeSet file is missing alias declarations for IdType and NumericRange.

FDI

NamespaceUri http://fdi-cooperation.com/OPCUA/FDI5/
Filename Opc.Ua.Fdi5.NodeSet2.xml
Model version 1.1
Publication date 4.7.2017
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://fdi-cooperation.com/OPCUA/FDI7/
Filename Opc.Ua.Fdi7.NodeSet2.xml
Model version Version number is missing in the NodeSet file
Publication date 4.7.2017
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


FDT

NamespaceUri http://opcfoundation.org/UA/schemas/FDT/1.0/
Filename Opc.Ua.FDT.NodeSet2.xml
Model version Version number is missing in the NodeSet file
Publication date Publication date is missing in the NodeSet file
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
FdtDeviceType is a subtype of DeviceType and has a DeviceHealth Property, which causes a name clash with DeviceHealth Variable of DeviceType.

IEC61850

NamespaceUri http://opcfoundation.org/UA/IEC61850-7-3
Filename Opc.Ua.IEC61850-7-3.NodeSet2.xml
Model version 2.0
Publication date 5.2.2018
Latest change 28.6.2020
SDK: loadModel Loading from the NodeSet file failed
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file failed

Additional information
The NodeSet file contains enumeration values that are not supported by the SDK or the Code Generator, including “1-of-n-control”, “°C” and empty value.

NamespaceUri http://opcfoundation.org/UA/IEC61850-6
Filename Opc.Ua.IEC61850-6.NodeSet2.xml
Model version 2.0
Publication date 5.2.2018
Latest change 28.6.2020
SDK: loadModel The NodeFile could not be tested
SDK: Code Generator The NodeFile could not be tested
Simulation Server The NodeFile could not be tested

Additional information
This NodeSet file extends the information model defined in http://opcfoundation.org/UA/IEC61850-7-3. As the NodeSet file containing that information model is incompatible with the SDK and the Code Generator, this NodeSet file could not be tested.

NamespaceUri http://opcfoundation.org/UA/IEC61850-7-4
Filename Opc.Ua.IEC61850-7-4.NodeSet2.xml
Model version 2.0
Publication date 5.2.2018
Latest change 28.6.2020
SDK: loadModel The NodeFile could not be tested
SDK: Code Generator The NodeFile could not be tested
Simulation Server The NodeFile could not be tested

Additional information
This NodeSet file extends the information model defined in http://opcfoundation.org/UA/IEC61850-7-3. As the NodeSet file containing that information model is incompatible with the SDK and the Code Generator, this NodeSet file could not be tested.

Industrial Automation

NamespaceUri http://opcfoundation.org/UA/IA/
Filename Opc.Ua.IA.NodeSet2.xml
Model version 1.00.0
Publication date 31.8.2020
Latest change 6.9.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/IOLink/
Filename Opc.Ua.IOLink.NodeSet2.xml
Model version 1.0
Publication date 1.12.2018
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
IOLinkPortType/Device/General/MethodSet has MethodIdentifier and <MethodIdentifier> Methods and DeviceVariantType has Description Property, which cause name clashes in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/IOLink/IODD/
Filename Opc.Ua.IOLinkIODD.NodeSet2.xml
Model version 1.0
Publication date 1.12.2018
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


ISA-95

NamespaceUri http://www.OPCFoundation.org/UA/2013/01/ISA95
Filename Opc.ISA95.NodeSet2.xml
Model version 1.00
Publication date 6.11.2013
Latest change 28.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file succeeded

Additional information
GeoSpatialLocationType is a subtype of PropertyType, which causes errors in the Java code generated by the Code Generator as the SDK doesn’t support adding subtypes to PropertyType.

Machine Tool

NamespaceUri http://opcfoundation.org/UA/MachineTool/
Filename Opc.Ua.MachineTool.NodeSet2.xml
Model version 1.00.0
Publication date 25.9.2020
Latest change 26.9.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
The NodeSet file contains PrognosisListType and ToolListTypes Nodes that have a NodeVersion Property, which cause name clashes in the Java code generated by the Code Generator.

Machine Vision

NamespaceUri http://opcfoundation.org/UA/MachineVision
Filename Opc.Ua.MachineVision.NodeSet2.xml
Model version 1.0.0
Publication date 11.7.2019
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file failed
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file failed

Additional information
There are errors in ResultDataType (ns=1;i=3006) DataType Node and ResultDataType (ns=1;i=6076) and ResultDataType (ns=1;i=6077) Variable Nodes that cause Null Pointer Exceptions when loading the information model from the NodeSet file with the SDK and Simulation Server.
The Code Generator gets stuck in an endless loop when attempting to generate Java code from the NodeSet file.

Machinery

NamespaceUri http://opcfoundation.org/UA/Machinery/
Filename Opc.Ua.Machinery.NodeSet2.xml
Model version 1.0.0
Publication date 25.9.2020
Latest change 26.9.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


MDIS

NamespaceUri http://opcfoundation.org/UA/MDIS
Filename Opc.MDIS.NodeSet2.xml
Model version 1.20
Publication date 3.10.2018
Latest change 28.6.2020
SDK: loadModel Loading from the NodeSet file failed
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file failed

Additional information
MDISVersionVariableType and other Nodes target Nodes of BaseDataVariableType with HasProperty References, which causes IllegalArgumentExceptions when loading the information model from the NodeSet file with the SDK and Simulation Server.
MDISChokeObjectType has CalculatedPosition Variable and SetCalculatedPosition Method, which cause a name clash in the Java code generated by the Code Generator, although resolving this name clash won’t fix problems related to targeting BaseDataVariableType Nodes with HasProperty References in the generated code.

MTConnect

NamespaceUri http://opcfoundation.org/UA/MTConnect/v2/
Filename Opc.Ua.MTConnect.NodeSet2.xml
Model version 2.00.01
Publication date 5.6.2020
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file failed
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file failed

Additional information
Attempting to load the information model with the SDK and Simulation Server from the NodeSet file causes a Null Pointer Exception.
The NodeSet file uses $ in description elements, which isn’t supported by the Code Generator causing it to abort code generation.

PackML

NamespaceUri http://opcfoundation.org/UA/PackML/
Filename Opc.Ua.PackML.NodeSet2.xml
Model version 1.1.0
Publication date 28.5.2020
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded with warnings

Additional information
Loading the NodeSet file with Simulation Server generates Bad_DecodingError warnings.

Plastics and Rubber Machinery

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/GeneralTypes/
Filename Opc.Ua.PlasticsRubber.GeneralTypes.NodeSet2.xml
Model version 1.02
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
The NodeSet file contains various Nodes that have a NodeVersion Property, RequestProductionDatasetWriteEventType has a Components Property, MouldType has a Description Property and TemperatureZoneCycleParametersType has ActualTemperature Variable with two EngineeringUnits Properties. While none of these are modeling errors, they cause name clashes in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/IMM2MES/
Filename Opc.Ua.PlasticsRubber.IMM2MES.NodeSet2.xml
Model version 1.01
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
InjectionUnitsType has a Property with BrowseName NodeVersion, which causes a name clash in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/TCD/
Filename Opc.Ua.PlasticsRubber.TCD.NodeSet2.xml
Model version 1.01
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
ExternalChannelsType has a property with BrowseName NodeVersion, which causes a name clash in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/GeneralTypes/
Filename Opc.Ua.PlasticsRubber.Extrusion.GeneralTypes.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file requires excluding Nodes and contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
ExtrusionDeviceType has Target Variable with ValueRank -3, which is not supported by the Code Generator. Excluding this Node enables generating Java code with name clashes.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/ExtrusionLine/
Filename Opc.Ua.PlasticsRubber.Extrusion.ExtrusionLine.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
JobGroupsType has a Property with BrowseName NodeVersion, JobGroupType has a Properties with BrowseNames Description and NodeVersion and JobType has a Property with BrowseName Description, which cause name clashes in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Extruder/
Filename Opc.Ua.PlasticsRubber.Extrusion.Extruder.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
FeedersType has a Property with BrowseName NodeVersion, which causes a name clash in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/HaulOff/
Filename Opc.Ua.PlasticsRubber.Extrusion.HaulOff.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/MeltPump/
Filename Opc.Ua.PlasticsRubber.Extrusion.MeltPump.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Filter/
Filename Opc.Ua.PlasticsRubber.Extrusion.Filter.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Die/
Filename Opc.Ua.PlasticsRubber.Extrusion.Die.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Pelletizer/
Filename Opc.Ua.PlasticsRubber.Extrusion.Pelletizer.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Cutter/
Filename Opc.Ua.PlasticsRubber.Extrusion.Cutter.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Calibrator/
Filename Opc.Ua.PlasticsRubber.Extrusion.Calibrator.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded

Additional information
CalibrationZonesType has a Property with BrowseName NodeVersion, which causes a name clash in the Java code generated by the Code Generator.

NamespaceUri http://opcfoundation.org/UA/PlasticsRubber/Extrusion/Corrugator/
Filename Opc.Ua.PlasticsRubber.Extrusion.Corrugator.NodeSet2.xml
Model version 1.00
Publication date 1.6.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


PLCopen

NamespaceUri http://PLCopen.org/OpcUa/IEC61131-3/
Filename Opc.Ua.Plc.NodeSet2.xml
Model version 1.00
Publication date 24.3.2010
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/POWERLINK/
Filename Opc.Ua.POWERLINK.NodeSet2.xml
Model version 1.0.0
Publication date 10.10.2017
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


Process Automation Devices

NamespaceUri http://opcfoundation.org/UA/Dictionary/IRDI
Filename Opc.Ua.IRDI.NodeSet2.xml
Model version 1.00
Publication date 4.2.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


NamespaceUri http://opcfoundation.org/UA/PADIM/
Filename Opc.Ua.PADIM.NodeSet2.xml
Model version 1.00
Publication date 23.4.2020
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file failed
Simulation Server Loading from the NodeSet file succeeded

Additional information
The NodeSet file contains various Nodes with ValueRank -2, which is not supported by the Code Generator causing the code generation to be aborted.

PROFINET

NamespaceUri http://opcfoundation.org/UA/PROFINET/
Filename Opc.Ua.Pn.NodeSet2.xml
Model version 1.0.0
Publication date 13.12.2019
Latest change 23.6.2020
SDK: loadModel Loading from the NodeSet file succeeded with warnings
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded with warnings

Additional information
The values of some Nodes in the NodeSet file could not be loaded when loading the model from the NodeSet file with the SDK and Simulation Server due to the use of & in ua:Text elements.
IPnInterfaceType has NameOfStation Variable and SetNameOfStation Method and PnIdentificationType has Descriptor Variable and SetDescriptor Method, which cause name clashes in the Jave code generated by the Code Generator.

Robotics

NamespaceUri http://opcfoundation.org/UA/Robotics/
Filename Opc.Ua.Robotics.NodeSet2.xml
Model version 1.0.0
Publication date 6.5.2019
Latest change 28.8.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


Sercos Devices

NamespaceUri http://sercos.org/UA/
Filename Sercos.NodeSet2.xml
Model version 1.00
Publication date 13.3.2017
Latest change 27.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded


Tobacco Machines

NamespaceUri http://opcfoundation.org/UA/TMC/
Filename Opc.Ua.TMC.NodeSet2.xml
Model version 1.0
Publication date 11.10.2017
Latest change 17.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generated code based on the NodeSet file contains name clashes
Simulation Server Loading from the NodeSet file succeeded with warnings

Additional information
Loading the NodeSet file with Simulation Server generates Bad_DecodingError warnings.
ControlsHWType has IOImage Variable and GetIOImage Method, DefectDetectionSensorType has Description and DisplayName Variables and DetectionMode Variable and SetDetectionMode Method, MachineModuleConfigurationType has RootCauseGroupList, RootCauseList and StopReasonList Variables and GetRootCauseGroupList, GetRootCauseList and GetStopReasonList Methods, MachineModuleLiveStatusType has ControlMode and IdleEnergySavingMode Variables and SetControlMode and SetIdleEnergySavingMode Methods, MaterialRejectionTrapType has Description and DisplayName Variables and RejectionMode Variable and SetRejectionMode Method and MachineModuleType/MaterialRejectionTraps/UIInfo/UIResources has two RejectionMode Variable, which cause name clashes in the Jave code generated by the Code Generator.

Weighing Technology

NamespaceUri http://opcfoundation.org/UA/Scales
Filename Opc.Ua.Scales.NodeSet2.xml
Model version 1.0
Publication date 1.6.2020
Latest change 27.6.2020
SDK: loadModel Loading from the NodeSet file succeeded
SDK: Code Generator Generating code based on the NodeSet file succeeded
Simulation Server Loading from the NodeSet file succeeded with warnings


Matti Siponen

Matti Siponen

Software Engineer

Email: matti.siponen@prosysopc.com

Expertise and responsibility areas: OPC UA product development and project work

Tags: OPC UA, Information Models, NodeSet

comments powered by Disqus

About Prosys OPC Ltd

Prosys OPC is a leading provider of professional OPC software and services with over 20 years of experience in the field. OPC and OPC UA (Unified Architecture) are communications standards used especially by industrial and high-tech companies.

Read more about us »

Newest blog posts

Connecting OPC UA Publisher to Azure with MQTT

Prosys OPC UA SDK for Java allows publishing OPC UA data to Azure using the MQTT protocol.

Introduction to OPC UA Online Course - Instructions

The blog post describes step-by-step TalentLMS sign-up and course payment process

Update to importing Information Models, December 2020

Updates to the blog post on importing Information Models from NodeSet files

View all blog posts »