As part of the Data Source configuration with the OPC UA Connector 1.1.0.86, the type definitions are exported from the UA Server and are saved as a CSV file from which you can then select which nodes and variable you want to send to PI. Has anyone had any issues with the ability of the connector to populate this list correctly, because it is not working against a UA Server I am testing against at the moment.

An example hierarchy is shown below using the UAExpert client tool. I can use this client to read variable without any issues. The nodes are of NodeClass "Object".

The node references are correct as reported in UAExpert. I am connected to the following endpoint for the OPC UA Connector

opc.tcp://x.x.x.x:4840/ [None:None:Binary]

and in UAExpert I am connected using authentication of "None". So the two connections should be identical.

I also have a data source to the PROSYS Simulation UA Server, and that exports to CSV correctly.

The one thing I notice that may be different between the two servers is that the "Server" object from ProSys is excluded from the export but all the other "folders" are included. So does that mean that the export tool only works with folders? Looking at he NodeClass for the "Simulation" folder that is of class "Object" which is the same as the "Server" object so why is one displayed with a folder icon and the other a class icon?

Any ideas? I have a ticket open with OSI but at the moment they seem a bit lost. As am I.

If you set a RootNodeId of a root that does not contain many items, are you able to export the file definition?

The Root NodeId format is: ns=<NamespaceIndex>;s=<Identifier>

For example, if I want to only capture the items underneath the Scalar Folder, then I would set Root NodeId: ns=2;s=Demo.Static.Scalar

Try with a very small node first. If that works, then take a look at the filter file it creates. Make sure that you do not have Templates named ***MissingName*** or they will not get created. You will need to define a template name.

Then, upload that file in the connector and test if the connector is creating the points.

I tried to limit the nodes used to browse as you suggested, but you just get back the node itself and nothing below.

I think that the problem is that the OSI UA Connector expects each node to have a reference of HasTypeDefinition to build up the list of element templates and the element hierarchy in AF. Example from ProSys is below which indicates that the Simulation object is a FolderType.

Whereas the UA OPC Server I am talking to does not have this reference.

I will have a look at the OPC UA Standard to see whether such nodes should have the HasTypeDefinition setting. Unless someone knows this for sure?

If HasTypeDefinition is not set, then when you do the export, your CSV file, will most likely be full of ***MissingName**** in the template column. This would need to be changed to a desired template name. Otherwise the AF Structure and associated PI Points will not get created.

Just to be clear, is it the the AF/PI Point creation that is not working or also the Type Definition Export? If it is both then bumb up the logs to Informational and see if you can find anything relevant. You would be able tot see what does not allow it to browse.

The problem is with the UA type definition export. The connector uses the same method of connection as a UAExpert client so can see everything. It just is unable to cope with objects that don’t have the typedefinition set. So I don’t get to the point where there are “***MissingName **** entries.

By "unable to cope" do you mean that they are not read and populate the csv file at all when you perform the export? If so, then turn on some more logging to see where if it hangs or discards anything.

I just wanted to update you on this. OSIsoft provided a configuration option to browse the OPC UA address space by ignoring the browse direction. I tested with the beta release and it works fine. I understand that this is now going to be in the next official release.

After the install you modify the App.OpcUa.config file and add the parameter IgnoreBrowseDirection and set it to true: