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.

Timeout Error -1073430509 (0xC004C013)

More
12 Jan 2011 07:31 #187 by support
From: W.
Sent: Tuesday, January 11, 2011 9:00 PM
To: Zbynek Zahradnik
Subject: RE: Timeout Error -1073430509 (0xC004C013)

Hello Zbynek,

Sorry for the delayed response. Thank you for this information. The customer got back with me today and said this solved his problem. ...... Thanks again.

W.

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

More
07 Jan 2011 14:51 #181 by support

W.,

There are multiple concepts in play, but in general, the customer is right that there is a central resource that is shared by the calls he is making – even when he is making them from different threads.
Unless chosen otherwise (see further below), the component creates a single connection to each target OPC server (one OPCServer object), and it also minimizes or at least reduces the number of OPC Groups created there.
This is one reason why the results in those threads seem dependent: With a bit of simplification, we can say that there is a single thread that takes care of requests made to each target OPC server. If a function call made to that OPC Server blocks for long time, not only this particular request, but also others that are waiting in queue may time out. It looks like that the TOP Server isn’t responding for some time – maybe they are forcing a sync read from device?

This behavior is by design.

The customer should be able to get around it by setting the Isolated property (www.opclabs.com/onlinedocs/QuickOpcNet/5.03/Reference/html/P..._EasyDAClientMode_Isolated.htm ) to True (this is a property of
EasyDAClientMode object, contained in ClientMode property of the main EasyDAClientMode object).

This is how it works: By default, Isolated is False everywhere. All calls made on EasyDAClient objects whose ClientMode.Isolated property is False will use a single, shared connection to each target OPC Server.
If you set ClientMode.Isolated to True, calls made while this is in effect will use a connection to target OPC Server that is specific to that instance of EasyDAClient object you are making call on. So, for example, if you set ClientMode.Isolated to True on each EasyDAClient mode object immediately after you create it, each of these objects will then create and maintain its OWN connection to every target OPC Server. The code can also make dynamic changes to ClientMode.Isolated to achieve various results.

I think that the customer can reprogram his application so that they use separate instances of EasyDAClient object (one instance per each thing that should remain independent – such as the device in the TOP Server), and set their ClientMode.Isolated to True after creation.

Best regards,
<span style="font-family: "Arial","sans-serif"; color: #1f497d; font-size: 10pt">Zbynek Zahradnik


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

More
07 Jan 2011 14:49 #180 by support

From: W.
Sent: Thursday, January 06, 2011 10:52 PM
To: Zbynek Zahradnik
Subject: Timeout Error -1073430509 (0xC004C013)

Zbynek,

I have a customer who is experiencing a timeout error -1073430509 (0xC004C013). The background is they have a multithreaded application that does a ReadItem for 3 different items on startup. Each ReadItem is done in its own thread at roughly the same time.

They are talking to the TOP Server and they have taken 1 of the 3 devices connected to TOP Server offline. If they attempt to read the offline tag they get this error 3 times, 1 for each read. If they only read the 2 tags from connected devices it works just fine.

Have you seen this behavior in the past? They are using v5.03 (build from November).

Below is part of the email from the customer.

The OPCData.NET documentation indicates that the EasyDaClient class and related objects are thread-safe. During field testing, we've confirmed that it's possible to invoke OPC operations from multiple threads using a single EasyDaClient object. However, if any of those operation encounters a failure (e.g. timeout due to broken Ethernet link), then the concurrent operations in other threads will also fail.

This risk cannot apparently be avoided by instantiating multiple EasyDaClient instances; they all seem to rely on some central/underlying resource which is implicitly synchronized.

Is it possible to adjust the EasyDaClient configuration parameters so that cross-thread operations are independent? Is there some other technique which can be employed to achieve this goal?

If you need more information let me know.

W.

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

Moderators: support
Time to create page: 0.043 seconds