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

The Allen Bradley ControlLogix (or CompactLogix) PLCs can be used with some Citect drivers that were not specifically designed for them.
  • KE (DF1 half duplex serial)
  • ABRSLINX (API interface to RSLinx)  

To do this requires the use of PLC5 mapped tags. This is where tags or array tags in the ControlLogix are mapped to PLC5 style file numbers. In RSLogix 5000 this is done via the menu "Logic \ Map PLC/SLC Messages". In this way the data is available to Citect via the same method of addressing as a PLC5.

Unfortunately however they are not exactly the same as a PLC5 and this can cause some difficulties.

16 vs 32 bit words

The basic memory element in the ControlLogix PLC is a 32 bit word - referred to as a DINT (double integer). All input images from discrete input modules, even 16 way modules appear as DINTS, all status flags from PID functions, timers, etc are DINTS and all timer, counter and control values are DINTS. But DINTS cannot be mapped as PLC5 files. There are several consequences of this:

Difficult bit addressing

Two 16 bit words are needed in Citect for each 32 bit DINT array element. Undesirable calculations are required to arrive at the correct bit address as the following table shows:

ControlLogix Tag




ciDint[0] bits 0-15

e g 4


B4:0/0 to B4:0/15

ciDint[0] bits 16-31

e g 4


B4:1/0 to B4:1/15

ciDint[1] bits 0-15

e g 4


B4:2/0 to B4:2/15

ciDint[1] bits 16-31

e g 4


B4:3/0 to B4:3/15

ciDint[n] bits 0-15

e g 4


B4:(nX2)/0 to B4:(nX2)/15

ciDint[n] bits 16-31

e g 4


B4:(nX2+1)/0 to B4: (nX2+1)/15

In general mapping arrays of DINTs to PLC5 files should be avoided wherever possible. Arrays of INTs are preferred.

Bool arrays do not map correctly

A bool array - say ciBit[320] - mapped to a PLC5 file -say file 4 - and addresses as digital tags B4/0, B4/1 .. B4/n, in Citect will only associate correctly for the first 16 elements, after this the 32/16 bit syndrome sets in. For this reason it is better to use INT (16 bit) tags in ControlLogix for all digital variables which Citect is to read or set.

Special data types

Allen Bradley PLCs have special data types for a number of functions. For example Counters / Timers / PID /Strings. This are different from the PLC5 equivalents in that some of the elements of these structures are now DINTs instead of INTs.

The only way to access them is to move the data to another register in the PLC that can be accessed.

Because the data is 'buffered', Citect cannot read and write to the base data via a single tag as is normally the case. As a consequence, separate tags must be created for reading and writing. Writing will have to be coordinated so that changes to the base data is not immediately overwritten.

If you need to access these data types the only way to access them in their native formats and avoid all this trouble is to use a driver that is designed for it such as OPC or ABLOGIX.