RSLogix 5 - 5000 Conversion | Indirect Addressing

Join Date
Jul 2023
Location
Minnesota
Posts
1
Hello,

I'm very new to programming with absolutely zero schooling in this field and pretty hands off training in my new role, it's been fun (sarcasm intended). I've had to try learning everything on the fly. So as you answer this, I'd love dumbed down answers if possible =P.

Anyway, I had to convert a RSLogix5 program to RSLogix5000 and most things converted fairly well, except for anything with indirect addressing and specifically the things like the examples attached. I can't wrap my head around how to make this work and after days of trying to study up on finding a solution and watching many youtube videos, I find myself here. Thanks in advance for your time and assistance (and patience that will likely be needed to deal with a newbie like me).

Ex1Logix5.png Ex1Logix5000.png Ex2Logix5.png Ex2Logix5000.png
 
Welcome to the PLCTalk forum community !

The differences between how indirect addressing worked in the PLC-5 and how array tags work in ControlLogix prevent simple or automatic conversion of double-indirection addressing like your screenshots illustrate.

You just can't do a direct conversion. The narrower you focus, the further you get from a solution.

You need to take a step back, maybe several steps, and figure out what the original software author was doing.

Maybe they needed a data table that was more than 255 elements long (or 2000 elements, in a late-generation PLC5) and they used multiple Data Tables to accomplish that.

Or maybe each Data Table represents a data set which is selectable in logic.

This is harder if the original authors aren't available, or if the logic is uncommented, or if you don't actually know the process that is being controlled.

But it's still necessary, so if you're willing to look into the original program folks can help you.
 
Let's start first with examining the PLC-5 addressing in these COP instructions. The first one says:

COP (Copy File)
Source: #N[N206:9]:[N206:7]
Dest: #N[N206:2]:79
Length: 1

Some exposition:

PLC-5 and SLC-500 Data Table files have Types: B, N, F, T, C, etc that describe their data type and functionality. Veteran A-B programmers immediately recognize N as a 16-bit Integer data table file, and that the default file created automatically by RSLogix is N7.

The # sign before those instruction arguments is just an indicator that the following elements are indirect or indexed; that actually affects an index pointer at a low level in the controller.

An ordinary Integer data table address is of the format "N7:0", where the 7 is the unique data table number in the controller, and the ":0" indicates the first 16-bit integer in the data table.

PLC-5 allows a programmer to use a pointer in place of either one of those numbers. You can substitute a pointer for the Data Table File Number, or for the Element Number, or both.

The pointer has to be an Integer element. It can be from the same file, or a different file.

In this instruction, there are three integer element addresses used as pointers:

N206:9 = The Source Data Table File Number
N206:7 = The Source Data Table Element
N206:2 = The Destination Data Table File Number

And there's one fixed value: the destination will always be Element 79 of the destination data table.

I would start examining this by cross-referenceing those pointers. Find out what the possible values of N206:9 and N206:2 are, and that will tell you which Data Table Files are being manipulated by this logic.
 
ControlLogix doesn't have Data Table Files; it has Tags, which are defined to be a specific data type. Those include INT tags, which are the same encoding and range as "N" elements in the PLC-5.

ControlLogix Tags can be defined as Arrays, making them very similar for handling blocks of data to how PLC-5 data tables worked.

ControlLogix array type tags can also be defined as 1, 2, or 3-dimensional arrays. The syntax is something like "MyRecipeData[1,1,1]"

Your application may be straightforward to convert to a 2-dimensional array.

But you're going to have to read, research, and understand more about it before you'll be able to implement it correctly in the ControlLogix.

Again, I would start with those pointers: N206:2, 7, and 9. Replace any references to them with tagnames that describe them, like "SourcePointer_File" and "SourcePointer_Element" and "DestPointer_File", so you can see and think of them for what they do, not via a tag name that is styled in similar syntax as the PLC-5.
 
And again, welcome to the Forum community.

Some of the folks with YouTube videos about PLC programming are also members here, so you might find some crossover expertise or even get to correspond with the author.
 

Similar Topics

I have been tasked to upgrade some SquareD PLCs at our plant. I have done several of these upgrades without any issues. However, I have now met my...
Replies
4
Views
2,445
Respected Experts; Good day. We have 2 number machines which is designed in RSLOGIX 5000 version 10.07. As we know that now windows 7 is not...
Replies
7
Views
2,589
Would someone please convert my RSLogix program .ACD to a .PDF format? I don't have the software and I need the program for a job interview. The...
Replies
2
Views
1,395
Good morning. I am trying to open up a sample program for accessing error codes from an Ultra 3000. When I open it, it comes up with "Support...
Replies
4
Views
1,610
I NEED TO CONVERT THE RSLogix 5000 .ACD (LADDER LOGIC) FILE TO PDF, CAN ANYBODY GUIDE ME (STEP BY STEP) TO CONVERT THE .ACD FILE TO PDF OR ALL THE...
Replies
2
Views
5,368
Back
Top Bottom