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-UA in .NET
- Reading, Writing, Subscriptions
- Cleaning of the apartment All this is well suited to my kitchen. It will look good in my apartment.
Cleaning of the apartment All this is well suited to my kitchen. It will look good in my apartment.
The configuration that QuickOPC uses when no custom config is in effect: I posted it already - in this forum thread, see post #3952 from March 23: It is the last file attachment there.
Best regards
Please Log in or Create an account to join the conversation.
One question still:
If I will provide the <appname>.config.xml file with only some parameters, all the others will be defaults from internal?
Can you please give a link to the OPC-UA configuration file from OPC foundation?
Please Log in or Create an account to join the conversation.
And, there is one more related thing you should consider. After a session-level error (such as the timeout error we are talking about) occurs, the expected EasyUAClient behavior is as follows: For certain duration following the error, all calls that reference the same server will fail *immediately* (without waiting). This should be the case with your subsequent "browse" calls as well. This behavior is intended to 1) reduce the load on the resources (client, network, server) by limiting the number of reconnection attempts, and 2) prevent repeated lengthy blocking on the client side. The length of this time period is controlled by the RetrialDelay property in EasyUAClient.AdaptableParameters.Session, can defaults to 10000 (10 seconds).
Regarding the XML config file: It's a bit complicated, but I believe it is described satisfactorily in the doc I mentioned: Concepts document, section Advanced Topics, chapter Application Configuration. What is not clear there please?
Best regards
Please Log in or Create an account to join the conversation.
Thank you for detailed answer.
Yes, I do recursive calls to browse the items. There are no other way to see if some tags were added or deleted from OPC server, right? And sometimes I'm getting:
"[2/10/2016 1:23:11 AM] [OpcNodesBrowser] UAException: An OPC-UA operation failure with error code -1 (0xFFFFFFFF) occurred, originating from ''. The inner exception, of type 'OpcLabs.EasyOpc.UA.Engine.UAClientEngineException', contains details about the problem.
InnerException: Timeout connecting the OPC-UA client session. The total timeout value was 60000 milliseconds, and we have waited for 59968 milliseconds. The actual waiting time is lower than the total timeout (or even zero) if the connection operation has already started earlier."
Serge
PS: Where I shall place UAClientEngine.Config.xml to use it in my app?
Please Log in or Create an account to join the conversation.
Tables in the following documents list the various timeouts, and where to configure them:
Most parameters can be set directly from the code. The OperationTimeout - which you may not need to change - depends on which one(s) you are getting - is a lower-level parameter that needs a more complicated approach. Please read the Concepts document, section Advanced Topics, chapter Application Configuration. For convenience, below is the "built-in" configuration used; you can use that one and just modify the item(s) that you want change.
Best regards
Please Log in or Create an account to join the conversation.
Yes, EasyUAClient.BrowseNodes(...) performs synchronously.
Detection: In case of timeout and any other error, it should throw an exception (UAException). Depending on the error/timeout cause, there will be different messages and InnerException-s in it. I would be interested to know whether you have received any exception, and if so, what are the details of it. Or is it still the exception listed under www.opclabs.com/forum/ua-reading-writing-subscriptions/1781-...-than-1-minute/reply/3942#3827 ?
Communication problems should *not* be a cause for incomplete results returned by BrowseNodes(...). That it, the method call should either return all correct results, or nothing at all (when it throws an exception). Let me know if it behaves as described. If, of course, you are making repeated calls to BrowseNodes(...), some of them may succeed and some may fail. In such case, your "total" results would be incomplete, of course.
With regard to instructions on how to change the timeouts, I will assemble the information and post it here, later.
Best regards
Please Log in or Create an account to join the conversation.
Thank you for the clarification on async/sync. easyUAClient.BrowseNodes() performs synchronously, right?
In my recursive browsing method I use followning code:
UABrowseParameters browseParameters = new UABrowseParameters(UANodeClass.Object | UANodeClass.Variable, referenceTypeIds); // was UANodeClass.All
UANodeElementCollection nodeElementCollection = easyUAClient.BrowseNodes(endpointDescriptor, nodeDescriptor, browseParameters);
Now questions:
1. What/how to change timeouts?
2. How to detect timeout so I can invalidate results and stop recursion and return from the method quickly?
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Yes, the code to un-/re-subscribe is removed.
I need some time to make a test case. Now I see the effect in the app which is too complex to say for sure what is happening after network failure. But I think that the app does not call SubcribeMultiple that time. I think it somehow stalls inside the procedure to browse the tags, but I am not completely sure.
Serge
Please Log in or Create an account to join the conversation.
Assuming that the answer to the above is Yes, can you please describe in more details, setp by step, what is happening? Is it, for example, like this?
1. Network is somehow disconnected.
2. Your app calls SubscribeMultiple.
3. After cca 1 minute, the event handler for MonitoredItemChanged receives a notification with the .Exception property set to the error in your last post.
4. At about the same time, the SubscribeMultiple call finally returns?
Or is the sequence or the timing different?
Thank you.
We have not made any changes in this area so far. With the above describe sequence of steps, the only improper/unexpected behavior would be that the SubscribeMultiple call waits for 1 minute (until Step 4), instead of returning quickly after Step 2 - which we do not consider a major problem. But I need to be sure that I understand the observed behavior correctly first.
Best regards
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-UA in .NET
- Reading, Writing, Subscriptions
- Cleaning of the apartment All this is well suited to my kitchen. It will look good in my apartment.