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-Classic in .NET
- Reading, Writing, Subscriptions, Property Access
- Subscribe Problem
Subscribe Problem
- Peter Siegel
- Topic Author
- Visitor
Peter
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
- Peter Siegel
- Topic Author
- Visitor
Is this Problem already fixed in your latest release?
thanks
Peter
Please Log in or Create an account to join the conversation.
I do not understand your question:
I don't understand why there is a problem with big argument arrays when i subscribe for each item individually?
The problem I have described applies both to SubscribeItem in a loop for large number of items, and to SubscribeMultipleItems with large number of items, though with SubscribeItem in a loop it may be worse.
Please Log in or Create an account to join the conversation.
- Peter Siegel
- Topic Author
- Visitor
Will try your fix and report back..
I don't understand why there is a problem with big argument arrays when i subscribe for each item individually?
thank you
Please Log in or Create an account to join the conversation.
In my test, adding following code before the subscriptions are made has helped (you may experience with the 'factor' value):
const int factor = 100;
EasyDAClient.ClientParameters.TopicProcessingIntervalTimeout *= factor;
EasyDAClient.ClientParameters.TopicProcessingTotalTimeout *= factor;
We have an improvement planned for future version of the component which should resolve the issue altogether.
Best regards, Zbynek Zahradnik
Please Log in or Create an account to join the conversation.
- Peter Siegel
- Topic Author
- Visitor
I'm not sure if i get all the update events from the server, but I'm not expecting more events.
So it seems to be working if I subscribe slowly enough. if i subscribe all at once without delay, i'm missing events. In this case i get events from ~25% of the Items.
thank you
Peter
Please Log in or Create an account to join the conversation.
can you please provide the missing piece:
4. What is the rough percentage of items changing in each update period (e.g. are they mainly staying constant, or - on the other side of the scale - do all or most of them change their value each update period?).
That is, is 40-60 updates currently received per second equal to the actual amount of changes generated by the OPC server, or is the amount generated by the OPC server higher and you are expecting to see more in the client (how much?).
Thank you
Please Log in or Create an account to join the conversation.
- Peter Siegel
- Topic Author
- Visitor
Yes the OPC Server is running on the same machine as the component. The opcdaserver.exe Process (Siemens Simatic.net OPC server) is using 3-5% on average. on a 8 core server. The Server has an average load of 15%.
I Subscribe with a rate of 250 like this:
EasyDAClient.EngineParameters.DefaultEventQueueSize = 99999;
EasyDAClient.EngineParameters.TopicLruSize = 99999;
easyDAClient = new EasyDAClient();
easyDAClient.ClientMode.AllowAsynchronousMethod = false;
easyDAClient.ClientMode.AllowSynchronousMethod = true;
easyDAClient.ClientMode.DesiredMethod = DAReadWriteMethod.Synchronous;
easyDAClient.Timeouts.ReadItem = 50000;
easyDAClient.Timeouts.WriteItem = 50000;
easyDAClient.Timeouts.GetProperty = 36000;
easyDAClient.UpdateRates.ReadAutomatic = 250;
easyDAClient.HoldPeriods.TopicRead = 24 * 60 * 60 * 1000;
easyDAClient.HoldPeriods.TopicWrite = 24 * 60 * 60 * 1000;
easyDAClient.ItemChanged += new EventHandler(easyDAClient_ItemChanged);
EasyDAClient.ClientParameters.LinkCallbackQueueSize = 10000;
easyDAClient.SubscribeItem(hostID, OPCServerID, datapoint.Name,250, datapoint);
I register for 4700 Tags at the moment and get approximately 40-60 updates per second.
It is essential for me that the subscribeitem method has done its work reliably. Is there any way to check if i'm successfully subscribed to an item?
thanks in advance..
Peter
Please Log in or Create an account to join the conversation.
I can confirm that I can reproduce similar or same behavior.
It is, however, highly dependant on other parameters. Specifically, the update rate of the items. Before I give you further advise, can you please answer the following?
Is the OPC Server running on the same machine as the component, or is it accessed over network?
If it is running locally, how much CPU does the OPC server use?
What is the update rate that you request in the "subscribe" call?
What is the rough percentage of items changing in each update period (e.g. are they mainly staying constant, or - on the other side of the scale - do all or most of them change their value each update period?).
Many thanks
Zbynek Zahradnik
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Reading, Writing, Subscriptions, Property Access
- Subscribe Problem