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.