Simple OPC Driver Communication Issues After Upgrading Geo SCADA
After upgrading Geo SCADA, a user reported that communications through the Simple OPC Driver were no longer functioning correctly. The OPC server connection appeared healthy, but data was not being read or updated as expected. The Simple OPC Driver is configured to use Asynchronous V1 (OPC DA 1.0) as its read mode by default, which relies on the OPC DA 1.0 asynchronous communication mechanism. In asynchronous mode, Geo SCADA subscribes to OPC items and relies on the OPC server to provide updates through callback notifications whenever values change. The communication flow is similar to:
Geo SCADA --> Subscribe to Items
OPC Server --> Monitor Changes
OPC Server --> Send Updates via Callbacks
Geo SCADA --> Process Updates
This method is efficient because updates are only sent when data changes. However, it requires the OPC server to correctly support the OPC DA 1.0 asynchronous interfaces and callback mechanisms. Some OPC DA servers do not fully support these interfaces, particularly with older OPC DA 1.0 asynchronous methods. In these cases, the OPC server may fail to properly notify Geo SCADA of changed items, resulting in stale values, missed updates, or communication issues, even though the OPC connection itself appears healthy.
To address this issue, modify the Read Mode used by the Simple OPC Driver:
- Open the Simple OPC Driver configuration.
- Locate the Read Mode setting.
- Change the read mode from: Asynchronous V1 to Synchronous
- Save changes
Unlike asynchronous communications, synchronous communications use a polling mechanism.
The communication flow becomes:
Geo SCADA --> Read Request
OPC Server --> Return Value
Geo SCADA --> Read Request
OPC Server --> Return Value
Instead of waiting for the OPC server to send callback notifications, Geo SCADA actively requests the latest value whenever required.
By changing the read mode from Asynchronous V1 to Synchronous V2, Geo SCADA no longer depended on the OPC server's asynchronous notification mechanism.
In summary, the issue was caused by the OPC server not functioning correctly with the Asynchronous V1 (OPC DA 1.0) communication method. Switching to Synchronous V2 (OPC DA 2.0) changed the communication from a subscription-based model to a polling-based model, avoiding the compatibility issue and allowing data to be read successfully.