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.

issue browsing opc server with daItemDialog

More
31 Jan 2013 15:05 #1220 by bjh
i have sent an email to the provided email address - thank you.
i modified my application to create and use a parameterless DANodeFilter. the results of the BrowseNodes was the same as the parameterized DANodeFilter - the count of the DANodeElementsCollection was 0.

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

More
31 Jan 2013 08:02 #1210 by admin
I have a possible explanation for at least one of the behaviors you reported. In your code,
DANodeFilter danf = new DANodeFilter ()
{
BrowseFilter = DABrowseFilter.All,
AccessRightsFilter = DAAccessRights.Both,
DataTypeFilter = VarType.Empty,
ElementNameFilter = "",
VendorFilter = ""
};
the outcome is not an "empty", all-allowing filter.AccessRightsFilter = DAAccessRights.Both actually means that you are asking for items that are both readable and writeable, which some or all items may not fulfill. The setting that allows any access rights is DAAccessRights.NoAccess. I understand that this is counter-intuitive and perhaps not well documented; it behaves this way because of the underlying OPC specs, and the logic is that you specify which bits in the actual access rights should be True. So zero (.NoAccess) means that you are not interested in any bits, while "all ones" (.Both) means that all the accesses must be allowed.
If you just create an empty DANodeFilter by its parameterless constructor, what you get is already an all-allowing filter, so you do not have to change its properties - or chnge only those that have "narrowing" effect on the filter.

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

More
31 Jan 2013 07:51 #1209 by admin
Thanks for this. I have sent you an email for communicating the confidential parts.

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

More
30 Jan 2013 17:29 #1205 by bjh
the 'problematic' OPC Server is SISCO's "UIB Adapter for OPC Client". this adapter has two components - a "UIB HSDA Client" and an "OPC DA Server".

screenshots contain some confidential information (partial model layout). please provide an email address to which i can send screenshots.

private void button10_Click (object sender, EventArgs e)
{
// BROWSE

try
{
Console.WriteLine ("BROWSE mach name: {0}; server ProgID: {1}",
comboBox1.Text, comboBox2.Text);

Debug.Assert (comboBox1.Text != null); // machine name
Debug.Assert (comboBox2.Text != null); // server ProgID

easyDAClient1.Timeouts.BrowseAccessPaths = 10000;
easyDAClient1.Timeouts.BrowseNodes = 10000;
easyDAClient1.Timeouts.BrowseProperties = 10000;
easyDAClient1.Timeouts.BrowseServers = 10000;

DANodeFilter danf = new DANodeFilter ()
{
BrowseFilter = DABrowseFilter.All,
AccessRightsFilter = DAAccessRights.Both,
DataTypeFilter = VarType.Empty,
ElementNameFilter = "",
VendorFilter = ""
};
DANodeElementCollection NEcoll0 =
easyDAClient1.BrowseNodes (comboBox1.Text, comboBox2.Text, "", danf);

DANodeElementCollection NEcoll1 =
easyDAClient1.BrowseBranches (comboBox1.Text, comboBox2.Text);

DANodeElementCollection NEcoll2 =
easyDAClient1.BrowseLeaves (comboBox1.Text, comboBox2.Text);

daItemDialog1.ServerDescriptor.MachineName = comboBox1.Text;
daItemDialog1.ServerDescriptor.ServerClass = comboBox2.Text;

if (daItemDialog1.ShowDialog () == DialogResult.OK)
{
Debug.Assert (daItemDialog1.NodeElement != null);
browsedItemName.Text = daItemDialog1.NodeElement.ItemId;
}
}
catch (Exception ex)
{
MessageBox.Show (ex.Message);
}
}
i will also provide a screenshot that shows the values for NEcoll0, NEcoll1 and NEcoll2 after executing the above code.

yes, the same application is being used. the daItemDialog is part of the function above.

no 'plus' next to root, and there are not any error indications. a screenshot will be provided.
thank you for your help!

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

More
30 Jan 2013 08:38 #1193 by support
Hello.
It is possible that we use a different browsing interface from Matrikon explorer (because there are different browsing interfaces in different versions of OPC spec, tha main difference between versions 2.0 and 3.0, and many servers support both, so the client can pick - but then both interfaces on the server side must give identical results, which unfortunately is not always the case). But I cannot be sure yet.
Can you please give some information:?
- Can you identify the "problematic" OPC server (vendor/type)?
- can you send a screenshot of how you think the adress space tree of Server1 should look like (from Matrikon Explorer)?
- can you send the piece of code that you used to call BrowseNodes of Server1 with empty filter? It seems quite weird that it would not at least return the leaves you have listed as result when calling BrowseBranches.
- Are you using the same application (same project) for tests with daItemDialog and with "coded" calls (BrowseXXXX)?
- is there a "plus" sign next to the (root) in daItemDialog? If so, what happens when you click on it to expand the root - does it simply hide the plus sign to indicate no branches? Isn't there any error indication?
Thank you

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

More
30 Jan 2013 06:00 #1189 by support
Dear Sir,
I apologize for not replying sooner - it appears that we had a technical problem, and some notifications about forum activity have been lost. I will now answer the posts one by one, hopefully during today and tomorrow.

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

More
22 Jan 2013 14:47 #1185 by bjh
i have also tried BrowseNodes of server1 (with an 'empty' nodeFilter), and DANodeElementCollection count was 0.

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

More
18 Jan 2013 21:58 #1182 by bjh
i am using daItemDialog to browse an opc server (call it server1). when i try to browse it the dialog box indicates "(root)" for the branch with nothing under it, and "(no items)" for the leaves with nothing under it.

i can successfully browse server1 with the matrikon opc explorer, and display tag values. the tag ("Item ID") displayed was "PhysModel:xxxx/abc def/ghijkl/mnop:AnalogValue.value"

i can successfully use my daItemDialog to browse the matrikon opc server for simulation (call it server2) that i have running. the tag displayed was "Random.Real4"

when i BrowseBranches of server2, i see {Simulation Items} and {Configured Aliases}, which agrees with what my daItemDialog shows.

when i BrowseBranches of server1, i see a count of 1 and {PhysModel:xxx}.

when i BrowseLeaves of server2, i see {@clients} and {#MonitorACLFile}.

when I BrowseLeaves of server1, i see a count of 0 and no leaves.

is there some other way i need to browse server1? thank you for your assistance.

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

Moderators: support
Time to create page: 0.070 seconds