Sunteți pe pagina 1din 56

ABCLX Driver Help

Citect Pty. Limited


3 Fitzsimons Lane
PO Box 174
Pymble NSW 2073
Australia
Telephone: 61 2 9496 7300
Fax: 61 2 9496 7399

DISCLAIMER
Citect Corporation makes no representations or warranties with respect to this manual and, to the maximum extent permitted by law, expressly limits
its liability for breach of any warranty that may be implied to the replacement of this manual with another. Further, Citect Corporation reserves the right
to revise this publication at any time without incurring an obligation to notify any person of the revision.
COPYRIGHT
Copyright 2004 Citect Corporation. All rights reserved.
TRADEMARKS
Citect Pty. Limited has made every effort to supply trademark information about company names, products and services mentioned in this manual.
Trademarks shown below were derived from various sources.
Citect, CitectHMI, and CitectSCADA are registered trademarks of Citect Corporation.
IBM, IBM PC and IBM PC AT are registered trademarks of International Business Machines Corporation.
MS-DOS, Windows, Windows 95, Windows NT, Windows 98, Windows 2000, Windows for Workgroups, LAN Manager, Microsoft Windows XP, Excel
and MSMAIL are trademarks of Microsoft Corporation.
DigiBoard, PC/Xi and Com/Xi are trademarks of DigiBoard.
Novell, Netware and Netware Lite are registered trademarks of Novell Inc.
dBASE is a trademark of Borland Inc.
GENERAL NOTICE
Some product names used in this manual are used for identification purposes only and may be trademarks of their respective companies.
July 2004 edition for CitectSCADA Version 6.0
Manual Revision Version 6.0.
Printed in Australia.

Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Installing the ABCLX driver pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Preparing the ControlLogix system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Setting up communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Creating a test project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Setting up an Exclusive Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Configuring your project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Adding devices to your CitectSCADA project . . . . . . . . . . . . . . . . . . . . . . . . . 6
Adding tags to your CitectSCADA project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Individual tag addressing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Array tag addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Addressing program tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Configuring Quality and Timestamp tags . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Advanced configuration and maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Customizing a project using Citect.ini parameters . . . . . . . . . . . . . . . . . . . . 20
Using a route path to locate a remote CPU. . . . . . . . . . . . . . . . . . . . . . . . . . 25
Configuring Redundancy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Performance tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Session Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Status tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Mode detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Identifying bad tags using FailOnBadData . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Scan rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Hardware Alarms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
The SysLog.DAT file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Driver Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Citect Kernel diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Maintaining the project database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Tag-based driver considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

iv

Contents

ABCLX driver
Introduction
CitecthasdevelopedtheABCLXdrivertoenableEthernetbased
communicationbetweenCitectSCADAandControlLogixsystemcontrollers.
ThisHelpfileprovidestheinformationrequiredtosetupandconfigure
communicationwithaControlLogixsystem.Thisinvolvesafourstepprocess.
1

InstallingtheABCLXdriverpack

PreparingtheControlLogixsystem

Settingupcommunications

Configuringyourproject

ThereisalsoadditionalinformationonAdvancedconfigurationand
maintenanceissuesandaTroubleshootingsectiontohelpresolve
communicationorconfigurationerrors.
About ABCLX
CitectSCADAconnectstotheControlLogixsystemPLCsusingEthernet/IPwith
theABCLXdriver.ItcanbeinstalledinparallelwithafunctionalControlLogix
system,allowingengineeringandtestingtobeconductedwithoutanyimpact
onoperation.
Noadditionalhardware(otherthananEthernetmodule)isrequiredforthe
ControlLogixsystem.ThisallowsyoutoreplaceControlViewoperatorstations
onastepbystepbasis.
Note:Priortoversion3,theABCLXdriver(thenknownastheABLogixdriver)
wasinstalledasaTCP/IPboarddriver.Sinceversion3,thedriverhasbeen
installedasanABCLXtypeboarddriver.
Ifyouareupgradinganexistingprojectwhichusedaversion2.xABLogix
driver,youwillneedtoaltertheboardtypeinyourexistingprojecttoABCLX
type.Additionally,theformatusedfortheportdefinitionintheSpecialOptions
fieldoftheCitectSCADAPortsFormhaschanged.SeeABCLXrecommended
settings.
Warning!TheABCLXisatagbaseddriver,whichmeansyouneedtobeaware
ofthewayOIDs(objectidentifiers)areimplementedtoavoidpotential
mismatchesoccurring.Thisisaparticularconcernwithnetworkdistributed
systemswhenattemptingactivitiessuchaseditingvariabledatabasesor
restoringaprojectonadifferentcomputer.Itishighlyrecommendedthatyou

ABCLX driver
reviewthetopicTagbaseddriverconsiderationstoensureyouareawareof
anypotentialproblems.

Installing the ABCLX driver pack


TheABCLXDriverPackshouldbeinstalledonthecomputerthatwillactasthe
connectionpointtotheControlLogixsystem.Thiscomputermustbeconfigured
asaCitectSCADAI/Oserver,andmustcontainanEthernetcard.Itshouldalso
beinstalledonanymachineswheretheCitectSCADAprojectiscompiled.
AnycomputeryouinstallthedriverpackonmusthaveCitectSCADAinstalled.
AlthoughtheABCLXdriverisknowntofunctionreliablyonCitectSCADA
Version5.41andabove,itisrecommendedyouuseVersion6.0.
Note:YouneedtocloseCitectSCADARuntimeandCitectExplorerbefore
installingadriverpack.Youwillalsorequireadministratorpermissionsforthe
I/OserverPC.
ToinstalltheABCLXdriverpack
1

SavetheABCLXDriverPacktoanappropriatelocationontheI/OServer
PC.

DoubleclicktheEXEfiletolaunchtheinstallation.

FollowtheinstructionsprovidedbytheinstallationWizard.
Note:YouwillbepromptedtoselecttheCitectSCADAinstallationfolder.
Bydefault,thisisC:\ProgramFiles\Citect\CitectSCADA.Ifyouinstalled
CitectSCADAinadifferentfolder,youshouldbrowsetotheappropriate
location.Anerrormessagewillwarnyouifyouselectthewrongfolder.

ClickFinishtocompletetheinstallation.

Preparing the ControlLogix system


ThissectionoftheHelpexplainshowtoprepareyourControlLogixdevicesfor
communicationwithCitectSCADA.Itcovers:

Hardwarerequirements

Softwarerequirements

Hardware requirements
Typically,theControlLogixCPUmoduleyouwanttoconnecttowillbe
mountedonthesamePLCbackplaneasEthernetmoduleyourI/OServer
communicateswith.Ifthisisnotthecase,youwillhavetosetuparoutepathto
indicatethelocationoftheCPUyouwanttouse.
See Also

UsingaroutepathtolocatearemoteCPU

ABCLX driver
Software requirements
YouwillneedtohaveaccesstoRockwellsRSLogix5000EnterpriseSeries
controllerconfigurationsoftware(obtainablefromyourControlLogixsystem
supplier)anditsassociatedtools.Thissoftwareprovidesaccesstocontroller
configuration,projectcode,tagdefinitionsanddatavalues.Useitto:
1

ConfigureeachEthernetModuleIPaddress

Createtagsforeachcontroller

Downloadtheprojectstothecontrollers.

Hint:WhenitcomestimetoconfigureCitectSCADAtocommunicatewith
ControlLogixsystemPLCs,youcanuseRSLogix5000toexportPLCtag
definitionstocommaseparatedvalue(CSV)files,anduseWindowsClipboard
tocopythemdirectlyintotheCitectProjectEditor.
Note:CitectSCADAtagscanonlysupportarraysof256bytes.Ifyour
ControlLogixsystemhasarraysthataregreaterthanthislimitation,youmay
havetobreakthemupintosegmentsusingtheoffsetandarraysizeinthetag
address.SeeMappingtomorethananindividualelementofanarrayfor
moreinformation.

Setting up communications
BeforeconfiguringyourCitectSCADAproject,itisrecommendedthatyoufirst
establishandconfirmcommunicationbetweenCitectSCADAandthedevicesin
yourControlLogixsystem.Thisallowsyoutotestthecommunicationpathin
isolation,andensuresthatCitectSCADAcanbringyourdevicesonline.
ThebestwaytoachievethisisbyCreatingatestproject.Ifyouwantto
communicatewiththeaLogix5000PLCusinganexclusiveserialconnection,
seeSettingupanExclusiveConnection.
Note:TheABCLXwillnotperformonaveryslownetwork,oranetworkthat
hasaninconsistentconnectiontoanI/Odeviceinthefield(forexample,a
wirelessordialupconnection).Thisisduetothefactthedriverdownloadsall
thetagsfromthePLCandsubscribesthembeforeitcomesonline.Attemptingto
dothisoveraslownetworkcantakealongtimeandwillcausethedriverto
timeoutonstartup.

Creating a test project

CitectSCADAwillnotcommunicatewithanI/Odeviceifthereisnoreasonto
readorwritedata.Therefore,youwillneedtodefineandimplementsome
variabletagswithinaCitectSCADAprojecttoinitiateareadrequestandverify
thatthecommunicationchannelisfunctioningcorrectly.Thisrequiresthe
creationofatestproject.
Themaingoalwithatestprojectistokeepthingsassimpleaspossible,sothat
anycommunicationerrorscanbeeasilyidentified.Forexample,yourtest

ABCLX driver
projectcoulddonothingmorethanuseanintegervariabletodisplayanumber
onagraphicspage.
Onceyouhaveusedyourtestprojecttoconfirmcommunications,itcanbeset
asideforfurthertestingatalaterdate.
Note:YoushouldbuildyourtestprojectontheCitectSCADAI/Oserverthat
willconnecttotheControlLogixsystem.
Tocreateacommunicationstestproject:
1

InCitectExplorer,createanewprojectandgiveitanappropriatename.

Addthedeviceyouwouldliketocommunicatewithtotheproject.
Typically,theinformationrequiredaboutadevicecanbegatheredby
runningtheExpressCommunicationsWizard,whichimplementsasetof
recommendedsettingsforthetypeofdeviceyouselect.
TolaunchtheWizard,gototheCitectProjectEditorandselectExpress
WizardfromtheCommunicationsmenu.

ProgressthroughtheWizard,acceptingalldefaultsforanI/Oserverandan
I/Odevice.ThiswillcreateanI/OservernamedIOServer,andanI/O
DevicenamedIODev.
Note:Ifyourequireadditionalinformationaboutaparticularstep,usethe
Helpbutton.

WhenyoureachtheI/ODeviceSelectionpage,locatethedeviceyouwould
liketocommunicatewith;forexample,AllenBradley|Controllogix5550|
Ethernet(TCP/IP).

ContinuethroughtheWizard,untilyourreachthelastpage.ClickFinishto
implementtheWizardssettings.

RuntheComputerSetupWizard,acceptingthedefaultstomakethe
computerastandaloneCitectSCADAsystemconfiguredtorunyourtest
project.

GototheCitectProjectEditorandopenthePortsformfromthe
Comunicationsmenu.IntheSpecialOptionsfield,typeintheIPaddressof
theEthernetmoduleontheControlLogixPLC,appendedwithaforward
slash/andtheslotnumber(zerobased)ofthebackplancecontainingthe
controllerCPUmodule.Theformatshouldbe:
x.x.x.x/n

forexample:
192.168.0.1/1

IftheCPUisonslotzeroofthebackplane,youdonotneedtoinclude/0.

ABCLX driver
8

See Also

Setting up an Exclusive
Connection

Compiletheprojecttoconfirmthattherearenoerrors.Ifyoureceiveany
errormessages,gobackovertheproceduretoconfirmyoursettings.Seethe
Troubleshootingsectiontohelpresolveanypersistenterrors.

SettingupanExclusiveConnection
CitectSCADAisabletocommunicatewiththeserialportonaLogix5000series
processorviathe1761NET_ENImodule.Thisisreferredtoasanexclusive
connection.
Aswithanymethodofcommunicationtoadevice,youshouldcreateatest
projectforanexclusiveconnectionsothatanycommunicationerrorscanbe
easilyidentified.
Tosetupaserialcommunicationstestproject:
1

Configurethe1761NET_ENImodule.RefertoMicroLogixEthernetInter
face(Cat.No.1761NETENI)UserManualfordetailsonhowtoconfigure
themodule.

InCitectExplorer,createanewprojectandgiveitanappropriatename.

Addthedeviceyouwouldliketocommunicatewithtotheproject.
Typically,theinformationrequiredaboutadevicecanbegatheredby
runningtheExpressCommunicationsWizard,whichimplementsasetof
recommendedsettingsforthetypeofdeviceyouselect.
TolaunchtheWizard,gototheCitectProjectEditorandselectExpress
WizardfromtheCommunicationsmenu.

ProgressthroughtheWizard,acceptingalldefaultsforanI/Oserverandan
I/Odevice.ThiswillcreateanI/OservernamedIOServer,andanI/O
DevicenamedIODev.
Note:Ifyourequireadditionalinformationaboutaparticularstep,usethe
Helpbutton.

WhenyoureachtheI/ODeviceSelectionpage,locatethedeviceyouwould
liketocommunicatewith;forexample,AllenBradley|Controllogix5550|
Ethernet(TCP/IP).

ContinuethroughtheWizard,untilyourreachthelastpage.ClickFinishto
implementtheWizardssettings.

OpenthePortsFormfromtheCommunicationsmenuinCitectEditor.Type
intheIPaddressof1761NET_ENImoduleinSpecialOptfield.

SetupExclusiveConnection=1andRoutePathinCitect.ini:
[ABCLX]
ExclusiveConnection=1
IOServerName.IOPortName.RoutePath=/P:3/A:1

ABCLX driver
where:
/P:3indicatesthecommunicationgoesthroughtheserialport(PortB)on
1761NETENImodule.
/A:1indicatesthemodulesuniqueaddressofserialportoncpuis1.
9

RuntheComputerSetupWizard,acceptingthedefaultstomakethe
computerastandaloneCitectSCADAsystemconfiguredtorunyourtest
project.

10 Compiletheprojecttoconfirmthattherearenoerrors.Ifyoureceiveany
errormessages,gobackovertheproceduretoconfirmyoursettings.Seethe
Troubleshootingsectiontohelpresolveanypersistenterrors.

Configuring your project


OnceyouhaveconfirmedthatcommunicationsbetweenyourCitectSCADA
systemandanyconnecteddevicesarestable,youcanstarttobuildyourproject.
Thisprocessincludes:

Adding devices to your


CitectSCADA project

AddingdevicestoyourCitectSCADAproject,

AddingtagstoyourCitectSCADAproject,

ConsiderationoftheDatatypesused,

TheuseofIndividualtagaddressingand/orArraytagaddressing,

ConfiguringQualityandTimestamptags.

AddingadevicetoyourCitectSCADAprojectprovidesinformationaboutthe
deviceslocation,itscommunicationmethod,theportitisconnectedto,andso
on.ThisinformationisstoredintheCitectSCADAprojectdatabase.

ABCLX driver
Therearetwomethodsavailableforaddingadevice:

AddingadeviceusingtheExpressCommunicationsWizard

Manuallyconfiguringadeviceconnection

Inmostcases,completingtheExpressCommunicationsWizardissufficientto
setupyourcommunications,asthesettingsitimplementsforeachdevicehave
beenpreconfiguredforpreferredoperation.If,however,yourdevice
connectionneedsarecomplex,youcanreconfigurecommunicationsby
manuallyconfiguringtheCitectSCADAcommunicationforms.
Adding a device using the Express Communications Wizard
1

TolaunchtheWizard,gototheCitectProjectEditorandselectExpress
WizardfromtheCommunicationsmenu.

ProgressthroughtheWizard,fillingintheappropriateinformationfortheI/
OserverandI/Odevice.
Note:Ifyourequireadditionalinformationaboutaparticularstep,usethe
Helpbutton.

WhenyoureachtheI/ODeviceSelectionpage,locatethedeviceyouwould
liketocommunicatewith;forexample,AllenBradley|Controllogix5550|
Ethernet(TCP/IP).

ContinuethroughtheWizard,untilyourreachthelastpage.ClickFinishto
implementtheWizardssettings.

Manually configuring a device connection


Inmostcases,theExpressCommunicationWizardwillbesufficienttosetup
communicationwithadevice.However,iftheconfigurationofadeviceentails
unusualcircumstances,youcanmanuallyinputinformationintotherequired
formsinProjectEditor.
Note:YoushouldconsidertheABCLXrecommendedsettingswhenmanually
configuringaconnectiontoaControlLogixdevice.
TomanuallyconfigureCitectSCADAcommunications:
1

DefineanI/OserverusingtheI/OServerform.ThissetsthenameoftheCit
ectSCADAserverthattheI/Odevicewillcommunicatewith.

CompletetheBoardsform.Thisformdefineswhichboard(onyour
CitectSCADAcomputer)touseforcommunication,suchasthemother
board,networkcard,serialboardoraPLCcommunicationcard.

CompletethePortsform.Oftenboardshavemultiplecommunicationports,
andyoumustspecifytheporttouse.Somemodernequipmentcanhavea
numberoflogical(virtual)portsassignedtotheonephysicalport.

ABCLX driver
4

CompletetheI/ODevicesform.ThisiswhereyoudefinewhichI/Odevice
CitectSCADAistalkingto,byspecifyingtheaddress.Theprotocolisalso
definedatthislevel.

RuntheComputerSetupWizardtocompletetheconfiguration.Thisallows
youtodefineyourCitectSCADAcomputerastheI/Oserverdefinedabove.
Thisisusuallydoneaftercompilationoftheproject.

ABCLX recommended settings


Thefollowingtablesshowtherecommendedsettingsforcommunicationwitha
ControlLogixdevice.ThesearethesettingsimplementedbytheExpress
CommunicationsWizardontheBoardsform,PortsformandDevicesform.
Boards form TheBoardsformlistsallboardsusedintheCitectSCADAproject.
Eachboardrecorddefinesaseparateboardwithintheproject.
Field

Value

Board Name

A unique name (up to 16 alphanumeric character) per server for the


computer board being used to connect with the device. This is used by
CitectSCADA in the Ports form.
The type of board. Select ABCLX from the drop-down list (see Note below).
This field must be "0" (zero).
Leave this field blank.
Leave this field blank.
Leave this field blank.
Any useful comment. This is viewed in the Boards records database in Citect
Project Editor.

Board Type
Address
I/O Port
Interrupt
Special Options
Comment

Note:Priortoversion3,theABCLXdriver(thenknownastheABLogixdriver)
wasinstalledasaTCP/IPboarddriver.Sinceversion3,thedriverhasbeen
installedasanABCLXtypeboarddriver.Ifyouareupgradinganexisting
projectwhichusedaversion2.xABLogixdriver,youwillneedtoaltertheboard
typeinyourexistingprojecttoABCLXtype.
Ports Form ThePortsformlistsallportsusedintheCitectSCADAproject.Each
portrecorddefinesaseparateportwithintheproject.
Field

Value

Port Name

A unique name (up to 16 alphanumeric character) for the computer port


being used to connect with the device. This is used by CitectSCADA in the
Devices form.
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.
The name of the board this port is attached to as defined on the Boards
form.
Leave this field blank.

Port Number

Board Name
Baud Rate

ABCLX driver
Field

Value

Data Bits
Stop Bits
Parity
Special Options

Leave this field blank.


Leave this field blank.
Leave this field blank.
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"
(See Note below.)
Any useful comment. This is viewed in the Boards records database in Citect
Project Editor.

Comment

Note:WiththereleaseofVersion3oftheABCLXdriver(formerlyknownasthe
ABLogixdriver),theformatusedfortheportdefinitionintheSpecialOptions
fieldofthePortsFormhaschanged.IfyouareupgradingfromVersion2.x
(ABLogix),youwillhavetoadjustthecontentofthisfield.
Devices form
Field

Value

Name

A unique name (up to 16 alphanumeric character) for the I/O Device being
identified. Each I/O Device must have a unique name in the CitectSCADA
system.
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 usedSee Device Note 1).
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 I/O Device Wizard is used to complete these forms.
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.
Any useful comment. This is viewed in the Devices records database in
CitectSCADA Project Editor.

Number

Address

Protocol
Port Name
Comment

Adding tags to your


CitectSCADA project

AseparatevariabletagmustbeaddedtoyourCitectSCADAprojectforeach
datapoint(memoryregister)ontheI/Odevicesyouwanttocommunicatewith.
ControlLogixsystemPLCcontrollersuseatagbasedaddressingsystem.The
tagsassociatedwithacontrollerareeachassignedauniquenameusingthe
RSLogix5000EnterpriseSeriescontrollerconfigurationsoftware.SeePreparing
theControlLogixsystem.
YouusetheControlLogixsystemPLCtagnamewhenyouspecifytheaddress
forataginyourCitectSCADAproject.However,anysquarebraces[]should

10

ABCLX driver
bereplacedwith{},andforwardslashes/shouldbeusedtoaccessbits
withinwords,ratherthanaperiod..
Note:TheABCLXdriversupportsIndividualtagaddressingandArraytag
addressing.Programtagsupportisalsoavailableforboththesetypesof
addressing.Localtagadressingisonlysupportedviaaliasingthroughthe
RSLogix5000software.
YourCitectSCADAvariabletagsaredefinedusingtheVariableTagsform:

ForCitectSCADAtocompilecorrectly,youmustincludeappropriatevaluesfor
thefollowingfields:.
Field

Value

Variable Tag Name

A unique name per project for the variable tag (up to 79 alphanumeric
characters in Version 6, 32 characters for earlier versions). This can be used
by CitectSCADA graphic pages and in Cicode where defined.
The type of variable. Select from the drop-down menu. It must be one of the
predefined types used in CitectSCADA.
The name of an I/O Device defined in the I/O Devices form which is used to
identify the ControlLogix PLC controller (CPU module).
The name of a predefined ControlLogix system PLC tag, either individually
addressed, array addressed or addressed as part of a program.

Data Type
I/O Device Name
Address

Note:CitectSCADAdoesnotindicateanycompileerrorsifaninvalidaddressis
enteredintheVariableTagform.Anyvariabletagvalueswithaninvalid
addresswilldisplayas#COMatruntimeonthegraphicpageswherethey
havebeenpositioned.

Data types

WhenconfiguringyourvariabletagstocommunicatewiththeControlLogix
system,youmustselectaCitectSCADAdatatypethatiscompatiblewiththe
datatypeusedbytheControlLogixsystemcontroller.

ABCLX driver
Ideally,youshouldmatchthedatatypeoftheCitectSCADAvariabletagwith
thedatatypeofthemappedControlLogixsystemPLCtagasperthefollowing
table:
ControlLogix Data
Description

Citect Address Format

Access rights

CitectSCADA Data Type

BOOL
SINT
INT
DINT
REAL
STRING

<TagName>
<TagName>
<TagName>
<TagName>
<TagName>
<TagName>

R/W
R/W
R/W
R/W
R/W
R/W

DIGITAL
BYTE
INTEGER
LONG
REAL
STRING

Forexample,iftheControlLogixtagyouareaddressingusesafloatdatatype,
youshouldselectrealintheDataTypefieldoftheVariableTagsform.
Note:CitectSCADAreadsastringdatatypefromtheControlLogixPLCasa
nullterminatedstring.Therefore,ifyouneedtoreada12characterstring,you
willhavetoconfigurethestringlengthonthePLCtoatleast13charactersto
allowforthenullcharacter.
Data Coercion
TheABCLXdriveralsosupportsanumberofdataconversionsfromaCitect
datatypetoanativePLCdatatype.However,asitispossibletocoercefroma
largedatatypetoasmalleroneinbothdirections,caremustbetakentoensure
thattherangeofthesmallertypeisalwaysrespected,otherwisethedriverwill
returnBAD_DATA_TYPEbacktoCitect.Itisrecommendedyouonlyrelyon
theseconversionswherecircumstancesdemandit.

11

12

ABCLX driver
Thefollowingmatrixtabledetailstheconversionssupportedbythedriver.The
plussign(+)representsthoseconversionsthatareimpactedbyrange
differences.

Individual tag
addressing

WhendeclaringaCitectSCADAvariabletagusingindividualtagaddressing,
typeintheControlLogixtagname,asdefinedontheControlLogixPLC,intothe
AddressfieldoftheVariableTagform.
Examples

SingleBytewithinastructure
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

SingleStructure.SingleByte
SINT
SingleStructure_SingleByte
SingleStructure.SingleByte
BYTE

SingleDigital
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

SingleBoolean
BOOLEAN
SingleBoolean
SingleBoolean
DIGITAL

ABCLX driver
Single82ndbitfromadigitalarray
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

DigitalArray
BOOL[128]
SingleDigital_81
SingleDigital{81}
DIGITAL

Single7thbitfromfourthiteminalongarray
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

LongArray
DINT[256]
SingleBit_3_7
LongArray{3}/7
DIGITAL

Using bit access notation vs aliasing booleans


YoucangaindramaticperformancebenefitsbyusingABCLXbitaccesssyntax
insteadofaliasingbitsinthePLC.Formoreinformationonwhy,seearticle
Q4064theCitectSCADAKnowledgeBase.TheKnowledgeBasecanbeinstalled
fromtheCitectSCADACD,ordownloadedfromtheCitectwebsite
(www.citect.com).
See Also

Array tag addressing

Arraytagaddressing
Addressingprogramtags
ArrayscanexistintheControlLogixsystemPLCand/ortheCitectSCADAtag
database.
WithintheControlLogixsystemPLC,theyaredefinedusingtheRSLogix5000
EnterpriseSeriesconfigurationsoftware.SeePreparingtheControlLogix
system.
CitectSCADAaccessesthetagarrayswithintheControlLogixsystemPLCsvia
theAddressfieldoftheVariableTagsformforeachtagortagarray.Equally,the
waytodefineCitectSCADAtagarraysisalsotousetheAddressfieldofthe
CitectSCADAVariableTagsformforeachtagarrayrequiredinCitectSCADA.
Note:CitectSCADAtagarraysaresimple,notcomplex,arrays.Thismeansthey
canonlycontainelementsofthesamedatatype;forexample,adigitaltagarray
inCitectSCADAwillonlyincludedigitaltypevariables.
Tagarrayscanbeextremelyflexibleandquitecomplicated.Itispossibleto
declareatagarrayinCitectSCADAwhichmapstoatagarrayinaControlLogix
systemPLC,orwhichmapstoacontiguoussequenceoftags(ofthesamedata
type)whichmayormaynotbedefinedasatagarrayintheControlLogix
systemPLC.

13

14

ABCLX driver
Mapping to individual elements of an array
TomaptoanindividualtaginaControlLogixPLCtagarray,use{}bracesto
definethearrayelementasazerobasedindex.Usethefollowingsyntax:
<TagName>{<IndexNumber>}

Where:
<TagName> =
{}=
<IndexNumber> =

the ControlLogix tag name as defined on the ControlLogix system PLC;


the required braces to define the array element index;
the zero-based index number of the array element.

Note:WithversionsofCitectSCADApriortoversion6,curlybrackets{}were
requiredwhenaddressingarrays.Thisisnolongerthecase,asVersion6
supportstheuseofbothcurlybracketsandsquarebrackets[].
Individual tag address type mapping
YoushouldmatchthedatatypeoftheCitectSCADAvariabletagwiththedata
typeofthemappedControlLogixsystemPLCtagasperthefollowingtable:
ControlLogix Data
Description
BOOL
SINT
INT
DINT
REAL
String structure (see
Note below) or
STRING (supplied by
RSLinx)

Citect Address Format

Access rights

CitectSCADA Data Type

<TagName>{<IndexNumber>}
<TagName>{<IndexNumber>}
<TagName>{<IndexNumber>}
<TagName>{<IndexNumber>}
<TagName>{<IndexNumber>}
<TagName>{<IndexNumber>}

R/W
R/W
R/W
R/W
R/W
R/W

DIGITAL
BYTE
INTEGER
LONG
REAL
STRING

Note:Thestringstructuremustfollowtheformat:
{
DINTLEN
SINT[]DATA
}
Example

Singleintegerwithinanarrayofintegers
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

IntegerArray[5]
INT
IntegerArray_5
IntegerArray{5}
INTEGER

ABCLX driver
Singlefloatwithinanarrayofstructures
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

StructureArray[5].SingleFloat
FLOAT
StructureArray_5_SingleFloat
StructureArray{5}.SingleFloat
REAL

Mapping to more than an individual element of an array


CitectSCADAcanonlyhandlesimple(sametype)arraysofupto256bytesin
length,sowhendeclaringvariablearraystoaccessControlLogixsystemPLC
arrays(ordatastructureslargerthan256bytes),youwillneedtosplittheminto
smallerstructuresoflessthan256bytes.Forexample,youllneedtodeclare
multiplevariablearrayseachaccessingaseparate256byteportionofthelarger
structure.
Tomaptoaportionofanarraygreaterthanasingletag,youidentifythe
startingpositionforthearray,andthesizeofthearraytomapusingthesyntax:
<TagName>/<ArrayOffset>!A[<ArraySize>]

Where:
<TagName> =
/<ArrayOffset> =

!A<ArraySize> =

the ControlLogix tag name as defined on the PLC


the zero based offset of the item index used within the PLC (not on bit widths
or other sizes) representing the starting point for the tag array value
(optional)
the zero based array size to return using the item count within the PLC, (not
on bit widths or any other sizes)

Note:ThearrayoffsetvalueisazerobaseditemcountusedwithinthePLCto
definethestartofthearraystructurewhichisbeingmappedtothe
CitectSCADAvariabletagarraybeingdeclared.Thearraysizevalueisa
continuationofthesamecountandisusedtodefinethesizeofthearray
structurebeingmappedtotheCitectSCADAvariabletagarraybeingdeclared.
Theyareusedtogethertodeterminethestartandendpointsofthevariabletag
arraydataintheControlLogixsystemPLCwhichwillbemappedtoforthe
CitectSCADAvariabletagarraybeingdeclaredintheCitectSCADAVariable
Tagsform.
CitectSCADAignoresallcharactersfollowinganexclamationmark!inthetag
addressfield,sothattagbaseddriversliketheABCLXdrivercanusesquare
bracketsinthetagaddressfordevicearrayaddressing.Therefore,youmust
precedeanarrayaddressschemawithanexclamationmarkwhendefiningan
arrayinaCitectSCADAvariabletagaddress.

15

16

ABCLX driver
Mapping data types for array tag addressing
YoushouldmatchthedatatypeoftheCitectSCADAvariabletagarraywiththe
mappedControlLogixPLCtagarrayasperthefollowingtable:

Examples

ControlLogix Data
Description

Citect Address Format

Access
rights

Citect Data Type

Array of BOOL
Array of SINT
Array of INT
Array of DINT
Array of REAL

<TagName>/<ArrayOffset>!A[<ArraySize>]
<TagName>/<ArrayOffset>!A[<ArraySize>]
<TagName>/<ArrayOffset>!A[<ArraySize>]
<TagName>/<ArrayOffset>!A[<ArraySize>]
<TagName>/<ArrayOffset>!A[<ArraySize>]

R/W
R/W
R/W
R/W
R/W

DIGITAL array
BYTE array
INTEGER array
LONG array
REAL array

Configurationofanarrayof128integers
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

IntegerArray
INT[128]
IntegerArray_128
IntegerArray!A[128]
INT

Configurationofanarrayof64floatsoffsetby32items
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

LargeFloatArray
FLOAT[256]
LargeFloatArray_32_64
LargeFloatArray/32!A[64]
FLOAT

Configurationofanarrayofdigitalswithinastructure
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

SingleStructure.BooleanArray
BOOLEAN[2048]
SingleStructureBooleanArray
SingleStructure.BooleanArray!A[2048]
DIGITAL

Configurationofanarrayof256bytes,offsetby256itemswithinanarrayof
structuresatelement32
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

See Also

StructureArray.LargeByteArray
SINT[1024]
StructureArray_32_LargeByteArray_256_256
StructureArray{32}.LargeByteArray/256!A[256]
BYTE

Addressingprogramtags

ABCLX driver

Addressing program
tags

ControlLogixprogramtagscontaindatathatisusedexclusivelybytheroutines
withinanindividualprogram.Thesetagscanbeviewedaslocalvariables.
Individualtagaddressingandarraytagaddressingareavailableforprogram
tagsbyusingPROGRAM:<TaskName>asaprefix.

Examples

SingleBytewithinastructureinprogramMyProgram.
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

MyProgram.SingleStructure.SingleByte
SINT
MyProgram_SingleStructure_SingleByte
PROGRAM:MyProgram.SingleStructure.SingleByte
BYTE

SingleDigitalinprogramMyProgram
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

MyProgram.SingleBoolean
BOOLEAN
MyProgram_SingleBoolean
PROGRAM:MyProgram.SingleBoolean
DIGITAL

SingleintegerwithinanarrayofintegersinprogramMyProgram
PLC Tag Address
PLC Tag Type
Citect Tag Name
Citect Tag Address
Citect Tag Type

Configuring Quality and


Timestamp tags

MyProgram.IntegerArray[5]
INT
MyProgram_IntegerArray_5
PROGRAM:MyProgram.IntegerArray{5}
INTEGER

TheCitectSCADAABCLXdrivercanuseadditionalvariabletagsforqualityand
timestampvalues.Qualityortimestamptagsareduplicatesofavariabletag,
withanappended!Qor!Tor!Mintheaddressfieldtodefinetheir
purpose.TheirdatatypeneedstobeLongtoenablethemtostoreaqualityor
timestampvalue.
Hint:ThequickestwaytocreateaQualityorTimestamptaginCitectSCADAis
tolocatetherelevantvariabletagusingtheVariableTagsform,edititas
requiredtocreateaqualityortimestamptag,andsaveit.Thiscreatesacopyof
theoriginalvariabletagwiththerequiredchangessaved.
TocreateaQualitytag:
1

OpentheVariableTagsforminProjectEditor(gototheTagsmenuand
selectVariableTags).

Createanewvariabletag,orlocateanddisplaythetagthatyouwantto
associatethequalitytagwith.

17

18

ABCLX driver
3

IntheVariableTagNamefield,enteranappropriateanduniquenamefor
thequalitytag.Commonpracticesuggestsusinganamesuchas
<Tagname>_Quality.

IntheDataTypefield,selectLongfromthedropdownmenu(ifnotalready
selected).

IntheI/ODeviceNamefield,selecttheappropriateI/ODeviceforthetag
(ifnotalreadydisplayed).

IntheAddressfield,enterthenameofthetagyouwanttoassociatewiththe
qualityvalue(ifnotalreadydisplayed),andappend!Qdirectlytotheend
oftheaddress(withoutthequotesandwithoutanyspaces).

ClickAdd.

Note:Iftheexclamationmarkcharacter!isalreadydefinedinthetagaddress
field(forexample,youhavealreadyusedittodeclareanarraysize!A[n]),
dontincludeanotherexclamationmark;instead,justappendtheQtothetag
addressaftertheclosingsquarebracketofthearraysizedeclaration.
ThequalityvaluegeneratedbytheABCLXdriverisamaskofthequalitylevel
andqualitystatusfieldvaluesasperthefollowingtable:
Quality level

Quality status

Value (Hex)

QLEVEL_UNCERTAIN
QLEVEL_GOOD
QLEVEL_BAD
N/A
N/A
N/A

QSTATUS_NONE
QSTATUS _NOTDEFINED
QSTATUS _INITIAL
QSTATUS _STALE
QSTATUS _ERRORDATA
QSTATUS_WRITE

0x00
0x01
0x02
0x03
0x04
0x05

Hint:Thequalityiscalculatedbyshiftingupthequalitylevelby8bitsandOR
maskinginthequalitystatus.
Examples

QualitytagsettingsforasinglelonginrootofPLC:
Citect Tag Name
Citect Tag Address
Citect Tag Type

SingleLong_Quality
SingleLong!Q
LONG

Qualitytagsettingsforanarrayof256bytes,offsetby256itemswithinanarray
ofstructuresatelement32:
Citect Tag Name
Citect Tag Address
Citect Tag Type

StructureArray_32_.LargeByteArray_256_256_Quality
StructureArray{32}.LargeByteArray/256!A[256]Q
LONG

ABCLX driver
TocreateaTimestamptag:
1

OpentheVariableTagsforminProjectEditor(gototheTagsmenuand
selectVariableTags).

Createanewvariabletag,orlocateanddisplaythetagthatyouwantto
associatethetimestamptagwith.

IntheVariableTagNamefield,enteranappropriateanduniquenamefor
thetimestamptag.Commonpracticesuggestsusinganamesuchas
<Tagname>_sTimestamp(forseconds)or<Tagname>_msTimestamp(for
milliseconds).

IntheDataTypefield,selectLongfromthedropdownmenu(ifnotalready
selected).

IntheI/ODeviceNamefield,selecttheappropriateI/Odeviceforthetag(if
notalreadydisplayed).

IntheAddressfield,enterthenameofthetagyouwanttoassociatewitha
timestampvalue(ifnotalreadydisplayed),andappend!Tor!M(as
appropriate).
Note:Ifthereisalreadyanexclamationmarkwithotherdeclarations
includedinthetagaddress,youdonotneedtoincludethemfor
timestamping.Forexample,atimestamptagmonitoringTagName!A[64]
canbeaddressedasTagName!T.

ClickAdd.

Note:Timestampsstorethenumberofsecondssince01/01/1970whenusingthe
!Telement,orthenumberofmillisecondssincemidnightusingthe!M
element.Ifyouwanttostoreacompletetimeinmillisecondaccuracy,youmust
createtwoseparatetimestamptags,oneforsecondsandoneformilliseconds,
eachaddressedappropriately.
Examples

TimestamptagsettingsforasinglelonginrootofPLC:
Citect Tag Name
Citect Tag Address
Citect Tag Type

SingleLong_msTimestamp
SingleLong!M
LONG

Timestampsettingforanarrayof256Bytesoffsetby256itemswithinanarray
ofstructuresatelement32:
Citect Tag Name
Citect Tag Address
Citect Tag Type

StructureArray_32_.LargeByteArray_256_256_sTimestamp
StructureArray{32}.LargeByteArray/256!T
LONG

Note:Atimestampvalueisbasedonthetimeavaluechangeisdetectedbythe
ABCLXdriverinUTCtime,sothetimestampisonlyasaccurateasthepolling

19

20

ABCLX driver
cycleoftheI/Odevice.If,forexample,thedatavaluechangedwhiletheunit
wasnotpolling,thetimestampvaluewillnotbeaccurate.

Advanced configuration and maintenance


Thissectionofthehelpprovidesadvancedconfigurationinstructionsfor
followingtopics.

Customizing a project
using Citect.ini
parameters

CustomizingaprojectusingCitect.iniparameters

ConfiguringRedundancy

UsingaroutepathtolocatearemoteCPU

Performancetuning

SessionControl

Modedetection

Statustags

IdentifyingbadtagsusingFailOnBadData

Scanrates

Citect.INIparametersareusedtotunetheperformanceoftheCitectSCADA
ABCLXdriverandperformruntimemaintenancediagnostics.
YoucancustomizethewayCitectSCADAcommunicateswiththeControlLogix
system,andevenindividualPLCs,bycreatingoreditingthe[ABCLX]sectionof
theCitect.INIfileforyourproject.
TherearesomecommonCitectSCADAdriversettings,andcustom
CitectSCADAABCLXdriversettings.
WhenCitectSCADAstartsatruntime,itreadsconfigurationvaluesfromthe
Citect.INIfilestoredlocally.Therefore,anyControlLogixconfigurationsettings
mustbeincludedintheCitect.INIfilelocatedonthecomputeractingastheI/O
servertotheControlLogixsystem.
Note:Bydefault,CitectSCADAlooksfortheINIfileintheCitectSCADAproject
\Bindirectory.Ifitcantfinditthere,itwillsearchthedefaultWindows
directory.
Warning!Thedefaultvaluesfortheseparametershavebeendetermined(during
driverdevelopmentandtesting)tobethebestvaluefortheCitectSCADA
ABCLXdriver.Alloftheseparametersdefaulttoavaluetestedtoworkinmost
cases.Youshouldcarefullyconsideradjustingthesedefaultvaluesexceptonthe
directadviceofCitectCustomerSupport.

ABCLX driver
Global and device-specific parameters
Parametersgroupedbeneaththe[ABCLX]generalcategoryareglobaland
impactallControlLogixsystemPLCs.Youcan,however,overrideaglobal
parameterwithadevicespecificparameter.
DevicespecificparametersdefinethesettingsforaparticularControlLogix
systemPLC.ThesyntaxfordefiningadevicespecificABCLXdriverparameter
is:
[<IOServerName>.<IOPortName>]

Where:
<IOServerName> =
<IOPortName> =

the name of the I/O server


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

WiththecurrentreleaseoftheABCLXdriver,therearedevicespecific
parametersyoucanusetooverrideglobalparameters;theyare:

ExclusiveConnection

FailOnBadData

ForwardOpenPoolSize

InactiveScanAdjust

LogTagInfo

LogTagInfoPath

MissedPollTolerance

StatusTag

ScanRate

Formoredetails,seeDriverspecificCitect.INIparameters
Examples

Implementationofglobalparameters:
[ABCLX]
Watchtime=5
ScanRate=1000

Implementationofadevicespecificparameter:
[CLServer.CLServerPort]
ScanRate=500

21

22

ABCLX driver
Common Citect.INI driver parameters
[ABCLX]
Parameter

Allowable
Values

Default
Value

Block

1 to 256

256

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

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

Retry

0 to 5

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
.
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 write or polling 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.

Description

Driver specific Citect.INI parameters

[ABCLX] Parameter
ConnTimeout

Allowable
Values
5000 to 30000
(milliseconds)

Default Value Description


15000

Timeout for establishing TCP/IP connection.

ABCLX driver

[ABCLX] Parameter

Allowable
Values

Default Value Description

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.

ExclusiveConnection

0 or 1

Used by the ABCLX driver to determine


whether the device communicates with the
serial port on a Logix 5000 series processor
via the 1761-NET_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.

FailOnBadData

0 or 1

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 to1, a block read
which contains a bad tag would result in the
whole block returning #COM.
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.

ForwardOpenPoolSize

1 - 32

Used by the ABCLX driver to determine the


number of Forward Open services can be
used on the device.
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.

23

24

ABCLX driver

[ABCLX] Parameter

Allowable
Values

Default Value Description

InactiveScanAdjust

0 to 15

10

Used by the ABCLX driver to determine the


factor to adjust the scan rate of devices which
are not currently active.
NOTE: The PLC will drop the connection if it is
not polled within a 30 second period.
Therefore, you should make sure
InactiveScanAdjust*ScanRate is less than 30
seconds.
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.

InitTimeOut

0 to 360000
(milliseconds)

180000

Timeout for the retrieval of the tag database


and initialization functions.

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.
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 in the
driver's general section, or device specific if
placed under a specific device's section. See
Global and device-specific parameters.

ABCLX driver

Using a route path to


locate a remote CPU

[ABCLX] Parameter

Allowable
Values

Default Value Description

LogTagInfoPath

Any valid path.

C:\

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 in the
driver's general section, or device specific if
placed under a specific device's section. See
Global and device-specific parameters.

MissedPollTolerance

1-5

Number of polls that can be missed before the


unit is taken offline.
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.

ScanRate

100 to 30000
milliseconds

500

The time period (in milliseconds) between


each poll of the root group.
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.

StatusTag

(comparison
equation)

(no status
tags)

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 in the
driver's general section, or device specific if
placed under a specific device's section. See
Global and device-specific parameters

AroutepathallowsyoutoindicatethelocationofaparticularCPUona
ControlLogixnetworkinrelationtotheEthernetmoduleyoureusingasyour
initialpointofcommunication.Itmapsoutacommunicationchannelacrossa
networkofPLCsbydefiningaseriesofportsandaddressesthateventuallylead
tothedestinationCPU.
Thisinformationisconfiguredinthe[ABCLX]sectionoftheCitect.inifile,using
thefollowingsyntax:
[IOserver name].[Port name].RoutePath=/P:m/A:n,...,/P:m/A:n

25

26

ABCLX driver
where:

Example

[IOServer name] =

your I/O server name

[Port name] =

port name on I/O server

m=

port type/number on the module


0 - Reserved
1 - Backplane
2 - Port A
3 - Port B
4 - Port C

n=

the slot number if the module is on the backplane, or the address of the
module, which will either be a CNET address, IP address or DH address. It
can also be an IP address if it is an EIP module

StartingfromtheinitialEthernetmodule,eachpointinthecommunicationpath
isdefinedwithaPortvalueandAddressinthefollowingformat:
/P:m/A:n,

Includeanappropriatenumericvalueformtoindicateifthenext
communicationpointisonthesamebackplane,orconnectedviaaparticular
port.Thevaluefornwillthenbecomeabackplaneslotnumber,oramodules
uniqueaddress.
IfyouareattemptingtoroutefromoneEthernetmoduletoanother,youllhave
touse2(PortA)form,andthedestinationIPaddressforn.Forexample:
/P:2/A:123.234.0.124,

Simplyrecreatethissyntaxforeachpointinthecommunicationpath,separated
bycommas,tocompletetheRoutePathparameter.
Considerthefollowingdiagram,showingaCitectSCADAI/Oserver,anda
networkofthreeControlLogixPLCbackplanes.Notetherearetwoexample
routepathsrepresented,onedistinguishedbyadottedline.

ABCLX driver

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

Thesyntaxforthesecondexamplewouldbe:
IOServerName.PortName.RoutePath=/P:1/A:3,/P:2/A:23,/P:1/A:7,/P:2/
A:17,/P:1/A:6

Configuring
Redundancy

RedundancyishandledinCitectSCADAbytheCitectSCADAclients.They
determinewhichI/OservertorequestI/Odevicedatafrom.Thisisdoneby
allowingthescanratetobespecifiedperI/Odevice,andthenconfiguring
multipleI/OdevicestothesamePLC.
TheinactiveunitunderredundancywillreceiveaSTATUS_UNITcommand
fromCitecteveryconfiguredWatchTime.ThereplysentbacktoCitectwillbe
basedonthecurrentstateofthestatustagcondition.Iftheconditionfailsthe
standbyunitwillbesettoUNIT_OFFLINEuntilthestatustagconditionpasses.
Thestatusgrouppollingrateremainsunchangedontheinactiveunit.See
Stop_Unithandling.

27

28

ABCLX driver
AstatustagcanbedefinedintheCitect.inifiletodeterminewhetherornotto
setaunitofflineoronlinedependingontheconditionofthestatustag.Ifthe
conditionistruetheunitisallowedtocomeonline,otherwisetheunitissetto
offline.
Thestatustagispolledatthesamerateconfiguredforthegroupsofthe
correspondingunit.ThedriversupportsSTATUS_UNITcommandsonthe
inactiveserver,soeventhoughaparticularunitisnotcurrentlyservicingCitect
requests,thestateofthestatusconditionwillbecheckedperiodicallyallowing
theunittobetakeneitherofflineoronline.
Boththeprimaryandstandbydeviceswillbeofflineifbothhavethesamestatus
conditionandtheconditionisfailing.Allpointsinthesystemforthatunit
wouldthereforebe#COM.
Thestatustagcanbedefinedeitherinthemain[ABCLX]sectiontoapplytoall
devicesorastatuscanbedefinedspecificallyforaparticulardevicewithinthe
[<IOServerName>.<IOPortName>]section.
TheinactiveunitunderredundancywillreceiveaSTATUS_UNITcommand
fromCitectSCADAeveryconfiguredWatchTime.Thereplysentbackto
CitectSCADAwillbebasedonthecurrentstateofthestatustagcondition.Ifthe
conditionfails,thestandbyunitwillbesettoUNIT_OFFLINEuntilthestatus
tagconditionpasses.Thestatusgrouppollingrateremainsunchangedonthe
inactiveunit.
Stop_Unit handling
IfthedriverreceivesaSTOP_UNITcommandfromtheI/OServerfora
particulardevice,thenthedriverplacestheunitofflineandadjuststhepolling
ratebasedontheinactivescanadjust.WhentheINIT_UNITcommandis
receivedagain,thedriverwillstartpollingagainandplacetheunitbackonline.
Iftheunitiscurrentlyoffline,theSTOP_UNITcommandwillnotbesentdown
tothedriversothedriverwillnotknowtostoppollingthePLC.

Performance tuning

TherearetwowaysyoucanfinetunetheperformanceoftheABCLXdriveron
yourCitectSCADAsystem:

OptimizingdrivertoPLCcommunications

OptimizingCitectSCADAsclienttoservercommunications

Optimizing driver to PLC communications


TheABCLXdriverconnectstotheControlLogixsystemdevicesusingthe
Ethernet/IPnetwork.ToknowtheconnectionstateofallconfiguredPLCs,the
driversupportstheuseofStatustagsforthesystemandforeachdevice.

ABCLX driver
Tominimizenetworktraffic,theABCLXdriveralsosupportstheuseofdifferent
scanratesfordifferentdevices,andactiveandinactivedevices.SeeStatustags
andScanrates.
Note:TheABCLXdrivermaintainsaninternaltagcacheandservices
CitectSCADADCBrequestsfromtheinternalcache.
YoucanalsoadjusttheSystemOverheadTimeSliceinthePLCtothehighest
valuepossiblewithoutinterferingwiththerunningofoperationsonthePLC.
TheSystemOverheadTimeSliceinthePLCisadjustedfromtheControllogix
programmingsoftwarebyrightclickingonthecontrollerandnavigatingtothe
ControllerPropertiesthenclickontheAdvancedtab.
Itisalsogoodengineeringpracticetoarrangeyourvariable.dbfbyIODevice
thenDataType.ThisallowsCitecttocreaterequestsbyblockingthesamedata
typeswithinanIODevicetogether.
ForfurtherinformationonoptimizingPLCcommunications,seethe
CitectSCADAKnowledgeBasearticleQ4035.(TheKnowledgeBasecanbe
installedfromtheCitectSCADACD,ordownloadedfromwww.citect.com.)
Optimizing CitectSCADAs client to server communications
Duetothisdriverbeingafrontend/backenddriver,therearenotransport
delaysbetweenCitectSCADAandthedriverinvolvedinprocessingaread
requestfromthedrivercache.Thismeansthatunderheavyloads,thedriver
coulduseupmosttheCPUprocessingrequests.ThedrivercantunetheCPU
usageandthroughputtohelpmanagetheresourcesoftheI/Oserver.The
standarddriverparametersMaxPendingandDelaycanbeusedasfollows:
[ABCLX]
MaxPending=x
Delay=y

where:
x=
y=

the maximum number of simultaneous requests the driver will receive from CitectSCADA.
the average delay applied to the requests to control CPU usage.

SeeCustomizingaprojectusingCitect.iniparameters.
Examples

[ABCLX]
MaxPending=256
Delay=50

Theaboveexamplewouldmeanthatthedriveriscapableofservicing256
requestsevery50milliseconds.
[ABCLX]
MaxPending=1

29

30

ABCLX driver
Delay=0

Thisexamplewouldmeanthedriverwouldreplytoeveryrequestasquicklyas
possible,whichcouldcauseCPUissues.

Session Control

Youcanusesessioncontroltoreleaseanycurrentreferencestotagsonthe
ControlLogixPLCs.Thisisrequiredifyouwanttomodifyordeleteanyofyour
PLCtags,astheLogix5000softwarecannotaccessatagifCitectSCADAis
currentlysubscribedtoit.Youcanalsousesessioncontroltoloadarefreshedtag
listfromaPLC.
SessioncontrolisachievedbyusingtheSessionDisable:xtag.Thistagneedsto
beconfiguredonavirtualdeviceonavirtualchannel.Thevirtualchannelis
specifiedbyentering0.0.0.0astheIPaddressintheSpecialOptionsfieldofthe
Portsform.Thereshouldbeasinglevirtualportandvirtualdeviceconfigured
foreachI/Oserver,andthevirtualdevicesshouldnotbeconfiguredfor
redundancy;i.e.,thenetworknumbersforthevirtualunitsshouldnotbethe
same.Otherwiseitisnotpossibletocommunicatewithaspecificvirtualunit
fromaCitectSCADAclient.
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.

Ifthistagiswrittentowitha1,thesessionisdisabled.Writinga0tothistagwill
reenablethesession.
Example

ThefollowingexamplewilloperateontheI/ODevicewith123intheaddress
fieldoftheI/ODeviceForm.

ABCLX driver
Firstly,createavirtualchannelbyentering0.0.0.0astheIPaddressinSpecial
OptfieldinPortsForm.

Createavirtualdevice.

31

32

ABCLX driver
Createavirtualtagonthevirtualdevice.

ThiswillallowyoutocontrolthesessiononIODevdevicebywritting0or1to
thevirtualtagCI_Session_Control.
See Also

Status tags

Statustags
AstatustagcanbedefinedintheCitect.INIfiletodeterminewhetherornotto
setalloranyControlLogixsystemPLCdevicesofflineoronlinedependingon
theconditionofthestatustag.Iftheconditionistrue,thedeviceisallowedto
comeonline;otherwisethedeviceissettoofflinebytheABCLXdriver.
Therecanbeonegeneralstatustag(definedinthegeneral[ABCLX]sectionof
theprojectCitect.INIfile)whichdeterminestheonlinestatusofallI/Odevices
usingtheABCLXdriver.TherecanalsobeanindividualstatustagsetforeachI/
Odevice(usingthesyntax[IOServerName.IOPortName])thatwilloverridethe
generalsectionstatustag.SeeCustomizingaprojectusingCitect.ini
parameters.
Bydefault,nostatustagiscreatedforthedriveroradeviceuntildefinedinthe
projectCitect.INIfile.
Thestatustagispolledatthesamerateconfiguredforthegroupsofthe
correspondingdevice.TheABCLXdriversupportsSTATUS_UNITcommands
ontheinactiveserver,soeventhoughaparticulardeviceisnotcurrently
servicingCitectSCADArequests,thestateofthestatusconditionwillbechecked
periodicallyallowingthedevicetobetakenofflineoronline.SeeStop_Unit
handling.
Note:Ifboththeprimaryandstandbydeviceshavethesamestatuscondition
andtheconditionisfailing,bothwillbetakenoffline.Allpointsinthesystem
forthatunitwilldisplay#COM.
Thesyntaxforastatustagis:
StatusTag=<TagName><Operator><Operand>

ABCLX driver
where:
<TagName> =
<Operator> =
<Operand> =

the name of the PLC tag address whose value is to be used in the comparison
operation;
the comparison operator (see operator list below);
the value to be used in the comparison operation against the value of <TagName>.

Thecomparisonoperatorcanbeoneofthefollowing:

Examples

Operator

Description

>
>=
<
<=
&
=
!&
!=

<TagName> is greater than <Operand>


<TagName> is greater than or equal to <Operand>
<TagName> is less than <Operand>
<TagName> is less than or equal to <Operand>
<TagName> has common asserted bit(s) with <Operand>
<TagName> is equal to <Operand>
<TagName> has no common asserted bit(s) with <Operand>
<TagName> is not equal to <Operand>

BringallABCLXdriverdevicesonlineonlywhentheintegertagnamed
TankLevelisgreaterthan100:
[ABCLX]
StatusTag=TankLevel>100

BringanydeviceontheportnamedPort1ontheI/OservernamedCLServer
onlineonlywhenthedigitaltagnamedisReadyistrue(where0=falseand
1=true):
[CLServer.Port1]
StatusTag=isReady=1

BringtheparticulardevicenamedPort123ontheI/OservernamedCLServer
onlineonlywhenthecurrentvaluesharescommonassertedbitswith5.
[CLServer.Port123]
StatusTag=TagName&5

IfthecurrentvalueforthetagcalledTagNamewas3,theexampleabove
wouldsetthestatustotrueandbringthedeviceonline,as3and5sharea
commonbit(3=0011inbinary,and5=0101).IfthevalueforTagNamewere2,
thedevicewouldremainofflineas2and5donotsharecommonbits(2=0010,5
=0101).
Withtheexamplebelow,theportnamedPort123onCLServerwillcome
onlineonlywhenthecurrentvalueforTagNamedoesnotsharecommon
assertedbitswith5.
[CLServer.Port123]

33

34

ABCLX driver
StatusTag=TagName!&5

Mode detection

ThePLCmodeisdeterminedbytwothings.Firstly,thephysicalkeypositionin
thePLC;andsecondly,wheninREMOTEmode,whetherornotthePLChas
beensettoRUNmodeorPROGRAMmode.ThisstateisrepresentedinthePLC
byanumericvaluethatcanbequeried.
ThefollowingtablesetsoutthedifferentvaluesandthecorrespondingPLC
mode:
Mode Value

Key Position

Mode

0x1060
0x3060
0x3070
0x2070

RUN
REMOTE
REMOTE
PROGRAM

RUN
RUN
PROGRAM
PROGRAM

ThesevaluescanbeusedtosetupastatustagtodeterminewhatmodethePLC
iscurrentlyin,asshownbelow.
Status Tag

Configuration Description

@Mode<0x2000
@Mode>0x3000
@Mode!&0x1000
@Mode!&0x10
@Mode&0x10

Key position in RUN


Key position in REMOTE
Key position in PROGRAM
PLC in RUN mode
PLC in PROGRAM mode

Hencetheunitcanbetakenofflineorbackonlinedependingonthekeyposition
andthecurrentmodeofthePLCtodisplay#COMforthepointsonthisunit.

Identifying bad tags


using FailOnBadData

AbadtagisdefinedasanytagthatdoesnotexistwithintheControlLogix
system,whichisaproblemthatcanoccurwhendevelopinglargesystems.
Duringthecommissioningphaseaproject,youneedtoclearlyidentifyany
blocksofdatathatincludebadtags.TheFailOnBadDataparameterhelps
achievethisbyallowingyoutorunyourprojectintwodifferentmodes:

WhenFailOnBadDataisoff,theABCLXdriverwillnotreturn#COMfora
blockofdataifatleastonevalidvalueisinthereadblock.

IfFailOnBadDataison,ifanyvaluesinablockedreadfail,thewholeblock
isfailedas#COM.Thishighlightsthepresenceofbadtagsandidentifies
wherecorrectiveactionisrequired.Thisdefaultbehavioristhepreferred
modeofoperationwhenyouarerunningaproject.

Avalueof1(default)indicatesthatcommissioningmodeisON,0indicates
commissioningmodeisOFF.SeeDriverspecificCitect.INIparameters
Note:Whenyouvecompletedcommissioning,youshouldresetthe
CommissioningparametertozeroordeleteitfromtheprojectCitect.INIfile.

ABCLX driver
Example

Displaybadtagreadswith#COMduringprojectcommissioning:
[ABCLX]
FailOnBadData=1

Ignorebadtagreadsduringnormaloperation:
[ABCLX]
FailOnBadData=0

Scan rates

TheCitectSCADAABCLXdrivercandefineI/Odeviceswithdifferentscan
rates.Thisprovidesyouwiththeabilitytobettertuneyoursystem,byordering
thetagdatabaseintologicalgroupsanddefiningdifferentscanratesforeach
group.Forexampletagsthatarebeingreadfrequentlycanbeplacedinagroup
thatisscannedfrequently,andtagsthatarereadinfrequentlycanbeplacedina
groupthatisscannedinfrequently.
Bydefault,alltagsarescannedatthedefaultscanratedefinedbytheScanRate
parameterintheprojectCitect.INIfile.SeeCitect.INIspecificparametersfor
details.
Note:IfyouhaveconfiguredI/Oserverredundancyinyourproject,itmaybe
consideredaninefficientuseofnetworkbandwidthtobecontinuallypolling
devicesnoncriticaltothecurrentlyinactiveserver.Tohelpreduceunnecessary
networktraffic,theABCLXdriversupportstheuseoftheInactiveScanAdjust
parameter,whichappliesadelayfactortothescanrateofcurrentlyinactiveI/O
Servers.SeeDriverspecificCitect.INIparametersfordetails.
Examples

Settheprojectscanrateto1second(1000milliseconds):
[ABCLX]
ScanRate=1000

Settheprojectscanrateto1second(1000milliseconds),andtheinactiveserver
scanadjustratetoafactorof5:
[ABCLX]
ScanRate=1000
InactiveScanAdjust=5

Setafaster(halfsecond)scanrateforaspecificportnamedPort1ontheI/O
servernamedCLServer:
[CLServer.Port1]
ScanRate=500

Setaslower(5second)scanrateforaspecificportnamedPort123ontheI/O
portnamedCLServer:
[CLServer.Port123]
ScanRate=5000

35

36

ABCLX driver

Troubleshooting
Mostlargeprojectswillsufferbugsintheruntimesystem.However,most
problemshavesimplesolutionsandrequireonlyperseverancetosolvethem.
ThefollowingtopicsprovideinformationabouttheCitectSCADAtools
providedtohelpresolveproblemswithcommunicationandconfiguration.

HardwareAlarms

TheSysLog.DATfile

DriverErrors

Logging

CitectKerneldiagnostics

Maintainingtheprojectdatabase

Tagbaseddriverconsiderations

ForanswerstocommonproblemsthatrelatemorespecificallytotheABCLX
driveranditsoperation,seeFrequentlyAskedQuestions.

Hardware Alarms

WhenasystemerroroccursthatisamalfunctioninCitectSCADAoperation,
CitectSCADAgeneratesahardwarealarm.Hardwarealarmsareusually
displayedonadedicatedHardwareAlarmpage,whichisavailableasa
standardtemplate.
Thehardwarealarmpageisyourprimaryindicatorofwhatishappeningin
yourCitectSCADAsystem.Ifacommunicationfaultoccurs,ifCicodecant
execute,ifagraphicspageisnotupdatingcorrectly,orifaserverfails,thispage
willalertyoutoit.Hardwarealarmsconsistofauniquedescriptionanderror
code.
Thehardwarealarmsdonothavedetailedinformation,butpointyouinthe
directionofaproblem.Forexample,ifyouhaveaConflictingAnimationalarm,
CitectSCADAwillnottellyouthecause.Youmustobservewhichpagecauses
thehardwarealarm,andlocatetheanimationsyourself.
Note:Yoursystemshouldhavenorecurringhardwarealarms.If,after
reviewingalldocumentation,youcannotrectifyanalarm,contactCitect
TechnicalSupport.

The SysLog.DAT file

TheSysLog.DATisafilemaintainedbyruntimeCitectSCADA,thatcontainsa
usefullogofCitectSCADASysteminformation.Thevarietyofinformationthat
canbeloggedtotheSysLog.DATisextensive:fromlowleveldrivertrafficand
Kernelmessages,touserdefinedmessages.
TheLogReadandLogWritefieldsintheI/ODevicesPropertiescontrolwhether
logsaremadeforeachI/ODevice.

ABCLX driver
Note:CitectSCADAlockstheSysLogfilewhilerunning.However,youcanstill
viewitbyusingtheSysLogcommandintheKernel.SeeCitectKernel
diagnostics,andtheCitectSCADAUserGuidefordetails.

Driver Errors

CitectSCADAABCLXdrivererrorscanoccurwhenaControlLogixDevicefails
torespond,orisdisconnectedoroffline,orreturnsanerroritself.Errorcodes
arelistedbelow.
TheABCLXdriverprovidestheabilitytologcombinationsoftracelevelsacross
differentcategories.Formoreinformation,seeLogging.
Common Protocol Errors
CitectSCADAhastwokindsofprotocoldrivererrorsgenericandspecific.
Genericerrorsarehardwareerrors031,andarecommontoallprotocols.There
areanumberofgenericerrorsthatarealsocommontoallprotocols.Insome
casesonlythegenericerrorisavailable,thoughoftenboththegenericerrorand
aspecificerroraregiven.
Protocoldriversalsohavetheirownspecificerrors,whichcanbeuniqueand
thereforecannotberecognizedbythehardwarealarmsystem.Thedrivers
converttheirspecificerrorsintogenericerrorsthatcanbeidentifiedbytheI/O
Server.Forexample,whenadriverhasafault,thereisoftenbothaprotocol
specificerrorandacorrespondinggenericerror.
Whenahardwareerroroccurs,CitectSCADAgeneratesanalarm,anddisplays
thealarmonthehardwarealarmpage(inthealarmdescriptionofthehardware
alarm).Toseetheerrornumber,makesureyouhaveAlarmCategory255
definedwithadisplayformatthatincludes{ErrDesc,15}{ErrPage,10}.
Thefollowingerrors,listedin(hexadecimal)sequence,arecommontoall
protocols.CitectSCADAdisplaystheerrornumberanddescriptionforcommon
protocolspecificerrors.Uncommonerrorsarenotcontainedinthe
CitectSCADAerrordatabase,inwhichcaseCitectSCADAwillonlydisplaythe
errornumber.
Error Value
(in Hex)

Error Definition

0x20000007
0x20000006
0x20000009
0x2000000B
0x2000000C
0x20000010
0x20000011
0x20000015
0x20000016

Failed to read tag


Failed to write to tag
Failed to initialise channel and download PLC tag database
Failed to initialise unit and start polling tags
The configured status condition is currently false
Failed to access the Citect Variable.DBF file
Failed to access the Citect Units.DBF file
Unit initialisation is still in progress
The PLC session or TCP/IP connection has failed

37

38

ABCLX driver
Note:Ifoneoftheseerrorsoccursbyitselfandispersistent,youshouldcontact
CitectSupport.
Youmayrequireadditionalinformationtoenableyoutorectifyanerror.This
informationshouldbedetailedinthedocumentationthataccompaniedtheI/O
Device(ornetwork).If,afterreviewingalldocumentation,youcannotrectifyan
error,contactCitectTechnicalSupport.
ABCLX Protocol Errors
Thefollowingerrors,listedin(hexadecimal)order,arespecifictothe
CitectSCADAABCLXprotocol:
Error Value
(in Hex)

Error Definition

Error Description

0x13
0x17
0x18
0x19
0x1E
0x800
0x100 to 0x899

Driver cannot cancel


Driver unit offline
Bad data type
Bad unit type
Address range error
Windows error
ABCLX API calls

Ignore, non critical internal issue


ControlLogix unit no longer responding
Invalid format or ABCLX.dbf
Check, ABCLX.dbf, re-compile
Invalid format or ABCLX.dbf
Associated with an operating system call
Refer to Citect Support

Youmayrequireadditionalinformationtoenableyoutorectifyanerror.This
informationshouldbedetailedinthedocumentationthataccompaniedthe
ControlLogixsystem.

Logging

Logsareausefultoolwhenitcomestodebuggingadriver.
SettingtheparameterLogTagInfoto1allowsyoutogeneratethreefiles:
TAGLIST.TXT
SUBSCRIBE.TXT
OPT_BLOCKS.TXT

Shows all tags downloaded from PLC.


Shows all Citect tags subscribed.
Shows all optimized blocks the driver generated.

ThelocationofthesefilesisdeterminedbytheparameterLogTagInfoPath
whichacceptsanyvalidpath.ThedefaultsettingisC:\.Notethatifthe
destinationdirectorydoesnotexist,thefileswillnotbegenerated.
Thefilenameswillhave[IOServerName]_[PortName]_asaprefix.
Forexample:
IOServer__p1_TagList.txt
IOServer__p1_subscribe.txt
IOServer__p1_opt_blocks.txt

ABCLX driver
TheABCLXdriveralsoprovidestheabilitytologcombinationsoftracelevels
acrossdifferentcategories.Thisisachievedbysettingthefollowingini
parameters:

DebugLevel
Allowsyoutodefinethetracelevel.Theoptionsincludewarnings,errors
traces,oralloftheabove.

DebugCategory
Allowsyoutoenableloggingforaparticularcategoryoftrace.Theoptions
include:

TAG
SOCK
EIP
DCB
BUFF
THRD
ALL

Tag configuration trace


Socket trace
EIP session trace
Front end driver trace
Dump a counted buffer to hex
Thread trace
all of the above

Note:Themoredetailedthelogging,thelargertheamountoflogdatawillbe
generated.Thiscouldcreatealarge,cumbersomelogfile,orcausemultiple
wraparoundsthatwriteoverdata.
Example

Thefollowingparametersettings:
[ABCLX]
DebugLevel=WARNN|ERROR|TRACE
DebugCategory=ALL

39

40

ABCLX driver
wouldsendthefollowingloginformationtoafilecalledABCLX.log:

ThisfileisdeliveredtotheWindowssystemdirectory(e.g.C:\Windowson
WindowsXP).Itslocationisnotconfigurable.
SeetheCitectSCADAKnowledgeBasearticleQ3994forfurtherexamplesof
ABCLXlogging.
See Also

Citect Kernel
diagnostics

DriverspecificCitect.INIparameters
TheCitectKernelwindowdiagnosticsframework(commonlyreferredtoasthe
Kernel),istheprimarygatewayintotheinternalworkingsofCitectSCADAat
runtime,andisprovidedfordiagnosticsanddebuggingpurposesonly.
TheKernelcandisplayseveraldifferentdiagnosticwindowseachdisplayingan
activeviewintotheworkingsoftheCitectSCADAruntimesystem.Each
windowisdisplayedwhenselectedfromtheCitectKernelViewmenu.
FormoredetailsofusingtheCitectKernel,seetheCitectSCADAUserGuide.
Warning!UsetheKernelwindowwithcare,becauseonceyouareintheKernel,
youcanexecuteanyCicodefunctionwithnoprivilegerestrictions.You(or
anyoneusingtheKernel)hastotalcontrolofCitectSCADA(andsubsequently
yourplantandequipment).
Setting up the Kernel
YouneedtoconfigureyourCitectSCADAprojecttoprovideruntimeaccessto
theKerneldiagnosticswindow.Youcandooneorbothofthefollowing:

enabletheKernelonCitectSCADAstartup;or

addtheKernelmenuitemtotheruntimeCitectSCADAControlmenu.

ABCLX driver
ToenabletheKerneldiagnosticswindowonCitectSCADAstartup:
1

IntheCitectExplorermenu,selectView|ConfigurationFile.Thislaunches
WindowsNotepadandloadsanddisplaystheCitect.INIfileformanual
editing.

Scrolldowntothe[Debug]category,andeditthesectiontoincludethe
followingparameter:

[DEBUG]
Kernel=1

SaveandCloseNotepad.
Note:TheCitect.INIfileislocatedintheWindowsfolder.Typically:
C:\WINDOWSorC:\WINNT.

ThisparameterwillcausetheautomaticdisplayoftheCitectKernelwindow
diagnosticsframeworkuponstartupofCitectSCADA.Swaptoittoviewwhats
happeninginsideCitectSCADAatruntime.
ToaddtheKernelmenuitemtotheCitectSCADAruntimeControlmenu:
1

InCitectExplorerorProjectEditor,launchtheComputerSetupWizard
andselectCustommode:

ClickNextuntilyoureachtheSecuritySetupControlMenupage:

41

42

ABCLX driver

ChecktheKernelonmenuoptionandclickNextuntilfinished.

Atruntime,youcandisplaytheKernelwindowbyselectingKernelfromthe
Controlmenu(topleftcorner)ofCitectSCADA.IfyoudonothaveaTitleBar
displayedinyourruntimeproject,youcanaccesstheControlmenubypressing
Alt+Spacebar(iftheAltSpaceenabledoptionistickedontheSecuritySetup
Keyboardpage).
Note:Youshouldunchecktheseoptionsbeforehandover,topreventaccidental
orunauthorizeduseoftheKernelinthedeliveredsystem.
The Diagnostic Windows
ThekeydiagnosticwindowsincludedwiththeKernelfortestingI/Odevice
communicationsaretheMainwindow,theI/ODeviceswindow,andtheDriver
Statisticswindow:

TheCitectKernelMainwindowdisplaysthediagnosticmessagesalineat
atimeindicatingthecurrentCitectSCADAstartupoperationandstatus.
Whenrunning,theMaindiagnosticswindowcontinuestoreportchangesin
thestatusoftheI/Odevices.

TheCitectKernelUnitwindowdisplaysthecurrentstatusofalldevices
definedintheI/ODevicedatabase.

TheCitectKernelDriverwindowdisplaysinformationabouteachdriver
intheCitectSCADAsystem.Thiswindowisonlydisplayedifthecomputer
isconfiguredasanI/OserverwithphysicalI/Odevicesattached.

ABCLX driver
Citect Kernel Main window
AfteryourI/Odevicesareproperlyconfigured,theMainwindowisparticularly
usefultocheckthatallofyourI/Odevicescomeonlinecorrectlywhen
CitectSCADAisstarted.

Firsttheportswillbeinitialized,thentheI/ODevicewillbebroughtonline.If
thereisaproblem,CitectSCADAwilldisplayamessage;PLCnotresponding,
I/ODeviceOfflineorsimilar.
SomeI/ODevicesmaytaketwoattemptstocomeonline.Ifthisisthecase,
CitectSCADAwillwait(usually30seconds)andtryagain.IfyourI/Odevice
doesnotcomeonlineafterthesecondattempt,youshouldcheckyour
configuration(atbothends)andthenetworkinbetween.

43

44

ABCLX driver
Commonproblemsthatmaycausestartuperrorsinclude:

IncorrectcomputersetupusuallysolvedbytheComputerSetupWizard

Networkingfaultsorbadhardwarecableswronglywiredorunplugged,
orequipmentnotpoweredup,orfaultyequipment

Communicationfaultsmostoftenaconfigurationmistakelikewrong
protocolsettings,wrongport,etc.

Note:TheKernelMaindiagnosticwindowcontainslegacybehaviorfromthe
earlydaysofWindows.Ithasnoscrollbar,soasnewmessagesareaddedaline
atatimetotheendofthedisplayedlistofmessages,andthewindowisfilled,
theoldestofmessages(atthetopofthewindowlist)willscrolloutofviewand
beirretrievable.However,youcanviewthisinformationusingThe
SysLog.DATfile.
Citect Kernel Unit window
TheUnitdiagnosticswindow,launchedviathePageUnitKernelcommand,
displaysthecurrentstatusofalldevicesdefinedintheI/ODevicedatabase.In
thiswindow,usethePageUporPageDownkeystobrowsethroughthe
availabledevices.

TheimportantvaluestochecktoconfirmthatcommunicationswiththeI/O
deviceareenabledandrunningaretheServerStatusandClientStatusfields.
WhentheI/Odeviceisonline,thesewillbothdisplayRUNNING.
SearchfortheKernelPageUserCommandintheCitectSCADAUserGuidefor
adescriptionofallthefieldsdisplayedforeachI/OdeviceintheUnit
diagnosticswindow.

ABCLX driver
Citect Kernel Driver window
TheCitectKernelDriverwindow,launchedviathePageDriverKernel
command,displaysinformationabouteachdriverintheCitectSCADAsystem.
Thestatisticsitpresentsincludereadrequests,physicalreads,digitalreadsper
second,registerreads,cachereads,errorcount,timeouts,andsoon.Seethe
CitectSCADAUserGuideformoreinformationonthegeneralstatisticsit
presents.

NotethatinthecaseoftheABCLXdriver,theKernelDriverwindowincludes
additionalfieldsthatarenotnormallysupported.YouwillneedtopressVto
seetheseadditionalfields.Theyare:
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

45

46

ABCLX driver
Field

Description

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 Resp 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 Forward Open sessions to the PLC

Optimized Blocks
Tags Subscribed

Number of optimized blocks created by the driver. Should match number of


Forward Opens.
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.
Number of tags that still are considered good but have some issue that needs to
be looked at
Number of connection attempts that have been timed out

Tag Config Warnings


Init Timeout

Maintaining the project


database

Afteryouveeditedyourprojectforawhile,theprojectdatabasecanbecome
fragmentedandproblematic.Goodpracticeduringprojectdevelopmentisto
periodicallyclearoutallduplicatedrecordsandanyorphanedones.

ABCLX driver
Improperlymaintaineddatabaseshaveproventobeasourceofcommunication
problemsatruntime.Themajorityofallcommunicationsproblemscomefrom
havingduplicatedororphanedrecordsinthecommunicationsdatabase.
SometimestherewillbeorphanedrecordsfromapreviousI/OServerleft
behindinthedatabasefiles.AsalltheformsareindexedontheI/OServername,
youcanusethescrollbartoquicklynavigatetotheendofthecurrentrangeof
recordsforaparticularI/OServerandexaminethelastfewandnextfewrecords
tovalidatethattheyshouldbethere.Ifyoufindanyextra(unwanted)records,
deletethem.
Youshouldalsomakesurethattherearenoduplicatedrecords.Usetherecord
searchfacilitytosearchforduplicateentriesofdevicesthatarecausing
unexplainedcommunicationerrors.Ifyoufindanyextra(unwanted)records,
deletethem.
Onceyouhavedeletedorphanedandduplicatedrecords,packtheproject.
Packingthedatabaseremovesdeletedrecords,andreindexesthedatabase.To
packtheprojectdatabases,fromtheFilemenuinCitectProjectEditor,select
Pack.
ThereisinformationaboutthewayCitectSCADAhandlesOIDsthatyoushould
beawareofbeforeattemptingthetasksmentionedhere.Formoreinformation
onOIDs,seetheCitectSCADAKnowledgeBasearticleQ3657.(TheKnowledge
BasecanbeinstalledfromtheCitectSCADACD,ordownloadedfrom
www.citect.com.)

Tag-based driver
considerations

TheCitectSCADAABCLXdriverusesOIDs(objectidentifiers)touniquely
identifytagaddresses.TheseOIDsaregeneratedbyCitectSCADAduring
compilation.
YouneedtobeawareofthewayOIDsareimplementedforatagbaseddriver,
asthiswillavoidpotentialtagmismatchesoccurring.Thisisaparticular
concernwithnetworkdistributedsystems.Forexample,alltheCitectSCADA
serversandclientsmusthavetheexactlythesamevariabledatabaseonthem,
otherwiseaclientcouldmakearequestforatagwithanOIDthateitherdoes
notexistontheI/OServer,orreferstoadifferenttag.Forthisreason,caremust
betakenwheneditingavariablesdatabase.
Thefollowinginformationisintendedtodrawattentiontoactivitiesthatrequire
carefulattentionbecauseofthepotentialimpacttheymayhaveontheOIDsin
yoursystem.
FormoreinformationonOIDs,seetheCitectSCADAKnowledgeBasearticle
Q3657.(TheKnowledgeBasecanbeinstalledfromtheCitectSCADACD,or
downloadedfromwww.citect.com.)

47

48

ABCLX driver
Project IDs
OIDsaregeneratedusingaProjectID,andtheposition(i.e.recordnumber)in
theassociatedvariable.dbffile.Therefore,itisimperativewhenusingdisplay
clients,standbyservers,andsoon,thataprojectrestoredtoaPChasa
consistentProjectIDacrossallthemachinesincludedinasystem.
ThisshouldbecheckedwheneveryourestoreaprojecttoaPC,becauseifthe
ProjectIDisalreadyusedbyanotherprojectonthatparticularcomputer,Citect
willgenerateanewProjectIDnumber.
AprojectsIDnumbercanbedeterminedbyselectingaprojectinCitectExplorer
andviewingitsproperties.TheProjectIDisshownontheGeneraltab.Itis
alsostoredintheprojectbackupfile(.ctz).
Using Include Projects
YoushouldensurethateachincludeprojecthasthesameProjectIDoneach
computerusingthesameincludeproject.Againitisimperativethatthisis
checkedafterrestoringaprojecttoacomputer.
Variable Databases
Ifyouhavedifferentvariable.dbffilesacrossyourplant,itispossibletohave
OIDmismatches.
Toavoidthis,ensurethatonceyouhavemadechangestoyourvariable.dbfon
yourPrimaryServer,thatyouresettheOID(incitect.inifileset[OID]Reset=1)
anddoapackandfullcompile(i.e.ensurethatincrementalcompileisturned
off).
Oncethisisdone,thevariable.dbffileshouldbecopiedtotheStandbyServer
andanyDisplayClientsusingtheproject.ThisensuresthatanOIDonyour
PrimaryServeristhesameastheOIDusedonyourDisplayClientand/or
StandbyServer.
Hint:Ifyouareusingincludeprojects,youshouldpackallyourvariable.dbf
beforeresettingtheOIDsanddoingafullcompileofyourproject.Thereisa
downloadabletoolavailablecalledPackAllthatwillpackallthevariable.dbfs
thatareusedinyourproject(eveniftheyareincludeprojects).Thistoolis
locatedunderDatabaseToolsintheToolboxsectionofwww.citect.com.
See Also

Frequently Asked
Questions

FrequentlyAskedQuestions
Thissectionaddressesproblemsthatmaybeencounteredwhensettingupand
operatingtheABCLXdriver.Theyhavebeengroupedintocategoriestohelp
youeasilydeterminethelikelysolutiontothetypeofproblemyoure
encountering.
TheanswerstothesequestionstypicallypointtoanarticleintheCitectSCADA
KnowledgeBase,whichcanbeinstalledfromtheCitectSCADACD.Themost

ABCLX driver
currentversionoftheKnowledgeBasecanalsobedownloadedfromtheCitect
website(www.citect.com).
Startup issues
WhydoIgetaChannelOfflineCannotTalkerrormessagewhenthe
ABCLXdriveriscomingonline?

WhydoesittakesolongfortheABCLXdrivertocomeonline?

EverytimeIstartCitectSCADA,Iseeanuisancehardwarealarmformy
ABCLXdevicethatbecomesinactiveafterabout30seconds.HowdoIstop
thishappening?

CTAPI issues
UsingCTAPItoreadtagsfromanABCLXdevicecausesblanktagsto
appear.
Why do I get a Channel Offline Cannot Talk error message when the ABCLX driver is
coming online? TherecanbeanumberofreasonswhyABCLXdrivercannot
bringitsdevicesonlineatstartup.YoushouldinitiallyconfirmthattheBoards,
PortsandI/ODevicesformsarefilledoutcorrectly.Youshouldalsoconfirmthat
youhaveenoughidletimeinyourPLCprogramtoallowcommunication
requeststotakeplace.
SeetheKnowledgeBasearticleQ4009forfurtherinformationonhowto
diagnosethisproblem.Italsoincludesinformationaboutparametersettings
andadjustmentsthatmayimpactthisprocess.
Why does it take so long for the ABCLX driver to come online? WhentheABCLX
driverattemptstobringdevicesonline,itinitiatesaprocessofdownloadingand
subscribingtherequiredtagsfromtheassociateddevices.Ifaprojecthasalarge
numberoftags,thisprocessmayoverlapwithdriverpolling,causing
unnecessarydelays.InsufficientidletimeinthePLCprocessormayalsocause
Citectdriverrequeststobeprolongedunnecessarily.
TheKnowledgeBasearticleQ4001providesadescriptionofhowCitectSCADA
bringstheABCLXdriveronline.
Every time I start CitectSCADA, I see a nuisance hardware alarm for my ABCLX device that
becomes inactive after about 30 seconds. How do I stop this happening? Hardware
alarmsaregeneratedbyCitectSCADAwheneverInitUnitfails.Inthecaseof
ABCLXdriver,thiscanoccurbecausetherequiredtagshavenotdownloaded
andcompletedsubscription.
Asaresult,thereisnocurrentworkaroundorsolutionforsuppressingthis
hardwarealarm.However,itshouldbenotedthatthespeedatwhichadriver
comesonlinecanbeimpactedbynetworkbandwidth,PLCCPUutilization,and
thenumberoftagsandthenumberofbadtags.

49

50

ABCLX driver
PleaserefertoKnowledgeBasearticlesQ4001andQ4009formoreinformation
onhowtodiagnoseandfinetunethestartupprocess.
Using CTAPI to read tags from an ABCLX device causes blank tags to appear. Using
CTAPItoreadtagsfromadeviceusingtheABCLXdrivercausesthefirsttagto
displayitsvaluecorrectly,buttheresttoappearblank.Thisiscausedbya
blockingissueinCTAPI.
TheworkaroundistochangetheProtdir.dbfentryforABCLXfroma
Max_Lengthof2048to2032,andBit_Blockfrom2048to2032onallCitect
computersonthesystem.Thiswillensurethatalltherequestedtagsareread
correctly.Pleasenote,however,thatthiswillreducethemaximumrequest
lengthfrom256bytesto254bytes,whichreducesthemaximumsizeofarrays
andstrings.
Itisimperativethatthischangebemadetotheprotdir.dbffileinthe\Citect\Bin
andthe\Citect\User\Includedirectories.
SeetheKnowledgeBasearticleQ4068formoredetails.

Index
A
ABCLX
About,1
ABCLXDriverPack,2
Advancedconfiguration,20
FailOnBadDatamode,34
modedetection,34
performancetuning,28
redundancy,27
scanrates,35
sessioncontrol,30
statustags,32

ControlLogixsystem
preparingforcommunication,2
requirements,2
Creatingatestproject,3
CustomizingaprojectusingCitect.iniparameters,20

D
DataCoercion,11
Datatypes,10
datacoercion,11
DriverErrors,37
DriverPack
installation,2

E
exclusiveconnection,5

C
Citect.iniparameters,20
CitectSCADAproject
addingdevices,6
addingtags,9
advancedconfiguration,20
arraytagaddressing,13
configuring,6
customizing,20
datatypes,10
indivdualtagaddressing,12
programtagaddressing,17
qualityandtimestamptags,17
redundancy,27
CommunicatingwiththePLC
settingup,3
Configuringredundancy,27
Configuringyourproject,6
addingdevices,6
addingtags,9
advancedconfigurations,20
arraytagaddressing,13
customizing,20
datatypes,10
indivdualtagaddressing,12
programtagaddressing,17
qualityandtimestamptags,17
redundancy,27

H
HardwareAlarms,36

I
IdentifyingbadtagsusingFailOnBadData,34
Installation,2
Introdcution,1

K
Kerneldiagnostics,40

L
Logging,38

M
Maintenance,20
projectdatabase,46
Modedetection,34

P
Performancetuning,28
PLC
communicationsetup,3
PreparingtheControlLogixsystem,2
programtags

52

Index
addressing,17
Project
addingdevices,6
addingtags,9
advancedconfiguration,20
arraytagaddressing,13
configuring,6
customizing,20
datatypes,10
individualtagaddressing,12
qualityandtimestamptags,17
project
programtagaddressing,17
Projectdatabase
maintenance,46

SettingUpCommunications
ExclusiveConnection,5
Settingupcommunications
creatingatestproject,3
serialconnectionvia1761NET_ENImodule,5
Statustags,32
SysLog.DATfile,36

Redundancy,27
RoutePath,25

Tagaddressing
arrays,13
indivdual,12
programtags,17
Tagbaseddriverconsiderations,47
Testproject,3
Timestamptags,17
Troubleshooting,36
drivererrors,37
hardwarealarms,36
Kerneldiagnostics,40
logging,38
SysLog.DATfile,36

Q
Qualitytags,17

Scanrates,35
SessionControl,30

UsingaroutepathtolocatearemoteCPU,25

S-ar putea să vă placă și