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

When configuring array items for tag based drivers such as OPC (or OPC1), whilst accessing some of the array items or individually indexed array items through the Cicode TagRead and TagWrite functions an error would sometimes appear informing the user that an "Array has been overrun" had occurred.

The suggestion given in KB Q3462 was implemented but it does not fully solve the "Array has been overrun" error. Below is an example of the OPC Variable tags configured in the Project:

Tag Name         | Tag Address              | Data Type
ABIntegerArray_0 | ABIntegerArray[0]        | INT
ABIntegerArray   | ABIntegerArray,L10!A[10] | INT

Below is an example of the different Protdir settings and results of the TagRead/TagWrite commands:

Scenario 1
Set the protdir option to be 0x2080cf (OPTION OFF). I am not be able to TagRead(ABIntegerArray_0). TagRead(ABIntegerArray[n]) does work for all elements.

Scenario 2
Set the protdir option to be 0x2880cf (OPTION ON). TagRead(ABIntegerArray_0) works. TagRead(ABIntegerArray[n]) will not work for n = 1 and above. Only the first item will work.

How do you resolve this issue?

Citect has confirmed this to be a problem in CitectHMI/SCADA versions 5.xx. This problem has been fixed in version 6.00.

This has been resolved and consequently the protdir option 0x08000 described in KB article Q3462 is now not required and will be ignored if set for a particular driver.

array overrun, array tags, OPC