Whitepaper_ABCLX - Schneider Electric (Australia) Pty Ltd

advertisement
CitectSCADA Driver Information
Driver: ABCLX
Version: v3.02.03.000+
Relevant Versions of CitectSCADA: v5.41r0+
Author: Paul Hanna
Date: 18 November 2005
Document Version: 1.00
Document Revision: 3
Document Structure
Introduction
Checklist
Hardware Requirements
Required Hardware
Software Requirements
Required Software
Additional Software
How ABCLX works
CIP Connections
Status Tags
Session Control
ControlLogix Configurations
Standard ControlLogix Configuration
No Redundant PLC
‘Hot-Swappable’ Redundant PLC
Redundant PLC
Remote ControlLogix CPU Configuration
Setting up an ABCLX IO Device
CitectSCADA Kernel Diagnostics
ABCLX Kernel Diagnostics
Citect.ini Parameters
ABCLX Redundancy
Changing from ABLOGIX to ABCLX
Troubleshooting
Common problems (FAQs and Knowledgebase articles)
Known Issues
Optimal Setup
Glossary
Introduction
This document contains information relating to the use of Citect’s ABCLX
driver. Although all efforts have been taken to ensure the accuracy of the
content of this document, the author and Citect Pty Ltd do not directly,
indirectly or in any way imply that there is any form of guarantee,
warranty or form of responsibility upon the author or organisation relating
to the information contained in said document.
This document is intended as a guide and should only be used for
information purposes only.
Checklist:
Before choosing ABCLX driver







Ensure you have installed the latest ABCLX driverpack from Citect’s
Driverweb (www.citect.com).
Ensure you have the latest ABCLX.chm help file from Citect’s
Driverweb (www.citect.com)
Ensure that you are attempting to communicate with an Allen
Bradley ControlLogix, CompactLogix or FlexLogix PLC.
Ensure that the first connection between the PC and the PLC is an
Ethernet connection.
Ensure that you will not need to be making online changes to the
system. (Refer to clarification in Section X).
If you are planning to use ABCLX over a radio/wireless/dialup/slow
connection, ensure you are using ABCLX driver v3.02.03.X.
Ensure you will not exceed the 32 CIP connections per ENBT module
limitation.
Hardware Requirements
Required Hardware
Citect’s ABCLX driver has been developed to communicate to the
following industrial equipment:
Allen Bradley ControlLogix
Allen Bradley CompactLogix
Allen Bradley FlexLogix
Development and testing of the ABCLX driver was conducted on
Allen Bradley ControlLogix PLCs, however the method of
communication, namely Allen Bradley’s CIP messaging architecture,
is common to the ControlLogix, FlexLogix and CompactLogix PLCs.
Communication between the PC and PLC must be by means of
Ethernet as the hardware layer and TCPIP as the protocol transport
layer. It is however possible to have the first jump from the PC to
be Ethernet to a ControlLogix Gateway then along the backplane to
a Data Highway/ControlNet/etc module and through to an
equivalent module in a rack containing the PLCs CPU.
Please Note
It is possible to have numerous jumps such as from Ethernet to
DH+ to ControlNet to DH+ to the PLCs CPU. It is only important
that the first jump from the PC is Ethernet.
Software Requirements
Required Software
CitectSCADA v5.41r0+
ABCLX driver v3.02.03.000+
The introduction of CitectSCADA 5.41r0 saw the implementation of
Object Identifiers (OIDs) for the majority of tag based drivers.
ABCLX is a tag based driver that uses OIDs for data exchange
between the PLC and PC as well as PC to PC (Citect to Citect).
ABCLX will not work on CitectSCADA versions previous to 5.41r0.
Please Note
Citect strongly recommends that you familiarise yourself with KB
article Q4074 and take the appropriate action.
CitectSCADA v6.0r1 was used for this documentation, and although
ABCLX should have no issue operating reliably on CitectSCADA 5.41
and above, Citect recommends using CitectSCADA v6+ due to
substantial work that was done with OID Security.
Additional Software
Please Note
No additional software is required to be used for Citect’s ABCLX
driver to talk to ControlLogix, FlexLogix and CompactLogix PLCs.
Rockwell RSLinx (v2.42 Build 18) and Rockwell RSLogix 5000
Standard Edition ( Revision 13) was used for this documentation.
How ABCLX Works
KB article Q4001 details how ABCLX works.
Here is a description of how CitectSCADA brings ABCLX online.
Figure X
From Figure X you can see that Init Channel starts the driver, which then
begins to download tags. Init Unit will check back to see if the Driver is
polling every watchtime. Projects with a large number of tags (approx
5000+) tend to take more time to download and subscribe the tags, so
Init Unit may need to check back a few times. This is where extending the
value for the watchtime may be useful. You do however need to be
careful in doing this as the watchtime is also the check to see if the PLC is
still online - so if you have a large watchtime and your PLC goes offline, it
may take the entire watchtime to attempt to re-establish comms (which is
the entire process of downloading tags, subscribing them and polling
them takes place - hence potential additional delays).
Lack of idle time in the PLC processor is also a possible throttle point. If
there is insufficient idle time in the PLC processor, then Citect driver
requests are split up to fit into the small idle time that exists. This means
that for all of the Citect driver request can be stretched out over a
significant period of time when you consider that it is attempting to
download tags, subscribe them and finally poll them. Customers are
advised to aim to have sufficient overhead timeslice in the PLC processor
to allow for the Citect driver to establish and maintain comms.
CIP Connections
Each ENBT Ethernet module has a maximum of 32 CIP connections.
Citect’s ABCLX driver uses four CIP connections by default with the
following exceptions:
1. There are less than 4 ABCLX optimised packets in the project, then
the ABCLX driver will use the same number of CIP connections as
optimised packets that exist (i.e. 2 optimised packets means ABCLX
will use 2 CIP connections to the PLC).
2. There are more than 4 ABCLX optimised packets in the project and
the user has increased the default value of ForwardOpenPoolSize in
the citect.ini file to some other value. This may be done to increase
the performance of ABCLX. Please refer to Section X for further
information.
Care should be taken when designing the system so as to ensure that
you do not run out of available connections. This is especially true for
systems with redundant ENBT modules (i.e. multiple communication
paths).
Example 1:
For instance, if you intend to have a system as shown in Figure X, you
should calculate the number of CIP connections that are left free for
inter-PLC communications (which also use CIP messaging) as well as
the CIP connections used by the programming software
(RSLOGIX5000).
In this case (using default settings where there are 4 or more optimised
packets), there would be 4 CIP connections on the ENBT card being used
by the Primary IO Server and another 4 CIP connections on the same
ENBT module being used by the Standby IO Server. A total of 8 CIP
connections out of a possible 32. This leaves 24 CIP connections on the
Ethernet card for the programming software and inter-PLC
communications to take place.
If however, the user had increased the ForwardOpenPoolSize parameter
in the citect.ini file to 16 in order to increase performance of the ABCLX
driver (where there were 16 or more optimised packets), we would be
using all 32 connections to the Ethernet module on the ControlLogix
Gateway. This would not allow one of the IO Servers to come online if
programming software (i.e. RSLOGIX5000) or any inter-PLC
communications were taking place.
Example 2
In Figure X, we see that if we were using default settings where there are
4 or more optimised packets, there would be 8 CIP connections (4 CIP
connections for the Primary PLC and 4 for the Standby PLC) on the ENBT
card in the ControlLogix Gateway being used by the Primary IO Server
and another 8 CIP connections on the same ENBT module being used by
the Standby IO Server.
A total of 16 CIP connections on the ENBT module in the ControlLogix
Gateway out of a possible 32. This leaves 16 CIP connections on the
Ethernet card for the programming software and inter-PLC
communications to take place.
Please Note
In this case the ENBT modules in the ControlLogix Gateway (the one
connected to the PC’s and the other one connected to the PLCs) has 16
CIP connections used, while the ENBT modules in each of the PLCs only
has 8 CIP connections used. This is useful to know as it aids you in the
design of your system.
Status Tags
ABCLX is capable of monitoring tags in the PLC to ascertain if the IO
Device is online or offline. For further information please refer to the
Status Tag section in the ABCLX Help File under “Advanced configuration
and maintenance”.
Session Control
ABCLX has a feature called Session Control. This should be used instead
of Citect’s IODeviceControl() cicode function.
You can use session control to release any current references to tags on
the ControlLogix PLCs. This is required if you want to modify or delete any
of your PLC tags, as the Logix5000 software cannot access a tag if
CitectSCADA is currently subscribed to it. You can also use session control
to load a refreshed tag list from a PLC.
Session control is achieved by using the SessionDisable:x tag. This tag
needs to be configured on a virtual device on a virtual channel. The virtual
channel is specified by entering 0.0.0.0 as the IP address in the Special
Options field of the Ports form. There should be a single virtual port and
virtual device configured for each I/O server, and the virtual devices
should not be configured for redundancy; i.e., the network numbers for
the virtual units should not be the same. Otherwise it is not possible to
communicate with a specific virtual unit from a CitectSCADA client.
Device Data
Description
Citect Address
Format
Access
rights
Citect Data
Type
Session Disable and
Enable
SessionDisable: x
R/W
INTEGER
Where:
x the address entered for the specified device in the I/O Devices form. It
= needs to be unique across all systems.
If this tag is written to with a 1, the session is disabled. Writing a 0 to this
tag will re-enable the session.
Example
The following example will operate on the I/O Device with 123 in the
address field of the I/O Device Form.
Firstly, create a virtual channel by entering 0.0.0.0 as the IP address in
Special Opt field in Ports Form.
Create a virtual device.
Create a virtual tag on the virtual device.
This will allow you to control the session on IODev device by writting 0 or
1 to the virtual tag CI_Session_Control.
ControlLogix Configurations
Standard ControlLogix Configuration (no PLC redundancy)
CLX Configuration 1
System:
Single PC
Single ethernet network
Single ethernet card on PC
Single ethernet card on PLC
N PLCs
Details:
No Redundancy
CLX Configuration 2
System:
Single PC
Single ethernet network
Dual ethernet cards on PC
N PLCs
Details:
Ethernet network card on PC redundancy
CLX Configuration 3
System:
Single PC
Dual ethernet network
Dual ethernet card on PC
Dual ethernet card on PLC
N PLCs
Details:
Ethernet network card on PC redundancy
Ethernet network card on PLC redundancy
Ethernet network redundancy
CLX Configuration 4
System:
Two PCs
Single ethernet network
Single ethernet card on PCs
Single ethernet card on PLC
N PLCs
Details:
PC redundancy
Citect redundancy
CLX Configuration 5
System:
Two PCs
Single ethernet network
Dual ethernet cards on PC
Single ethernet card on PLC
N PLCs
Details:
PC Redundancy
Citect redundancy
Ethernet network card on PCs redundancy
CLX Configuration 6
System:
Two PCs
Dual ethernet networks
Dual ethernet cards on PC
Dual ethernet cards on PLC
N PLCs
Details:
PC redundancy
Citect redundancy
Ethernet network card on PCs redundancy
Ethernet network card on PLC redundancy
Ethernet network redundancy
Standard ControlLogix Configuration (‘Hot-Swappable’ PLC
Redundancy)
CLX Configuration 7
System:
Single PC
Single ethernet network
Single ethernet card on PC
Single ethernet card on ControlLogix rack
Single controlnet network
Single controlnet card on PLC rack
Single controlnet card on each PLC
Two ControlLogix PLCs
Single ControlLogix PLC rack
Single SRM module on each PLC (with optical cable)
Single Remote IO (RIO) ControlLogix rack
Single controlnet card on Remote IO (RIO) ControlLogix rack
Details:
“Bumpless” PLC redundancy via CNet/SRMs
CLX Configuration 8
System:
Single PC
Single ethernet network
Dual ethernet card on PC
Dual ethernet card on ControlLogix rack
Single controlnet network
Single controlnet card on ControlLogix rack
Single controlnet card on each PLC
Two ControlLogix PLCs
Single ControlLogix PLC rack
Single SRM module on each PLC (with optical cable)
Single Remote IO (RIO) ControlLogix rack
Single controlnet card on Remote IO (RIO) ControlLogix rack
Details:
“Bumpless” PLC redundancy via CNet/SRMs
Ethernet network card on PCs redundancy
Ethernet network card on ControlLogix rack redundancy
CLX Configuration 9
System:
Single PC
Dual ethernet network
Dual ethernet card on PC
Dual ethernet card on ControlLogix rack
Dual controlnet network
Dual controlnet card on PLC rack
Dual controlnet card on each PLC
Two ControlLogix PLCs
Single ControlLogix PLC rack
Single SRM module on each PLC (with optical cable)
Single Remote IO (RIO) ControlLogix rack
Dual controlnet card on Remote IO (RIO) ControlLogix rack
Details:
“Bumpless” PLC redundancy via CNet/SRMs
Ethernet network card on PCs redundancy
Ethernet network card on ControlLogix rack redundancy
Ethernet network redundancy
ControlNet network redundancy
ControlNet network card on ControlLogix rack redundancy
ControlNet network card on ControlLogix PLCs redundancy
ControlNet network card on ControlLogix Remote IO (RIO) rack
redundancy
CLX Configuration 10
System:
Two PCs
Single ethernet network
Single ethernet card on PC
Single ethernet card on ControlLogix rack
Dual controlnet network
Dual controlnet card on PLC rack
Dual controlnet card on each PLC
Two ControlLogix PLCs
Dual ControlLogix PLC rack
Single SRM module on each PLC (with optical cable)
Single Remote IO (RIO) ControlLogix rack
Dual controlnet card on Remote IO (RIO) ControlLogix rack
Details:
PC redundancy
Citect redundancy
“Bumpless” PLC redundancy via CNet/SRMs
ControlNet network redundancy
ControlNet network card on ControlLogix rack redundancy
ControlNet network card on ControlLogix PLCs redundancy
ControlNet network card on ControlLogix Remote IO (RIO) rack
redundancy
CLX Configuration 10
Please Note
Added redundancy is possible by implementing:
a)
Redundant Power Supplies on items indicated with *.
b)
Redundant IO cards in Allen Bradley ControlLogix IO Rack
c)
Device redundancy
d)
Redundant Ethernet Network
CLX Configuration 11
System:
Two PCs
Dual ethernet network
Dual ethernet card on PC
Dual ethernet card on ControlLogix rack
Dual controlnet network
Dual controlnet card on PLC rack
Dual controlnet card on each PLC
Two ControlLogix PLCs
Dual ControlLogix PLC rack
Single SRM module on each PLC (with optical cable)
Single Remote IO (RIO) ControlLogix rack
Dual controlnet card on Remote IO (RIO) ControlLogix rack
Details:
PC redundancy
Citect redundancy
“Bumpless” PLC redundancy via CNet/SRMs
Ethernet network card on PCs redundancy
Ethernet network card on ControlLogix rack redundancy
Ethernet network redundancy
ControlNet network redundancy
ControlNet network card on ControlLogix rack redundancy
ControlNet network card on ControlLogix PLCs redundancy
ControlNet network card on ControlLogix Remote IO (RIO)
rack redundancy
CLX Configuration 11
Please Note
Added redundancy is possible by implementing:
a)
Redundant Power Supplies on items indicated with *.
b)
Redundant IO cards in Allen Bradley ControlLogix IO Rack
c)
Device redundancy
Redundant PLC
Configuration 12
Configuration 13
Remote ControlLogix CPU Configuration
This information can be found in the ABCLX help file navigating to
the section "Advanced configuration and maintenance" and selecting
"Using a route path to locate a remote CPU ".
It is important to realise the following:
The route path takes the form /P:m/A:n,/P:m/A:n,etc
/P:m is the PORT that we wish to travel along. This will either be
the Backplane (1), Port A (2), Port B (3), Port C (4) or Reserved
(0).
/A:n is the ADDRESS that we wish to use. This will either be a CNET
address, IP Address, Slot # on the backplane or DH address.
Please Note
If you are trying to take a route path from one ethernet card to
another you will need to use /P:2 for the PORT and the IP address
of the destination ethernet card as the ADDRESS (i.e. /A:n).
Example
The following is an example of how to configure an ABCLX
route path.
Figure X illustrates a PC running CitectSCADA and utilising
ABCLX.
Please Note
ControlLogix Gateways may or may not have a processor (CPU)
in it.
This is not the only configuration possible, the only limitation is
that the first link from the PC to the network must be Ethernet.
To set this up in CitectSCADA, in the Ports form, the IP
address of the ENBT card in the ControlLogix Gateway should
be entered in the ‘Special Options’ field and appended with
the slot number of the ENBT module.
You are then required to enter the route path in the citect.ini
file as follows:
The syntax for the first example (solid line) would be:
IOServerName.PortName.RoutePath=/P:1/A:3,/P:2/A:23,/P:1
/A:9,/P:2/A:123.234.0.124,/P:1/A:6
The syntax for the second example would be:
IOServerName.PortName.RoutePath=/P:1/A:3,/P:2/A:23,/P:1
/A:7,/P:2/A:17,/P:1/A:6
Setting up an ABCLX IO Device
Define an I/O Server
Figure 1
The I/O Server form lists all I/O Servers used in the CitectSCADA
project. Each I/O Server record defines a separate I/O Server within
the project.
Field
Value
Server
Name
A unique name (up to 32 alphanumeric
characters) per IO Server. This is used by
CitectSCADA in the Boards form.
Comment
Any useful comment. This is stored in the
scanner.dbf file of the Citect project.
Table 1
Define a Board
Figure 2
The Boards form lists all boards used in the CitectSCADA project.
Each board record defines a separate board within the project.
Field
Value
Board
Name
A unique name (up to 16 alphanumeric
characters) per server for the computer board
being used to connect with the device. This is
used by CitectSCADA in the Ports form.
Board
Type
The type of board. Select ABCLX from the
drop-down list.
Address
This field must be "0" (zero).
I/O Port
Leave this field blank.
Interrupt Leave this field blank.
Special
Options
Comment
Leave this field blank.
Any useful comment. This is stored in the
boards.dbf file of the Citect project.
Table 2
Define a Port
Figure 3
The Ports form lists all ports used in the CitectSCADA project. Each
port record defines a separate port within the project.
Field
Value
A unique name (up to 16 alphanumeric
characters) for the computer port being used
Port Name
to connect with the device. This is used by
CitectSCADA in the I/O Devices form.
Port
Number
An integer value, unique to the board as
defined in the Board Name field. The Ethernet
port needs no identification; however, the
CitectSCADA communication database
requires a value in this field.
Board
Name
The name of the board this port is attached to
as defined on the Boards form.
Baud Rate Leave this field blank.
Data Bits Leave this field blank.
Stop Bits
Leave this field blank.
Parity
Leave this field blank.
Special
Options
Comment
The IP address of the Ethernet module on the
ControlLogix system PLC, appended with a
forward slash and the slot number (zero
based) of the backplane containing the
controller CPU module, in the format:
x.x.x.x[/n]. For example: "192.168.0.1/0"
Any useful comment. This is stored in the
ports.dbf file of the Citect project.
Table 3
Define an I/O Device
Figure 4
The I/O Device form lists all I/O devices used in the CitectSCADA
project. Each I/O device record defines a separate I/O Device within
the project.
Field
Name
Value
A unique name (up to 16 alphanumeric
characters) for the I/O Device being
identified. Each I/O Device must have a
unique name in the CitectSCADA system.
Number
A unique number for the I/O Device (016383). Each I/O Device must have a
unique number in the CitectSCADA
system, unless redundancy of the I/O
Device is being used.
Address
Leave this field blank.
Note: See Session Control for additional
configuration information if you are using
the Session Disable feature.
This field must be "ABCLX". Default is
"ABCLX" when the CitectSCADA Express
Protocol
I/O Device Wizard is used to complete
these forms.
Port
Name
This field must contain one of the names
previously defined in the Port Names field
of the Ports form. There must be only one
I/O device per port.
Comment
Any useful comment. This is stored in the
devices.dbf file of the Citect project.
Table 4
Citect Kernel Diagnostics
Important diagnostics for Citect’s ABCLX driver is available within Citect’s
powerful Kernel. Citect’s Kernel is accessible during CitectSCADA’s
runtime.
Displaying the Kernel window
You can display the Kernel window in several ways. CitectSCADA can open
the window automatically at startup, provide a command option on the
Control menu, or you can define a runtime command to display the Kernel
window when required.
Displaying the Kernel from the control menu
To add a Kernel option to the Control menu of the runtime system, use
the Computer Setup Wizard. Run the wizard, select Custom mode, and
tick the Kernel on menu option on the Security Setup - Control Menu
page.
You can then display the Kernel window by selecting the Kernel option
from the Control Menu (top left corner) at Runtime. If you do not have a
Title Bar displayed you can access the Control Menu by pressing ALTSPACE (make sure the Alt-Space enabled option is ticked on the
Security Setup - Keyboard page).
Please Note
You should deselect these options (the default) after commissioning, to
prevent accidental or unauthorized use of the Kernel.
Displaying the Kernel at startup
To display the Kernel window automatically when CitectSCADA starts up,
set the [Debug] Kernel parameter to 1. The Kernel window is opened at
startup and closed at shutdown. The display is off (0) by default.
Please Note
You should reset this parameter after commissioning, to prevent
accidental or unauthorized use of the Kernel.
Defining a runtime command
To display the Kernel window, define a runtime command that calls the
DspKernel() function, passing 1 in the iMode argument:
Command DspKernel(1);
Comment
Displays (opens) the Kernel window
To close the Kernel window, call the DspKernel() function again, passing 0
in the iMode argument:
Command DspKernel(0);
Comment
Closes the Kernel window
Please Note
You should put the highest privilege level on the DspKernel command to
prevent your operators from opening the Kernel window.
Closing the Kernel window
You can close the Kernel window at any time by selecting the Close option
from the Control menu of the main Kernel window.
ABCLX Kernel Diagnostics
You can display the information related to Citect’s ABCLX driver during
runtime by viewing the Kernel window. This is a very useful tool to
identify issues with the operation of the ABCLX driver.
Run the CitectSCADA system and enter the Kernel. Select "View" then
"Drivers" and navigate to the board using the ABCLX driver by using the
Page Up and Page Down keyboard keys. Press "v" for verbose and
expand the window to see its entire contents as shown in Figure X.
The additional fields shown after ‘v’ has been pressed are explained in
Table X.
Field
Description
Session Thread
State
Current state of the driver EIP session thread:
0 - Thread is stopped
1 - Thread is starting
2 - Thread is running
3 - Thread is stopping
Session State
Current state of the driver EIP session to the PLC:
0 - The session has not been initialized yet
1 - The session is connecting to the PLC and
downloading the PLC tag database
2 - The session has connected to the PLC and
downloaded the PLC tag database
3 - The session is subscribing the tags to the PLC
4 - The session is currently polling the subscribed tags
5 - The session has failed and will be restarted
Socket Thread
State
Current state of the socket to the PLC (same thread
states as Session Thread State above)
Backend Pending
Responses
Number of requests currently awaiting response from
the PLC
Cache Delayed
Reply
Number of cache read requests currently being
delayed by driver
Group Poll
Counter
Number of polls sent out by the driver
Missed Group
Polls
Number of polls that were skipped by the driver
Avg Group Poll
Time
Average time in milliseconds for a complete scan of
the tags
Forward Opens
Number of CIP sessions to the PLC
Optimized Blocks
Number of optimized blocks created by the driver.
Should match number of Forward Opens.
Tags Subscribed
Number of non Quality and non Timestamp Citect tags
for this unit
Good Tags
Number of tags that were successfully resolved in the
PLC
Bad Tags
Number of tags that were not successfully resolved in
the PLC
QTM Tags
Number of Quality and Timestamp tags subscribed to
Session Disabled
Indicates whether session is currently disabled. Value
of 1 indicates session is disabled.
Tag Config
Warnings
Number of tags that still are considered good but have
some issue that needs to be investigated and resolved.
Init Timeout
Number of connection attempts that have been timed
out
Citect.ini parameters
There are a number of parameters that can be adjusted, tuned and
detuned to effect the behaviour of Citect’s ABCLX driver through the
Citect.ini file for the project.
Customizing a project using Citect.ini parameters
Citect.INI parameters are used to tune the performance of the
CitectSCADA ABCLX driver and perform runtime maintenance diagnostics.
You can customize the way CitectSCADA communicates with the
ControlLogix system, and even individual PLCs, by creating or editing the
[ABCLX] section of the Citect.INI file for your project.
There are some common CitectSCADA driver settings, and custom
CitectSCADA ABCLX driver settings.
When CitectSCADA starts at run-time, it reads configuration values from
the Citect.INI file stored locally. Therefore, any ControlLogix configuration
settings must be included in the Citect.INI file located on the computer
acting as the I/O server to the ControlLogix system.
By default, CitectSCADA looks for the INI file in the CitectSCADA project
"\Bin" directory. If it can't find it there, it will search the default Windows
directory. In the case that it cannot find an ini file in the Bin or Windows
directory, it will create one in the Windows directory.
The default values for these parameters have been determined (during
driver development and testing) to be the best value for the CitectSCADA
ABCLX driver. All of these parameters default to a value tested to work in
most cases. You should carefully consider adjusting these default values
except on the direct advice of Citect Support.
Global and device-specific parameters
Parameters grouped beneath the [ABCLX] general category are global and
impact all ControlLogix system PLCs. You can, however, override a global
parameter with a device-specific parameter.
Device-specific parameters define the settings for a particular
ControlLogix system PLC. The syntax for defining a device-specific ABCLX
driver parameter is:
[<IOPortName>.<IODeviceName>]
Where:
<IOPortName> = the name of the I/O Port (as defined on the I/O Ports
form) which is connected to the ControlLogix system
Ethernet/IP network
<IODeviceName> the name of the particular ControlLogix system PLC
=
you want to configure.
With the current release of the ABCLX driver, there are a number of
device-specific parameters you can use to override global parameters;
they are:
ScanRate
StatusTag
ExclusiveConnection
FailOnBadData
ForwardOpenPoolSize
InactiveScanAdjust
LogTagInfo
LogTagInfoPath
MissedPollTolerance
For more details, see Driver specific Citect.INI parameters
Examples
Implementation of global parameters:
[ABCLX]
Watchtime=5
ScanRate=1000
Implementation of a device-specific parameter:
[CLServerPort.Pump123]
ScanRate=500
Common Citect.INI driver parameters
[ABCLX] Allowable Default
Parameter
Values
Value
Block
1 to 256
256
Description
A value (bytes) used by the
CitectSCADA I/O server to determine
if two or more packets can be blocked
into one data request before being
sent to the ABCLX driver.
Delay
0 to 1000
5
The period (in milliseconds) to wait
between receiving a response and
sending the next command to the I/O
server.
MaxPending 1 to 256
256
The maximum number of pending
commands that the CitectSCADA
ABCLX driver holds ready for
immediate execution.
Polltime
20 to 200
50
The polling service time (in
milliseconds) at which cached data is
updated. Recommended to be at least
twice that of the value used in the
Citect.INI [ALARM] ScanTime
parameter.
Retry
0 to 5
3
The number of times to retry a
command after a timeout.
Timeout
100 to
30000
5000
Specifies how many milliseconds to
wait for a response before considering
a request to be invalid and displaying
an error message in CitectSCADA.
Watchtime
5 to 30
30
The frequency (in seconds) that the
CitectSCADA ABCLX driver uses to
check the communications link to the
ControlLogix system and attempts to
bring offline units back online. Also
determines the frequency of
STATUS_UNIT commands to the
driver. See Configuring Redundancy.
Driver specific Citect.INI parameters
[ABCLX]
Parameter
FailOnBadData
Allowable
Values
0 or 1
Default
Value
1
Description
Used by the ABCLX driver to
determine whether or not to
force the display of good data
within a block read which
contains bad tags during
commissioning.
When this parameter is set to
1, a block read which contains
a bad tag would result in the
whole block returning #COM.
This can be system wide if
placed (if required) in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters
ConnTimeout
5000 to
15000
30000
(milliseconds)
Timeout for TCP/IP connection
and the retrieval of the tag
database.
DebugLevel
WARNN
ERROR
TRACE
ALL
-
Trace level used for log file
See Logging for examples.
DebugCategory
TAG
SOCK
EIP
DCB
BUFF
THRD
ALL
-
Debug category.
TAG: Tag configuration trace.
SOCK: Socket trace.
EIP: EIP session trace.
DCB: Front end driver trace.
BUFF: Dump a counted buffer
to hex.
THRD: Thread trace.
See Logging for examples.
InactiveScanAdjust
0 to 15000
10
Used by the ABCLX driver to
determine the factor to adjust
the scan rate of devices which
are not currently active.
This can be system wide if
placed (if required) in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters
LogSize
100 to 50000 2000
The maximum size (in
kilobytes) of the ABCLX.LOG
file before rolling over into the
ABCLX.BAK file and starting a
new ABCLX.LOG file.
This is a system wide
parameter and should be
placed (if required) under the
driver's general section.
LogTagInfo
0 or 1
Driver will generate three
files:
TAGLIST.TXT: Shows all tags
downloaded from PLC.
SUBSCRIBE.TXT: Shows all
Citect tags subscribed.
0
OPT_BLOCKS.TXT: Shows all
optimized blocks the driver
generated.
File name will have
[IOServerName]_[PortName]_
as prefix.
For example:
IOServer__p1_TagList.txt
IOServer__p1_subscribe.txt
IOServer__p1_opt_blocks.txt
This can be system wide if
placed (if required) in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters
LogTagInfoPath
Any valid
path.
C:\
ScanRate
(see Note below)
100 to 30000 500
The time period (in
milliseconds) between each
poll of the root group.
This can be system wide if
placed (if required) in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters.
StatusTag
(see Note below)
(comparison
equation)
Used by the ABCLX driver to
determine whether to bring
ControlLogix system PLC
devices online or offline
depending upon the result of
the comparison equation
operation as defined in the
parameter.
This can be system wide if
placed (if required) in the
driver's general section, or
(no
status
tags)
File path for the three files
generated by LogTagInfo. If
the directory does not exist,
files will not be generated.
This can be system wide if
placed (if required) in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters
device specific if placed under
a specific device's section. See
Global and device-specific
parameters
ForwardOpenPoolSize 1 to 32
4
Used by the ABCLX driver to
determine how many
optimised packets to send in
each data request.
This can be system wide if
placed (if required) in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters
ExclusiveConnection
0
Used by the ABCLX driver to
determine whether the device
communicates with the serial
port on a Logix 5000 series
processor via the 1761NET_ENI module. This can be
system wide if placed in the
driver's general section, or
device specific if placed under
a specific device's section. See
Global and device-specific
parameters.
0 or 1
The custom parameters (displayed in italics) can be used in ABCLX
specific categories to define settings for specific ControlLogix system
PLCs. See Global and device-specific parameters.
ABCLX Redundancy
There is no difference in setting up redundant ABCLX IO Devices to
any other driver in CitectSCADA. However, unlike other drivers,
Citect’s ABCLX driver actually polls the Standby PLC at one tenth of
the scanrate of the Primary PLC. This is adjustable by the citect.ini
file parameter InactiveScanAdjust. The reason for this comes down
to the way that the ABCLX driver works. Please refer to ‘How ABCLX
Works” section in this document.
In particular it is the way that the ABCLX driver downloads all the
tags in the PLC when it starts up, which may take longer than
desirable. This can be prolonged due to the size of the program in
the PLC, network communication speed, system overhead timeslice
and timeouts with all these factors determining how long it takes to
bring a unit online. It is possible though, that it will take too long to
achieve a “bumpless” switchover between Primary and Standby
PLCs. As a result, the ABCLX driver gets both the Primary and
Standby PLCs online and polls the Standby PLC at one tenth of the
rate. This allows the ABCLX driver to simply increase the rate of
polling on the Standby PLC when the Primary PLC is not available
and hence a seamless transition occurs. The same is not true for
the reverse of this scenario (i.e. once the Primary PLC comes back
online, the Standby is polled at the InactiveScanAdjust value once
again).
This is important for numerous reasons – especially when in the
design phase of a project.
1. Redundant connections to the PLCs will use more Processor time
in the PLCs CPU. If you do not allow the Processor to service
Citect requests, the unit may find it difficult to come online or
may not come on line at all.
2. Each ABCLX IO Device in Citect will use 4 CIP connections
(default) to communicate with a PLC. Please refer to Section X of
this document for further information regarding CIP connection
limitations and tuning of the ABCLX driver.
Changing from ABLOGIX to ABCLX
To upgrade your CitectSCADA project currently using the ABLOGIX v2
driver, please follow these instructions,
1. Make a backup of your CitectSCADA Project including citect.ini file.
2. Install the ABCLX driver pack by double clicking the downloaded
driverpack and follow the instructions given during the installation.
3. Because the driver is now called ABCLX you must reconfigure your
communication configuration for all IODevices using the old ABLOGIX
driver in your CitectSCADA project.
o In the Project Editor open the IODevice, Ports and Boards form.
o In the IO Device form select the ABCLX protocol instead of
ABLOGIX and press the replace button. Do this for all IODevices
currently using the ABLOGIX protocol.
o In the Ports form you should remove the “-i” that is prefixing the
IP address of the PLC in the Special Options field. The “-p0” and
“-t” should also be removed as they are not used. Do this for all
Ports connected to the IODevices you changed in item (b).
o To access a CPU in a particular slot number, append a forward
slash and the slot number (zero based) of the backplane
containing the controller CPU module to the IP address, in the
format: X.X.X.X[/y]. For example: "192.10.68.118/0". Do this
for all Ports connected to the IODevices you changed in item (b),
where required.
o In the Boards form select the ABCLX board type instead of
TCPIP. Do this for all Boards connected to the Ports you changed
in item (c).
4. If “[]” (square brackets) has been used to indicate the use of array
elements in the Variable Tag address, they need to be replaced with
“{}” (curly brackets). This is easiest done by opening the
VARIABLE.DBF located in the CitectSCADA\Users\Project directory with
Excel and then doing a global replace of these. It can also be done
manually using the Project Editor. Please see the online help for
further information.
5. If you are using CitectSCADA arrays and you are defining the offset
with “{}” (curly brackets), they need to be replaced with “/” (forward
slash). This is easiest done by opening the VARIABLE.DBF located in
the CitectSCADA\Users\Project directory with Excel and then doing a
global replace of these. It can also be done manually using the Project
Editor. Please see the online help for further information.
6. If you are using “.” (full stop) to access bits in words in the Variable
Tag address, they need to be replaced with “/” (forward slash). This is
easiest done by opening the VARIABLE.DBF located in the
CitectSCADA\Users\Project directory with Excel and then doing a
global replace of these. It can also be done manually using the Project
Editor. Please see the online help for further information.
7. Existing variable tags using the PLC datatype SINT with a "$" prefix on
CitectSCADA datatype INT should be redefined as a simple Byte in
CitectSCADA. This is easiest done by opening the VARIABLE.DBF
located in the CitectSCADA\Users\Project directory with Excel and then
doing a replace of these.
The following table is a summary of the differences between the ABLOGIX
V2 driver and the ABCLX driver.
Item
Board Type
IP address
Slot Number in Ports form
Array elements defined in PLC
Array offset
PLC SINT data type
Special options/ports form
Access to bits in words
ABLOGIX
TCPIP
In ports form "-i" prefix required
Address field
Defined with []
Defined using {n}
Uses prefix "$" on INT
Parameters "-p0 –t
“.” used to access bits
ABCLX
ABCLX
No prefix required
Special option field /y
Defined with {}
Defined using /n
Defined as simple Byte
No parameter required
“/” used to access bits
Troubleshooting Guide
Please Note
Changing a single setting with Citect’s ABCLX driver has broad
implications on other settings. As a result the reader is well advised to
employ a systematic approach to problem solving, tuning and working
with this driver.
Common Problems
ABCLX fails to establish communications
 Ensure the Board, Port and IO Device forms are filled in correctly.
(Refer to Section X for this information)
 Ensure that there are no Bad Tags, Group Missed Polls or Tag
Configuration Warnings. (Refer to Section X for this information)
 Ensure that the System Overhead Timeslice in the Allen Bradley
ControlLogix, CompactLogix or FlexLogix PLC is set to the highest
possible setting. This ensures that the PLC’s CPU has sufficient
capacity to service communication requests for data from other
applications such as SCADA/HMI systems etc. (Refer to Section X
for this information)
 De-tune the settings used by Citect’s ABCLX driver by overriding the
default settings by way of editing the Citect.ini file. (Refer to
Section X for this information)
 Simplify your project by beginning a new Citect Project with one
good tag. (Refer to Section X for this information)
 Analyse the network bandwidth usage. (Refer to Section X for this
information)
 Improve the efficiency of the programming of the PLC. (Refer to
Section X for this information)
Optimising ABCLX communications



Adjust the System Overhead Time Slice in the PLC to the highest
value that does not interfere with the running of operations on the
PLC. The System Overhead Time Slice in the PLC is adjusted from
the ControlLogix programming software by right clicking on the
controller and navigating to the "Controller Properties" then click on
the "Advanced" tab.
Run the Citect system and enter the kernel. Select "View" then
"Drivers" and navigate to the board using the ABCLX driver. Press
"v" for verbose and expand the window to see its entire contents.
Ensure that you do not have any "Bad Tags". If you have "Bad
Tags" use the ABCLX logging to generate logs to find which tags are
bad. Also ensure that you dont have any "Tag Config Warnings".
Take note of the "Average Group Poll time" and multiply this value
by 2. Enter this figure into the following citect.ini parameter:
[ABCLX] ScanTime = value.

Shut down the system and start it back up. Enter the driver page in
the kernel once again and press "v" for verbose. Ensure that there
are still no "Bad Tags" or "Tag Config Warnings". Check to see that
the driver is polling correctly with the following values being present
in the window:
Session Tread State = 2
Session State = 4
Socket Thread State = 2


Increase the number of ForwardOpenPoolSize from the default of 4
upwards in small increments. With each successive increase in the
parameter of ForwardOpenPoolSize the Group Average Poll Time will
reduce in magnitude until further increases of the
ForwardOpenPoolSize have a smaller effect on the Group Average
Poll Time and the driver begins to find it difficult to get online.
In order to make it quicker for the ABCLX driver to realise that it
has become Offline, reduce the [ABCLX] Watchtime parameter.
Doing this increases the frequency that the ABCLX driver checks to
see if it is online and hence if it does become Offline, it attempts to
create a new connection faster than it would if it waited for a larger
Watchtime value.
Additional Note
If your ABCLX driver repeatedly fails at establishing a connection with the
most "unoptimised" settings, you may choose to increase the [ABCLX]
Timeout parameter and ConnTimeout parameter to allow more time for
the PLC to allow a connection to be made before causing the ABCLX
device to go Offline.
Known Issues
Nuisance hardware alarm
I see a nuisance hardware alarm for my ABCLX device every time I start
Citect, but the hardware alarm becomes inactive after 30 seconds or so.
Solution
The reason why the hardware alarm appears is because hardware alarms
in Citect are generated whenever Init Unit fails. In the case of ABCLX this
can occur because all the tags have not been downloaded yet, or because
the tags have not completed subscription. Please refer to KB article
Q4001 for more information in this regard.
As a result, there is no current workaround or solution for this hardware
alarm, however it should be noted that the driver comes online and
communication between Citect and the PLC takes place very quickly
depending on network bandwidth, PLC CPU utilisation, the number of tags
and the number of bad tags.
Please Note
Refer to Citect’s Knowledgebase for the most up to date information
regarding CitectSCADA and ABCLX.
Additional assistance is available via Citect Support.
Optimal Setup
Step 1
Adjust the System Overhead Time Slice in the PLC to the highest value
that does not interfere with the running of operations on the PLC. The
System Overhead Time Slice in the PLC is adjusted from the Controllogix
programming software by right clicking on the controller and navigating to
the "Controller Properties" then click on the "Advanced" tab.
Step 2
Arrange your variable.dbf by IO Device then DataType. This is good
engineering practice with any Citect project as it allows Citect to create
requests by blocking the same data types within an IO Device together.
Step 3
Run the Citect system and enter the kernel. Select "View" then "Drivers"
and navigate to the board using the ABCLX driver. Press "v" for verbose
and expand the window to see its entire contents. Ensure that you do not
have any "Bad Tags". If you have "Bad Tags" use the ABCLX logging to
generate logs to find which tags are bad. Also ensure that you do not
have any "Tag Config Warnings".
Step 4
Take note of the "Average Group Poll time" and multiply this value by 2.
Enter this figure into the following citect.ini parameter: [ABCLX] ScanTime
= value.
Step 5
Shut down the system and start it back up. Enter the driver page in the
kernel once again and press "v" for verbose. Ensure that there are still no
"Bad Tags" or "Tag Config Warnings". Check to see that the driver is
polling correctly with the following values being present in the window:
Session Tread State = 2
Session State = 4
Socket Thread State = 2
Step 6
Increase the number of ForwardOpenPoolSize from the default of 4
upwards in small increments. With each successive increase in the
parameter of ForwardOpenPoolSize the Group Average Poll Time will
reduce in magnitude until further increases of the ForwardOpenPoolSize
have a smaller effect on the Group Average Poll Time and the driver
begins to find it difficult to get online.
Step 7
In order to make it quicker for the ABCLX driver to realise that it has
become Offline, reduce the [ABCLX] Watchtime parameter. Doing this
increases the frequency that the ABCLX driver checks to see if it is online
and hence if it does become Offline, it attempts to create a new
connection faster than it would if it waited for a larger Watchtime value.
Please Note
If your ABCLX driver repeatedly fails at establishing a connection with the
most "unoptimised" settings, you may choose to increase the [ABCLX]
Timeout parameter and ConnTimeout parameter to allow more time for
the PLC to allow a connection to be made before causing the ABCLX
device to go Offline.
Glossary
SRM
ControlLogix
PLC
ENBT
ControlLogix Gateway
CLX
CNB
Controlnet
DH+
Data Highway Plus
Backplane
Slot Number
Controlnet Node number
Sequential Redundancy Module
Allen Bradley ControlLogix PLC (1756)
Programmable Logic Controller
Allen Bradley (1756-ENBT) Ethernet Module
ControlLogix Backplane with Communication modules
(See ControlLogix)
Controlnet Bridge module
Allen Bradley communication protocol
(See Data Highway Plus)
Allen Bradley communication protocol
Allen Bradley rack for 1756 ControlLogix PLCs
Zero offset position on Backplane
Controlnet address
Disclaimer
CitectSCADA, Plant2Business, Plant2Net and CitectIIM are all trademarks
of Citect Pty Ltd.
ControlLogix, CompactLogix, MicroLogix, FlexLogix, RSLinx, RSLogix,
Interchange, KF3, KT, KTX, PKTX, SLC5/03, SLC5/04 and PLC5 are
trademarks of Allen Bradley/Rockwell Automation.
Download