11 RSLogix 5000 Tips To Make You A Faster PLC Programmer

If you’re a PLC programmer, you can surely think of someone on your team who is just fast. He or she knows all of the keyboard shortcuts, menus, and tricks. They’re like the Mozart of ladder logic, hammering away at the keyboard, with new instructions flying onto the screen faster than you can follow. Part of this level of mastery comes from knowing your organization’s ladder logic template, but part of it comes from knowing Rockwell Automation’s software and its tricks, keyboard shortcuts, and techniques. Use these 11 tips to level up your RSLogix 5000 (or Logix Designer!) game and become a faster PLC programmer!

These are some tips and tricks that I’ve learned along the way, and that have really helped me to become faster at programming and debugging ladder logic in RSLogix 5000. I hope these will help you, too – and if so, pass them on! You can share this post on social media using the buttons at the bottom of this page. Thanks in advance for reading – here are the tips!

  1. Stop Using The Language Element Box
  2. Become A Master Branch Manipulator
  3. Use Ctrl+G For “GO RIGHT TO IT”
  4. Use The Keyboard To Move Around In RSLogix 5000
  5. Understand The Slider Bar On The Right Of The Screen
  6. Always Check To Make Sure You’re Online
  7. Quickly Duplicate Logic Offline Using Find And Replace
  8. Stay On The Monitor Tags Tab
  9. Understand All 3 Sections Of Typical Instructions
  10. End Description Editing Just By Clicking
  11. Look For Drop Points When Clicking And Dragging

Are you ready to take the next step in your industrial automation career?

We want to work with you to connect you with opportunities to advance yourself.

Let us put you in touch with organizations that want future students or employees like you.

This won’t cost you anything, and takes only a few moments. Click the appropriate button below to get started!

Tip #1: Stop Using The Language Element Box

The language elements box. This is a toolbar element in RSLogix 5000 that houses all of the many instructions that are available for ladder logic programming.
Meaning this thingy

The first of my RSLogix 5000 tips for you is: if you’re using the Language Element box to add most of your new instructions, just stop! Well, not completely. The Favorites tab (shown above) is ok. It’s pretty convenient to be able to drag in new rungs, branches, and maybe branch levels or the other common instructions (XIC, OTE, etc.).

Beyond that, though: just stop it! You need a MOV, ONS, TOF? Do you know which tab you’ll find them under? Some are obvious, like Timer/Counter instructions. How about CPS? JSR? Maybe you’re old hat from RSLogix 5 and you remember where each instruction lives among the various tabs. You still have to click over to the correct tab and drag down the element you want. So, if you want to hammer in new logic fast, cut it out!

A better way

Instead, when you want to add a new instruction, do this:

  • Left-click in the ladder editor to highlight an instruction, rung, branch, etc. The new instruction or element you’re going to insert will go either to the right or below the highlighted element
    • If you’re adding an instruction or branch, it will go to the right of the selected item
    • If you’re adding a rung or branch level, it will go below the selected rung or branch level
  • Press the Insert key on your keyboard
  • The Add Ladder Element dialog will pop up
  • Start typing the name of the instruction you want. If you want a MOV instruction, start typing “M”, “O”, “V”. RSLogix will auto-complete as you type
  • When the ladder element that you’re looking for is highlighted, press Enter to insert the new instruction
The first tip for getting faster as a PLC programmer in RSLogix 5000 is to use the Add Ladder Element box to add new instructions. It's much faster than using the Language Element Box on the top of the screen.
As you type the name of the instruction you want, the dialog automatically populates the first instruction that matches the characters you’ve typed so far

I promise this will save you time. Yes, it’s fair to say that it’s still convenient and sometimes even faster to just click on some of the common instructions in the Favorites tab. Many times, though, and particularly when you’re building out a rung and you’re living on the keyboard, it’s much quicker to be able to insert a new instruction without having to go back to the mouse.

Tip #2: Become A Master Branch Manipulator

Branches are absolutely meat and potatoes components in RSLogix 5000. Aside from being critical for use as “OR” gates, branches can be used to improve the organization and readability of your logic.

With that said, branches and branch levels can be a bit tricky at first. Let’s try to unravel the mystery a bit. 🙂

Branches have different options available depending on which side of the branch you select. The left side of a branch allows you to manipulate individual branch levels, while the right side of a branch allows you to manipulate the entire branch.

The left side of a branch: branch levels

Selectable points on the left side of a branch allow you to manipulate individual branch levels. This is evidenced by the small box that is drawn around the particular intersection you select. To select an individual branch level, you click an intersection between a branch level and the left vertical element of the branch. For instance, consider the following selection:

An example of a branch level selection within a branch in RSLogix 5000. This tip focuses on understanding the difference between different portions of a branch structure.
The middle branch level has been selected

In this case, the second branch level has been selected. A branch level is a horizontal element of a branch. In this case, it is the horizontal element that contains the XIC _Example_DINT.1.

With this selection, I can cut, copy, paste, delete, etc. just that one branch level without disturbing the rest of the branch structure. In other words, I can do what I like with that branch level without messing up anything on the uppermost branch level (with XIC _Example_DINT.0) or the lowermost branch level (with XIC _Example_DINT.2).

Clicking and dragging a branch level

You can click and drag the selected point shown above to move a branch level. This technique can be used to reorder branch levels within a branch or to move a branch level to an entirely different branch, even in another routine. You can find more info on this in Tip #11, below.

The right side of a branch: the whole branch structure

The right side of a branch, on the other hand, acts as the selection point for the entire branch. You can see that this is the case because when you click the right side of the branch, the entire vertical element is highlighted.

The right side of a branch structure has been selected in RSLogix 5000. In this case, the entire branch structure is selected.
The entire branch has been selected

When you make a selection as shown above, any action you take affects the entire branch. If you choose to cut, copy, etc. at this point, all branch levels will be affected as one. In this case, that means that all 3 of the horizontal elements with XIC _Example_DINT.0 - .2 would be affected as a group.

Most of the time, if you are reusing branched logic from one rung to another, you will want to copy the entire branch structure by selecting the right side, and then pasting it where you would like to use it again.

Clicking and dragging a branch

Clicking and dragging the right side of the branch does not move the entire branch structure. Instead, it redefines what is enclosed within the branch. If there is an instruction outside of the branch that you wish you enclose within the branch, you simply drag the right side of the branch past that new instruction to assimilate it.

There is a limitation; you can drag a branch around another branch, but you can’t really drag a branch into another branch. To move an entire branch onto a branch level within another branch, you may need to select the right side of the branch you want to move, cut it, and then paste it where you want it to go.

Tip #3: Use Ctrl+G For “GO RIGHT TO IT”

Ctrl+G is a helpful keyboard shortcut in RSLogix 5000. It allows the user to jump directly to a tag, rung, or other object.

My next RSLogix 5000 (or Logix Designer) tip for you is to use the Go To shortcut. If you already know where you’re headed, Ctrl+G can be a big time saver.

Already know which rung you need in this routine? Ctrl+G to GO RIGHT TO IT. Type the rung number and hit enter, and blammo, you’re there.

Already know which tag you need in Controller Tags or Program Tags? Ctrl+G to GO RIGHT TO IT. As you start typing, RSLogix will scroll to your tag. It will even trace into an array. If, for instance, you need the 130th element of an array, press Ctrl+G. By the time you’ve typed YourArrayTagName[130, that element of the array will be selected for you in the tag database. The tag name in the previous sentence is not a typo – RSLogix will start pulling up the tag as you type, so it’s not necessary to type the closing bracket.

Tip #4: Use The Keyboard To Move Around In RSLogix 5000

Much of what you can do with the mouse, you can do with the keyboard. I’m not saying that it’s always quicker to move around with the keyboard – but sometimes it is. What’s important is to know the right tool, technique, or shortcut to use at the right time. For this RSLogix 5000 tip, you’ll find some common keyboard shortcuts below; this list is far from comprehensive. Have some RSLogix 5000 keyboard shortcuts of your own that aren’t on this list? Tell me about it in the comments at the bottom of the page!

Move quickly between open windows within RSLogix 5000

An RSLogix 5000 instance with several open windows.
An RSLogix 5000 instance with 4 open windows (the ladder editor, controller tags, cross reference, and a UDT definition).

As you work, you’ll often have the ladder editor, cross reference, controller tags, and other windows open at the same time within RSLogix 5000. Knowing how to quickly move between windows can save you time and make you a faster programmer.

As an example of an inefficient use of the interface, I’ll often see people return to the Controller Organizer multiple times to open a routine that is already open in the ladder editor. They would be much better off simply switching between windows that are already open. Most of the time, if you only have a few windows open within RSLogix 5000, it’s quickest to tab between open windows using the keyboard shortcuts.

  • To move to the next open window, press Ctrl+Tab
  • To move to the previous open window, press Ctrl+Shift+Tab

If you have many windows open, it may be quicker to get where you’re going through the GUI. To do so, click the Window menu and select the appropriate window, as shown above.

Move quickly between multiple instances of RSLogix 5000

If you’re working on two neighboring processors at the same time, or if you’re working back and forth between online and offline projects, it is often easier to use the keyboard to switch between your RSLogix 5000 instances.

  • Use Alt+Tab to go to the next open application within the Windows environment
  • Use Alt+Shift+Tab to go to the previous open application within the Windows environment

Rotate through open routines with the keyboard

This RSLogix 5000 tip describes how to rotate through open routines in the ladder logic editor using the keyboard shortcuts.
In this image, two routines are open, and the second routine is active

There’s another great pair of keyboard shortcuts available for moving between routines on the ladder editor. It’s not uncommon to be working back and forth between two or more routines. Having to switch between the keyboard and mouse when you need to go to another routine can slow you down. Luckily, the following keyboard shortcuts are available:

  • Use Ctrl+PageUp to bring up the previous routine. If you have three routines open, and the second routine is active, Ctrl+PageUp will make the first routine active
  • Use Ctrl+PageDown to bring up the next routine. If you have three routines open, and the second routine is active, Ctrl+PageDown will make the third routine active

Navigate quickly within a routine

A rung selected in Rockwell Automation's RSLogix 5000 ladder editor.

It can be tedious navigating through routines with many rungs. There are a couple of keyboard shortcuts to keep in mind that can help you to get where you’re going faster:

  • With a rung selected (as shown above), use the Up Arrow and Down Arrow to navigate through the routine one rung at a time
  • You can use PageUp or PageDown to move up or down in the routine a page at a time
  • Use Ctrl+Home to go to the very top rung
  • Use Ctrl+End to go to the very bottom rung
  • On a rung, you can use the arrow keys to move left and right on a rung or branch and the up and down arrows to move up and down between branch levels or sections of an instruction

Tip #5: Understand The Slider Bar On The Right Of The Screen

The slider bar used for navigating up and down in RSLogix 5000.

When you’re looking for a certain rung or tag, you can use the slider bar to navigate the screen. The slider bar has three means of interaction:

  • The arrows at the top and bottom of the slider bar will move the ladder up or down about one line of text per click
    • You can click and hold the arrow to move more quickly, still moving about one line of text at a time
    • These arrows provide the slowest motion available through the slider bar
  • You can click the blank space on the slider bar to move up or down about a page at a time
    • Clicking anywhere in the blank space of the slider bar below the slider will move you down about a page
    • Similarly, clicking anywhere in the blank space above the slider will move you up about a page.
    • You can click and hold in the blank space to move quickly up or down about a page at a time
    • This method provides a moderate rate of motion through the ladder
  • You can click and drag the slider itself to move very quickly through the routine
    • This is the fastest means of moving through the routine using the slider bar

Tip #6: When Debugging, Always Check To Make Sure You’re Online

An RSLogix 5000 project that is not online with the processor.

I know it sounds obvious, but I promise you this gets everyone from time to time. When you walk up to a terminal and your processor’s project is already open in RSLogix 5000, the first thing you should do is check to make sure that the project is currently Online with the processor. It’s very easy to waste minutes of downtime chasing a signal that won’t change state – only to realize that you’re still Offline.

Make it a habit. Whenever you open or switch to a project where you need to do some debug, make sure that the first thing you do is check that it’s Online.

Tip #7: Quickly Duplicate Logic Offline Using Find And Replace

RSLogix 5000 is an awesome piece of software, but like any development environment this complex, there will be some “features” that can get in your way. For instance, RSLogix 5000 tries to save you from yourself in a few different ways. One thing that you cannot do when making Online edits is Find and Replace.

Let’s say I wanted to duplicate the following logic for another application:

Logic for duplication in RSLogix 5000.

The new application is “SprocketY”, so everywhere that you see “SprocketX” above, I want to replace the “X” with a “Y”.

If I copy and paste this logic while I’m Online, I cannot use Find and Replace to quickly change “SprocketX” to “SprocketY”. I would be forced to edit each individual reference to SprocketX. Each operand and description would have to be edited individually to change everything over for SprocketY.

This might not be a big deal if you’re changing 4 or 5 references on 1 or 2 rungs, but when you’re talking about maybe 15 references or more, this can be very time-consuming. In addition, doing a lot of small, manual changes opens you up to the possibility of making mistakes.

Use Find and Replace to change a lot of references at once

You can make the process much easier by performing the edits Offline in another project. RSLogix 5000 will allow you to Find and Replace in Offline projects. For this little part of our RSLogix 5000 tutorial, here’s how you would quickly change many tag and/or comment references Offline:

  • Open another copy of the project with the logic you need to duplicate
  • In the Offline project, open the routine with the logic you want
  • Click on the “0” to the left of the first rung in the routine
  • Press Ctrl+H. This is the keyboard shortcut for “Find and Replace”
  • In the Find What box, enter the existing tag name (“SprocketX”)
  • Next, in the Replace With box, enter the new tag name (“SprocketY”)
  • In the Find Where dropdown, select Current Routine
  • Click Find Within >> at the bottom right
    • Click Ladder Diagrams
    • Make sure Instruction Operands is checked
    • If you also want the change to occur in comments, make sure Instruction Main Operand Comments and/or Rung Comments are checked as well
  • Click Replace to step through each instance of your existing tag, or Replace All to replace all instances at once

Now that you’ve prepared your logic Offline, you can copy it into your Online project. Select the rungs you modified and copy/paste them into your Online project.

Using Find and Replace in an Offline project will allow you to quickly change many references to a tag, without having to edit each individual reference.

Want to take the next step in your industrial automation career?

We want to help.

Are you looking for opportunities to advance your career and make more money?

At no cost to you, the Industrial Automation Connection can get you in touch with training and job opportunities in your area. Click one of the buttons below to get started!

Tip #8: Stay On The Monitor Tags Tab

The Controller Tags window in RSLogix 5000 moves much quicker on the Monitor Tags tab.

For whatever reason, RSLogix 5000 will often move very slowly through the Controller Tags or Program Tags if you are on the Edit Tags tab. Don’t let it waste your time. If you need to scroll through the tag database to find a certain tag, first switch over to the Monitor Tags tab. I rarely find I need to use the Edit Tags tab.

Tip #9: Understand All 3 Sections Of Typical Instructions

When setting up instructions and their descriptions in RSLogix 5000 or Logix Designer, understanding the way the instructions work will help you to create your logic more quickly and with less frustration. For this RSLogix 5000 tip, I want to help you to understand the various sections of typical instructions. Most instructions that appear as a coil or contact (or a similarly-sized element) on the ladder have 3 sections that each behave differently when clicked, dragged, etc.:

  1. Description
  2. Tag Name
  3. Instruction Type
The three sections of a typical RSLogix 5000 instruction.

The (common) types of instructions that fit this format are:


Instruction Type Section

The lower-most section of a typical instruction is the instruction type. The instruction type dictates the logic that is performed on that tag. Do you check the status of the tag? Do you “energize” the tag’s output (set the tag value to 1)? Does the tag hold a One Shot status?

The instruction type can be changed without disturbing the tag name. This can allow you to save keystrokes by copying another instruction that has the tag you need. You can then paste in the copied instruction and simply change the instruction type. For example:

You want to check the ON status of the _Example_Bit tag of type BOOL. You could easily add an XIC and then set the tag name to _Example_Bit. However, if another instruction with _Example_Bit is already nearby, it may be even quicker to simply copy/paste that instruction and then change its instruction type.

This can be especially helpful with very long tag names or tag names that are difficult to type or remember. To change the instruction type, you simply double-click the instruction type, as described below:

When the instruction type is double-clicked:

Double-clicking the instruction type allows you to change the instruction type without disturbing the tag name or description. After you double-click the instruction type, the current type will be shown in text and highlighted. Any text you enter when the instruction type is highlighted will overwrite the current type. So, after double-clicking, if you know the new instruction type you want to use, simply start typing it in. The new instruction type will auto-complete as you type.

If you don’t know the instruction type you need, then after double-clicking, you can use the drop-down arrow on the right of the highlighted instruction type. This drop-down arrow will open a list of available instruction types:

When you want to change an instructino type, you can use the drop-down arrow to open a list of instruction types.

When the instruction type is clicked and dragged:

Clicking and dragging the instruction type will either move or copy the instruction to a new location.

  • If you are offline, or if you are online and you drag an instruction from a rung you are editing to a rung you are editing:
    • The instruction will be moved from the original rung to the new rung
    • If you want the instruction to be copied (if you want the original instruction to stay in place and a new instruction be made at the new location), then hold the Ctrl key while clicking and dragging the instruction
  • If you’re online, and you drag an instruction from a rung that you are not editing to a rung that you are editing:
    • The instruction will be copied; the original will remain in place, and a copy will be made on the new rung

This allows you to quickly replicate an instruction when you are reusing the same or similar instructions throughout your logic. For more information on the click-and-drag behavior for instructions, see the “Look For The Drop Points When Clicking And Dragging” tip below.

When the instruction type is right-clicked:

A context menu will pop up with common actions you can take. Some commonly used actions here include Cut, Copy, or Delete Instruction, Toggle Bit, and Edit Main Operand Description. Note that all of these common actions have corresponding keyboard shortcuts. Most of the time, it is quicker to use the keyboard shortcuts than to right-click and pick the action out of the menu. So, learn those RSLogix 5000 hotkeys!

Tag Name Section

The middle section of typical instructions contains the instruction’s tag name. The tag is the name you’ve given to some address in memory at which the data that you’re working on is stored. For instance, say you want to check the status of a prox. You might tie the prox’s raw input from the junction block to a memory tag to make the tag name more readable. Your tag for a Station 2 “In Position” prox on a conveyor might be something like S02ConvInPosProx.

Each tag can have a description. If a tag consists of smaller elements (for instance, a DINT consists of 32 BOOL’s – read more here), each element can typically have its own description. Descriptions are tied to tags. In other words, if you change the tag name that’s associated with a certain instruction, the contents in the description section will change to reflect the description for that tag.

Here is the behavior of the tag section of an instruction when manipulated in the ladder editor:

When the tag name section is double-clicked:

Double-clicking an instruction’s tag section allows you to change which tag is associated with that instruction. Like the instruction type section above, after you double-click the tag name, the tag name will be highlighted, and any text you enter when the tag name is highlighted will overwrite the entire tag name.

Also like the instruction type section, if you don’t know the tag name you need, then after double-clicking, you can use the drop-down arrow on the right of the highlighted tag name. This drop-down arrow will open a searchable tag list:

The tag list that pops up when you click the drop-down arrow from the tag name of a typical instruction.

When the tag name section is clicked and dragged:

When you click and drag the tag name, you can plug it in to other instructions. This allows you to quickly replicate a tag name when you are reusing the same or similar tags throughout your logic. For more information on the click-and-drag behavior for tag names, see the “Look For The Drop Points When Clicking And Dragging” tip below.

When the tag name section is right-clicked:

Right-clicking an instruction’s tag name section pops up a context menu. The tag name context menu has all of the options shown on the instruction type’s context menu (described above), plus some additional options.

Some of these additional options will get some high mileage. When debugging ladder logic, you’re often chasing missing conditions back several layers to find a certain signal or condition that your process needs. The “Go To Cross Reference For…”, “Monitor…”, and “Trend…” options will serve as go-to’s in your quest to figure out why your machinery stopped moving.

It’s worth pointing out that these extra options are only available if the tag name is right-clicked. A common mistake that RSLogix 5000 users make is right-clicking the description or instruction type and looking for the Cross Reference or Monitor options. Don’t do it! They won’t be there. Make sure to right-click the tag name (or better yet – use Ctrl+E, the keyboard shortcut for cross reference).

Tag Description Section

An XIC instruction in RSLogix 5000. The section with the tag's description is highlighted.

The uppermost section of your typical instruction is the description. As mentioned above, an instruction’s description is tied to the tag. Make sure you have the correct tag in the tag name section before changing the description.

You can edit the tag description by double-clicking the description section, by right-clicking any of the three sections and selecting Edit Main Operand Description, or by selecting any part of the instruction and pressing Ctrl+D. Here is the expected behavior when manipulating an instruction’s description section:

When the description section is double-clicked:

The description editor opens at the top of the screen. Double-clicking the description section is the same as selecting Edit Main Operand Description or pressing Ctrl+D with any portion of the instruction highlighted.

Note that to copy a description you want to reuse, you have to copy the description from the description editor. In other words, you have to first edit the description to be able to copy it. A common pitfall when attempting to copy a description is to right-click the description and click Copy Instruction. This will not get you what you want! Here’s a common recipe to copy a description from one tag to another with blinding speed:

  1. Left-click the instruction with the description you want to copy (this will highlight the instruction)
  2. Press Ctrl+D to enter the description editor
  3. Press Ctrl+C to copy the highlighted description
  4. Left-click the instruction where you want to paste the description
    1. This will close the description editor and highlight the new instruction
  5. Press Ctrl+D to enter the description editor
  6. Press Ctrl+V to paste in the description

Bing, bang, boom, man! Do it like that and it’ll be fast.

When the description section is clicked and dragged:

Clicking and dragging the description section has an identical effect to clicking and dragging the instruction type. It will move or copy the entire instruction as described for instruction type dragging above.

When the description section is right-clicked:

Right-clicking the description section is also identical to right-clicking the instruction type. It will pop up a context menu with options such as Cut, Copy, Edit Description, etc.

Tip #10: End Description Editing Just By Clicking

You may have noticed above that I did not close the description editor when I was done editing. I simply clicked off.

Many tasks in RSLogix 5000 can be executed in a variety of different manners. For instance, there is often a keyboard shortcut, context menu option, and GUI control for performing a given task.

The same is true of the task of closing the description editor. To my knowledge, there are three ways to close the description editor and commit any changes you’ve made to the description:

  1. Click the green arrow
  2. Press Ctrl+Enter
  3. Simply click anywhere in the ladder editor outside of the description editor
One tip for faster programming in RSLogix 5000 is to edit the description editor more quickly by simply clicking anywhere in the ladder diagram editor.
As far as I’m concerned, that green arrow is there for show. Why would I waste a click on that?

If I’m living on the keyboard, I do sometimes press Ctrl+Enter to exit the description editor. Most of the time, however, as soon as I’ve typed my description, I want to move on to the next thing. The ladder diagram editor permits you to do this by simply clicking anywhere in your ladder logic to apply any changes you’ve made and close the description editor.

Tip #11: Look For Drop Points When Clicking And Dragging

RSLogix 5000’s ladder logic editor provides you with visual indication of what will happen when you click and drag ladder elements. When you “pick up” most ladder elements, various drop points appear on the screen showing you where your ladder element can be dropped.

It’s important to watch the drop points every time. RSLogix 5000 can be a bit quirky in regards to where items go when you click and drag them. It’s very common to drag an object to the general area where you want it, only to have RSLogix 5000 place it somewhere you did not at all intend. If you pay attention to the drop points, you will always know exactly where your instruction is going to end up when you release the mouse button.

Drop points are grey objects that appear on the screen once you start clicking and dragging a ladder element. As you drag an element around in RSLogix 5000, a single drop point at a time will turn green to show you where that ladder element will be placed if you let go of the mouse button at the mouse cursor’s current location.

Clicking and dragging instructions

To click and drag an instruction, simply click and hold on the instruction type. The instruction type is the coil or contact (for XIC’s, OTE’s, etc.), the instruction name (for instructions such as MOV, MSG, GEQ, etc.), or the name of an Add-On Instruction.

As soon as you start to move the instruction around, drop points will appear. For instructions, the drop points that appear are small squares on the rungs and branches of your PLC logic. Look for the drop point where you want the instruction to be placed. Move the instruction until that drop point turns green. If the drop point at the desired location is not green, letting go of the mouse button will place the instruction in some other undesired location.

An instruction being dragged around in the ladder editor in RSLogix 5000.
Note the “ghost” of the instruction that is being clicked and dragged. Also note which drop point is green. That is where the instruction will be placed if you release the mouse button at the cursor’s current location.

Clicking and dragging tag names

Tag names can be clicked and dragged from one instruction to another. Doing so allows you to very quickly populate instructions when a tag or similar tags will be used repeatedly. Dragging and dropping tag names will not remove the tag name from the original instruction. It will simply be copied to the new instruction at the drop point you select.

Once you click and hold on a tag name and start dragging, drop points will appear where the tag name can be placed. When clicking and dragging tag names, the drop points that appear are rectangles. Move your tag name to the desired location and make sure to watch for the appropriate drop point to turn green. Note that instructions with multiple operands will have multiple drop points into which a tag name can be dropped.

How to click and drag tag names in RSLogix 5000.
Like instructions, clicking and dragging tag names causes drop points to become available at each operand of the instructions on the screen.

Clicking and dragging branch levels

You can click and drag a branch level to reorder the branch, move a branch level to another branch, or “dump” the contents of the branch level out to a new location.

When you “pick up” and start dragging a branch level, two types of drop points will appear:

  • As though you were dragging an instruction, the same small squares on the rungs and branches of your ladder will appear. These squares will behave the same way as an instruction in the following sense: if you drag and drop a branch level to a drop point on a rung or branch, the contents of the branch level will be dropped at that drop point. The branch level itself will disappear
  • Smaller squares will appear slightly left of any visible branches, above and below each branch level. Dropping a branch level onto one of these squares will move the entire branch level including its contents to that location. This allows you to reorder branch levels on a branch or to move a branch level to another branch
Tips for dragging and dropping branch levels in RSLogix 5000.
In addition to the small squares before and after each instruction, branch, and level, smaller squares will appear to the left of each branch.

Clicking and dragging branches

As mentioned above, you can’t really click and drag a branch. Instead, clicking and dragging the right vertical of a branch changes what that branch encapsulates. It’s common to insert a branch and then have to drag the right vertical around nearby instructions to put them on the branch.

When you click and drag a branch, rectangular drop points will appear on the branch’s rung. Drag to any of these points to change what will be encapsulated within the branch.

If you wish to actually move the branch to another location, then instead of clicking and dragging, you would need to cut and paste the branch.

Clicking and dragging rungs

Lastly are rungs. Rungs can be reordered by clicking and dragging the rung itself (the box around the rung number to the left of the rung). Rungs can even be dragged into other routines.

Once you click and drag a rung, large drop points will appear above and below each rung on the current routine. Drop the rung at the desired drop point to move it from its original location.

Tips and tricks for RSLogix 5000: how to click and drag a rung.
Whichever drop point is turning green is where the rung will be placed if you release the mouse button.

Additional Information

There are a lot of great resources on the Internet for RSLogix 5000 tips and tricks, including comprehensive literature direct from Rockwell Automation. Here are some other excellent places to learn more about PLC programming using RSLogix 5000 or Logix Designer:

Thank you for reading!

I truly hope these RSLogix 5000 tips will help you to become a faster PLC programmer. When programming and debugging ladder logic in Rockwell Automation’s RSLogix 5000, knowing the interface can help you to quickly bring what’s in your mind to life on the screen.

If these tips were helpful for you, you can help support the Industrial Automation Connection by sharing this post on social media (use the share buttons below). Lastly, plug in your email to get updates whenever we have new automation content for you!

Thanks for reading and feel free to share your thoughts in the comments below, or through the Contact link above. 🙂

Atomic Data Types in RSLogix 5000 – RSLogix 5000 Training

In this article, we’ll discuss atomic data types in Rockwell Automation’s RSLogix 5000. Atomic data types are the predefined data types that form the backbone of RSLogix 5000’s memory structures. These data types are inherent to RSLogix 5000 and will be utilized by many of its native instructions.

RSLogix 5000 supports the following IEC 61131-3 atomic data types:

Below, I’ll go over each of these data types. Further down the page, we’ll go past the basics by looking at memory utilization and programming practices. Let’s start by looking at RSLogix 5000’s simplest atomic data type, a BOOL.

Want to take the next step in your industrial automation career?

We want to help.

Are you looking for opportunities to advance your career and make more money?

At no cost to you, the Industrial Automation Connection can get you in touch with training and job opportunities in your area. Click one of the buttons below to get started!

Atomic Data Types


Bits of Data1
Bits Reserved for Stand-Alone Tag32
Possible Range of Values0 to 1

A Boolean tag can hold one of two possible values: a 1 or a 0. Booleans are useful for storing states that are either true or false, light or dark, on or off, etc. Booleans are perhaps the most-used data type, representing not only real world inputs and outputs (proximity sensor made or not made, valve output on or not on, etc.), but also various status conditions in the PLC (process 1 complete, next unit data available, etc.).

What does “stand-alone tag” mean?

By “stand-alone tag”, I mean a tag that is not part of a UDT or other structure.

For example: I go to Controller Tags and click the Edit Tags tab. Then, on the very bottom row, I type New_Boolean for Name and BOOL for Data Type. The New_Boolean tag would be an example of a “stand-alone tag” of type BOOL.

Programmable Logic Controllers that are compatible with RSLogix 5000 use 32-bit memory allocation. As a result, even though it only requires one bit to represent a Boolean value, a stand-alone tag that is defined as data type BOOL will still take up 32 bits in memory.

I’m not saying that you should never use BOOL’s, and in fact, you’ll surely use many, many BOOL’s. But there are ways to economize your memory usage if you’re going to use a lot of Boolean tags in the same chunk of logic. You should consider doing so, especially if you’re writing logic that will be reused over multiple devices or applications. We’ll cover memory economization further down the page.


Bits of Data8
Bits Reserved for Stand-Alone Tag32
Possible Range of Values-128 to 127

A tag of data type Single Integer, or SINT, stores 8 bits of information. Because SINT’s hold signed values, a SINT tag can hold values from -128 to +127. A SINT may be useful for storing integers with small possible values, such as robot program calls, small counter values, etc.

The 32-bit rule applies for stand-alone SINT tags as well. Even though SINT’s hold only 8 bits of information, 32 bits of memory are nonetheless allocated for a stand-alone SINT tag.


Bits of Data16
Bits Reserved for Stand-Alone Tag32
Possible Range of Values-32,768 to 32,767

A tag of data type Integer, or INT, stores 16 bits of information. INT’s also hold signed values, and so a tag of type INT can hold values from -32,768 to +32,767. An INT may be useful for storing larger but still not gigantic integer values, such as encoder counts, total events since some infrequent reset, minute of the day, etc.

I bet you’ve picked up the pattern by now. Despite the fact that you only need 16 bits to store an INT value, 32 bits will still be allocated to a stand-alone tag of type INT.


Bits of Data32
Bits Reserved for Stand-Alone Tag32
Possible Range of Values-2,147,483,648 to 2,147,483,647

A Double Integer, or DINT, stores 32 bits (one “word”) of information. Like SINT’s and INT’s, DINT’s hold signed values. A tag of type DINT can hold values ranging from -2,147,483,648 to 2,147,483,647. DINT’s are a bit paradoxical, as it’s uncommon (in my experience) to need to store an integer with a value in the multi-millions. Nonetheless, because the size of a DINT matches the size of the memory allocated for a stand-alone tag, DINT’s are very, very commonly used when programming in RSLogix 5000.


Bits of Data32
Bits Reserved for Stand-Alone Tag32
Possible Range of Values-3.4028234738 to 3.4028234738

Unlike the other data types we’ve looked at, which only store integer values, tags of data type REAL store signed, 32-bit floating-point decimal values. A tag of type REAL can hold values ranging from -3.4028234738 to -1.17549435-38, 0, and from 1.17549435-38 to 3.4028234738.

As you can see, REAL’s can represent some very large and some very small numbers, but they do so at reduced precision when compared to a DINT. In addition to the smaller number of significant digits, there is another factor to consider when using REAL’s.

Some decimal values must be approximated

BOOL’s, SINT’s, INT’s, and DINT’s all represent integer values. In binary, integer values can be represented precisely. In other words, when you store 255 in a DINT tag, the PLC stores a value at that address that represents 255 exactly. REAL’s, on the other hand, represent floating-point decimals. Just as 1/3 cannot be represented precisely in decimal (1/3 becomes 0.33333…), many decimal values cannot be represented precisely with floating-point data types. Because math.

Even the value 0.1, which seems like such an innocent number, can be very troublesome when you attempt to represent it in binary. The necessity of approximating decimal values can sometimes lead to unexpected or unwanted behavior.

Will this prevent you from using REAL’s? No; from time to time, it will be necessary to use REAL’s in your logic. There are some considerations to make when doing so, however, and sometimes it may be better to avoid them if possible. To learn more about floating-point decimal data types, head to the additional information section at the bottom of the page.

Special-Use Atomic Data Type: LINT

Bits of Data64
Bits Reserved for Stand-Alone Tag64
Possible Range of ValuesDate & Time information
(see below)

Long Integers, or LINT’s, store 64 bits (two words) of information. LINT’s are not always listed when discussing atomic data types, but Rockwell Automation considers them to be “Special-Use” atomic data types. Rockwell typically discusses them in the same literature as the others.

LINT tags are used for Date and Time information and, per the Rockwell literature, represent the following:

Valid Date/Time range is from 1/1/1970 12:00:00 AM coordinated universal time (UTC) to 1/1/3000 12:00:00 AM UTC.

From Logix5000 Controllers Design Considerations

Native RSLogix 5000 instructions provide limited support for LINT’s. Although they are an option, there are other ways to represent date and time information that don’t get into some of the messiness that can result from using LINT’s.

Summary of RSLogix 5000’s Atomic Data Types

Here’s a nifty summary from Rockwell Automation’s Logix5000 Controllers Design Considerations document:

The Data Type summary chart for RSLogix 5000 from Rockwell Automation's "Logix5000 Controllers Design Considerations" document. This chart summarizes the atomic data types (BOOL, SINT, INT, DINT, REAL, and LINT) and their memory allocation and supported range of values.

Deciding Which RSLogix 5000 Atomic Data Types To Use

Choosing Atomic Data Types For Stand-Alone Tags

Let me cut to the chase: when creating stand-alone tags, use DINT’s and BOOL’s. To perform operations on smaller integer data types, the PLC has to first convert them into DINT’s, do the operation, then convert them back to their original data type. DINT’s don’t just use less memory per useful bit; they’re actually faster, as you can see in the Rockwell guidelines below. So don’t be silly. Use DINT’s.

Rockwell Automation's Guidelines for Data Types. This chart shows DINT as the preferred atomic data type in RSLogix 5000 for integer values. It also shows the memory reserved and instruction execution times for the various data types.

Like SINT’s and INT’s, BOOL’s are also memory-wasters, in that you’re only getting 1-bit’s usage out of 32 bits in memory. Nonetheless, for stand-alone tags, I say that you should still feel OK to use BOOL’s as they can potentially make your logic more readable. With that said, if memory is at all a concern, you should instead use DINT’s or arrays of DINT’s and allocate individual bits to your Boolean operations. If you do this, you’ll want to make sure you use good descriptions for the various bits you assign.

An example of BOOL vs DINT

To illustrate what I’m saying above, let me show you the same logic using BOOL tags and using bits from a DINT. Here’s with BOOL’s:

A ladder logic rung with an XIC on a BOOL tag and an OTE.
Both instructions reference tags of type BOOL

Here’s the same logic if I need to consolidate my stand-alone BOOL tags into bits off of a DINT:

A ladder logic rung with an XIC on a bit from a tag of type DINT and an OTE refering a different bit from the same DINT.
Both instructions reference specific bits from the same tag of type DINT

The difference is that instead of creating two tags of type BOOL, I created a single tag of type DINT. I can then reference any of the 32 bits available in that DINT by using [tag name].0 through [tag name].31. My two BOOL’s would occupy 64 bits in memory, whereas the DINT requires only 32 bits. Furthermore, I have 30 more bits available off of the DINT. If I instead defined 30 additional BOOL’s, I would occupy 30 x 32 additional bits in memory.

Decriptions are key if using DINT’s

If you do use bits off of a DINT as Booleans, it is very important that you provide good descriptions for each bit. In the example, I provide the “Process Output Conditions Met” and “Turn On The Process Output” descriptions for the specific bits: Process_Output_Bits.0 and Process_Output_Bits.1. If I didn’t take the time to provide descriptions, I would have no idea what those bits represent.

On the other hand, with the BOOL tags we defined in the first example (Process_Output_Trigger and Process_Output), the tag names themselves served as pretty specific documentation for what the bits represent.

In summary, the decision between using BOOL tags and referencing specific bits off of a DINT tag is a decision between readability for humans and reducing wasteful allocation of memory. For many projects, throwing in a few Boolean tags probably won’t be the end of the world.

Now, with all of that said, there will surely be exceptions. For example, Rockwell’s documentation states that you may need to use SINT or INT tags ” when communicating with an external device that does not support DINT values”. In such cases, you may have to go with what works and not worry about the overhead. There is, however, a case where you can use BOOL, SINT, and INT tags without wasting memory. We’ll cover that case below.

Choosing Atomic Data Types In RSLogix 5000 For User-Defined Data Types (UDT’s)

With User-Defined Data Types, you have the ability to consolidate bits (and save memory) without sacrificing descriptive tag names. In other words, if you do it right, you can define BOOL, SINT, or INT tags within a UDT without wasting (as much) memory as you would with stand-alone tags. Let’s take a look.

Within a UDT, consecutive elements of the same data type will be packaged within the same 32-bit address in memory. If you have a UDT with 32 BOOL tags, the size of the UDT will be 4 bytes (32 bits):

A User-Defined Data Type with 32 BOOL in RSLogix 5000.
A graphic depiction of 32 BOOL tags being consolidated into a 32-bit block of memory when using a UDT in RSLogix 5000.

Similarly, if you have a UDT with 1 DINT followed by 4 SINT’s and then 32 BOOL’s, the UDT’s size is 12 bytes (96 bits):

A User-Defined Data Type with 1 DINT, 4 SINT's, and 32 BOOL's in RSLogix 5000.
A graphic depiction of 1 DINT, 4 SINT's, and 32 BOOL tags being consolidated into a 96-bit block of memory when using a UDT in RSLogix 5000.

UDT’s are most memory efficient when like-type elements are located together

UDT’s will not, however, consolidate memory usage for non-consecutive elements. If you have a UDT with 1 BOOL, 1 DINT, and then 31 additional BOOL’s, the size of the UDT would be 12 bytes (96 bits). In other words, in the 1 DINT / 4 SINT / 32 BOOL example above, you get a full additional word of memory (the 4 SINT’s) for free just by making sure your elements of the same data type are grouped together. Here is how the memory shakes out in the non-consecutive example:

  • A 32-bit block of memory is allocated to the 1st BOOL
  • The DINT must start a new 32-bit block of memory
  • The 2nd BOOL starts a new 32-bit block of memory
    • The remaining 30 consecutive BOOL’s are allocated to this same block
A User-Defined Data Type with 1 BOOL, 1 DINT, and 31 more BOOL's in RSLogix 5000. The purpose of this example is to illustrate that when elements of the same atomic data types are not grouped together in a UDT, memory is wasted.
A graphic depiction of 1 BOOL, 1 DINT, and then 31 more BOOL tags being allocated 96 bits of memory when using a UDT in RSLogix 5000. The purpose of this example is to demonstrate that RSLogix will consolidate memory for elements with atomic data types in UDT's, so long as those elements are organized in the UDT consecutively.

As you can see, taking care in the design of your UDT’s can allow you to reduce your memory consumption. On top of that, you can still provide nice, descriptive tag names to make your logic readable. In this sense, UDT’s can offer the best of both worlds.

To continue learning about PLC programming with Rockwell Automation’s RSLogix 5000, read more about User-Defined Data Types.

Additional Information On Atomic Data Types In RSLogix 5000

Want to see more info like this? Sign up for the Industrial Automation Connection newsletter to stay up to date whenever we post something new:

Do you have any questions about atomic data types, RSLogix 5000, or PLC programming in general that weren’t covered in this article? If so, head down to the bottom of the page and leave a comment with the information you’re after.

Rockwell Automation Literature On RSLogix 5000 Data Types

Let’s get technical! Here are some great publications on this topic, straight from the horse’s mouth:

Floating-Point Decimal Data Types

If you’d like to dive into floating-point decimal representations, here are two brief articles and one incredibly in-depth publication. You can go as deep as you like into the difficulties of storing decimal values in binary:

Thank you for reading!

I hope this article was helpful for you. If you feel there’s anything we’ve missed, or you want to reach out for any reason at all, please feel free to leave a comment below or to contact IAC. Lastly, if you can think of someone else that would benefit from this information, use the share buttons below!

5 Ways To Know If You Should Be A PLC Programmer

Are you considering a career in PLC programming? Awesome! Learning how to program PLC’s (and how to debug under pressure) is an incredibly fun and rewarding experience. Maybe you’ve been considering attending a tech school, or have been talking to a friend who is a licensed electrician or who works for an automation integrator. Maybe you’ve developed an interest in industrial automation on your own and want to know more about becoming a controls engineer or PLC programmer.

Where are you in your journey? We want to hear from you in the comments!

Are you ready to take the next step in your industrial automation career?

The Industrial Automation Connection’s goal is to help you connect with opportunities to advance yourself.

Let us put you in touch with organizations that are looking for people like you.

This service is always free, and it takes only a few moments to register. Click one of the buttons below to get started!


Should You Become A PLC Programmer?

Whatever your background and level of interest, here are five suggestions for what might make PLC programming the right job for you!

1. You Think Automation Is Cool

But, I mean, who doesn’t, right? If the thought of setting up new systems, developing algorithms and sequences of operation, and programming robots and Programmable Logic Controllers sounds like it’s up your alley, then why not go for it?

Not everyone gets to do what they love, but if you have a true interest in automation, becoming a PLC programmer will allow you to learn how to establish and control automated processes. What could be cooler than that?!

An automated assembly line where orange Kuka robots are performing a joining operation on an automotive body as it proceeds down the assembly line.
How could you not think automated manufacturing is cool?

2. You Love To Learn

Being a good programmer means treating every situation as an opportunity to learn more about the PLC, the programming template, the production line, and the equipment you’re controlling.  As the “controller of the controller,” if you will, it’s not enough to be knowledgeable about just programming. The whole point of the PLC is to accept inputs and set outputs to and from alllllll the many field devices – conveyors, robots, I/O blocks, fixtures, actuators, sensors, servos, … , the list goes on forever.

Industrial automation is home to a thriving ecosystem of devices, equipment, and communications protocols. For instance, every imaginable flavor of communication can be found out there, from modern 10/100 (and faster) Ethernet to 9600 baud serial connections. As someone who designs and debugs PLC logic, you will need to work to grow your understanding at every layer of your production equipment. 

With so many different systems to learn, you must strive to build your knowledge of everything in the plant.  From physical cabling to vendor-specific camera solutions used on your vision systems, eventually, it’s going to break! When it does, people will be looking to you to come up with solutions to highly technical issues.

Long story short, as an industrial electrician, electrical engineer, or anyone else who does PLC programming, you should be learning something new every day. Don’t worry – what you don’t learn on your own, the breakdowns will teach you.  😀

3. You Love Solving Puzzles

Often times, as an automation engineer, you will find recurring issues with the equipment that no one knows how to fix.  As such, it will be your job to figure out what’s wrong.


  • … a bug in the original programming is allowing 1 in every 100 units to go through without a certain part being installed
  • … ten times a day a certain fault occurs and stops production, and there doesn’t seem to be any discernible pattern as to what’s causing the issue
  • … you’re having trouble with a complicated sequence of events that occurs within milliseconds
  • … you have to debug an exchange of data between two PLC’s that takes place over your industrial network

As a PLC or robotics programmer or engineer, people will often look to you to “deep dive” the tough, troublesome, technical issues that evade understanding. When you are working in that role, it’s likely that you will be presented with difficult troubleshooting situations that will require a deep understanding of the equipment and technology in question.

A 2x2 Rubik's Cube showing an orange, yellow, and blue face
A 2×2 Rubik’s Cube is more my speed

4. You Work Well In Challenging Situations

The first rule of PLC programming is: all logic requires debug. Whether you’re setting up a new process or troubleshooting an issue with an existing system, as a “controls guy” (or “controls gal” 🙂 ), people will be looking to you to get the equipment working again.

You know what they say – no guts, no glory. When the equipment isn’t working, excellent programmers or controls engineers are able to enter challenging situations with a cool head.  Once you’ve quickly gained an understanding of the problem, it’s time to work with your teammates to determine and correct the issue.

Adept PLC programmers who work in production (manufacturing) environments will likely be called to the toughest breakdowns. As your skills and knowledge grow, you will become more and more comfortable working in tense, time-sensitive situations. Wherever you are in your journey, the key is to always strive to learn more.

5. You Love To Think Creatively, Logically, And Analytically

Lastly, PLC programmers need to be able to:

  • Analyze a situation or a problem to be solved
  • Think of a possible solution
  • Come up with a way to turn that solution into logic
  • Then, write that logic and debug, debug, debug!

When you’re striving to make equipment run, it’s sometimes easy to get tunnel vision and hone in on one possible solution.  As such, PLC programmers need to be aware of the logic and the equipment with which they’re working, so they can pull the right programming “tool” out of their “tool bag” and put it to work to solve the problem.  Sometimes, you have to step back and think, “is this the only way I could attack this issue, or could there be an easier way?”  This may be the best way to jar yourself out of the tunnel and start thinking creatively. 

What Do You Think?

Do you fit the bill? Tell us what you think in the comments below! We want to know where you’re at in your own journey towards becoming a world-class PLC programmer.

If you want to know more about PLC programming and industrial automation, take just a moment to sign up for our newsletter. You’ll receive only a few emails a month, at most. 🙂

Thanks for reading!

What is a PLC?

If you’re considering a career in Industrial Automation, you are probably starting to hear a lot about PLC’s. If you haven’t worked with PLC’s before, they might seem a bit mysterious; you might be wondering what a PLC is, exactly. Let’s shed some light on the topic for you below.

What exactly is a PLC? A PLC, or Programmable Logic Controller, is a computer that is used for processing inputs and setting outputs. When I say “computer” in this context, I don’t mean what we typically think of when someone says “computer” – although a PC can function as a PLC with the right software.

A PLC is (typically) a computer in the more general sense – it is a microprocessor that is connected either directly or via an industrial network to some inputs and outputs, and it is programmed to evaluate the inputs and set the outputs in such a way that it facilitates the execution of some process. In other words, it is a processor, similar to the one in your computer, that adheres on a very basic level to the “IPO Model“: it accepts inputs, performs processing, and sets outputs.


Try to think of it this way – a factory is, in a sense, a giant machine that takes in a lot of parts and turns those parts into some product or family of products. Within the factory, there are some number of automated production lines, with each line performing some process on the parts.

On some lines, robots may move parts around so that other robots can weld them together. Some lines may have stations where operators use special equipment to install fasteners in each part before it moves to the next station. Some lines may simply convey parts to another area of the facility. In any of these cases, think of individual automation lines as large machines themselves; they perform some custom function within the factory to contribute to the assembly of the final product. Generally, they turn some combination of parts into a larger sub-assembly.

Are you ready to take the next step in your industrial automation career?

The Industrial Automation Connection’s goal is to help you connect with opportunities to advance yourself.

Let us put you in touch with organizations that are looking for people like you.

This service is always free, and it takes only a few moments to register. Click one of the buttons below to get started!

PLC’s run the show

PLC’s are the brains of these machines, much like your car’s ECM is its brain. In fact, in many regards, an ECM is to a car as a PLC is to an automation line in a factory – an ECM is, effectively, a PLC for your car.

  • An ECM accepts inputs from the vehicle, such as:
    • Crankshaft position
    • Oxygen sensor feedback
    • Intake airflow
  • The ECM then performs calculations using the input data, to provide appropriate outputs:
    • Injector duty cycle
    • Throttle control
    • Valve control
An Engine Control Module, or ECM, from a Volvo.
Vroom, vroom. Image credit.

I guess the list above is most relatable if you have a bit of automotive knowledge. Here’s another comparison that might be more broadly intuitive:

  • A home automation hub accepts inputs from sensors in your home, such as:
    • Motion sensors
    • Smart buttons
    • Voice input
  • The home automation hub processes those inputs in accordance with how you have it set up, and then provides appropriate outputs:
    • Turning lights on and off
    • Playing music
    • Closing the garage door

While both comparisons are reasonable, there is one manner in which both examples are significantly different from PLC’s:

ECM’s and home automation hubs come pre-programmed from the manufacturer. Their programming is pre-determined and, while there may be features that you can set up or configure at the user level, the code that the processors are executing is generally not editable.

PLC’s, on the other hand, are blank slates – they are putty in your hands, so to speak, for you to program however you need, in order to control your automated processes.

What do you need to have to be able to program a PLC?

In order for a PLC to do the incredible job of controlling equipment, you must provide it with the programming instructions, or “logic”, that brings your process to life. As a broad statement, you will need the following to connect to and program a PLC:

  • The PLC, with its power supply and any necessary accessories
  • A PC or programming terminal with the PLC vendor’s software
  • A means of communication between the terminal and PLC

Varieties of PLC’s

PLC’s come in all shapes and flavors, from this relatively affordable Electrodepot PLC to this Siemens PLC that can cost a few thousand dollars – which is the refurbished price, by the way. This Siemens NCU is just one example of a high-end PLC – as far as pricing for the cream of the crop, a few thousand isn’t even the upper bound.

There are many, many categories in which PLC’s can differ, but here are some noteworthy parameters:

  • Physical type (stand-alone, modular, or rack-mounted)
    • What are the PLC’s capabilities for expansion?
    • What types of accessories are available in this PLC’s product family?
  • Number of inputs and outputs accepted
  • Protocols supported
    • Does the PLC only accept “discrete” (wired) I/O?
    • Does the PLC support advanced fieldbus protocols like DeviceNet, Profibus, or Ethernet/IP?

PLC Software

Vendor-specific software is an important consideration when choosing a PLC platform, if for no other reason than differences in price:

  • Some vendors include their PLC software at no additional cost
  • Allen Bradley/Rockwell Automation PLC’s, on the other hand, require licensing to use their software – to the tune of $1,000’s for an annual license
An example of ladder logic depicted within RSLogix 5000, PLC programming software for Rockwell Automation equipment.
Rockwell Automation’s RSLogix 5000

Communicating with the PLC

Just as there are many different types of PLC’s, communicating with the PLC can mean many different things depending on what PLC you’re using:

  • Some PLC’s have programming ports that you can hook up to via a USB cable
  • Some require proprietary (read: expensive) programming cords that are vendor-specific
  • Many modern PLC’s can be programmed via an industrial network; like your router at home, you can connect to the PLC over Ethernet cabling.

What language is used for PLC programming?

Trick question? There are multiple languages that are used for PLC programming, but the most common is “ladder logic”, the technical nomenclature for which is actually “Ladder Diagram”. Two other common PLC programming methods are Function Block (or Function Block Diagram) and Structured Text.

Ladder Logic

Shown in the image above), ladder logic is the most common PLC programming method. Ladder logic is highly visual, and shows the truth of each instruction via visual indicators on the programming interface. Once you learn the meaning of a small group of instructions, you’ll be able to start reading and understanding simple bits of ladder logic.

The “ladder” in ladder logic comes from the appearance of the visual interface. Reminiscent of relay systems, ladder logic shows “energized” vertical bars on the left and right side of the screen, with each line of logic represented as a literal horizontal line – or “rung” – extending between the two vertical bars. Multiple “rungs” on the screen are visually similar to a ladder, hence the name.

Despite the high-level, visually simple nature of ladder logic, modern interfaces are extremely powerful and permit essentially any function of the PLC to be leveraged.

An example of ladder logic shown in RSLogix 5000, PLC programming software for Rockwell Automation PLC's.
Ladder logic. Instructions that are true are highlighted green. If enough true instructions on a rung form a path from the left of the screen to the right, the output on the right side of the rung will be turned on by the PLC.

Function Block Diagram

Function Block Diagram, or Function Block, is another visually representative programming interface. With function block, instructions are laid out like landmarks on a map, with inputs and outputs from each instruction branching out like roads to connect to other instructions. Function block can help to visualize a process and its inputs and outputs.

Many of the basic building blocks of ladder logic are available when using function block. These basic functions include comparative operators (equal to, greater than, etc.), counters (increment or decrement a count whenever X occurs), timers, and many more.

Like many ladder logic interfaces, you can develop your own instructions in function block. Creating custom functions allows you to reuse logic when applicable to multiple devices or programming contexts.

An example of Function Block logic.
A small example of Function Block. Image Credit.

Structured Text

A third method of PLC programming is Structured Text. For those familiar with computer programming, structured text will seem very familiar. Similar to high-level programming languages such as BASIC, structured text allows the user to write code to control the PLC.

In the PLC world, it’s important to consider how much trouble it will be for other people to deal with your logic when something isn’t working. Because structured text is less visual than either ladder logic or function block, it may not be as readily accessible to technicians who don’t have experience with the type of computer programming of which structured text is reminiscent.

No logic is immune from future debug when the equipment fails. As such, you want your PLC programming to be easy for others to read and understand. For this reason, I prefer a more visual interface than that offered by structured text, if only to make my logic accessible to a larger portion of the people who might have to debug it.

How can I learn more about PLC’s?

Three ideas come to mind for how you can start learning more about PLC programming:

  1. Attend formal training for PLC programming
    • Colleges offer degree programs such as Industrial Automation and Mechatronics that provide formal training in PLC programming
    • Certain skilled trades apprenticeships (including many electrician apprenticeships) will also require formal study of PLC programming
  2. Find PLC programmers in your network, on LinkedIn, or in other forums who may be willing to tell you a bit about the industry and what to expect
  3. Buy your own PLC and start experimenting to build your skills
    1. Get yourself an inexpensive Arduino starter kit and start building projects that will help you understand the Input, Process, Output Model
      • Arduino is not technically considered a PLC, but, basically, it’s an entry-level PLC
      • One drawback with Arduino is that you won’t be using ladder logic; it’s programmed with C
      • Many of the other experiences with Arduino will be identical or directly analogous to PLC programming
        • You will set up inputs such as sensors and switches
        • You will write logic that will handle or take action based on the inputs
        • Your logic will set outputs to turn on lights, activate motors, etc.
      • Another nice thing about this kit is that it comes with a slew of sensors, lights, resistors, etc., and a project guide
    2. If you have the money, fork over the dough for something like the Electro Depot or EZRack PLC starter kits
      • These kits will provide a very realistic experience, using their vendor-specific software to program in ladder logic
      • Both of these kits have simulation functions, allowing you to experiment with your logic without needing a ton of extra equipment
An Arduino Uno, a programmable controller used for prototyping and learning more about programming controls.
(aftermarket) Arduino Uno

Tell Us About It

We hope the information above will help you in understanding some of the basics regarding PLC’s. Where are you at in your own journey? Are you considering a career in industrial automation or specifically as a PLC programmer? Let us know in the comments.

User-Defined Data Types in RSLogix 5000

If you’re starting to dive into the world of User-Defined Data Types (UDT’s) within RSLogix 5000, have no fear. UDT’s are an extremely useful way to package your data and keep your tag list manageable.  Here are some of the things that UDT’s can do for you:

  • Consolidate many related data points into one tag
  • Allow you to share related data over the network with a single explicit Message instruction or Produced/Consumed relationship
  • Simplify and standardize your logic if you are adding more than one of the same device
  • Keep your tag list neat and organized
  • Slightly improve memory storage efficiency

There are a lot of big pluses to using User-Defined Data Types in RSLogix 5000. For the most part, UDT’s are easy to use, as well.  Let’s take a closer look.

Are you ready to take the next step in your industrial automation career?

The Industrial Automation Connection’s goal is to help you connect with opportunities to advance yourself.

Let us put you in touch with organizations that are looking for people like you.

This service is always free, and it takes only a few moments to register. Click one of the buttons below to get started!


What is a User-Defined Data Type?

In RSLogix 5000, User-Defined Data Types are data structures that are defined by the programmer.  For anyone familiar with computer programming, establishing a UDT is a bit like building the fields of a class. When you create a UDT, you are establishing the data points that relate to some object or operation. UDT’s can integrate atomic data types, native structures such as CONTROL and TIMER tags, and even other UDT’s.

Let’s imagine that the ceiling fan in your living room is a device on your industrial network. You want to establish a User-Defined Data Type on your PLC to help organize the logic and data that you’ll use to control the fan.

This ceiling fan has a light kit attached; the fan has a 3-speed motor, and the lights can be dimmed.  The fan has the following inputs, which accept the following data types and values:

Fan InputData TypeMin ValueMax Value
Fan On CommandBOOL01
Light On CommandBOOL01
Set Fan SpeedDINT03
Set BrightnessDINT0255

Additionally, the fan has the following outputs:

Fan OutputData TypeMin ValueMax Value
Motor ReadyBOOL01
Fan On StatusBOOL01
Light On StatusBOOL01
Fan Speed SettingDINT03
Brightness SettingDINT0255

True To Life?

While this is a fictional example, it’s somewhat true to what you might see with a typical field device. The outputs let you know the settings at which the device is operating, as controlled by the inputs.

Additionally, the fan outputs a couple of status bits, which can tell the PLC if there is a problem.  In your logic, it may be useful to check for Communications Ok and Motor Ready bits. Before attempting to operate the fan, you would check that these bits are high. Bits like these indicate that the device is communicating with the processor and is ready to operate.

Status bits of this type are common and are typically programmed at the firmware level by the device’s manufacturer. As a result, you’re often at the mercy of the device manufacturer in regards to how much help a particular status will be in regards to finding the root cause of a problem.

Creating User-Defined Data Types In RSLogix 5000

Making new User-Defined Data Types (UDT) in RSLogix 5000 is easy.  While there are a few limitations you’ll run in to here and there, I think that once you start working with them, you’ll find it simple to use this powerful feature.

To create a new UDT in RSLogix 5000:

  • Open the Controller Organizer Window, or “COW”
The Controller Organizer Window in RSLogix 5000.
The Controller Organizer Window (COW).
  • If it’s collapsed, expand Data Types by clicking the +.  Right-click on User-Defined
The context menu that pops up when you right-click on User-Defined within Data Types in RSLogix 5000.
The User-Defined context menu.
  • Click New Data Type…

Setting Up Your New UDT

And you’re off!  The first thing to do is name your UDT.  When you do so, make sure to follow any standards that your organization has set in regards to naming conventions, or consider creating your own conventions if you’re working independently.  Here is the general format that my organization uses:


For this application, let’s establish one UDT for the outputs and one UDT for the inputs. A quick note here:  Earlier, I described the “fan inputs” and “fan outputs.” Now, we’re looking at things from the opposite perspective. In other words, the fan’s inputs will be connected to PLC outputs, and the fan’s outputs will be connected to PLC inputs. So, as you’ll see below, the “FanIn” UDT we’ll create will correlate with the “Fan Outputs” table you see above.

Given my organization’s naming standards, I’m inclined to use something to the tune of:

Udt_Environment_FanIn_20170817 and Udt_Environment_FanOut_20170817

The UDT name Udt_Environment_FanIn_20170817 shown in the Name line on the New Type... window in RSLogix 5000. This image is being used to describe the process of creating User-Defined Data Types in RSLogix 5000.

Of course, this is just one idea for how to format the name for your UDT. What format does your organization use?  Let me know in the comments section below!

Adding Elements To a UDT

Now that you’ve given a name to the UDT, it’s time to add some elements.  For now, let’s look at the FanIn UDT and add elements to correspond with our Fan Outputs above:

The FanIn UDT shown with its elements filled in.
The FanIn UDT – note that PLC inputs correspond with the device outputs.

A brief interjection:  Although I did it for purposes of consistency, note that all of my elements of type BOOL are listed sequentially, followed by elements of type DINT. Because the Boolean elements in this UDT are grouped together, it will actually require less processor memory to store these elements than it would if each were defined outside of a UDT as separate tags.

This is because the smallest memory allocation for a tag is 32 bits, even if the data type does not require the full allocation. UDT elements that are less than 32 bits can be consolidated into the same address in memory, depending on how they are ordered in the UDT’s definition.

Using Pass-Through Tag Descriptions

One nice UDT feature that you can enable or disable is the ability to pass through the overall UDT description to each element.  Note our UDT description above, “From Fan Controller.”  If you choose to leave descriptions off of your UDT elements, you can set RSLogix to use the description from the UDT itself.  Alternatively, you can set your tags to append the UDT description as a precursor to each element’s description; “Comm OK” becomes “From Fan Controller Comm OK.” This can be a useful feature to provide common text for your tag descriptions.  Here’s how to set up Pass-Through Descriptions:

  • Select Options… from the Tools menu.
Options... on the Tools menu within RSLogix 5000.
  • If necessary, click the next to the Application category to show the Display category.
  • Click the Display category.
In RSLogix 5000, in the Options... menu, the Display category is shown as a subcategory to the Application category.
  • Here, you’ll find the options to Show Pass-Through Descriptions and Append to Base Tag Descriptions.
  • Check or uncheck these settings as desired.

If you want to know more about Pass-Through Descriptions, check out this literature from Rockwell Automation.

To see what the Append to Base Tag Descriptions option looks like, let’s make a tag with our new UDT.

Creating Tags In RSLogix 5000 Using Your New User-Defined Data Type

Creating a tag using your new UDT is as easy as creating a tag using atomic data types.  We’ll follow the typical procedure using the Edit Tags window, and then take a look at the descriptions for your new tag’s elements.

  • Head to your Controller Tags (or Program Tags) from the COW.
In RSLogix 5000, Controller Tags shown within the Controller Organizer Window.
  • In the bottom-most row, type in the name for your new tag, and then type in the name of the UDT that you created under the Data Type column.  RSLogix will auto-fill the data type as you type in your UDT.
Creating a new tag in RSLogix 5000 by typing in the tag name and data type.
  • Once you’ve entered the name and UDT, click anywhere else in the Edit Tags window to add the new tag.  After doing so, you’ll see the UDT description pop up in the Description column.
Te new tag created in RSLogix using the new UDT. The UDT description comes through as the tag description.
  • Click the button next to the new tag to view its elements.  Note that the UDT description (“From Fan Controller”) is appended to the front of each element’s description.
    In RSLogix, the UDT description distributed through each of the element's descriptions in the new User-Defined Data Type.

This can be an easy way to implement common wording in the tag elements that are built from your User-Defined Data Types, while still providing specific notes for each element that identify its purpose.

One Downside to Implementing User-Defined Data Types

While there’s a lot of power in using UDT’s, there’s one hiccup you can run in to when developing and maintaining your logic.

The only problem I’ve run in to when using UDT’s is when it’s necessary to modify a User-Defined Data Type by changing or adding elements.

The problem is that to modify a UDT, you have to go offline, make your changes, and then download to the processor.

Depending on the production demands in your facility, downloading to the processor may not be an easy option for you.  In the factory where I work, for instance, I only have a window of around an hour each day in which I could do a download, and I would have to answer for any issues that delayed the next shift’s startup.

Another Method For Modifying a UDT

Another option, then, is to modify the UDT offline and then import it as a new UDT – our practice is to update the UDT name with the current date: 

Udt_Environment_FanIn_20170817 becomes Udt_Environment_FanIn_XXXXXXXX. This approach, however, has its own concerns:

Any tags that you’ve added to your logic with the old data type will have to be updated to the new data type. You could change the tag’s data type in the Edit Tags window, but again – you would then need to download.

You can simply create a new tag with the new data type, but then you would need to rename every reference to every element of the old tag to refer instead to the new tag. This could be a small or massive undertaking, depending on how many elements are used and how many tags have been created with that data type.

A third option is to update your tags offline and then import duplicate routines or programs and switch your JSR’s to reference the new routines. This has worked for me in the past, and may be the best method, depending on how many references you would need to change.

In Summary

User-Defined Data Types are an awesome feature that can help you to organize and simplify your tags and even improve your memory usage in some cases. UDT’s can also come in handy big time when sharing data with other processors on the network.

How are you using UDT’s? Is there specific information you’re looking for? Let us know in the comments below, and thanks for reading! If you’d like to continue reading in this field of knowledge, check out Atomic Data Types in RSLogix 5000.

If this post was helpful for you, go ahead and take just a few seconds below to sign up for our newsletter. We’ll keep you posted whenever new industrial automation content is available. Thanks again for reading!

Fix for RSLogix 5000 EXCEPTION_ACCESS_VIOLATION on Windows 10

When I first installed and tried to run RSLogix 5000 on my new Windows 10 laptop, I was met with the following ugly Fatal Error for an EXCEPTION_ACCESS_VIOLATION:

A pop-up dialog from RSLogix 5000 showing a Fatal Error for an EXCEPTION_ACCESS_VIOLATION.
The dreaded Fatal Error.

I searched through several forum posts and tried several solutions, but what solved the problem for me was running the program as administrator.  

To change this setting, first right-click the RSLogix 5000 shortcut and click Properties:

The RSLogix 5000 icon on a desktop with its right-click Context Menu shown and Properties highlighted.

In the Shortcut tab, click Advanced…

The RSLogix 5000 Properties dialog. The Shortcut tab is shown with the Advanced... button highlighted.

Check Run as administrator, then hit OK on both dialogs to commit the changes.

The Advanced... dialog. Make sure Run as Administrator is checked.

For me, this was all it took to fix the RSLogix 5000 EXCEPTION_ACCESS_VIOLATION on Windows 10!  Still having issues? Leave a comment with your situation, or check out this forum post on PLCS.net for some other things to try.

Are you ready to take the next step in your industrial automation career?

If so, the Industrial Automation Connection is here to help connect you with opportunities to advance yourself.

Let us put you in touch with organizations that are looking for people like you.

With IAC, this service is always free, and it takes only a few moments to register. Click one of the buttons below to get started!

Was this post helpful for you? Take just a few seconds below to sign up for our newsletter, and we’ll keep you posted whenever new content is available. Thanks for reading!