ABCIP Communication Driver
ABCIP Communication Driver
16
Contents
INTRODUCTION .........................................................................................................................................2
TROUBLESHOOTING .............................................................................................................................. 41
Page 1/49
ABCIP – Driver Version 11.16
Introduction
The ABCIP driver enables communication between the Studio system and compatible target devices —
including Allen-Bradley ControlLogix, FlexLogix, CompactLogix, and MicroLogix PLCs — according to
the specifications discussed in this document. The ABCIP driver communicates via the Allen-Bradley
Common Industrial Protocol (CIP) over Ethernet/IP
This document will help you to select, configure and execute the ABCIP driver, and it is organized as
follows:
Introduction: This section, which provides an overview of the document.
General Information: Identifies all of the hardware and software components required to implement
communication between the Studio system and the target device.
Selecting the Driver: Explains how to select the ABCIP driver in the Studio system.
Configuring the Device: Describes how the target device must be configured to receive communication
from the ABCIP driver.
Configuring the Driver: Explains how to configure the ABCIP driver in the Studio system, including how
to associate database tags with device registers.
Routing Communication: Describes how to communicate with additional devices using the ControlLogix
Backplane as a device network router.
Executing the Driver: Explains how to execute the ABCIP driver during application runtime.
Troubleshooting: Lists the most common errors for this driver, their probable causes, and basic
procedures to resolve them.
Revision History: Provides a log of all changes made to the driver and this documentation.
Notes:
This document assumes that you have read the “Development Environment” chapter in
Studio’s Technical Reference Manual.
This document also assumes that you are familiar with the Microsoft Windows environment.
If you are not familiar with Windows, then we suggest using the Help feature as you work
through this guide.
Page 2/49
ABCIP – Driver Version 11.16
General Information
This chapter identifies all of the hardware and software components required to implement Ethernet
communication between the ABCIP driver in Studio and a target device using the CIP protocol.
Device Specifications
To establish communication, your target device must meet the following specifications:
Manufacturer: Allen Bradley/Rockwell
Compatible Equipment:
– ControlLogix 5000 Family with 1756-ENET or 1756-ENBT module installed
– FlexLogix
– CompactLogix
– MicroLogix (1100 Series A and B, 1400)
– PLC5 and SLC500 though routing
Device Programming Software: Rockwell RSLogix5000 and Rockwell RSLogix500
For a description of the device(s) used to test driver conformance, see “Conformance Testing”.
Network Specifications
To establish communication, your device network must meet the following specifications:
Device Communication Port:
– for ControlLogix 5000 Family, Ethernet port on the 1756-ENET module
– for CompactLogix and FlexLogix, the built-in Ethernet Channel
– for MicroLogix 1100 and 1400, Ethernet Channel (Channel 1)
Physical Protocol: Ethernet
Logic Protocol: CIP over Ethernet/IP
Device Runtime Software: None
Specific PC Board: Ethernet port
Cable Wiring Scheme: Regular Ethernet cable
Page 3/49
ABCIP – Driver Version 11.16
Driver Characteristics
The ABCIP driver package consists of the following files, which are automatically installed in the /DRV
subdirectory of Studio:
- ABCIP.INI: Internal driver file. You must not modify this file.
- ABCIP.MSG: Internal driver file containing messages for each error code. You must not
modify this file.
- ABCIP.PDF: This document, which provides detailed information about the ABCIP driver.
- ABCIP.DLL: Compiled driver
You can use the ABCIP driver on the following operating systems:
– Windows XP/7/8
– Windows CE
For a description of the operating systems used to test driver conformance, see “Conformance Testing”
below.
BOOL 1 Bit Reads and writes the BOOL data type, which consists of a bit value
(0 or 1).
SINT 1 Bytes Reads and writes the SINT data type, which consists of a Byte 8 bits
signed Integer Value (-128 to 127).
INT 2 Bytes Reads and writes the INT data type, which consists of a WORD 16
bits signed Integer Value (-32768 to 32767).
DINT 4 Bytes Reads and writes the DINT data type, which consists of a DWORD
32 bits signed Integer Value (-2,147,483,648 to 2,147,483,647).
REAL 4 Bytes Reads and writes the REAL data type, which consists of a 32Bits-
IEEE Floating Point Value (-9.99x1037 to 9.99x1037).
STRING Configurabl Reads and writes the STRING data type, which stores up to 82
Page 4/49
ABCIP – Driver Version 11.16
e characters
LINT 64 Bytes Reads and writes the LINT data type, which consists of a 64 bits
signed Integer Value (-9223372036854775808 to -
9223372036854775807).
Register Type Length Write Read Bit Integer Float String BCD
O (Output) 1 Byte
I (Input) 1 Byte
S (Status) 2 Bytes
B (Binary) 1 Byte
T (Timer) 6 Bytes
C (Counter) 6 Bytes
R (Control) 6 Bytes
F (Float) 4 Bytes
L (Long) 4 Bytes
Conformance Testing
The following hardware/software configuration was used to test driver conformance:
Driver Configuration:
o Protocol: CIP over Ethernet TCP/IP
Cable: Regular Ethernet cables
Page 5/49
ABCIP – Driver Version 11.16
Operating
Driver Studio Operating System
System Equipment
Version Version (target)
(development)
Page 6/49
ABCIP – Driver Version 11.16
3. When the ABCIP driver is displayed in the Selected Drivers list, click the OK button to close the dialog. The
driver is added to the Drivers folder, in the Comm tab of the Workspace.
Note:
It is not necessary to install any other software on your computer to enable communication
between Studio and your target device. However, this communication can only be used by the
Studio application; it cannot be used to download control logic to the device. To download control
logic to a ControlLogix device, you must also use RSLogix5000. For more information, please
consult the documentation provided by the device manufacturer.
Attention:
For safety reasons, you must take special precautions when installing any physical hardware.
Please consult the manufacturer’s documentation for specific instructions.
Page 7/49
ABCIP – Driver Version 11.16
According to the manufacturer’s documentation, configure a valid IP address on the target device and
then place it in RUN mode. (For ControlLogix 5000 Series, you need to configure the 1756-ENET
module. For MicroLogix 1100, you need to configure Ethernet Channel 1. If there is neither network nor
connection problems, the device should now be ready to receive communication from your Studio
application.
For the purposes of this document, only ABCIP driver-specific settings and procedures will be
discussed here. To configure the communication settings for the ABCIP driver:
1. In the Workspace pane, select the Comm tab and then expand the Drivers folder. The ABCIP
driver is listed here as a subfolder.
2. Right-click on the ABCIP subfolder and then select the Settings option from the pop-up menu:
3. In the Communication Settings dialog, configure the driver settings to enable communication with
your target device. To ensure error-free communication, the driver settings must exactly match
Page 8/49
ABCIP – Driver Version 11.16
the corresponding settings on the device. Please consult the manufacturer’s documentation for
instructions how to configure the device and for complete descriptions of the settings.
Depending on your circumstances, you may need to configure the driver before you have
configured your target device. If this is the case, then take note of the driver settings and have
them ready when you later configure the device.
Attention:
For safety reasons, you must take special precautions when connecting and configuring
new equipment. Please consult the manufacturer’s documentation for specific instructions.
The communication settings and their possible values are described in the following table:
PLC5 I/O Octal Disabled Disabled or This setting will affect only the PLC5 when using a
Enabled network routing. See the Appendix for more information.
Port Number 44818 Any number The port number configured here affects all TCP
connections created by the driver.
ControlLogix Mode Symbolic Symbolic or This setting affects how the driver communicates with
Physical PLCs of ControlLogix family.
- The Physical mode will read the variables from the PLC
using its memory address, increasing the general
performance of the driver. This requires that on the first
read the driver uploads the information for all variables
and its data types, which will imply a performance penalty
on the first read. After that, the driver creates a cache of
the program variables which is stored in the application’s
Config folder. See also the RESETCACHE address
information.
Page 9/49
ABCIP – Driver Version 11.16
Cache Action Empty Empty, This setting affects the automatic control of the cache file
when the Physical mode is enabled.
1,
- Empty: No action is taken
2;<PLC
TAG - 1: The cache is reset on the first read of the station
ADDRESS> after the driver starts.
Attention:
When using the Physical ControlLogix Mode option, the driver cache must be updated
whenever the PLC program is changed. The default value of the Cache Action
parameter is empty, therefore, if the PLC program changes you MUST either use the
RESETCACHE command to refresh the Tag IDs, or change the Cache Action
parameter to another value that would force this cache to be recreated in order to
guarantee the synchronism between the Tags in the Driver Worksheets and the PLC.
Otherwise the driver will not communicate properly.
Page 10/49
ABCIP – Driver Version 11.16
The configuration of these worksheets is described in detail in the “Communication” chapter of the
Studio Technical Reference Manual, and the same general procedures are used for all drivers. Please
review those procedures before continuing.
For the purposes of this document, only ABCIP driver-specific parameters and procedures will be
discussed here.
2. Open the Drivers folder, and then open the ABCIP subfolder:
3. Double-click on the MAIN DRIVER SHEET icon to open the following worksheet:
Page 11/49
ABCIP – Driver Version 11.16
Most of the fields on this sheet are standard for all drivers; see the “Communication” chapter of
the Technical Reference Manual for more information on configuring these fields. However, the
Station and I/O Address fields use syntax that is specific to the ABCIP driver.
Note:
The instructions below describe only how to communicate directly with ControlLogix 5000
Family and MicroLogix 1100 devices. For more information about how to communicate with
PLC5 Family and SLC500 Family devices using the ControlLogix PLC as a device network
router, please see the Appendix at the end of this document.
4. For each table row (i.e. each tag/register association), configure the Station and I/O Address fields
as follows:
Station field — Specify the IP Address of the device and the slot number, using the following
syntax:
Where:
– <Family>: If you do not specify this parameter, Studio assumes it is a ControlLogix 5000
Family device. Otherwise, you can specify 1100 for a MicroLogix 1100 or 1400 device.
– <IP Address> is the IP address of the device on the Ethernet network.
– <optSlotNumber> is the number of the slot in the backplane in which the CPU module
is configured. If you omit this parameter, the driver will use the Slot number 0
You can also specify a string tag (e.g. {station}), but the tag value must follow the same
syntax and contain a valid value.
Attention:
You must use a non-zero value in the Station field, and you cannot leave the field blank.
I/O Address field — Specify the name or address of the associated register.
Page 12/49
ABCIP – Driver Version 11.16
Examples —STRING:TEXT
For PROGRAM tags outside of the Controller Tags database (BOOL, SINT, INT, DINT and
REAL types):
Example — DINT:PROGRAM:MAINPROGRAM.UDT1.M1
For PROGRAM tags outside of the Controller Tag database (STRING type):
Example — STRING:PROGRAM:MAINPROGRAM.HMI_STRING
For resetting the program variables cache, use the following special address:
RESETCACHE
This is a special address, which can only be written to, that will cause the cache file to
be deleted and recreated the next time a variable is read.
Where:
– [Data Type] (optional) is the data type of the Logix tag. Use one of the following:
BOOL, INT, SINT, DINT, LINT, REAL or STRING. If this parameter is omitted, then the
driver assumes DINT data type. Please see the table on page 4 for a complete
description.
– <Program Name> is the name of the program outside of the Controller Tags database.
Page 13/49
ABCIP – Driver Version 11.16
Notes:
The maximum Block Size to be sent is 544 bytes and the maximum Block Size to be
received is 492 bytes, following the protocol. However, there are some many
variable that influence the number of the bytes such as data type, dimension arrays,
tag names and amount of the tags in one worksheet. In other words, the maximum
elements, it can have in the sheets, depend of the all variables mentioned above.
For better performance use array tags. Using array tags it is possible to have: INT
(240 elements), DINT (120 elements), SINT (480 elements) and REAL (120
elements) using Standard Driver Sheet.
The cache file is created only when the ControlLogix Mode setting is on Physical.
It is stored in the application’s Config folder, and its name is composed of the prefix
ABCIP_CACHE_, the IP address as a 32-bit unsigned number and the CPU slot
number. The RESETCACHE address should be used with the same station as the
other tags being read. In the Main Driver Sheet, this line should be configured as
Write only. Attempting to read this address will raise an error of “Unknown Tag”,
code 504. To reset the cache manually, write any value to the tag configured to that
address. To reset the cache automatically, see the Cache Action configuration in
the driver settings.
The maximum size of a string that will be accepted by the driver is 380 characters.
For program tags when communicating to PLC with firmware equal or greater than
21 the driver will use symbolic mode for the entire group.
When specifying struct tags, always specify the member name, if the whole struct is
specified block size error can occur Example: testStruct.speed1 (speed1 is the
member name). The individual bits of type BOOL cannot be accessed.
MicroLogix 1100/1400
Notes:
In the Micrologix PLC, even though they belong to the 500 Series family, the
address is not Slot-based, but 0-offset based. This is why after the “:” you should
always configure the number 0 (zero) when using the Micrologix PLCs
When you use additional I/O modules on the Micrologix 1100/1400 PLCs, in order to
Page 14/49
ABCIP – Driver Version 11.16
know exactly how to configure the word number, you should check how the
RSLogix500 sees these addresses.
On the screenshot below, the CPU has only six digital Outputs. They all fit on the
First word. However, the CPU reserves the next 3 words as well. The first External
Output Module in then seen by the PLC as the word number 4 (5th word)
So, for example, in order to read the bit 2 coming from an external 8-Output Relay
module, the RSlogix500 shows it as O:1.0/2. On the ABCIP driver you must
configure it as O:0.4/2
Page 15/49
ABCIP – Driver Version 11.16
F<File Number>:[Format]<Address>
Examples — F8:F0 or F8:0
L<File Number>:[Format]<Address>
Examples — L9:L0 or L9:0
Where:
– <Register Type> is the type of register. Use one of the following: O, I, S, B, N, T, C,
R, F,L or ST. Please see the table on page 4 for a complete list.
– <Slot Number> is the number of the PLC slot in which the Output (O) or Input (I) is
located.
– <Type Group> is the number of the register group in which the register is configured.
– [Format] (optional) is how the data should be handled. Use one of the following: W for
Word, B for BCD, or S for String. If S is configured for Timer, Counter or Control it will be
signed value.
– <Address> is the address of the register in the specified <Slot Number> or <Type
Group>.
– [Bit] (optional) is the bit number (from 0 to 15) of the register. Word format only.
– <Element> is the element type for Timers (T), Counters (C) and Controls (R), according
to the following table:
Elements
Register
DN PRE ACC EN TT UA UN OV CD CU FD IN UL ER EM EU LEN POS
Page 16/49
ABCIP – Driver Version 11.16
Note:
If PLC5 is used the table above is not valid. It is possible to write using any configurable sub-element.
For examples of how the I/O Address field should be completed in order to address specific tags and
device registers, please refer to the following tables:
Data Type Tag Name on the Device I/O Address Field in Studio
REC_ZONES[3] BOOL:REC_ZONES[3]
MYUDT2[1,0].BOOL BOOL:MYUDT2[1,0].BOOL
INT[4] INT:INT[4]
MYUDT2[1,1].INT INT:MYUDT2[1,1].INT
Control[1,2,0] SINT:CONTROL[1,2,0]
Device.Parameter[2] SINT:DEVICE.PARAMETER[2]
INT_Test.0 INT:INT_Test/0
Page 17/49
ABCIP – Driver Version 11.16
Data Type Tag Name on the Device I/O Address Field in Studio
MYUDT2[1,0].MEMBER1 MYUDT2[1,0].MEMBER1
CONTROLLERUDTTAG[9].DINTAR[5] DINT:CONTROLLERUDTTAG[9].DINTAR[5]
REALAR2[1,3] REAL:REALAR2[1,3]
YUDT2[1,0].REAL REAL:YUDT2[1,0].REAL
STRINGAR[1] STRING:MYUDT2[0,0].STRINGAR[1]
HMI_STRING STRING:HMI_STRING
MYUDT2[1,1].HMI_STRINGAR[2] STRING:MYUDT2[1,1].HMI_STRINGAR[2]
Register Type Register Address on the Device I/O Address Field in Studio
I:0/10 I:0.0/10
I:0/17 I:0.0/17
I:3 I:0.3
Page 18/49
ABCIP – Driver Version 11.16
Register Type Register Address on the Device I/O Address Field in Studio
I:6/4 I:0.6/4
O:0/10 O:0.0/10
O:0/17 O:0.0/17
O:3 O:0.3
O:6/4 O:0.6/4
S:10 S:10
S:20/7 S:20/7
B3:10 B3:10
B3:10/7 B3:10/7
N7:0/10 N7:0/10
N7:50 N7:50
T4:0.PRE T4:W0.PRE
T15:0.EN T15:0.EN
T15:1.ACC T15:1.ACC
Page 19/49
ABCIP – Driver Version 11.16
Register Type Register Address on the Device I/O Address Field in Studio
C20:15.UA C20:15.UA
R6:0.POS R6:0.POS
R6:1.POS R6:1.POS
F8:5 F8:5
F8:10 F8:10
L9:5 L9:5
L9:10 L9:10
Page 20/49
ABCIP – Driver Version 11.16
Note:
We recommend configuring device registers in sequential blocks in order to maximize performance.
2. Right-click the ABCIP subfolder, and then select Insert from the pop-up menu:
A new ABCIP driver worksheet is inserted into the ABCIP subfolder, and the worksheet is
opened for configuration:
Note:
Page 21/49
ABCIP – Driver Version 11.16
Most of the fields on this worksheet are standard for all drivers; see the “Communication”
chapter of the Technical Reference Manual for more information on configuring these fields.
However, the Station, Header, and Address fields use syntax that is specific to the ABCIP driver.
Note:
The instructions below describe only how to communicate directly with ControlLogix 5000
Family and MicroLogix 1100/1400 devices. For more information about how to communicate
with PLC5 Family and SLC500 Family devices using the ControlLogix PLC as a device network
router, please see the Appendix at the end of this document.
Station field — Specify the IP Address of the device and the slot number, using the following
syntax:
Where:
– <Family> : If you do not specify this parameter, Studio assumes it is a ControlLogix 5000
Family device. Otherwise, you can specify 1100 for a MicroLogix 1100 oe 1400 device.
– <IP Address> is the IP address of the device on the Ethernet network.
– <optSlotNumber> is the number of the slot in the backplane in which the CPU
module is configured. If you omit this parameter, the driver will use the Slot number 0
You can also specify an indirect tag (e.g. {station}), but the tag that is referenced must
follow the same syntax and contain a valid value.
Attention:
You must use a non-zero value in the Station field, and you cannot leave the field blank.
Header field for ControlLogix, FlexLogix and CompactLogix devices — Specify the base data
type for the worksheet, using the following syntax:
<Data Type>
Page 22/49
ABCIP – Driver Version 11.16
Where:
– <Data Type> is the data type of the device register. Use one of the following: BOOL,
SINT, INT DINT, LINT, REAL or STRING.
Note:
For Symbolic and physical mode : The Header field should be <Logix Datatype>
Header field — Specify the type and address of the initial register in the block.
Notes:
Even though the Micrologix PLCs belong to the 500 Series family, the address is not
Slot-based, as it is on the SLC500, but 0-offset based. This is why when configuring
the Header, you should always configure the number 0 (zero) after the “:”
For Status (S), Binary (B), Integer (N), Timer (T), Counter (C), Control (R), Float (F),
Long (L) and String (ST):
Page 23/49
ABCIP – Driver Version 11.16
Where:
– <File Type> is the type of register. Use one of the following: O, I, S, B, N, T, C, R, F, L or
ST.
– <Slot Number> is the number of the PLC slot in which the Output (O) or Input (I) is
located.
– <File Number> is the number of the register group in which the register is configured.
– <Address Reference> is the starting address of the block of registers covered by this
worksheet. This value is combined with <Address Offset> below to get the exact
address.
After you enter the Header parameter, Studio checks that the syntax is valid. If the syntax is
invalid, then Studio automatically inserts a default value (DINT) into the Header field.
Alternatively, you can specify an indirect tag ({Tag}) in the Header field, but you must be
certain that the tag’s value is correct and uses the correct syntax or you will get an invalid
header error.
4. For each table row (i.e. each tag/register association), configure the Address as follows:
Address field — Specify the exact Logix tag using the following syntax:
Examples — STRING:TEXT
Page 24/49
ABCIP – Driver Version 11.16
For PROGRAM tags outside of the Controller Tags database (BOOL, SINT, INT, DINT ,
LINT and REAL types):
Example — PROGRAM:MAINPROGRAM.UDT1.M1[0]
For PROGRAM tags outside of the Controller Tag database (STRING type):
Example — PROGRAM:MAINPROGRAM.HMI_STRING
Where:
– <Logix Tag Name> is the name (or address) of the tag in RSLogix, plus higher array
dimensions (if necessary).
– <Program Name> is the name of the program outside of the tag database.
Notes:
You must not configure a range of addresses greater than the maximum block size
(data buffer length) supported by each device within the same Driver worksheet. The
maximum Block Size to be sent is 544 bytes and the maximum Block Size to be
received is 492 bytes, following the protocol. However, there are some many
variables that influence the number of the bytes such as data type, array size, tag
names length and total amount of the tags in one worksheet. In other words, the
maximum elements, it can have in the sheets, depend of the all variables mentioned
above.
A characteristic of the protocol’s message structuring within ABCIP is the ability to
greatly diminish the message size of data requests for items defined as array
elements in the PLC device. When all of the tags on a standard driver sheet are
associated with contiguous elements from an array in the PLC, the Read request for
this group does not contain individual item references. It simply contains the array
name, and the highest and lowest array position, plus a small number of bytes of
overhead. We recommend that the user takes advantage of this structure by
utilizing arrays wherever possible in the PLC for those tags which will be configured
on a standard driver sheet in the application. This will significantly increase the
number of tags that can be configured per sheet, and by extension, reduce the total
number of driver sheets configured in the application. Using array tags, depending
on the tag name’s length, usually, it is possible to have: INT (240 elements), DINT
(120 elements), LINT (120 elements), SINT (480 elements) and REAL (120
elements) using Standard Driver Sheet.
Page 25/49
ABCIP – Driver Version 11.16
Thus, we highly recommend using arrays or aliasing tags to arrays, using RSLogix,
and communicating with these arrays in order to optimize the communications.
Address field — Specify the exact register address using the following syntax:
For Output (O), Input (I), Status (S), Binary (B) and Integer (N) files:
[optFormat]<Address Offset>/[Bit]
Notes:
Keep in mind that even though the Micrologix PLCs belong to the 500 Series family,
the address is not Slot-based, as it is on the SLC500, but 0-offset based.
When you use additional I/O modules on the Micrologix 1100/1400 PLCs, in order to
know exactly how to configure the word number, you should check how the
RSLogix500 sees these addresses.
On the screenshot below, the CPU has only six digital Outputs. They all fit on the
First word. However, the CPU reserves the next 3 words as well. The first External
Output Module in then seen by the PLC as the word number 4 (5th word)
So, for example, in order to read the bit 2 coming from an external 8-Output Relay
module, the RSlogix500 shows it as O:1.0/2. On the ABCIP driver you must
configure it as if it was O:0.4/2.
Page 26/49
ABCIP – Driver Version 11.16
Examples — S0.50 or 0
Examples — F0 or 0
Where:
– [Format] (optional) is how the data should be handled. Use one of the following: W for
Word, B for BCD, F for Float or S for String.
– <Address Offset> is the value added to <Address Reference> above to get the
exact address of the register.
– [Bit] (optional) is the bit number (from 0 to 15) of the register. Word format only.
Page 27/49
ABCIP – Driver Version 11.16
– <Element> is the element type for Timers (T), Counters (C) and Controls (R), according
to the following table:
Elements
Register
DN PRE ACC EN TT UA UN OV CD CU FD IN UL ER EM EU LEN POS
Attention:
You can use the Bit Writing function only with the Write on tag change driver tag
enabled, which means that you cannot use the Write trigger tag for the Bit Writing
function. The same rule applies to Timers, Counters and Controls.
Note:
If PLC5 is used the table above is not valid. It is possible to Write on tag change using
any configurable sub-element.
For examples of how the Header and Address fields should be completed in order to address specific tags
and device registers, please refer to the following tables:
Page 28/49
ABCIP – Driver Version 11.16
Page 29/49
ABCIP – Driver Version 11.16
N7:0 N7:0 0
N7:50 N7:20 30
Page 30/49
ABCIP – Driver Version 11.16
F8:0 F8:0 0
F8:5 F8:5 0
F8:5 F8:0 5
L9:0 L9:0 0
L9:5 L9:5 5
Page 31/49
ABCIP – Driver Version 11.16
L9:10 L9:10 10
Page 32/49
ABCIP – Driver Version 11.16
The ABCIP driver supports network communication on two different levels. In the typical configuration
(as described earlier in this document), Studio communicates directly with ControlLogix 5000 and
MicroLogix 1100 devices via Ethernet:
Page 33/49
ABCIP – Driver Version 11.16
However, the ABCIP driver also supports routed communication with remote nodes. In this
configuration, the primary ControlLogix PLC also acts as a device network router provided that it has at
least one of the following modules installed:
1756-DHRIO – Communication interface for Data Highway Plus (DH+) or Remote I/O (RIO); or
1756-CNB – Communication interface for ControlNet.
The following illustration shows how such a configuration would be set up:
Page 34/49
ABCIP – Driver Version 11.16
<Family>:<IP Address>:<Backplane>:<Slot>:<Channel>:<Remote
Node>
Where:
– <Family> is the model family of the remote node. Use one of the following:
o Blank – ControlLogix 5000
o 2 or 500 – SLC500
o 3 or 5 – PLC5
o 4 or 1100 or 1400 or 1500 – Micrologix 1100/1400/1500
– <IP Address> is the IP address of the of the ControlLogix PLC (or more specifically, its 1756-
ENET module) that is acting as the device network router.
– <Backplane> is always 1.
– <Slot> is the number of the ControlLogix PLC slot where the 1756-DHRIO module is installed.
– <Channel> is the DH+ channel (A or B) to which the remote node is connected.
– <Remote Node> is DH+ address of the remote node (in decimal).
You can also specify an indirect tag (e.g. {station}), but the tag that is referenced must follow the
same syntax and contain a valid value.
Attention:
You must use a non-zero value in the Station field, and you cannot leave the field blank.
500:192.168.1.91:1:2:A:33
Where:
– 1 is the backplane;
– 33 is the DH+ address (41 octal converted to decimal) for the SLC500.
Page 36/49
ABCIP – Driver Version 11.16
For an example of a finished ABCIP driver worksheet, see the following screenshot:
In this example, there is a ControlLogix 5000 PLC at IP address 192.168.1.91 acting as the device
network router. It has a 1756-DHRIO module installed in slot 2. A SLC500 is connected to the module’s
DH+ channel A, and a PLC5 is connected to the module’s DH+ channel B. Studio is also
communicating directly with a MicroLogix 1100 at IP address 10.168.23.70.
Page 37/49
ABCIP – Driver Version 11.16
Page 38/49
ABCIP – Driver Version 11.16
Starting with ControlLogix firmware version 18.x, using the Rockwell RSLogix 5000 Programming
Software, UDT tags and their elements can be configured with an External Access property setting of
Read/Write, ReadOnly or None. The None setting is specifically meant to define a private tag within the
processor, which is not exposed to components outside of the controller, such as the ABCIP driver.
This affects Add On Instructions behavior, which make extensive use of UDTs. For these reasons,
UDTs with elements having the External Access property set to None is not supported.
Page 39/49
ABCIP – Driver Version 11.16
1. From the main menu bar, select Project → Status. The Project Status dialog displays:
If the Driver Runtime task is set to Manual, then select the task and click the Startup button to
toggle the task’s Startup mode to Automatic.
Page 40/49
ABCIP – Driver Version 11.16
Troubleshooting
If the ABCIP driver fails to communicate with the target device, then the database tag(s) that you
configured for the Read Status or Write Status fields of the Main Driver Sheet will receive an error code. Use
this error code and the following table to identify what kind of failure occurred.
Error
Description Possible Causes Procedure to Solve
Code
0 OK Communication without problems None required
3 Invalid Command Trying to write BOOL Data Type using the The Tags of Data Type BOOL can only be written
“Write Trigger” driver worksheet tag via “Enable Write on tag change” or Main Driver
Wrong Data Type in the Driver Worksheet Sheet.
Header field Type a valid header (INT, SINT, DINT, REAL,
BOOL, STRING).
7 Invalid Block Size More items than allowed in a Standard Split your driver worksheet into two or more.
Driver Worksheet Check the struct Tags make sure all of them has
If a struct is being configured without the member name specified.
specifying the member name block size
error can occur.
8 Invalid Write Command The PLC didn’t recognize the tag that the Check the Tag Data Type in your driver worksheet.
application is trying to write. Check the Tag Name in your driver worksheet.
Check the Address Syntax in your driver worksheet.
9 Error Answer Block Size The answer length exceeded the Split your driver worksheet into two or more.
supported limit.
10 Not Allocated Memory The driver is trying to remove memory This is a driver internal error. If this error persists,
that was not previously allocated. please contact technical support.
11 Invalid Read Command The PLC didn’t recognize the tag that the Use the Output Window (LogWin), enabling the
application is trying to read. Protocol Analyzer option to see which PLC Tag that
the driver is trying to communicate with is
considered invalid
Check the Tag Data Type in your driver worksheet.
Check the Tag Name in your driver worksheet.
Check the Address Syntax in your driver worksheet.
22 Invalid Data Type The data type specified in the Driver Type one of the valid Types (INT, DINT, SINT,
Worksheet Address Field is not a valid REAL, BOOL, STRING).
one.
23 Error in send_RR_data Function The driver is not getting the logical This is a driver internal error. If this error persists,
connection to the PLC. please contact technical support.
24 Invalid IP The IP address is not valid. Check the valid IP address and Check the valid
station field configuration.
25 Invalid Back Plane The Back Plane was not configured Check the valid station field configuration and
check the Back Plane in your driver worksheet.
26 Invalid Slot The Slot was not configured Check the valid station field configuration and
check the Slot in your driver worksheet.
27 Invalid Channel The Channel was not configured Check the valid station field configuration and
check the Channel in your driver worksheet.
28 Invalid Remote Node Address The Remote Node Address was not Check the valid station field configuration and
configured check the Remote Node Address in your driver
Page 41/49
ABCIP – Driver Version 11.16
Error
Description Possible Causes Procedure to Solve
Code
worksheet.
31 Invalid Address The configured address is not valid. Check the valid Address field configuration.
32 Invalid Command The PLC does not support this command. Configure a valid command.
33 Blank Station The Station was not configured Configure the Station
35 Error Micrologix Request Request Error Check the valid IP address and Check the valid
station field configuration. If this error persists,
please contact technical support.
38 Invalid Sub-Element Invalid Timer, Counter or Control Element. Check the valid Address field configuration for
Timer, Counter or Control.
39 Invalid Writing Sub-Element Impossible writing using Element Check Elements can be used to write.
41 Invalid Format Incompatible Format Check the valid configuration in the register type
tables.
42 Connection Error There is a problem with the connection. Try to connect again. If this error persists, please
contact technical support.
43 Invalid Octet Invalid Octet Number. Insert a valid octet Number.
44 Invalid Message ID The waited response is not the received Please, contact technical support.
one.
45 Communication Problem An invalid tag was requested Check the tag names requested
46 Invalid Tag Name One of the requested tags does not exist Check the tag names requested
or is not accessible in the PLC
501 Program Not Found There was a problem uploading the Reset the cache file. See the RESETCACHE
Program information address.
Contact your Studio technical support
502 Unknown Datatype The data type could not be read from the The driver will try to auto-recover by recreating the
PLC and is not a primitive known type symbols cache.
Reset the cache file. See the RESETCACHE
address.
Contact your Studio technical support
503 Unknown Member The member of the UDT is not known Reset the cache file. See the RESETCACHE
address.
504 Unknown Tag The variable name in the address field is Reset the cache file. See the RESETCACHE
not known. address.
Enable the Protocol Analyzer log and look for
messages containing the tag name not found in
symbols cache.
505 Invalid Read Complete The read process has not completed or Check the timeout configuration
completed incorrectly
506 Waiting For Another Station The driver is waiting for another instance Wait for a few minutes
to complete the upload of the program Enable Protocol Analyzer log. There should be
variables from the PLC. messages being transmitted and received.
Page 42/49
ABCIP – Driver Version 11.16
Error
Description Possible Causes Procedure to Solve
Code
This is an expected error that should If there are no messages being transmitted and
happen only when Simultaneous received and the error persists, contact Studio
Connections is enabled, and that should technical support
stop happening after a few minutes.
507 Unexpected error Some unexpected situation happened Please, contact technical support.
508 Cache Synchronization Error There was an error reading the PLC Tag Verify that the tag exists in the PLC and has the
Address defined in the Cache Action appropriate type. See the configurations section.
parameter in driver settings Check the timeout configuration
Check for network settings
509 Program Changed The program has changed in the PLC and This is an expected error code when the program
the PLC Tag Address defined in the changes. After this, the cache will be recreated.
Cache Action has changed value. The
values read from the PLC may not be
correct and must be discarded.
510 Invalid Cache Action settings The cache action defined in the driver Review the cache action settings
settings is invalid
511 Invalid Memory Offset There was a problem while creating the The driver will try to auto-recover by recreating the
symbols cache. symbols cache.
Reset the cache file. See the RESETCACHE
address.
If the problem continues, please contact technical
support
1001 Malformed Enip Header The received message was incorrectly Check the communication configurations
formed
1002 Malformed Enip Data The received message was incorrectly Check the communication configurations
formed
1003 Device Error The device returned an error code. The Check the device configuration
error code is shown in the log if Protocol
Analyzer is enabled
1004 Wrong Sequence Number The received message had a wrong Check the communication configurations, specially
sequence number the timeout
1100 Invalid Session Handle The device returned this error indicating The driver will attempt to restore the session in the
that the session is no longer valid. next communication
2001 Connection Failure The device returned this error indicating The driver will attempt to restore the connection in
that the connection is no longer valid the next communication
2004 Path Segment Error The device returned this error indicating Reset the cache file. See the RESETCACHE
that the memory path used to read a address.
variable is not valid
2005 Invalid Path The device returned this error indicating Reset the cache file. See the RESETCACHE
that the memory path used to read a address.
variable is not valid
2601 Unrecognized Service Code The service code returned from the Check the device configuration
device is not recognized by the driver Contact Studio technical support
2602 Malformed Cip Header The received message was incorrectly Check the communication configurations
formed
2603 Malformed Cip Data The received message was incorrectly Check the communication configurations
formed
Page 43/49
ABCIP – Driver Version 11.16
Error
Description Possible Causes Procedure to Solve
Code
2604 Unexpected Response The message returned was in a Check the communication configurations
malformed state or in wrong order. Check the device configuration
Contact Studio technical support
2605 String too big The length of the string is more than 81 or Change the size of the string on the address or
more than the length specified on the reduce the size of the string value.
address.
1004 Timeout IP Address may be wrong or The SLOT Try to ping the IP Address.
configuration in STATION field may be If it responds, fix the Station Field
incorrect.
1005 Timeout IP Address may be wrong or The SLOT Try to ping the IP Address.
configuration in STATION field may be If it responds, fix the Station Field
incorrect.
-15 Timeout Start Message Disconnected cables Check cable wiring.
PLC is turned off, in stop mode, or in error Check the PLC state – it must be RUN.
mode Check the station address. Try to “ping” your PLC.
Wrong station number
-17 Timeout Between rx char PLC in stop mode or in error mode Check the PLC state – it must be RUN.
Wrong station number Check the station address.
Tip:
You can monitor communication status by establishing an event log in Studio’s Output window
(LogWin module). To establish a log for Field Read Commands, Field Write Commands and Protocol Analyzer,
right-click in the Output window and select the desired options from the pop-up menu.
If you are unable to establish communication between Studio and the target device, then try instead to
establish communication using the device’s own programming software (e.g., RSLogix5000). Quite
often, communication is interrupted by a hardware or cable problem or by a device configuration error.
If you can successfully communicate using the programming software, then recheck the driver’s
communication settings in Studio.
If you must contact us for technical support, please have the following information available:
System and Project Information: To find this information, select Help → Support Information.
Driver Version and Communication Log: Displays in the Studio Output window when the driver is running.
Device Model and Boards: Consult the hardware manufacturer’s documentation for this information.
Page 44/49
ABCIP – Driver Version 11.16
Revision History
Doc. Driver
Author Date Description of Changes
Revision Version
A 1.01 Eric Vigiani 03 Oct 2003 Initial version
H 1.08 Leandro Coeli 26 Jan 2006 Modified driver to accept the Program Operand
I 1.09 Diego Barros 13 Apr 2006 Modified driver to communicate with MicroLogix1100
J 1.10 Diego Barros 05 May 2006 Fixed some problems with input/output registers.
O 1.12 Michael D. Hayden 05 Jun 2007 Edited for language and usability
P 1.13 Graziane C. Forti 14 Jun 2007 Implemented message with TagName not found
Page 45/49
ABCIP – Driver Version 11.16
For Controllogix
Fixed problem to create the Main Driver WorkSheet group.
Inserted “Invalid Message ID”.
Modified to work with MicroLogix at the same time.
For PLC5
Implemented write using Timer, Control and Counter sub-elements.
Implemented BCD Read/Write.
Fixed problem "F" Format Float type.
Implemented Octet address I/O.
Implemented Signed (Timer, Control and Counter)
Fixed problem writing T4 sub-elements
For SLC500
Fixed problem reading I/O.
Implemented Signed (Timer, Control and Counter)
Fixed problem writing T4 sub-elements
R 1.14 Plínio M. Santana Apr 01 2008 Fixed problem to use two tags with the same address in the MDS.
S 1.15 Eric Vigiani Jun 01 2008 Modified to work properly with PLC5 through ControlLogix
Modified for SLC and PLC5 show error code when receiving error
U 10.01 Eric Vigiani Dec 15 2008 message from PLC.
Modified for ControlLogix shows the correct PLC Tag Name in the LogWin.
V 10.1 Marcelo Carvalho Jan 07 2009 Updated driver version, no changes in the contents.
Modified to properly handle PLC Tag Names with names longer than 45
W 10.3 Fellipe Peternella Mar 25 2009 characters
Fixed memory allocation problem caused on version 10.3. The driver was
allocating 6MB more of RAM, which was a huge problem for Windows CE
Lourenço Teodoro applications with low amount of RAM.
X 10.4 Jul 02 2009
Vicente Teodoro
Modified the driver to support connection with Backpane routing and
Control Logix at the same time.
Page 46/49
ABCIP – Driver Version 11.16
AA 10.5 Andre Bastos Mar 31 2010 Changed the documentation only. No modifications in the driver
Added the new ControlLogix mode for reading variables using the memory
AF 11.0 André Körbes Apr. 1, 2013 address.
Updated error codes section
Fixed issue when communicating with multiple PLCs routed by the same
AH 11.2 André Körbes Mar. 5, 2014 ControlLogix.
Modified the documentation only, to better explain the Slot number on the
AL 11.5 Andre Bastos Jun 30, 2015 ControlLogix PLCs. No changes on the driver
AN 11.7 Paulo Balbino Oct,30, 2015 Increased String sizes up to 380 bytes.
Page 47/49
ABCIP – Driver Version 11.16
Fixed driver documentation with the correct information about reading and
writing to individual bits for addresses on ControlLogix, FlexLogix and
CompactLogix.
AR 11.11 Anushree Phanse Oct,20,2017 Fixed the error reading strings correctly when it's value is assigned using
the Concat block in the PLC program on ControLogix
Fixed the issue where the driver doesn’t communicate to the right tags
when the first octet of the IP address is a single digit
Page 48/49
ABCIP – Driver Version 11.16
Fixed issue with block creation that showed invalid block size errors.
AT 11.13 Anushree Phanse June,14,2018 Fixed issue with some tags communicating with a Status 2030 when using
Physical mode.
Fixed issue with bits reading incorrectly when using physical mode in
firmware 30.11
AU 11.14 Anushree Phanse Nov, 28, 2018 Fixed issue with group splitting for Micrologix when using type Timers.
Fixed some internal security issues.
Changed LINT datatype to support reading and writing of 64 bit values.
Fixed an issue with REAL tags reading wrong values when value is
AV 11.15 Anushree Phanse Apr, 27, 2019 truncated.
Fixed an issue with program tags of type REAL reading wrong values.
Page 49/49