RSLogix: Multiple Machine Support

GBrinkworth

Member
Join Date
Nov 2002
Posts
9
I admit I'm new to PLC's and RSLogix in particular. I come from a real-time software control back-ground and I admit I dont like RSLogix one little bit, but hey!, the customers want them.

The question I have is this. We have built a prototype machine, and the customer seems very happy. If tests back this up, then they will be buying many more identical machines. These machine will be near enough electrically and mechanically identical.... can I make the software identical?, and if so how?.

For example
* I will want a different ip address
* I may have a slighly different datum/home offsets
* Other "things" may be slightly different.

RSLogix does not separate data from code within memory.... its just one block. I could have different programs for different machines, but what happens when I want to make an enhancement (or bug... God forbid). I could probably cut and paste for three of four programs, but more.... no thanks.
 
RSLogix is the software used to program the Allen Bradely PLCs. The program is downloaded to the PLC, and the PLC does, indeed, have different You can separate "data" (registers) from "code" (ladder logic) by configuring the program properly. If you set your logic to use registers (like N:10) for things like setpoints or compares instead of writi9ng a constant into the ladder logic you will enhance the flexibility.

The IP address will have to be individually set for each processor when the program is downloaded or the CPU is configured.

One of the "features" of RSLogix is that a memory file of the current register contents is saved to disk with the program and downloaded with the program logic to the PLC. Unless you are very careful you will overwrite the setpoints etc. when you download and you will have to adjust them.

PLCs are less flexible than the PCs you seem more familiar with. That is a strength - more robust operation - but also a weakness. You will have to keep very very good records.
 
I've fielded similar questions from OEMs on my side of the pond, who want the controller operating system to "plug and play" with the physical modules they put in and automatically decide which routines to run and which ones to disable.

What I don't understand about their requests is that these machines take about a full week to assemble in their shop, and the program name for every one of them includes the serial number of the machine. They're not identical at all; they'll have different sized motors, and different infeed systems, and different communication networks, and different I/O modules.

I always recommend to write an omnibus program with subroutines for all of the options, then re-save it with the new production project name and modify it to fit the machine; simply delete the routines that are un-needed (two keystrokes per), delete the I/O modules that are un-needed (two keystrokes per), put in the correct network address (sixteen keystrokes), and download it to the machine's controller (which you would have to do anyway).

One of the OEM engineers I spoke with rejected that out of hand; he doesn't use subroutines because he finds them too hard to troubleshoot and he would have to find the un-necessary logic in File 2 and that would take too long.

Doesn't use subroutines. Geez.

It doesn't take long at all to delete SLC program files and their associated JSR instructions in the main program. The real problem was that their code was "spaghetti"; totally undisciplined and non-modular... but they wanted the PLC to magically adapt to the differences in function of their machine.

It's much harder to re-use code in the SLC than in the Logix family, because of the simple typed-element structure of SLC memory addressing. Very often the routines you'll have for separate machine elements have been written using just a few registers from the default pool (B3, N7, etc) and will conflict with existing routines. That's why the Logix program-scoped tag memory is so powerful, but neither is as powerful as a disciplined approach to software development that actually lends itself to modularity.
 
Ken,

I agree with your views on generic programming. We have thirteen different SLC 500's on a network running totally different processes. The people who wrote the program decided to write one program for all of them using indirect addressing. Guess what we have thirteen different files on our server. So much for making life easy. Now to trouble-shoot I have to wade through all the code that isn’t being used by the PLC I’m working on. One thing that does help if the program is the same but the set points are different is to use N:XX locations for all compares, moves etc and then address those locations in a subroutine or at the beginning of the program , with adequate rung comments, so it is easy to find all set points which need to be changed in a convenient location.
 
Thanks for the replies. Pretty much as I expected, but I lived in hope.

What it seems that I will have to do is specify that each machine has its own unique id number (8 dip switched), and load machine specific values based on these settings on Startup. Just hope there are not too many embedded constants used (it was a multi-engineer project).

Still not sure what to do with configuration data such as ip addresses. Suppose it needs to be a "down-load" procedure.

With advances made in software engineering over the years, it does frustrate me that PLC's seem to be going in the opposite direction. I find RSLogix V10 particularly annoying as imposes ideas that have not been fully thought through. At least with a "raw" PLC you could impose self-discipline and standards. Why oh why not fully separate data, code, configuration, constants. It seemed to me that at least two of the posters had not been subject to the joys of RSLogix, where flexibility has been taken away.

Someone mentioned (not) using subroutines. I was amazed when told a similar thing by two totally un-connected engineers. Having tried to generate a modular system I now have a lot of sympathy (I never thought I would say that).



PS. Someone implied I was more use to PC's. Thats not the case. I'm more used to good software practices.
 
I dont get the problem, can someone clarify the issue please?

I got that RSLogix5000 v10 is probably being used but wasnt stated specifically.
I also understand that RSLogix wasnt liked.

I saw that there may be many machines that are simialar but with differences.

Is the question (or one of them) why cant RSLogix magically make the changes needed because of the differences?

A plc is a tool similar to a computer, it cant think for itself so must be told how, when and what to do. Adding an IP address to a computer requires making changes to its programming, the same is necessary for a plc.

I dont get the problem, if you have 50 machines and there all different than you will have to create 50 programs.
 
rsdoran said:
I dont get the problem, if you have 50 machines and there all different than you will have to create 50 programs.

The problem, as I understand it, is that he's got a bunch of machines that are "the same" (only different), and he wants to write one program that he can download to any/all of them, which will be smart enough to recognise the subtle differences between the machines.

He could accomplish most of his configuration differences by allowing the different PLCs to have different values in a set of tags (I'm also assuming Logix 5K, since he mentions V.10). A "if this bit is set - enable that option" - kind of thing.

I think his biggest gripe is that he can't just download the CODE, and leave the tag values unchanged - it's all or nothing.

I have yet to do a ControlLogix project, so I don't know how much of what I've learned about PLC-5s and SLCs can apply. I have programmed "identical - only different" systems in the past, and set up N11 as an INI file. On first scan, the PLC/SLC would check it's data highway address (S:15 low bytes - I don't think this number gets changed even in a SLC 5/05. But need to verify that) and then write the appropriate values into N11 (either hard coded or copied from a "stored configuration").

I suspect that there is some sort of Global Variable (if that's the phrase) that the CLX5000 can access that would qualify as a unique setting (he mentioned dip switch settings) that could be used to perform a similar task.
 
I too (I work for an OEM company) have had the problem where we have developed multiple "identical' machines for a customer (identical in that the same LOGIC is running on all) but with different data. Now I want to make a LOGIC change on all machines. With AutomationDirect I can change the logic and dump JUST THAT into each machine. With AB (RSLogix 500) I have to go to each machine, possibly Upload to get the latest from the data tables, make the logic change then dump it back. It would be nice to have the flexability in AB.
 
Not sure how to do that clever quote thing, but I quote

"I dont get the problem, if you have 50 machines and there all different than you will have to create 50 programs"

So you have 50 programs. What happens when you need to change their functionality. You find a bug, or a new sensor is added?. You have to go to 50 identical programs and make the same change. Now if RSLogix just separated data from code, you could maintain one version of code.
 
It's not quite an RSLogix thing

The Allen-Bradley PLC-5 series allows for partial download (Selected Ladder files; all ladder files; (selected) data tables only; whatever you want.)

The SLC and Micrologix family do not support partial downloads.

Currently, the ControLogix do not support partial downloads, but since the ability to do so is probably just a firmware issue, given time, it might (since CLX5550's claim to fame/shame is the ability/need to change the firmware.)

[rant]
But it won't hapen soon. The firmware/software programmers are having enough trouble getting the enhancement that's been requested since rev 2 - the ability for one version of RSLogix5000 to handle multiple versions of CLX firmware (you wouldn't think that would be too hard, since Logix 500 handles both SLC and MicroLogix firmware, which include different instruction sets, but apparently it is).

But I'm not sure if it CAN be done, considering how the CLX s set up. If, in your new code, you reference a new tag (that didn't exist in the previous downloaded version), what should the processor do? I think (but as I said, I've never actually worked with one) that you can't create a tag online, on the fly. Until you can, there's no way for the processor to understand what to do with an unconfigured tag, and so the tag configuration and code MUST go hand-in-hand. But without knowing the tag's configuration, there's no way for the processor to know where to store the tag's data. So the data files get lost, too.

It is much easier on less sophisticaed machines, that have absolute memory addresses which don't change based on the program. There it's a fairly straightforward task to download to only the program memory and not touch the data memeory.

But that's progress for you. The ability to do complicated things simply, makes doing simple thing complicated. Take printers, for example. In the old DOS days, you could just send the letter "A" out the parallel port, and the printer only needed enough smarts to set the pin combinaions to generate a dot-matrix "A". Now, you need to have a driver to talk with printer, and the driver tends to assume that you are printing a page, not just a single line or character.

[/rant]

But don't gripe here. Go to the RSLogix forum (http://www.software.rockwell.com/forum/rslogix/ - but you'll need to register first) and put the suggestion THERE. Whether RS acts on it, well, that's a business decision.
 
He does not get it

First of all you need to qualify what RSLogix you are using.
5,500,5000? V10 in your description implies that you are using
RSLogix5000 version V10 and Logix5550 processor. Is this correct?
How can we help you if you can't even specify the software/hardware
you are using?
I will answer you based on the assumption that you are using the
RSLogix5000 V10 and Logix5550 processor.

How do OEM's deal with machines that have only minor differences
between them?
This problem is being addressed all the time by Companies like Engel,
Arburg and others. The accepted practice is to create a master
program that includes all the possible features for every machine.
The features not used on a particular machine are not being activated
in the program. In other words the programming code for unused features is laying dormant. As you keep evolving the machines and the
program itself, just make sure that it is always downward compatible.
A config screen on your HMI will allow qualified personnel to activate specific sections of software.

I will want a different ip address

What hardware are you using? 1756-ENET? What is it?
In fact elsewhere in your description you are referring to IPs, as in multiple, does that mean that you have a bunch of ENET modules?

RSLogix does not separate data from code within memory
Yes it does. Data Tags can be Controller scope or Program scope.

I find RSLogix V10 particularly annoying as imposes ideas that have not been fully thought through. At least with a "raw" PLC you could impose self-discipline and standards. Why oh why not fully separate data, code, configuration, constants. It seemed to me that at least two of the posters had not been subject to the joys of RSLogix, where flexibility has been taken away.

Logix5000 is a state of the art processor with unparalleled features,
it is the creme de la creme of PLC's. It is well thought through
and being evolved on continuous basis. Its features are not being imposed, they are being driven by market research and demand.

A "RAW" PLC? What is that? Your own PLC? Explain that!!!

Data and code are fully separate and as far as configuration and constants are concerned, it is up to you to implement them
within your program, ALL THE TOOLS ARE THERE!

Flexibility whithin the Logix5000 is just outstanding and it is up to
you to try to fully understand the power of this processor!
The way I see it, you are a novice who is in over his head trying
to blame AB for his own shortcomings.


Allen,
V10 is upward and downward compatible with different firmware versions and yes you can create tags on line on the fly, I do online programming all the time and have created 100's of tags on the fly (in RUN mode).
 
I think Allen Nelson's first comment defines the basis of the problem. The problem you end up with in most of the Allen-Bradley family is the inability to download code separate from data files. The OEM I used to work for had a big internal investment in plc5's and programmed using 6200. There was significant pressure against moving to RSLogix5. That OEM wrote a small C application that used the DF1 protocol to upload and download any data files desired. So while the base program (code + data) contained some arbitrary data in the 'configuration' files, the C app was used to write the desired data into the required data blocks on a machine by machine basis. While this is not separate data and code stricly speaking, it tends to accomplish the same end.
I think you can do something similar with with Logix5000. However, you would need a full-blown version of RSLinx with the built-in OPC server. You could write an Excel script or a Visual Basic app to write the contents of an Excel spreadsheet or a .CSV file into the processors. Again, it's not strictly speaking separation of data and code. But I tend to be results oriented and this would achieve the desired result.

Keith
 
"I do online programming all the time"

Think that says a lot really. How on earth can you hack around on-line, then expect the code to be well written.

You seemed to want to know exact details. I appologise, so here goes :-

Slot 0: 1756-L55
Slot 4: 1756-L55
Slot 8: 1756-L55
Slot 16: 1756-ENBT/A

There are a number of i/o and drive boards also. I wont quote firmware revision levels, even though with devicenet this caused a problem (Two identical boards, bought off-the-shelf at the same time but with different firmware.. one worked the other did not).

I'm using RSLogix 5000 V10.0.0. I see V11 is out.

I wont address each of your points, as your posting is very condensending.

My opening statement was "I'm new to PLC's", but I have written software for many different machines, with much re-usable code. One project has 20 machines running in two different countries, some are identical, some have slight differences, some have quite significant differences. However, the software is identical, or if not, built slightly different. This is achived by having well designed software, using VCS, and a simple build facility which alows variants. This method allows me to issue fixes and updates without having to write them 20 times, and travel the world.

I will ask simple questions to problems that I have

Q) 20 machines, each with a eithernet card with an unique ip address. How do I down-load s/w without having to re-enter eithernet address?.
A) You cant.

Q) I have a slighly different datum offset position for each machine. How do I not have this embedded in the code.
A) You cant as AB gives you a "ADC" file that contains everything, so data and code is not separate. Yes there are methods to handle this, but so much redundancy. What if I have 100's of potential variants.

Q) I have a data-structure that is used on three processors and defines the "consumed/produced" data. I make a change to this on processor 'x'. How do I replicate this to processors 'y' and 'z'.
A) You have to re-type it.

A) I have a system with 13 cards in. How do I test sub-sections of this software without either "hacking on-line" half way round the world, or buying an identical rack of cards?
Q) You cant.

Q) You mention "Constants". How do I define a Constant?.
A) They do not exist. They are pre-defined variables, which cant be used for configuration

Q) I can sort tags alphabetically, by type or by just about every other critera except by the way I want to.
A) Use Data Structures (I have no problem with that, and admit I have under-used them), but I does become un-useable if you have data-structures with bugger-all in them.

I could go on. I'm a novice to AB I admit. I have used Step-5, and it did not force too much upon me. As for my "short-commings" as you said. I suggest you do not bury your head in the sand, and consider software as a profession, and not something that can be hacked out.

What worries me is that customers want this as its "standard", and they have the tools to modify it (aaaggghhh), but when talking to them they never want to get near it. This includes a major international company that you will without doubt know about.

Finally:- You mention

"Flexibility whithin the Logix5000 is just outstanding and it is up to you to try to fully understand the power of this processor!".

RSLogix is a software package not a processor. I dont understand you point.
 
Well, fellers, I'se goin' to pontificate a wee bit hyar. I likes to beat up suppliers as much as the next feller, an' I firmly believes in pushin' the envelope an' askin' fer new features an' sich from manufacturers. How-some-ever, at the end o' the day we has to git the job done with the tools whuts available to us.

When I wuz still a mechanical type engineer thet meant I had to deal with material limitations and Newton's laws and thermodynamic properties and sich. I wuz always serachin' fer an elegant design instead of a Rube Goldberg design. When I is now programmin' a PLC or control system I has to deal with the limitations of the software and the program structure and so on. I is tryin' to search for elegant modular programs instead o' spaghetti code.

Good engineerin' thought processes are not unique to any one field. If you is goin' to program controls, you adapt the solution to BOTH the needs of the customer and the limitations of the technology you are working with. There ain't no magic bullet, and short cuts almost always end up the longer way to go.

And as an aside, don't waste a whole lot of time chasin' a general purpose one-size-fits-all single program. I has taken a run at it myslef, with lousy results. I has seen and worked on programs by others attemptin' the same "universal" solution kind o' thing. The results were incredibly complex, took huge amounts of prgrammin' time, was very difficult to debug, always failed to account for that "one little wrinkle" on each project, and still resulted in g-d awful version control issues.

Bite the bullet, organize yer thoughts and yer program structure, use subroutines, group registers logically, comment the h--l out o' the code, and document yer system. If you do this well, then separate programs fer each system is goin' to be easier to cope with and more economical than a spaghetti monster that tries to be everythin' fer everbody.
 
pair o' dimes ??

The pain of the paradigm shift is proportional to the square of the RC factor (Resistance to Change).

I think by embracing the beast rather than fighting it, you will be able to achieve far more with it.
Q) 20 machines, each with a eithernet card with an unique ip address. How do I down-load s/w without having to re-enter eithernet address?.
A) You cant.
The only option would be to enable Bootp - but that of course requires a bootp server. I'm not enamoured with the method for setting up or changing IP addresses. It seems you first have to set the card up 'on-line' and then download a program with a matching IP.
Q) I have a slighly different datum offset position for each machine. How do I not have this embedded in the code.
A) You cant as AB gives you a "ADC" file that contains everything, so data and code is not separate. Yes there are methods to handle this, but so much redundancy. What if I have 100's of potential variants.
A clever chap might be able to work with an "L5K" file using PERL or some such to relieve some of the drudgery.
Q) I have a data-structure that is used on three processors and defines the "consumed/produced" data. I make a change to this on processor 'x'. How do I replicate this to processors 'y' and 'z'.
A) You have to re-type it.
By opening multiple instances of RSLogix, you can cut and paste between different programs.
A) I have a system with 13 cards in. How do I test sub-sections of this software without either "hacking on-line" half way round the world, or buying an identical rack of cards?
Q) You cant.
What would you like to be able to do? What would you do with your system of choice?
Q) You mention "Constants". How do I define a Constant?.
A) They do not exist. They are pre-defined variables, which cant be used for configuration
Think "Literal". Literals are embedded in code and referred to as constants by many.
Q) I can sort tags alphabetically, by type or by just about every other critera except by the way I want to.
A) Use Data Structures (I have no problem with that, and admit I have under-used them), but I does become un-useable if you have data-structures with bugger-all in them.
?????????

I'm sure no manufacturer, including Rockwell, would say there is no room for improvement in their products and I'm also sure that they get a broad spectrum of suggestions from all quarters. But complaining that ControlLogix is different to S5 or that RSLogix doesn't support all the functions of QNX (or whatever) won't get you very far.
 

Similar Topics

We have a dozen or so Maintenance technicians who have their own laptops and need access to RSLogix 500 (Starter). Some of them use it very...
Replies
4
Views
2,708
Hello everyone I'm looking for a solution to this: I've 10 on/off lamps control with SSR in order to regulate infrared lamps on a blow molding...
Replies
5
Views
2,259
Good day everyone, I am new to Allen Bradley PLC coding, and have been trying to figure out how to add a second backplane to a ControlLogix...
Replies
2
Views
5,062
Reading A-B documentation I see conflicting info on the use of multiple aliases to same tag and nested aliases (alias to an alias). Integrated...
Replies
10
Views
15,432
Does anyone have any good ideas on how to better manage multiple users online editing the same program at once, specifically concerning...
Replies
7
Views
10,218
Back
Top Bottom