- Thank you received: 0
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.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Browsing, Browse Dialogs and Controls
- issue browsing opc server with daItemDialog
issue browsing opc server with daItemDialog
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.
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.
Please Log in or Create an account to join the conversation.
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.
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.
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.
Please Log in or Create an account to join the conversation.
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.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Browsing, Browse Dialogs and Controls
- issue browsing opc server with daItemDialog