Allen Bradley's PLC Programming Handbook

 

Allen Bradley Family of PLCs

 

This handbook is a collection of programming overviews, notes, helps, cheat sheets and whatever that can help you (and me) program an Allen Bradley PLC.

If you have experience with AB then please contribute.

An Introduction to RSLogix5000 Tags

Tags are the method for assigning and referencing memory locations in Allen Bradley Logix5000 controllers. No longer are there any physical addresses such as N7:0 or F8:7 which use symbols to describe them. These have been replaced with tags which are a pure text based addressing scheme. This is a departure from the more conventional ways of programming PLC’s, which includes Allen Bradley’s earlier line of PLC5 and SLC 500 controllers.

One of the hardest transitions from the older systems is realizing how the tag database works. The person with experience in Allen Bradley systems will recognize many of the instructions and be at home with the editor in RSLogix 5000. Understanding the tag database is the first major hurdle in becoming comfortable with the ControlLogix and CompactLogix systems. So let’s dig in and get started.

The Way We Used To Be

Earlier Allen Bradley PLCs programmed with RSLogix 5 and RSLogix 500 software had data files to store I/O and other internal values. These different data files could only hold one data type. A data type defines the format and the size of the stored value.

Default Data Files

Data File Descriptions

File #

Type

Description

O0

Output

This file stores the state of output terminals for the controller.

I1

Input

This file stores the state of input terminals for the controller.

S2

Status

This file stores controller operation information useful for troubleshooting controller and program operation.

B3

Bit

This file stores internal relay logic.

T4

Timer

This file stores the timer accumulator and preset values and status bits.

C5

Counter

This file stores the counter accumulator and preset values and status bits.

R6

Control

This file stores the length, pointer position, and status bits for control instructions such as shift registers and sequencers.

N7

Integer

This file is used to store bit information or numeric values with a range of -32767 to 32768.

F8

Floating Point

This file stores a # with a range of 1.1754944e-38 to 3.40282347e+38.

 

While this method made it easy for using instructions, it provided a challenge for logically grouping different data types together according to function. For instance, in machine control, a motor may have a start, stop, speed and alarm code each with its own data type. Thus, the data was “scattered” throughout the data files.

 

File #

Name

Data Type

I1

Start

Input

I1

Stop

Input

F8

Speed Setpoint

Floating Point

N7

Alarm Code

Integer

Comparing the Old and New

The Logix5000 controllers have done away with data files and in its place is the tag database. The tag database organizes memory locations in one place. Each tag is assigned its own data type. The table below shows the association between the current data types and the older systems with data files.

 

RSLogix 5 / 500

 

RSLogix 5000

File #

Type

   

O0

Output

 

Input and output modules, when configured, automatically create their own tags like Local:0:I.Data.0

I1

Input

 

S2

Status

 

Use the GSV and SSV instructions to get status information such as the CPU time, module states and scan times.

B3

Bit

 

Assign the Boolean (BOOL) data type to the tag.

T4

Timer

 

Assign the TIMER data type to the tag.

C5

Counter

 

Assign the COUNTER data type to the tag.

R6

Control

 

Assign the CONTROL data type to the tag.

N7

Integer

 

Assign the double integer (DINT) data type to the tag.

F8

Floating Point

 

Assign the REAL data type to the tag.

Creating a Tag

One way to create a new tag is right click on the Controller Tags in the Controller Organizer and select New Tag. Even faster is the Ctrl+W hot key.

 

 

The following dialog box pops up.

 

 

The Name given to the tag has the following rules:

While tags are not case sensitive, it is good practice to mix cases for readability. It is much easier to read Line1_Start then LINE1START or line1start.

In addition, the tag database list sorts alphabetically. Therefore, it is best to use similar starting characters when you want tags to be together in the monitor list.

 

Tags Named for Grouping

 

Tags Not Named for Grouping

Level_High

 

High_Level

Level_Low

 

Insert_Nut

Insert_Nut

 

Knife_Stop

Knife_Stop

 

Low_Level

 

Use the Description field for a longer description of the tag. It is best to keep names short yet not cryptic. Tag names are downloaded and stored in the controller but the description is not as it is part of the documentation of the project.

The tag Type defines how the tag operates in the project

 

Base

A tag that actually defines the memory where the data is stored

Alias

A tag that represents another tag

Produced

Send data to another controller

Consumed

Receive data from another controller

 

Alias tags mirror the base tag to which they refer. When the base tag value changes so does the alias tag. Use aliases in the following situations:

Produced and consumed tags make it possible to share tags between controllers in the same rack or over a network. This article does not cover this aspect.

Select a Data Type for the tag by typing it in or by clicking on the ellipsis button and selecting it from the list. A data type is a definition of the size and layout of memory allocated for the created tag. Data types define how many bits, bytes, or words of data a tag will use.

The term Atomic Data Type refers to the most basic data types. They form the building blocks for all other data types.

 

Data Type

Abbreviation

Memory bits

Range

Boolean

BOOL

1

0-1

Short Integer

SINT

8

-128 to 127

Integer

INT

16

-32,768 to 32,767

Double Integer

DINT

32

-2,147,483,648 to 2,147,483,647

Real Number

REAL

32

+/-3.402823E38 to +/-1.1754944E-38

 

Logix5000 controllers are true 32-bit controllers, meaning the memory words are 32-bits wide. No matter what, a tag always reserves 32 bits of memory even if it is a Boolean or integer data type. For this reason, it is best to use a DINT when dealing with integers. Furthermore, a Logix5000 controller typically compares or manipulates values as 32-bit values (DINTs or REALs).

A Logix5000 controller lets you divide your application into multiple programs, each with its own data. The Scope of the tag defines if a tag is global (controller tags) and therefore available to all programs or local (program tags) to a select program group. Pay careful attention to this field as creating it in the wrong area may lead to some confusion later on as to its location.

 

 

Controller Tags are available to all programs. You cannot go wrong using controller scoped tags unless you easily want to copy and paste programs. A tag must be controller scoped when used in a Message (MSG) instruction, to produce or consume data and to communicate with a PanelView terminal.

Program Tags are isolated from other programs. Routines cannot access data that is at the program scope of another program. Having program tags make it easy to copy/paste programs and not have to worry about conflicting tag names. Make sure though that no controller tags are named the same as program tags.

Style is the form in which to display the tag by default. The following table provides you with information on the base and notation used for each style.

 

Style

Base

Notation

Binary

2

2#

Decimal

10

 

Hexadecimal

16

16#

Octal

8

8#

Exponential

 

0.0000000e+000

Float

 

0.0

Edit and Monitor Tags

To edit existing tags select the Logic > Edit Tags menu item. A spread sheet like view lets you create and edit tags.

 

 

Clicking the + sign next to a tag reveals its structure. For a DINT tag this is the 32 individual bits that make up the tag which will not be of interest if you are using the tag as a number rather then individual bits. If you do wish to use the individual bits then you can address them in this way with the tag name followed by a period and then the bit position (e.g. MyTag.5). Shown below is the expanded structure for a TIMER. Notice it is made of two DINTs and three BOOLs. In this case, the Booleans are packed into one DINT and therefore a timer uses three DINTs of memory.

 

An Easier Way to Create Tags

The easiest way to create tags is on the fly while programming. When an instruction is first used a “?” will indicated the need for a tag. There are three options at this point:

  1. Double click on the “?” and select an existing tag from the drop down box.
  2. Right click on the “?” and select new tag.
  3. Double click on the “?” and type in the tag name. If it does not all ready exist, then right click on the tag name and select Create “NewTagName”. Be careful with this method not to use spaces or special characters.

The nice thing about all these methods is that RSLogix5000 will automatically fill in the correct data type according to the instruction used.

Another quick method is to drag and drop an existing tag to a new instruction. Make sure to click on the tag name rather then the instruction.

 

Conclusion

These are the basics of tags. The advantages are:

  1. Tags, if done right, create a level of documentation that is stored in the PLC.
  2. The software does an automatic housekeeping of memory locations. There’s no more worrying about physical addressing and memory conflicts.
  3. Structures can be more easily put together based on function rather then data type.

Advance subjects include arrays, user defined data types (UDT) and Add-On Instructions. Hopefully, you will continue to learn more about the power of tags. There is no doubt that if you grasp the principles presented here you will be well on your way to using and troubleshooting any Logix5000 controller.

A Quick Tutorial on RSLogix Emulator 5000

RSLogix Emulator 5000 is a software simulator for the Allen Bradley line of Logix 5000 controllers (ControlLogix®, CompactLogix®, FlexLogix®, SoftLogix5800® and DriveLogix®).   The goal is to mimic the function of a PLC without the actual hardware and thus do advanced debugging.  More information can be found in the AB publication LGEM5K-GR015A-EN-P.

As a quick introduction we’ll go through a simple example of setting up a simulation.  This involves three major steps.

  1. Setting up the chassis monitor.
  2. Creating a connection in RSLinx.
  3. Creating a project with associated emulation hardware.

Setting up the Chassis Monitor

To start the Chassis Monitor, click Start > Programs > Rockwell Software > RSLogixEmulate 5000 > RSLogix Emulate 5000 Chassis Monitor.
 

RSEmulator 00 Open
 
When the emulator opens up you’re confronted with what looks like an empty chassis.  In slot 0 is an RSLinx module which has to be there for the emulator communications to work.  Your slot 1 might have another irremovable RSLinx module depending if you are running RSLogix Enterprise.
 
RSEmulator 01 - Empty Chassis Monitor
 

From here we set up our hardware configuration for simulation.  Our first step will be to add the CPU.  In this case it is a special one called an Emulation Controller.

  1. Click Slot > Create Module.
  2. Choose the Emulator RSLogix Emulate 5000 Controller.
  3. Chose slot 2 for the controller
  4. Click OK to add it to the chassis monitor.
    RSEmulator 02 Select Emulator Controller
  5. At this point you may be accosted with a message about previous configurations.  Just select Reset the Configuration to Default Values and click NEXT.
  6. The next two dialog screens are for setting up the controller details.  Click NEXT and FINISH to accept all the defaults.
    RSEmulator 03 Emulator Controller Setup 1
     
    RSEmulator 04 Emulator Controller Setup 2
     
     

Next we’ll add some input/output simulation.

  1. Click Slot > Create Module.
  2. Choose the 1789-SIM 32 Point Input/Output Simulator.
  3. Chose slot 3 for the simulator and click OK.
    RSEmulator 05 Select Input Simulator
  4. Accept the defaults for the setup by clicking NEXT and FINISH.
    RSEmulator 06 Input Simulator Setup 1
     
    RSEmulator 07 Input Simulator Setup 2
     

The chassis monitor will now have two emulation modules in it ready to go. 

RSEmulator 08 Full Chassis

 

Creating a connection in RSLinx

  1. Start RSLinx under Start > Programs > Rockwell Software > RSLinx > RSLinx Classic
  2. Click Communications > Configure Drivers.
  3. Select the Virtual Backplane (SoftLogix 58xx) driver from the Available Driver Types list.
  4. Click Add New. The Add New RSLinx Driver dialog box appears. Click OK.
  5. The new driver appears in the Configured Drivers list. Click Close.
RSEmulator 09 Create Driver
 

Using RSLogix Emulator in a Project

To use the emulator in a project you must setup the hardware correctly.

  1. Start the RSLogix 5000 software and create a new project.
  2. Under the New Controller window type select an Emulator – RSLogix Emulator 5000 Controller.  Give it a name and assign it to the same slot as the one you put in the Chassis Monitor which in our example is slot 2.  Click OK.
    RSEmulator 10 Setup Processor
  3. In RSLogix 5000's Controller Organizer, right click on the I/O Configuration folder, and then click New Module. The software displays the Select Module window.
  4. Open the Other folder. Select the 1756-MODULE from the modules list and then click OK.
    RSEmulator 11 Setup Simulator Card
  5. The software displays the New Module window.
    a.  Add a Name for the card.
    b.  In the Slot field put the number that corresponds with the Chassis Monitor.
    c.  For the Connection Parameters put in the following and click OK
      Assembly Instance  Size
    Input 1 2
    Output 2 1
    Configuration 16 0
     
    RSEmulator 12 Setup Simulator Card Setup 1
  6. On the next Module Properties screen make sure to change the Requested Packet Interval to 50.0 ms.
    RSEmulator 13 Setup Simulator Card Setup 2
     

Ready, Set, Go

You are now ready to use the emulator just like you would any other PLC.   Open Who Active and set the path to the RSLogix 5000 Emulator.
 
RSEmulator 14 Connecting
 
The inputs can be simulated in the emulator’s Chassis Monitor by right clicking on the module and selecting Properties.  Under the I/O Data tab is the ability to toggle each of the inputs on or off.
 
RSEmulator 15 Simulating
 
 

Note:
RSLogix Emulator is sometimes erroneously called RSEmulator.
 

Getting Started with the Logix5000 PIDE Function Block

The PIDE (Enhanced PID) is an Allen Bradley Logix5000 family (ControlLogix, CompactLogix, FlexLogix, SoftLogix) function block that improves on the standard PID found in all their controllers.  First impressions of this function block are quite intimidating.  If you try to dive into it head first you may just end up banging your head against a wall.  Many will be quite happy to stick with the tried and true PID instruction but to compete with the more advanced process control applications the PIDE boasts the following.

Still interested?  What we want to do here is basically get you off the ground with the PIDE, distill all the options to the essentials and get it working.

The PIDE is only available as a function block (sorry, no ladder).  Like the PID instruction it is best to set it up in its own periodic task.  The period of the task automatically becomes the sample rate (DeltaT) of the PID loop.  Just make sure when adding the new routine to the task to select the Type as "Function Block Diagram." 

Adding the PIDE Function Block

The PIDE instruction can be added from the Instruction Toolbar under the Process tab.

 

PIDE Instruction

Once you plop a function block onto a sheet it automatically creates a program tag for the instruction which stores all the settings.  The parameters can be set or monitored by wiring input and output references or by clicking on the ellipsis box in the top right corner to reveal the block properties. 

Opening the block properties for the PIDE instruction before RSLogix5000 version 15 meant you would be accosted with a long list of parameters.

 

PIDE Block Properties Revision 13

Version 15 has at least organized some of the more common settings (but not all) under tabs and groups.
 

PIDE Block Properties Revision 15

The most essential settings are:

Name

V15 Location

Description

.PV

Must be wired in from a tag.

The Process Variable is the reading (temperature, pressure, flow, etc.) that is to be controlled by the PID loop.

.PVEUMax
.PVEUMin

EUs/Limit tab in the Engineering Units Scaling group

The Process Variable Engineering Units Maximum and Minimum.  The value of PV and SP which corresponds to 100 % span of the process variable.

.SPProg
.SPOper

Should be wired in or set in the tag.

The Set Point is the theoretical perfect value of the process variable.  SPProg is the value to use when in program mode and SPOper is used when in operator mode.

.SPHLimit
.SPLLimit

EUs/Limit tab in the SP Limits group

The Set Point High Limit and Set Point Low Limit clamp the maximum and minimum values of the set point.  If SPHLimit > PVEUMax or SPLLimit < PVEUMin then a fault will occur.

.PGain

General Configuration tab in the Gains group

Proportional gain.  Enter 0 to disable.

.IGain

General Configuration tab in the Gains group

Integral gain.  Enter 0 to disable.

.DGain

General Configuration tab in the Gains group

Derivative gain.  Enter 0 to disable.

Program/Operator Control

The first thing to understand when programming a PIDE block is the different controls and modes available. 

The Program/Operator control lets you transfer control of the PID loop between the user program and an operator interface such as an HMI.  Each control has separate set points and mode controls.  It's important to understand that when in Program Control the set point is determined by SPProg while in Operator Control its SPOper.  The SP output indicates the set point that the function block is actually using.

Control is determined by the following inputs:

Name

Description

.ProgProgReq

A program request to go to Program control.

.ProgOperReq

A program request to go to Operator control.

.OperProgReq

An operator request to go to Program control.

.OperOperReq

An operator request to go to Operator control.

 

The ProgOper output indicates the control of the PIDE instruction.  If the output is a 1 then it is in Program control and if the output is a 0 then it is in Operator control.  The Program request inputs take precedence over the Operator requests so that the program can lock out any operator overrides.  The ProgValueReset input clears all input requests.

Operating Modes

The PIDE instruction supports the following modes.

Mode

Description

Manual

While in Manual mode the instruction does not compute the change in CV.  The value of CV is determined by the control. If in Program control, CV = CVProg and if in Operator control, CV = CVOper.  Select Manual mode using either OperManualReq or ProgManualReq.  The Manual output bit is set when in Manual mode.

Auto

While in Auto mode the instruction regulates CV to maintain PV at the SP value.  If in program control, SP = SPProg and if in Operator control, SP = SPOper.  Select Auto mode using either OperAutoReq or ProgAutoReq. The Auto output bit is set when in Auto mode.

Cascade/Ratio

While in Cascade/Ratio mode the instruction computes the change in CV.  The instruction regulates CV to maintain PV at either the SPCascade value or the SPCascade value multiplied by the Ratio value.  SPCascade comes from either the CVEU of a primary PID loop for cascade control or from the "uncontrolled" flow of a ratio-controlled loop.  Select Cascade/Ratio mode using either OperCasRatReq or ProgCasRatReq.  The CasRat output bit is set when in Cascade/Ratio mode.

Override

While in Override mode the instruction does not compute the change in CV.  CV = CVOverride, regardless of the control mode.  Override mode is typically used to set a "safe state" for the PID loop.  Select Override mode using ProgOverrideReq.  The Override output bit is set when in Override mode.

Hand

While in Hand mode the PID algorithm does not compute the change in CV.  CV = HandFB, regardless of the control mode. Hand mode is typically used to indicate that control of the final control element was taken over by a field hand/auto station.  Select Hand mode using ProgHandReq.  The Hand output bit is set when in Hand mode.

 

If a fault occurs in the PIDE settings then it is forced into Manual mode and sets a corresponding bit in the Status words.  The InstructFault output is the indicator of a fault.  For more detail open the block properties and look at the Status at the bottom of the dialog box.  Refer to the Logix5000 Controllers Process Control and Drives Instructions (pub 1756-RM006D-EN-P) for details.

Basic Example

Here's an example where just the essentials are used.  This is a temperature control application if you hadn't guessed all ready.  I've changed the look of the function block by going into the block properties, selecting the Parameters tab and checking on (or off) the boxes in the Vis column besides the inputs and outputs that are of concern.

 

PIDE Instruction Example

Here's the run down on each of the inputs.

Input Description

PV

The process variable coming in from my TC card

PVEUMax
PVEUMin

The span of the temperature input that equals 0 to 100%.  In this case the temp goes from 0 to 1200 degC.

SPHLimit
SPLLimit

We could limit the set point but in this test case just set it equal to the PVEUMax/Min.

SPProg

I've decided to use Program Control so the Set Point needs to come in on this input rather then SPOper.

CVProg

When in manual mode the CV is controlled by this input.

DependIndepend

I prefer the Dependent form of the PID algorithm.

PGain
IGain
Dgain

The essential PID settings of Proportion, Integral and Derivative.

ProgProgReq

Set the request to use Program Control.

ProgAutoReq
ProgManReq

Since we're in Program Control these inputs control the Auto and Manual modes.  To run them off one switch the BNOT block is used to invert the bit.

 

Now for the outputs.

Output Description 

CVEU

The Control Variable output in engineering units.  Every PID control needs an output.  In this case it goes from 0 to 100%.

SP

The actual set point which in this case equals SPProg.

ProgOper

I want to see a 1 here just to make sure we're in Program Control

Auto
Manual

Indicates the operating mode.

InstructFault

If I screw something up then this bit will come on.

Common Problems

No output

  • The PID loop is in manual mode.  Put it into auto mode using ProgAutoReq.
  • Not in program control or SPProg is not set.  Use ProgProgReq to go into program control and set SPProg.
  • No values or not enough proportion (PGain) or integral (IGain).

Output is limited at 100

  • The SP High Limit is still set at the default of 100.  Change the value of SPHLimit.

Conclusion

Hopefully this basic introduction has gotten you off the ground.  Half the battle is just getting it to work.  Once that is done you can now really start to tinker with the power of the PIDE function block.

Further Reference

RSLogix 5000 Tips and Tricks

Everybody enjoys nifty little tips and tricks to get their work done faster. This listing is for Allen Bradley's RSLogix 5000 software. Feel free to add your own tips and tricks using the 'add comment' link.

General

  • To access Release Notes for this version of software, choose Release Notes from the Help menu.
  • The Quick View Pane, located below the Controller Organizer, provides "thumbnail" information for the selected component.
  • The Watch Pane, located below the language editor window, provides monitoring for all tags referenced in the active routine window.
  • The Controller Organizer is dockable. That is, you can drag it to the left or right side of the screen, or float it somewhere in between.
  • Hide/show the Controller Organizer via a toolbar button to make more display area for editors.
  • RSLogix 5000 supports Cut/Copy/Paste/Drag/Drop of components within the Controller Organizer as well as to other instances of RSLogix 5000.
  • Double-clicking on error messages displayed in the Error Window will navigate you to where the error was encountered.F4 and Shift-F4 can be used to move between errors.
  • You can reorder the columns in the tag editor by clicking on the title and dragging it to a new position.
  • To simultaneously display logic in multiple routines, select Window -> New Window and then arrange the windows manually. Or select Window -> Tile Horizontal.
  • To remove a yellow triangle warning symbol on a device, first check the connection status. If the status is "Connection is not scheduled", re-open the RSNetWorx software. Return to RSLogix 5000 software and the yellow triangle should be gone.
  • On one computer, you can install and simultaneously launch (run) multiple translated versions of RSLogix 5000 software.
  • Once you do a partial import of rungs, add-on instructions, or user-defined data types, you can't undo the import. If the import didn't work as expected, close the project without saving.
  • When you select a partial import, make sure to select the correct rung or trend file. Both files have L5X extensions and the software doesn't prevent you from selecting the wrong file. If you try to import a rung where a trend is expected, or vice versa, the software does display an error that the import failed.
  • Partial import of rungs works in all ladder routines, including Add-On Instructions.
  • In version 15, the Tag Editor added support for New Window.
  • To simultaneously display logic in multiple routines, select Window -> New Window and then arrange the windows manually. Or select Window -> Tile Horizontal.

Keyboard

  • Keyboard shortcuts are listed in the Online Help, under the "Navigating the Software" topic.
  • You can use Ctrl+Page Down and Ctrl+Page Up to move between tabs in a dialog or routine window.
  • You can use Ctrl+Tab and Shift+Ctrl+Tab to move between multiple RSLogix 5000 views.
  • You can use Ctrl+G to invoke the Go To dialog. The Go To dialog is convenient for navigating the software.
  • You can use Alt+Insert to open the Language Element browser in any of the language editors. You can also invoke this browser by pressing the Insert key in the LD, SFC and FBD editors.
  • You can use Ctrl+Space to invoke the Tag browser from within the ST editor.
  • You can use the Go To dialog (Ctrl+G) to quickly navigate to routines called by the current routine and to routines that call the current routine.
  • In the Sequential Function Chart Editor, you can use the Routine Overview (Ctrl+B) tool to view your entire SFC and help navigate to a specific area of your chart.
  • Double-clicking on error messages displayed in the Error Window will navigate you to where the error was encountered. F4 and Shift-F4 can be used to move between errors.
  • The Language Element browser is a shortcut to adding logic. In the any of the language editors: use Alt+Insert, type the instruction mnemonic, and press Enter. You can also invoke this browser by pressing the Insert key in the LD, SFC and FBD editors. This short cut can be much quicker than using the instruction toolbar.
  • As you use the keyboard to move the cursor around grid cells, press Alt+Down arrow to activate any controls that are active for that cell. This works in all grid-based editors, such as the Tag Editor, Data Monitor, etc. This gives you a way to access cell controls via the keyboard, rather than using the mouse.

Controller Projects

  • Whenever you go online using RSLogix 5000, changes made to controller are simultaneously made to a temporary copy of the project file (.ACD). Save makes these changes permanent. Therefore, an upload is only necessary to obtain the latest copy of the tag data in the controller.
  • Both Rockwell Automation and third-party sample projects are installed with RSLogix 5000. You can find them in the RSLogix 5000 Samples folder. These projects demonstrate program techniques and code that you can use to program select modules.
  • Avoid pointing one alias tag to another alias tag to ensure the application maintains the appropriate references after an upload.
  • Avoid pointing multiple alias tags to the same base tag to ensure the application maintains the appropriate references after an upload.
  • All tag names are downloaded and resident in the controller along with your logic.
  • On download, if the ControlNet schedule stored in the offline RSLogix 5000 project file is old, RSLogix 5000 will retrieve the latest ControlNet schedule from the associated RSNetWorx project file. To make an association to an RSNetWorx project file, use the RSNetWorx tab in the Module Properties dialog of the ControlNet scanner.
  • RSLogix 5000 supports moving your project from one Logix platform/controller to another.
  • ACD, L5K, CSV, and L5X files are independent of which translated version of RSLogix 5000 imports or exports the file. The software doesn't create language-specific import/export files.
  • Use any translated version of RSLogix 5000 software to go online to a controller without having to re-download.
  • In a safety controller, standard tags in a safety mapped relationship follow safety restricted states. For example, a standard tag mapped to a safety tag is read-only in a safety locked state.
  • Use Add-On Instructions to initialize tag values to specific values at the beginning of each routine or program scan. Then source protect the AOI to assure that values are correctly initialized and not overwritten manually.
  • The order of members within a User-Defined Data Type affect the memory size of the data type. Within the UDT, keep members of the same data type together.

I/O Configuration

  • Module icons in the I/O Configuration folder change to indicate the module has faulted or the connection to the module has been interrupted.
  • To remove a yellow triangle warning symbol, first check the connection status. If the status is "Connection is not scheduled", re-open the RSNetWorx software. Return to RSLogix 5000 software and the yellow triangle should be gone.
  • To easily find a module in the Select Module Type dialog, simply start typing any part of the module name or description. When you start typing, the Find Module dialog is launched automatically.
  • Use rack optimized communication formats for digital I/O modules to minimize amount of controller memory and communications overhead associated with these modules.
  • RSLogix 5000 automatically creates controller tags when you create an input or output module. You can reference these tags directly in your logic.
  • Use alias tags to assign names to specific input/output data and/or to provide a short alternative to lengthy structure member names.
  • When you configure an analog I/O module, hold the shift key as you move the slider to increment HH, H, L, and LL values in whole numbers.
  • Copy I/O data to a User-Defined Type (UDT) so you can synchronize I/O data with program scan. The UDT also enables easier mapping of physical I/O.

Tasks, Programs and Equipment Phases

  • An event task in Logix is similar to the processor input interrupt (PII) in the PLC-5. Multiple event tasks can exist in the controller, each configured to execute at the initiation of independent triggers.
  • A periodic task in Logix is similar to the selectable timed interrupt (STI) in the PLC-5. Multiple periodic tasks can exist in the controller, each configured to execute at independent rates.
  • Double-click on a state in an Equipment Phase to navigate to the logic for that state.
  • Use RSBizWare Batch software to create Equipment Phases. Use the Equipment Editor to create the phases, define parameters, and synchronize the phases with an RSLogix 5000 project.
  • Use any programming language (Ladder, Structured Text, FBD, or SFC) to program state routines in Equipment Phases.
  • The fault routine for an Equipment Phase is the same as the fault routine for a program. Use a fault routine to allow logic to run before the controller faults due to a programming error.
  • The Prestate routine runs all the time, even when the Equipment Phase is not active.
  • The Prestate routine for an Equipment Phase is optional. Use the Prestate routine to execute the error detection logic for your phases.
  • You don't have to implement all the available states in an Equipment Phase. On the Equipment Phases properties, check the "Complete State if not implemented" option.
  • In the Phase Monitor, the states you can write code have action names and have a command word leading into the state, such as Start leads to the Running state. You add routines to these states. Waiting states don't require routines. The phase waits for a command to move to the next state. For example, Idle and Hold.

Tags, Data Types and Other Data

  • As you organize, add, or delete members of a User-Defined Data Type, the software adjusts the associated tag members and values accordingly so that remaining members retain their values.
  • In the tag browser, click the >> button to display the tag filter. Use the tag filter to display unused tags or tags of a particular data type.
  • The tag browser filters tags in some situations. If you don't see a tag you expect, change the tag filter.
  • In version 15, the Tag Editor added support for New Window.
  • You can use arrays to do indirect addressing. RSLogix 5000 supports arrays of one, two, and three dimensions.
  • You can create a recipe by creating a new data type and then creating a tag which uses that data type. Your new data type can contain descriptive field names.
  • RSLinx uses memory in a Logix controller to read data values. Use the following equation to estimate the memory needed: (1.5Kbyte + (Number of individual tags * 45 bytes) + (Number of array or structure tags * 7))
  • The Watch Pane, located below the language editor window, provides monitoring for all tags referenced in the active routine window.
  • You can trend a tag by right-clicking the tag and choosing "Trend Tag ".
  • You can find all occurrences of a tag by right-clicking the tag in logic and choosing "Find All ".
  • Logix controllers are optimized for the DINT and REAL data types. Use these data types to avoid conversion overhead and optimize performance.
  • You can optimize the communication performance of acquiring data from Logix controllers by consolidating multiple data values into a User-Defined Data Type (UDT) or array.
  • Indexed references to array elements add additional scan time overhead to the application. Use single dimension arrays whenever possible.
  • When building a User-Defined Type (UDT), locate all bits or BOOLs adjacent to each other to minimize the amount of controller memory required to store the data.
  • RSLogix 5000 automatically creates controller tags when you create an input or output module. You can reference these tags directly in your logic.
  • Use alias tags to assign names to specific input/output data and/or to provide a short alternative to lengthy structure member names.
  • Avoid pointing one alias tag to another alias tag to ensure the application maintains the appropriate references after an upload.
  • Avoid pointing multiple alias tags to the same base tag to ensure the application maintains the appropriate references after an upload.
  • Controller tags apply to the entire controller and can be referenced by any program. Program tags apply only to individual programs. This means program tags can have the same names in more than one program, allowing programs to be copied and reused.
  • You can reorder the columns in the tag editor by clicking on the title and dragging it to a new position.
  • All tag names are downloaded and resident in the controller along with your logic.
  • You can export (and import) tag definitions to a comma separated value (CSV) file and manipulate them using external tool, e.g. spreadsheet, text editor.
  • For tables of bits (BOOL), use a DINT array to ensure full access via the file and diagnostic instructions COP, DDT, FBC, etc.
  • In a safety controller, standard tags in a safety mapped relationship follow safety restricted states. For example, a standard tag mapped to a safety tag is read-only in a safety locked state.
  • The order of members within a User-Defined Type affect the memory size of the data type. Within the UDT, keep members of the same data type together.

Routines

  • Logix supports four controller programming languages: Ladder, Function Block Diagram, Structured Text, and Sequential Function Chart.
  • To simultaneously display logic in multiple routines, select Window -> New Window and then arrange the windows manually. Or select Window -> Tile Horizontal.
  • Multiply the number of words in a PLC/SLC program times 18 to estimate the amount memory (in bytes) needed in a Logix controller.
  • To display context-specific instruction help, select an instruction or element and press F1.
  • The Language Element browser is a shortcut to adding logic. In the any of the language editors: use Alt+Insert, type the instruction mnemonic, and press Enter. You can also invoke this browser by pressing the Insert key in the LD, SFC and FBD editors. This short cut can be much quicker than using the instruction toolbar.
  • You can find all occurrences of a tag by right-clicking the tag in logic and choosing "Find All ".
  • You can use the Go To dialog (Ctrl+G) to quickly navigate to routines called by the current routine and to routines that call the current routine.
  • You can drag and drop from the instruction toolbar in any of the language editors. In SFC editor, the elements auto-connect.
  • Use the CPS instruction to provide buffering of communications and I/O data to minimize impact of asynchronous data arrival.
  • For tables of bits (BOOL), use a DINT array to ensure full access via the file and diagnostic instructions COP, DDT, FBC, etc.
  • Controller tags apply to the entire controller and can be referenced by any program. Program tags apply only to individual programs. This means program tags can have the same names in more than one program, allowing programs to be copied and reused.
  • In the Sequential Function Chart Editor, you can use the Routine Overview (Ctrl+B) tool to view your entire SFC and help navigate to a specific area of your chart.
  • Logix controllers perform a prescan of logic on startup to perform initialization. A tag used as an index can cause a startup fault if its value is larger than the array length. Use a Fault routine to detect and reset this condition.
  • In the Sequential Function Chart Editor, you can use the indicator tag field in an action to specify a tag value to monitor during execution.
  • In the Sequential Function Chart Editor, you can select multiple SFC elements and use the Layout SFC Elements feature to automatically rearrange the selected elements as needed to provide adequate spacing, avoid page boundaries, and left or center justify branches.
  • In the Sequential Function Chart Editor, you can change the order in which selection branch legs are evaluated from the Set Sequence Priorities dialog.
  • Refer to the Online Help for the Action Properties dialog - General Tab Overview for a useful timing diagram that explains how the various action qualifiers affect the execution of an action.
  • You can customize the auto-naming of Sequential Function Chart Steps, Actions, Transitions, and Stop elements from the Workstation Options and Routine Properties dialogs.
  • You can attach text boxes to language elements in FBD and SFC logic to maintain their relative positions if you move logic.
  • You can use Ctrl+Space to invoke the Tag browser from within the ST editor.
  • Comments in Structured Text are downloaded to the controller. This includes comments in Structured Text routines and embedded Structured Text in SFC routines.
  • In the Structured Text Editor, you see the words colored to indicate keywords, tag names, and other recognized words. You can change the colors used by the editor by choosing Options from the Options menu.
  • In the Structured Text Editor, you can configure the instruction's parameters by right-clicking an instruction name and choosing "Instruction Properties".
  • You can use instructions available in Ladder and Function Block Diagram routines also in Structured Text routines.
  • You can configure the sheet size for your Function Block Diagram or Sequential Function Chart routines from the Routine Properties dialog.
  • In the Function Block Editor, you can configure the block's parameters by clicking the Browse (...) button on the upper right side of the block.
  • RSLogix 5000 supports pending edits on multiple rungs when online editing ladder logic.
  • When editing ladder routines, you can create logic using ASCII (for example: "XIC MYTAG") by either typing when a rung is selected, pressing the Enter key when a rung is selected, or double clicking to the left of a rung.
  • In the Ladder Diagram Editor, you can insert a branch level above the current level by right clicking the left side of the branch and select Add branch. To insert a branch level below the current level, right click the right side of the branch and select Append New Level.
  • Partial import of rungs works in all ladder routines, including Add-On Instructions.
  • When performing a partial import of rungs, change tag names to create new tags in the imported logic.
  • Once you do a partial import of rungs, add-on instructions, or user-defined data types, you can't undo the import. If the import didn't work as expected, close the project without saving.
  • On a partial import of rungs, the exported data values are also imported. This includes configured message instructions. Partial imports/exports can save time versus copying and pasting since copying and pasting does not copy data values.
  • Copy pieces of logic into other applications like Microsoft Word in a bitmap or metafile format.
  • If you want a subroutine to execute every scan, copy the first instruction and paste it right next to the original instruction. Use the same tags on the duplicate instruction as on the first instruction. Then insert an AFI instruction before the duplicate.
  • To copy a group of rungs to paste into another routine later, select the rungs and drag them to the desktop. This copies the rungs into a file that you can later drag into another routine.
  • You can drag components from the Controller Organizer into the Ladder Editor instruction.
  • Double click or press Enter at the end of a ladder rung to create and start a textual edit of that rung.
  • To drag a language element from one routine to another, drag the element over the routine tabs at the bottom of the editor to switch the routine.

Add-On Instructions

  • To display the logic of an Add-On Instruction, select the instruction and use the context menu (right click) to open the logic.
  • You can drag an Add-On Instruction from the Controller Organizer into any language editor.
  • Copy an Add-On Instruction Definition from one project and paste into another to move that AOI and referenced AOIs in to the project.
  • Use Add-On Instructions to initialize tag values to specific values at the beginning of each routine or program scan. Then source protect the AOI to assure that values are correctly initialized and not overwritten manually.
  • Use source protection on an Add-On Instruction to protect local tags, data and logic.

Communications

  • Reserve 20% or more of the controller's memory to accommodate communications and changes in future Logix controller firmware releases.
  • Use rack optimized communication formats for digital I/O modules to minimize amount of controller memory and communications overhead associated with these modules.
  • Use the CPS instruction to provide buffering of communications and I/O data to minimize impact of asynchronous data arrival.
  • On download, if the ControlNet schedule stored in the offline RSLogix 5000 project file is old, RSLogix 5000 will retrieve the latest ControlNet schedule from the associated RSNetWorx project file. To make an association to an RSNetWorx project file, use the RSNetWorx tab in the Module Properties dialog of the ControlNet scanner.
  • When working with multiple controller projects in different chassis, use RSLinx shortcuts to identify those chassis with meaningful names.

Drives and Motion

  • RSLogix 5000 integrated motion supports camming, gearing, single-axis, and multi-axis instructions in Ladder Diagram, Structured Text, and Structured Text embedded in Sequential Function Charts.
  • Execute motion direct commands directly from the context menu for any configured motion axis. The motion direct commands let you control motion instruction execution without creating or adding logic. This can be useful when first commissioning an axis or drive.
  • To tune motor and drive parameters, such as gains for velocity and acceleration loops, as well as load dynamics, use the Tune tab or the MRAT and MAAT instructions. You can use the Tune tab in either Remote Program or Remote Run.
  • The software automatically populates some SERCOS drive parameters when you configure an Axis_Servo_Drive. Display the axis properties to view or edit these parameters.
  • In a SERCOS drive's configuration, you can change the number of counts returned per revolution to make the counts per inch or degree an rational number.
  • In a motion system, you can copy over all motion hardware from an existing project to a new project without losing any axis settings or tuning. First drag the motion control module over to the new project. Then, drag any drives, the Motion Group, and then the axes.

Optimizing Performance

  • Logix controllers are optimized for the DINT and REAL data types. Use these data types to avoid conversion overhead and optimize performance.
  • You can optimize the communication performance of acquiring data from Logix controllers by consolidating multiple data values into a User-Defined Type (UDT) or array.
  • Indexed references to array elements add additional scan time overhead to the application. Use single dimension arrays whenever possible.
  • Reserve 20% or more of the controller's memory to accommodate communications and changes in future Logix controller firmware releases.
  • Use rack optimized communication formats for digital I/O modules to minimize amount of controller memory and communications overhead associated with these modules.
  • Use the CPS instruction to provide buffering of communications and I/O data to minimize impact of asynchronous data arrival.
  • If the memory estimation button is disabled, it means that your estimation is up to date. This happens after an estimate, but it also happens when you go offline with the controller because the offline memory numbers reflect actual use.
  • The order of members within a User-Defined Type (UDT) affect the memory size of the data type. Within the UDT, keep members of the same data type together.

Project Documentation

  • Comments in Structured Text are downloaded to the controller. This includes comments in Structured Text routines and embedded Structured Text in SFC routines.
  • You can print RSLogix 5000 views by clicking on the view and then pressing Ctrl+P or choosing Print from the File menu.
  • When you print FBD logic, the editor automatically makes the logic fit the page. A 2:1 ratio is generally readable. For example, set the FBD sheet size to 11 x 17 (B Size) and print on 81/2 x 11 size paper.
  • Copy pieces of logic into other applications like Microsoft Word in a bitmap or metafile format.

Security

  • If you are have trouble downloading a project even though you have privileges, make sure that you have the project and that you are online with the controller.
  • If you can't access routine source protection when security is enabled, ask your administrator to grant you "Routine: Modify Properties" to obtain access.
  • If your system uses FactoryTalk Security with RSLogix5000 software, version 16, software users can log into and log off of RSLogix 5000 software.
  • If security functions are enabled, you must have appropriate access to import rungs or to copy/paste tags and data.

The Logix5000 Essential Manuals

The Allen Bradley Logix5000 family (ControlLogix, CompactLogix, FlexLogix, SoftLogix) has some very good manuals. If you are just starting out or need a refresher here are the key manuals and the order I would read them. If you have RSLogix 50000 installed then you will find some of these in the Help > Online Books menu. Revision 16 also has some great videos in the Learning Center.

The Basics

For starters there is the Quick Start manual.
manual Logix5000 Controllers Quick Start

If you don't deal with the PLCs or RSLogix 5000 too much and just need a quick reminder about the hardware or programming then the System Reference is perfect.
manual Logix5000 Controllers System Reference

The Essentials

If you are getting into programming and designing a system then you'll want to start off with the Common Procedure Manual. It has a lot of helpful examples dealing with all aspects of the system.
manual Logix5000 Controllers Common Procedures Programming Manual

Next comes the nitty gritty of each instruction. It's a good idea to at least peruse all the instructions so you have an idea of what is available.
manual Logix5000 Controllers General Instructions Reference Manual
manual Logix5000 Process Control and Drives Instructions Reference Manual
manual Logix5000 Controllers Motion Instructions
manual GuardLogix Safety Application Instruction Set Reference Manual

An often overlooked manual but filled with great information for getting the most out your designs is the Design Considerations Reference Manual. Certainly a must read if you are knee deep in the development and programming of Allen Bradley PLCs.
manual Logix5000 Controllers Design Considerations Reference Manual

Hardware Specifics

Specifics for the hardware can be found in the User Manuals and Installation Instructions for the PLC.

ControlLogix
manual ControlLogix System User Manual
manual ControlLogix Installation Instructions
manual ControlLogix Controller and Memory Board Installation Instructions

CompactLogix
manual CompactLogix System User Manual
manual CompactLogix 1769-L31 Installation Instructions
manual CompactLogix 1769-L32E, 1769-L35E Installation Instructions
manual CompactLogix 1769-L32E, 1769-L35E Installation Instructions
manual CompactLogix 1769-L32C, 1769-L35CR Installation Instructions

FlexLogix
manual FlexLogix System User Manual
manual FlexLogix Controllers Installation Instructions

SoftLogix
manual SoftLogix System User Manual
manual SoftLogix Controllers Installation Instructions

GuardLogix
manual GuardLogix Controllers User Manual
manual GuardLogix Controllers Installation Instructions

Networking

If you are deciding on which network to use then see the Design Considerations manual and the section "Determine the Appropriate Network". Otherwise, for existing networks the following are helpful.

Ethernet/IP
manual Ethernet Design Considerations for Control System Networks
manual EtherNet/IP Modules in Logix5000 Control Systems User Manual
manual Guard I/O EtherNet/IP Safety Modules User Manual

ControlNet
manual ControlNet Modules in Logix5000 Control Systems

DeviceNet
manual DeviceNet Modules in Logix5000 Control Systems User Manual
manual Guard I/O DeviceNet Safety Modules

The links are from the AB site so they are the latest and greatest manuals. Let me know if any of them are broken or if I forgot one you think is essential.