Professional OPC
Development Tools

logos

How to get real time data using synchronous mode?

More
22 Jan 2014 14:59 #1680 by support
First thing to look at is the DCOM configuration, see e.g. www.opcti.com/callback-fail-dcom-error.aspx .

Next thing: please see this thread - www.opclabs.com/forum/quickopc-net--9/1244-connecting-to-remote-machines-via-code?start=0 , specifically :

Can you please try to assign different combinations to following static properties - in the code, before the very first OPC operation is attempted:

EasyDAClient.ClientParameters.UseCustomSecurity
EasyDAClient.ClientParameters.TurnOffActivationSecurity
EasyDAClient.ClientParameters.TurnOffCallSecurity



That user resolved his problem by using:
OpcLabs.EasyOpc.DataAccess.EasyDAClient.ClientParameters.UseCustomSecurity = false;

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

More
22 Jan 2014 13:03 #1679 by kutarte
subscriptions is not working too, it will show this error: Exception from HRESULT: 0x80040202

I'm forget to capture the error for Async reads. I'm out of town for now, i will let you know soon when i'm back. the server and the remote is different computer.

Thank you

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

More
19 Jan 2014 17:16 #1675 by support
First and foremost, the proper way to get real-time data is to use subscriptions, not reads.

Second, the difference between using sync or async reads is only in the communication method between the client and the server, neither of them enforces more "real-time" behavior than the other.

If you insist on using the reads, there should be no reason to use multiple threads to read 4000 tags. I recommend using 1 thread.

If making a delay resolves the "Read not completed", then there was a part of the system too busy at the time of the call, and the operation could not be completed during the timeout period. Consider increasing the timeout.

What error do you get if you try to use Async reads? Is the server on a remote computer?

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

More
19 Jan 2014 15:06 #1674 by kutarte
Hi!

I'm using QuickOPC 5.22 build 422.1 and VB.net 2012 to create OPC client to connect to AIM*AT OPC server. First time i can't read the value and i found the problem is the client mode, it must use synchronous mode. The OPC server is support for OPC DA 2.04 & 1.0a Asynchronous I/O, I don't know why the component can't read item value using Client Mode Asynchronouse. Anyway, I can read it using synchronous mode. I need a real time data, so I loop the reading. Cause the item is more thn 4000 tag, so i'm using multi thread and 1 thread loop for reading about 300 tag.

I just success read for a few times and than got this exception:

OpcLabs.EasyOpc.OpcException: An OPC operation failure with error code -1073430509 (0xC004C013) occurred, originating from 'OpcLabs.EasyOpcRaw.DataAccess.RawEasyDAClient'. The inner exception contains details about the problem. ---> System.Runtime.InteropServices.COMException: Read not completed. This error indicates that it could not be verified that the requested read operation was completed during the timeout period. It is possible that the read operation will actually succeed or fail, but later. Increase the timeout period if you want to obtain positive or negative indication of the operation outcome. Other reason for this error may be that under heavy loads, topic request or response queue is overflowing. Check the event log for queue overflow errors (if event logging is supported by the product and enabled).
--- End of inner exception stack trace ---
at OpcLabs.EasyOpc.DataAccess.EasyDAClient.ReadItem(ServerDescriptor serverDescriptor, DAItemDescriptor itemDescriptor, DAReadParameters readParameters)
at OpcLabs.EasyOpc.DataAccess.EasyDAClient.ReadItem(ServerDescriptor serverDescriptor, DAItemDescriptor itemDescriptor)
at OpcLabs.EasyOpc.DataAccess.EasyDAClient.ReadItem(String machineName, String serverClass, String itemId, VarType dataType)
at OpcLabs.EasyOpc.DataAccess.EasyDAClient.ReadItem(String machineName, String serverClass, String itemId)
at SinalsysServer.Form1.read_HL(String tag_name, String item_name)

I need a real time data but can't use asynchronous mode. Do you have an Idea? now i have to stop all reading and put some delay after found that error and start again.

Thank You

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

Moderators: support
Time to create page: 0.201 seconds

      

 Recommend this on Google