Professional Communication
Software Development Tools

logos

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 or issues. You do not have to own a commercial license in order to use the OPC Labs supportOur team is actively monitoring the forums, and provides replies as soon as possible.

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.

When single item's quality is not good, all of the items become null

More
18 Dec 2025 07:30 - 18 Dec 2025 07:30 #14505 by support
Hello.

1. What makes you think that the observed data are not simply what the OPC server sends to the client?

2. Is "vtqResults.Succeeded" true or false for the remaining items?

3. If it is true, what is the QUality of those remaining items? If it is false, what is the error associated with them (for start, ErrorMessageBrief)?

Thank you
 
Last edit: 18 Dec 2025 07:30 by support.

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

More
17 Dec 2025 23:32 #14504 by sigasec
We use QuickOPC 5.83 with .NET 8. Our app is Windows Service that queries local OPC-DA server with 373 node items every 1000 milliseconds. Normally, everything works just fine, but sometimes one of the node's quality differs from 192 (Good), and in this case all the items values become NULL. The code is below:
Code:
var results = new List<double?>(); var serverDescriptor = new ServerDescriptor(Parameters.OPCServerName); var newVal = new List<DAItemDescriptor>(); foreach (var tag in Parameters.OPCTagList) {     newVal.Add(tag); } Stopwatch timer = new Stopwatch(); timer.Start(); _easyDAC.InstanceParameters.Timeouts.ReadItem = 10000; var readParameters = new DAReadParameters(0); // Taking the measurement of the current time even if it has not changed DAVtqResult[] vtqResults = _easyDAC.ReadMultipleItems(serverDescriptor, newVal.ToArray(), readParameters); if (vtqResults.Length > 0) {     validMeasumentExist = true; } timer.Stop(); if (_isDebug_OPC_Read) {     Trace.WriteInfo("Elapsed milliseconds: " + timer.ElapsedMilliseconds.ToString() + ", vtqResults.Length=" + vtqResults.Length, true); } for (int i = 0; i < vtqResults.Length; i++) {     Debug.Assert(vtqResults[i] != null);          if (vtqResults[i].Succeeded)     {         results.Add((vtqResults[i].Vtq.Quality == DAQualities.GoodNonspecific) ? Convert.ToDouble(vtqResults[i].Vtq.Value) : null);      }     else     {         Trace.WriteException(new Exception(vtqResults[i].ErrorMessageBrief));         results.Add(null);     } } return results;

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

Moderators: supportvaclav.zaloudek
Time to create page: 0.134 seconds