Professional OPC
Development Tools

logos

Responsiveness of Reads

More
15 Nov 2014 09:49 #2523 by support
Replied by support on topic Responsiveness of Reads
If the GUI calls synchronous operations on EasyXXClient like ReadXXXX, it would freeze until they are completed. OPC is connection oriented, but we provide a connection-less API on top of our component. If connecting other client make things better, it may mean that the long completion times are caused by us connecting to the server/server start up/one-time tasks that the server needs to perform a read.

We disconnect from a server, if it is not in use, automatically, after a configurable "hold period", which is relatively short (I think that it is 10 or 15 seconds). If your application is accessing the server more often than this, the server will stay connected. If it accesses the server less frequently, we will repeatedly disconnect and then connect again, possibly causing an extra delay. To prevent this, set the values under HoldPeriods property correspondingly. (Note: The Timeouts have no influence on this, unless some operation actually does time out, which does not seem to be the case).

Another factor here is that (Again, depending on the configuration) we set up an OPC subscription after a Read, and try to maintain it at a rate that is derived from the frequency your applications calls the Reads. This way, we can (sometimes) give you a value "from memory", instead of actually accessing the server inside the Read. The initial subscription rate after the Read is configured inside the UpdateRates (or it can be disabled altogether), and the maximum allowed age of the value that you can get "from memory" during the Read is contained in the read parameters which are also configurable.

Best regards

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

More
14 Nov 2014 20:45 #2522 by pgilbert
Replied by pgilbert on topic Responsiveness of Reads
The bad situation is that the GUI will 'freeze' on a regular basis while there is the communication with the OPC server. If an OPC Client from 3rd party is running along with our application then the GUI will behave almost without 'freezing'.

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

More
11 Nov 2014 05:47 #2515 by support
Replied by support on topic Responsiveness of Reads
I will answer your question, but it almost seems like that first half of it is missing - can you please give me the full picture first?

You describe the "good" situation. Please describe what the "bad" situation is.

Thank you

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

More
10 Nov 2014 23:55 #2514 by pgilbert
I have implemented the following 2 methods today and our application is almost perfectly responsive.

'OPCClient.VAQ' ⎕wi 'XHasValue'
'OPCClient.VAQ' ⎕wi 'XDisplayValue'

If I start an OPCClient (to refresh all the tags at a 1 second interval) that is accessing the same OPC Server has our application, than it is fully responsive all the time. It's like if the OPC Client was asking the OPC Server to refresh it's tag so that our application could access the same tag faster.

Our time-out settings are as follow:

'OPCClient' ⎕wi 'XUpdateRates.WriteAutomatic' ¯1
'OPCClient' ⎕wi 'XUpdateRates.ReadAutomatic' 1000
'OPCClient' ⎕wi 'XTimeouts.ReadItem' 10000
'OPCClient' ⎕wi 'XTimeouts.WriteItem' 10000

Question: Is there something that could be done with those Timeouts that could reduce further the time for the OPC Server to respond without having to run the OPC Client all the time ?

Thanks

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

Moderators: support
Time to create page: 0.178 seconds

      

 Recommend this on Google