- Posts: 33
- Thank you received: 3
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
- Slow Update To Listview (Large Amount Of Tags)
Slow Update To Listview (Large Amount Of Tags)
- neilcooley
- Topic Author
- Offline
- Platinum Member
Thank you for your help and patience.
Neil
Please Log in or Create an account to join the conversation.
I am not sure what you mean by "I notice you don't do any callbacks to update the listview...". Are you referring to your use of BeginInvoke? If so, please read opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...g%20and%20Synchronization.html . The short answer is that you do not need to call BeginIvoke from EasyXXClient event handlers, as long as the EasyXXClient object has been *created* on the UI thread - which is always the case if you are placing it as a component onto a Windows Forms in VS designer. It has been like this for many years already.
Best regards
Please Log in or Create an account to join the conversation.
- neilcooley
- Topic Author
- Offline
- Platinum Member
- Posts: 33
- Thank you received: 3
I have ran the demo untouched and using the simulation server gives a update figure around 900 tags a second.
I then changed my code to my OPC server and tag collection and I get roughly 885 tags a second which signifies the SDK is good.
I notice you don't do any callbacks to update the listview so I will change my update event to like the one in the example - why do we no longer need a call back to update the listview - is it a new feature of the .Net ?
Neil
Please Log in or Create an account to join the conversation.
I was testing with this example: opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...rge%20number%20of%20items.html .
You will also find it in the DocExamples project in the examples solution.
It would be great if you can test&measure the same example on your computer (as it is - with our simulation server), and the re-do it to connect to your server instead, and test&measure again.
Best regards
Please Log in or Create an account to join the conversation.
- neilcooley
- Topic Author
- Offline
- Platinum Member
- Posts: 33
- Thank you received: 3
Could you send me your example and I will test with my PLC and OPC server.
Public Sub EasyDAClient_ItemChanged(sender As Object, e As EasyDAItemChangedEventArgs) Handles EasyDAClient.ItemChanged
BeginInvoke(Sub()
ListView.BeginUpdate()
Dim listViewItem As BetterListViewItem = CType(e.arguments.State, BetterListViewItem)
UpdateListViewItem(listViewItem, e.Exception, e.Vtq)
ListView.EndUpdate()
End Sub)
End Sub
' Updates ListViewItem (from reading or change notification) with exception and value/timestamp/quality
Private Shared Sub UpdateListViewItem(ByVal listViewItem As BetterListViewItem, ByVal exception As Exception, ByVal vtq As DAVtq)
Dim vtqText As String = ""
Dim exceptionText As String = ""
If (exception Is Nothing) Then
If vtq.Value Is Nothing Then
listViewItem.SubItems(2).Text = "0"
listViewItem.SubItems(3).Text = "No Data"
listViewItem.SubItems(4).Text = Now()
Else
listViewItem.SubItems(2).Text = vtq.Value.ToString ' vtqText
listViewItem.SubItems(3).Text = Get_Quality_String(vtq.Quality.InternalValue)
listViewItem.SubItems(4).Text = vtq.Timestamp.ToString("dd/MM/yy HH:mm:ss.fff")
'vtqText = vtq.ToString()
End If
Else
listViewItem.SubItems(3).Text = exception.Message
End If
End Sub
Please Log in or Create an account to join the conversation.
If you do not have a commercial license, download the recent build of QuickOPC 2018.3 from our Web site and rebuild.
Regarding the slow update:
I tested with our simulation server, subscribing to 1000 items. I start getting updates almost immediately after the SubscribeMultipleItems call (in less than 1 second, certainly). And, in a duration of 1 minute test, I receive about 60,000 updates, which is in line with the rate of change of the simulation (1 change per item per second), and indicates a throughput of 1000 data changes/second without issues.
This has been done simply by running a corresponding examples from our DocExamples project that comes with the product (except for measuring the throughput, because the console output with each notification slows down the processing a lot; so for measuring that, I commented out the console output and replaced it by a simple incrementing counter).
What is inside your notification handler? Cannot it be the handler that slows things down? Can you replace it by something very simple (but still indicative of the outcome) as I did, and see if that has an influence?
Best regards
Please Log in or Create an account to join the conversation.
- neilcooley
- Topic Author
- Offline
- Platinum Member
- Posts: 33
- Thank you received: 3
2018.3
Although i get a error saying "Not allowed to run by the licence "Multipurpose"
Neil
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
- neilcooley
- Topic Author
- Offline
- Platinum Member
- Posts: 33
- Thank you received: 3
I downloaded the Advosol SDK to see if it was a problem with the Rockwell OPC server or my own PC. The tags were updated instantanouesly so i believe my PC and OPC server is good which leads to EasyOPC problem. If you want me to send the source code that i am using then please let me know.
I have found that EasyOPC gives instant results to around 200 tags then it gets slower and slower !
Neil
Please Log in or Create an account to join the conversation.
I do not think that using callbacks/lambda expressions would make any significant difference.
When you wrote "I have tried another SDK and reading the same amount of tags and it displays the results instantly" - did you actully mean Subscribe (as in your QuickOPC code), and not Read ?
Best regards
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Reading, Writing, Subscriptions, Property Access
- Slow Update To Listview (Large Amount Of Tags)