OPC server performance issues
- Last UpdatedMay 22, 2025
- 3 minute read
Issue
An OPC server with performance issues will cause sporadic PI OPC tags to not update or otherwise appear stale. When the OPC server is having performance issues, the PI Interface for OPC DA version 2.2.2.0 or later reports the following error message in the pipc.log file:
The OPC server did not respond to the last refresh call for scanclass N, and has not
responded to the previous nnn
refresh call(s).
When the PI OPC interface makes a refresh call to the OPC server, the OPC server should return something back before the interface makes another call. If the OPC Server does not respond before the next call, the interface prints out the message above. When this happens, it is likely (but not always the case) that data is lost for that call.
Solution
Optimize the load on the OPC Server
Depending on the circumstances and preferences, suggestions 1, 2a, and 3 are reasonable starting points.
-
Move tags into Advise scan class (#1) if they are advise tags. Do not mix polled and advise tags.
-
Adjust the size and number of groups. OPC servers handle data in groups. The group size can be adjusted from the OPC interface side in one of two ways:
For tags in scan class 1, the tags will be split into smaller groups according to the setting in ICU under OPCInt > Data Handling > Number of tags in advise group. This setting will subdivide all tags in scan class 1 into separate groups.
The second way is to manually create separate groups by placing tags into a separate scan class. For scan classes other than scan class 1, the number of tags in that scan class is the size of the group. This adjustment requires balancing two opposing factors: making each group smaller but also not creating too many groups in total. Contact your OPC Server vendor to find out the maximum number of groups in total the particular OPC server can handle.
-
Adjusting the size of groups: Create smaller groups to divide data collection into more manageable chunks for the OPC server. For tags in scan class 1, this can be done by going to OPCInt > Data Handling > Number of tags in advise group and entering a value between 200~400. For tags not in scan class 1, check that there are no more than 200~400 tags per scan class.
-
Adjusting the number of groups: Reduce the total number of groups for the interface. Each scan class causes the creation of a group on the OPC server. If there are any unused scan classes, they should be removed from the interface start-up configuration file. The interface will not ask the OPC Server to perform work for scan classes that do not contain tags; however, what the OPC Server does on its own with that group could impact performance. The number of groups can also be reduced by increasing the number of tags per group in scan class 1. This is accomplished by adjusting OPCInt > Data Handling > Number of tags in advise group.
-
-
Increase the time for each scan rate. The scan rate is sent to the OPC server, and the OPC server makes a good faith effort to keep data in a cache as fresh as the scan rate. However, whether the OPC server is able to reach out to all of the end devices to do so is not guaranteed. Increasing the scan rate provides the OPC server more time to gather data from the data sources before going back out for another device scan.
-
Create a separate instance, especially if the number of tags on 1 instance is over 10,000. Every OPC server responds differently, and some OPC servers struggle at as low as 5,000 tags. 10,000 tags tends to be a soft limit after which there is increased risk of performance issues for any OPC server. Note that the tags must be placed onto a separate instance, not just a separate scan. Creating separate scans within the same instance is irrelevant if the root cause is an overloaded instance.
Other than the above suggestions, not much more can be done from the PI Interface for OPC DA to help when the OPC server is having issues, and the OPC server may not provide additional clues to the OPC interface beyond not responding to the last refresh call. However, additional solutions are often possible on the OPC server side. You should contact your OPC server vendor for further assistance if the problem continues.