Applies To:
  • CitectSCADA 6.xx
  • CitectHMI 6.xx

I’m using CitectSCADA version 6.00 with an OID (Object ID) based driver (e.g. ABCLX or OPC). I have read the version 6.00 release documents so when I update a project on the I/O server I expect that only clients with matching OIDs would talk to it.

When I start the I/O server, as soon as the I/O device comes online I get lots of read errors. The driver errors tell me that requests are being made for invalid OIDs. It seems as if the clients are talking to the I/O server anyway, even though they have different variable databases.

This is not what I expected, so what is happening?

In CitectSCADA version 6.0 object identifier (OID) validation between CitectSCADA I/O servers and I/O clients was added. For more general information on this system please see the CitectSCADA version 6.00 Release Document in the KB system or with your CitectSCADA version 6.0 install media.

The OID validation rules are:

• I/O device numbers must match
• If an OID on the client side has an address mismatch on the server side this will cause communications to be locked out to that unit
• If an OID on the client side is unknown on the server side this is allowed as the tag will just be in #COM if requested from the server

If you do an OID reset (see [OID]Reset parameter) or some other change that results in ALL of the OIDs from the client being unknown on the server, it will still attempt to communicate as it passes the rules outlined above but all requests will return #COM.

In CitectSCADA version 6.10 service pack A a strict OID checking mode has been added. This can be enabled using the following parameter:

(Default: 0)

If StrictTagHandshake is set to 1 then any unknown tags will cause a mismatch. This will mean that the client and server must have a perfectly matched variable database (for that unit) to be able to talk.

The following configuration parameters may assist in debugging the behaviour of the OID handshake system:


Setting LogTagHandshake=1 will cause basic information about the handshake process to be written. This includes information such as when the processes started and what its outcome was. This parameter will have effect on both the client and server ends of the I/O server connection.

Setting DebugLogTagHandshake=1 only produces output on the client side of the I/O server connection. This setting produces verbose logging output showing the result of each tag matching operation.

The OID matching system actually matches the OID and address field of each tag for each OID based I/O device. It does not matter what order the databases are in or what the timestamps of the files are. The OID handshaking system  goes through each and every tag for OID based drivers and matches them between the client and the I/O server.

For more information on OIDs please see:

Q3657 - How Do Object IDs (OIDs) Work?
CitectSCADA version 6.00 Read Me File

OID tag based driver update change handshake