Professional OPC
Development Tools

logos

Online Forums

Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.

Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.

Do not use the Contact page for technical issues.

Cannot browse particular ObjectFolder

More
25 Mar 2024 04:34 #12681 by asenti
That has pointed me in the right direction and makes sense regarding the reference types.

I had originally tried adjusting the method to BrowseObjects to see if I could see the c# node under the BrowseProvider node which is an Object Class. Although it appears that the Object has neither of those reference types you had mentioned, which explains why it couldn't see it. I have added in the HasChild reference type to the Browse method and it is now working expected.

Thanks very much for your help.
The following user(s) said Thank You: support

Please Log in or Create an account to join the conversation.

More
22 Mar 2024 12:32 #12671 by support
Hello.

The example you borrowed is for browsing "data nodes", not "any nodes". The BrowseDataNodes method, used in this example, is intentionally restricted to only return some child nodes. Specifically, it only follows Organizes (35), HasComponent (47) and HasProperty (46) references, and it only returns node with Object or Variable class. The purpose of this method is to browse the structure of objects/variables/properties that are used for generic data operations (read/write/subscribe to changes).

The full OPC UA Information model contains references of other types, and nodes of other classes. You can use the BrowseNodes method and specify precisely what you are interested in. Or, you can pass it parameters such as that BrowseNodes would truly return everything. In effect, you will use the code structure you already have, but replace the method by borrowing from the following example:

opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Late...0all%20kinds%20of%20nodes.html

Beware that OPC UA address space is not a tree. It is a full mesh. When navigating in this unrestricted way, you may encounter cycles, and unless other limitations are put into place (e.g. depth of search, or check for recursion), you may end up browsing indefinitely.

I hope this helps

Please Log in or Create an account to join the conversation.

More
22 Mar 2024 00:58 #12670 by asenti
Sure, find below the method I am currently using:
 
		private static void BrowseFromNode(EasyUAClient client, UAEndpointDescriptor endpointDescriptor, UANodeDescriptor parentNodeDescriptor, int level)
		{
 
			Debug.Assert(!(client is null));
			Debug.Assert(!(endpointDescriptor is null));
			Debug.Assert(!(parentNodeDescriptor is null));
 
			UANodeElementCollection nodeElementCollection = client.BrowseDataNodes(endpointDescriptor, parentNodeDescriptor);
 
 
			foreach (UANodeElement nodeElement in nodeElementCollection)
			{
				Console.ForegroundColor = ConsoleColor.Red;
				Console.WriteLine(parentNodeDescriptor);
				Console.ResetColor();
				NodeCounter++;
 
 
				Debug.Assert(!(nodeElement is null));
 
				WriteToExcel(nodeElement.NodeId.ToString(), nodeElement.BrowsePath.ToString());
 
				Console.WriteLine(nodeElement.TypeDefinition);
				Console.WriteLine(nodeElement + "-----" + nodeElement.NodeId);
 
 
				BrowseFromNode(client, endpointDescriptor, nodeElement, level + 1);
 
			}
 
		}

Please Log in or Create an account to join the conversation.

More
21 Mar 2024 21:48 #12669 by support
Hello.
I have received your WireShark captures by email, thank you.

You have only captured the outgoing packets (one direction), so I can see the BrowseRequest, but not the BrowseResponse.
But do not repeat the capture, it appears that I might be able to work with this already.

The parameters passed to BrowseRequest are different from MatrikonOPC. I wanted to check your code, but only then noticed that the link you provided (see your original post) is wrong - it refers to an example for OPC DA. It cannot be the code you are using. Please provide the actual code you are using (or link).

Best regards

Please Log in or Create an account to join the conversation.

More
21 Mar 2024 11:51 #12666 by support
Hello,

if the files are, after zipping, reasonable size (say to 20 MB), please email them to support09 (at) opclabs.com (which will go to myself).
Otherwise, use some service like DropBox, and email us the link.

Best regards

Please Log in or Create an account to join the conversation.

More
21 Mar 2024 02:50 #12665 by asenti
Hi Support,

Is a way to share the PCAP's outside of the public forum? I prefer to send these directly rather than publishing them here.

Please Log in or Create an account to join the conversation.

More
20 Mar 2024 21:10 #12664 by asenti
You a correct that 1 & 2 are probably not going to be an option in this case. But WireShark should work. I’ll get this done in the next 24hrs.

Thanks for your assistance.

Please Log in or Create an account to join the conversation.

More
20 Mar 2024 20:58 - 20 Mar 2024 20:58 #12663 by support
Hello.

If you could either 1) provide us with the server+configuration, or 2) expose your server endpoint on the Internet (with firewall open only for a specific source IP address of ours), we could troubleshoot the problem ourselves.

Assuming that you cannot either 1) or 2), which usually is the case, next option is to obtain WireShark traces of the communication (both the case from the client that works, and from the client that does not work), and send them to us for analysis. Information to this is here: kb.opclabs.com/Collecting_information_for_troubleshooting (the other pieces of info mentioned in the article are not actually needed in this case; just follow the WireShark-related links under Learning Material).

Can you do that?

Best regards
Last edit: 20 Mar 2024 20:58 by support.

Please Log in or Create an account to join the conversation.

More
20 Mar 2024 20:43 #12662 by asenti
Thanks for the response.

1. Correct. I cannot see ns=3;s=0:#c1 at all in the output.
2. When I explicitly select ns=3;s=0:#c1 there is no error, but also no output in the console. Likewise if I select s=BrowseProvider it doesn’t see ns=3;s=0:#c1 underneath it.

Please Log in or Create an account to join the conversation.

More
20 Mar 2024 13:57 #12660 by support
Hello.

Are you saying that
1) when you browse s=BrowseProvider, you do not get ns=3;s=0:#c1 in the results?
2) when you browse s=BrowseProvider, you get ns=3;s=0:#c1, BUT when you explicitly browse ns=3;s=0:#c1, you get no error, but also no children?

Regards

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.111 seconds