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.

Is it possible to execute parallel ReadMultiple calls?

More
05 Mar 2020 11:38 #8266 by support
On OPC UA protocol level, it is generally OK to have multiple requests being processed in parallel. Each request/response has an identification number, so that they can be correlated properly. The server might, however, have limitations in this respect. But I think that in such case, if seconds request comes while the first is still being processed, it should send back a failure response to that 2nd request.

If a response to Read request is missing, expected action on QuickOPC side is to return some kind of timeout errors after the timeout period elapses. It is not clear to me from your post whether this is happening.

In QuickOPC, a call made from other thread to ReadMultiple method, while it is still executing on first thread, may result in second request to the OPC UA server, as described above, although we consider that behavior an implementation detail (we may decide to serialize the requests). If, for some you want to be sure that requests to the OPC UA server are serialized, you do it by serializing the calls to ReadMultiple, e.g. using a critical section ('lock' in C#).

Best regards

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

More
05 Mar 2020 10:14 #8265 by Grizzo
Hi, we have an application that use 3 differente threads to read multiple values from Siemens WinCC OPC Server.
All of them uses the same shared EasyUACLient object.
One thread reads values every 1 second (about 40 tags), the second one reads every 10 seconds and the third on reads every 30 seconds.
The application runs on 60 machine (more or less) and normaly everything works fine.
Sometimes in one machine or another, it is not reproducible on regular basis or on certain machine, the ReadMultiple does not return immediatly because the OPCServer does not reply to the request.
In this case, it may happen that the second thread executes another ReadMultiple meanwhile the first is waiting the answer.

Is it in OPC Specification or not?

I think the problem is on OPC Server side because we monitored network communications with WireShark adn found that the answer from the OPCServer is not sent back. We are working with Siemens to find out if it is a bug of WinCC OPC Server, but when it happens it causes a second request to be sent to OPC Server and we are not sure if it complies or not with specifications.
We found out also that sometimes, rarely, parallel requests to OPCServer happen, the server respond regularly and quickly and verything works.

We are try to understand if the overlappign of ReadMultiple is a consequence or the cause of the server not responding.

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

Moderators: support
Time to create page: 0.050 seconds