- Posts: 22
- Thank you received: 0
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
- Delay in subscription callback acknowledgement
Delay in subscription callback acknowledgement
I have received the download link - thanks.
Please Log in or Create an account to join the conversation.
Note that it is possible that the issue with OPC Analyzer crashing is not related to its version. Are you sure that the analyzer "tracing" (or the analyzer as a whole) has been properly stopped, before the copy of the .TRA file was taken?
Best regards
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
My version of OPC Analyzer did not crash, but rejected the file as being from a version that's too old. I do have, however, older versions of OPC Analyzer in the archive; except that the archive is on offline media and in a different office - cannot access it today. Either tomorrow, or at the beginning of next week. I will let you know then.
Also note that, if you can still access the remote computer, OPC analyzer allows to export the trace into a TXT file. That is not optimal (some information even gets lost), but better than nothing (the resulting file is even bigger, and should be compressed).
Regards
Please Log in or Create an account to join the conversation.
Thank you for the suggestion - we are using performance counters to monitor GC.
The event in question has occurred again. I was able to log into the customers computer and save the trace, but my version of OPC Analyzer crashes when I attempt to open it. Is there anything we can do to recover the data? Given the (in)frequency of the event I would really like to get access to this data for analysis.
I have attached the trace file.
Thanks,
Shea
Please Log in or Create an account to join the conversation.
One possible reason might be the intervention of .NET garbage collector. Can you please use PerfMon to watch the GC ?
Thank you
Please Log in or Create an account to join the conversation.
2. There are timers (one for each distinct tag poll rate, usually 500ms and 1000ms) in the application that take the most recent value and OPC timestamp for each tag and log it to disk. If the timestamp for a tag has not changed since the last timer elasped call, the value is logged to disk again with Datetime.UtcNow as the timestamp (unless an interim OnDataChange callback has been received indicating DAVtq.Quality bad). There is no data logged for any of the ~7000 tags for the 5 second period in question, implying that either the quality went bad for all of them, or our internal timers were not firing. Given that we don't see any quality bad messages in the OPC Analyzer trace, I think it's safe to assume that the internal timers were not firing for > 5s implying a process-wide issue.
If you see a fault in my reasoning please let me know. I have added logging of some performance monitors for the process and will inspect those if it happens again.
Thanks,
Shea
Please Log in or Create an account to join the conversation.
Our code inside the OnDataChange handler is designed in such a way that (assuming that all works as designed) it should be quickly finished, and not block for extended periods of time (essentially, it just enqueues the incoming information and returns).
Can you please answer:
1. Is your application a .NET project, or are using a COM interface of QuickOPC (Delphi, VB6, PHP etc.)?
2. Are you saying that it "appears" as not only the OnDataChange processing was blocked, but also (all) other processing in your application ?
Thank you
Please Log in or Create an account to join the conversation.
I am using QuickOPC 5.31 Build 1331.1 on Windows Server 2012. We are subscribed to ~ 7000 tags with poll rates ranging from 500ms to 1000ms. The OPC Server and client application are running on the same machine.
Note that the information in this paragraph is provided as background information to explain why we were running the experiment described below. Our customer has been reporting intermittent issues whereby the historian to which we are logging all ItemChanged updates was intermittently missing updates from the PLC (e.g., they were sure the PLC was indicating value x at time t but the database did not contain the update, but would get subsequent updates).
I installed OPC Analyzer and instructed 4 of the 7000 tags to subscribe through it rather than directly to Kepware. I also logged instructed the same 4 tags to log directly from the PLC to our historian (using ControlLogix drivers from ingeardrivers.com/). To detect instances where the data received from the OPC Server differed from that which was being logged directly from the PLC, we set up email alerts (so that we could quickly log in and save the OPC Analyzer Trace).
Yesterday I received an email alert and immediately logged in to save the OPC Analyzer Trace. It turns out the alert was generated because a subscription call from the OPC Server to our application took 5437ms to be acknowledged (assuming I am interpreting the highlit line of the trace correctly - please see attached screenshot). Most CallTime's are < 200ms.
What could be responsible for the high CallTime? When QuickOPC receives a subscription update from the OPC Server, does it attempt to immediately send the acknowledgement to the OPC Server? Or does it synchronously pulse all methods subscribed to the to the ItemChanged event before sending acknowledgement to the OPC Server? Is there anything you can think of which we could try to eliminate extremely high CallTime's such as this? Note that during the event no data for any of the other 7000 tags was logged which is a concern.
The machine running the code is not under heavy load (16 cores - usually around 33% utilization, 128 GB ram, and the process calling QuickOPC is typically using 2-3% CPU).
I have attached the trace as well.
Thanks,
Shea
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Reading, Writing, Subscriptions, Property Access
- Delay in subscription callback acknowledgement