Applies To:
  • CitectSCADA 5.50, 6.0, 6.1, 7.0
  • CitectHMI 5.50, 6.0, 6.1, 7.0


I am trying to configure Citect as an OPC client, and talk to a remote OPC server.

I configured my DCOM settings correctly on both client and server machines, as recommended by the OPC foundation, and confirmed that a test OPC client can remotely connect to my OPC server and read data (asynchronously).

Citect would also connect to the OPC server; however it would fail to receive any data from the OPC server. Practically this would result in having #COM on my page (or as 0 values if you set [OPC]FailOnUncertain=0)

I set up a quality tag, and it shows the tag quality as being "Uncertain" (the decimal value of the quality would typically be 64, but may also be comprised between 64 and 128)



What happens here is that the Citect OPC client does not receive callbacks from the OPC server, eg: the OPC server is sending values to Citect for subscribed tags ("OnDataChange" OPC function), but are never received by Citect.

This is a DCOM problem that can be fixed by setting the "Default authentication level" to "None" on the client side.

Further details:

When it comes to callbacks from the server to the client (when using asynchronous reads and writes), the client and server roles are basically reversed: the client would act as a server on a DCOM point of view, hence the reason why the "default authentication level" should be carefully taken into account on the client side as well.

The Citect help file discusses how to set up DCOM settings on both the server and client sides, and does recommend to set the "default authentication level" to "None" on both sides.

The "default authentication level" on the client side is not so relevant with most other OPC clients, because this level is programmatically reset to "None" when the OPC client starts. This is done by calling the "CoInitializeSecurity" OPC function, when the OPC client is starting. The Citect OPC client does not call the "CoInitializeSecurity" function. This is why a test OPC client would work, but not the Citect OPC client.

To be able to receive CallBacks with Citect, you therefore need to manually set the "default authentication level" to None on the client side.