Is this AB Technote on PID low select right?

TConnolly

Lifetime Supporting Member
Join Date
Apr 2005
Location
Salt Lake City
Posts
6,152
I don't think it works.

http://domino.automation.rockwell.com/applications/kb/RAKB.nsf/0/681C934F01AB4E9985256BAA00606E61?OpenDocument

I tried a similar, but not exactly the same, low-select in a 5/05 and it clears the integral sum just like the instruction set reference says it should.

After the lowest PID.OUT is selected, the highest PID.OUT must be forced to equal the value of the lowest. However, when the selected PID is scanned again the second time on the false rung that is supposed to keep if from being forced to update, the integral sum (word 17-18) is cleared. I shot AB an email on it and they said it works just fine.

I reformulated my routine to JMP over the low-selected PID and only manually update the non-selected PID.out. That one works just fine.

Has anyone tried this and had it work?
 
Last edited:
I've never tried this one before ...

I'll try to take a look at this and run some trials this weekend ... I'll let you know what I find ...
 
I think you've got a lemon on your hands ...

Greetings Alaric,



this is an interesting problem ... I’ve only had an hour or so to look at it ... I’ll try to find time to dig deeper in the next day or so, but right now the bo$$ has work for me to do ... in the meantime, here is what I’ve come up with so far ...



PLEASE NOTE: these are PRELIMINARY results ... further research and experiments might change these ...



first of all, I fully agree with you ... this does NOT work correctly ... as for the biggest single issue: you hit the nail on the head with your statement:



when the selected PID is scanned ... false ... the Integral sum is cleared



I’ve paraphrased your statement slightly for clarity ... but the central idea that you raised is definitely on target ... specifically, in an SLC processor, when a PID instruction is scanned with FALSE logic, the Integral sum is cleared ... I have found that to be true in all cases that I’ve examined ...



and so ... this program DOES scan the controlling PID with FALSE logic ... which means that the controlling PID does indeed have its Integral term cleared ... then how in the heck is it going to be able to properly control the output? ... simple answer: this won’t work ...



but ... you mentioned that Allen-Bradley says “it works just fine” ... I’m ready to place a substantial wager (more than pocket change) that they are wrong ... and I’ll even let them hold the bet ...



my best guess (at the present) for the source of their confusion is this:



they had a program for this “Low Select PID” application which was originally written for the PLC-5 family of processors ... that particular program was tested and it DID work correctly ... they then copied and pasted the exact rung structure into a new program for an SLC processor ... they then changed the PLC-5 addresses to match the I/O for an SLC system ... so far so good ... unfortunately they didn’t notice that the PIDs act differently between the two platforms ...



specifically, in a PLC-5 system, scanning a PID with FALSE logic does NOT clear the Integral sum ... BUT ... in an SLC system, scanning a PID with FALSE logic DOES clear the Integral sum ... oops! ...

as I said, this is all just mere supposition at this point ... but it is one sequence of events that would provide a cause-and-effect relationship for what we're seeing here ...

I’ve got a hunch that if you can get in touch with the “right man” at Allen-Bradley and mention the “Copy-Paste-PLC-to-SLC” scenario that I’ve just raised, then you’ll probably get a much different answer ... (suggestion: give him a link to this thread) ... I’ve got a strong suspicion that their original “it works fine” answer was based on satisfactory results from a PLC-5 system ... and they don’t realize that their SLC program was never fully tested on a working system ...



continuing right along ... I’ve taken the original Allen-Bradley program that you posted and rearranged the structure ... the original program was written using the common “let’s-cram-everything-on-to-one-rung” approach ...



my version keeps the same execution sequence ... but allows much better rung comments ... note that reading this won’t help solve the problem ... I think that you already have a working solution in mind ... but having these comments available might help us if we have to continue this discussion ...



but please keep in mind that:



the program I’ve attached DOES NOT (I say again: DOES NOT!) attempt to “fix” the problem ... all I’ve done at this point is try to break the component steps into a more manageable format for discussion purposes ... I’m reasonably sure that my changes haven’t altered the operation of the program (for better or for worse) but I’ll warn you in advance that I was pretty sleepy while I worked on this ... and that will be the first excuse that I use if it turns out that I’ve dropped a stitch ...



an additional note ... I’m pretty sure that you’ve noticed this too, but the comment for rung 0000 in ladder file #5 of the original program mentions that the “manual mode” executions of the PIDs are to be done “ONCE” ... but ... there is nothing in the original program to “one-shot” this particular operation ... specifically, as currently written, this “manual mode” execution is going to happen each and every time that the PID ladder file is scanned ... now I don’t think that’s a part of your problem right now ... but it MIGHT become an issue once the dust has finally settled on the rest of this mess ...



finally (for now) ... if you really do need this “Low PID Select” function, I’d suggest that you proceed along these lines: try to find a similar program for the PLC-5 processor family ... if my suspicions are correct, then there’s probably such a program floating around out there someplace ... and chances are very good that it works perfectly ... so ... a plan of attack would be to closely examine the functionality of that PLC-5 program – and then build that same functionality into a program for an SLC ... if the differences between the two platforms are kept in mind, that shouldn’t be too hard to do ... but ... it won’t be just a simple “Copy-and-Paste” operation ... no matter how attractive that approach might seem to be at first glance ...



anyway ... I hope this helps ... I’ll keep working on this as time permits ... thanks for bringing it up for discussion ... stuff like this just makes my day – and sometimes a good portion of my night too ...
 
Last edited:
and if anyone who doesn't have RSLogix500 available is interested in following along, the ZIP file (attached) contains PDF format files of the original Allen-Bradley program and the program that I restructured ...
 
This a working Low Signal Select for a PLC5/40 controller.
I write the results of the low select to the max out parameter of both PID loops. There by preventing reset wind-up. Works great.
 
Last edited:
From Peter:

Ron is very close

However, Ron's method lets the integrator wind up on the PID that is not the lowest. That can't be good.
heck ... Ron ain't even TRIED yet! ... Peter, the "rewrite" that I did wasn't supposed to "fix" - or even "change" - the problem ... all I did was break the original "all-on-one-rung" program into bite-sized pieces ... hopefully that will make things easier to troubleshoot and discuss ...

in other words, if (big IF) I successfully did what I set out to do, then the "rewrite" program will perform EXACTLY like the original program - bugs, warts, and all ...

please note from post #2:
the program I’ve attached DOES NOT (I say again: DOES NOT!) attempt to “fix” the problem ... all I’ve done at this point is try to break the component steps into a more manageable format for discussion purposes ...

I still haven't had time to start working on a solution to the underlying problem ... hopefully in a day or so - if no one else has nailed it by then ...

from the "just a wild guess" department: maybe the original program has "typographical-type" errors ... maybe they meant to clear the Integral sum on the "UNused" PID ... just wondering if we transposed PID1 and PID2 at the end of the program, would everything start working ok? ... just a wild guess ... I wish I had time to work through it right now ...
 
Last edited:
Ron Beaufort said:
my best guess (at the present) for the source of their confusion is this:

they had a program for this “Low Select PID” application which was originally written for the PLC-5 family of processors ... that particular program was tested and it DID work correctly ... they then copied and pasted the exact rung structure into a new program for an SLC processor ... they then changed the PLC-5 addresses to match the I/O for an SLC system ... so far so good ... unfortunately they didn’t notice that the PIDs act differently between the two platforms ...

Ron, that is my assessment also. There is a technote for a low select on the PLC5 as well, and it looks nearly identical.

My program is a little different becasue I have two modes of operation, low select and PID1 select. At early points of the process PID1 is unconditionally selected. Also the two PIDs must be executed on independent time rates. Its still in development, but it uses JMP and RET instructions to skip over the second execution of the low selected PID and only execute a second time the non selected PID inorder to update its output to match the low selected - that way no PID instruction on a false rung can ever be scanned. It's similar to the routine in the attached PDF, which I tested and I know works for a low select on the SLC5/05.
 
Last edited:

Similar Topics

Replies
6
Views
3,844
Hi All, In the Redlion Technical Note TNOI23 (G3 Operator Interfaces communication with AC Tech SCF Variable Freq. Drives over RS485). It is...
Replies
10
Views
4,966
Three laptops ago, I kept a copy of the AB technote regarding online edit issues with ethernet I/P SLCs, or ML1100. This is the note regarding the...
Replies
3
Views
1,571
Hi, I would like to assemble a simulator/practice booster pump system that uses PID to maintain steady water pressure under various outlet demands...
Replies
0
Views
88
Hello, I have a motor that we are sending a RPM Speed Output from 0-100% to the VFD. However, the Motor HP needs to be limited to 6000 HP and the...
Replies
3
Views
93
Back
Top Bottom