Proficy Machine Edition PID configuration (clamping) questions

defcon.klaxon

Lifetime Supporting Member
Join Date
Feb 2015
Location
Far NorCal
Posts
616
Hey guys, I'm taking a look at some existing code that I've converted from 90-30 to RX3i. I'm trying to figure out the configuration of some PID loops and I've got a few questions I haven't been able to figure out despite reading the Instruction Help.

The biggest question I have is the Upper and Lower Clamp values for the CV. The Instruction Help says that the clamp values, "define the highest and lowest value for CV". But what I don't know is, does this scale the output or does it just limit it? By that I mean, in the existing code I'm seeing that the Upper clamp for some of the loops (valve control) is 32,000 which corresponds to the raw output of analog outputs which makes perfect sense. But Upper Clamps for other loops are much lower, like 20,000 but the CV is still going to an analog output. So what I'm wondering is, does the Upper Clamp simply keep the output from exceeding the Upper Clamp value, or does it scale the output of the PID loop to max out at the Upper Clamp? The Upper Clamp value of 20,000 makes me think that the programmer did that to keep the valves from opening too much but the "max" value that the PID CV would want to be would still be 32,000.

Basically, I'm asking because I'm creating new PID loops for pump control, and in manual mode the operator can enter a speed setpoint for the VFD in the HMI (0-100%). Do I need to scale the manual speed setpoint so that 100% is actually 32,000? Or can I set the Upper Clamp to 100 and then scale the CV to a raw value (0-32,000) with a SCALE block later?
 
Last edited:
Upper and lower clamp settings simply limit the value of the CV. No scaling involved. Some analog modules can configure scaling for the outputs. Thus it is possible that a 4 - 20 mA analog channel could be configured for a raw data range of 4000 to 20000.
You'll get the best results from your PID function if you maintain a consistent set of units for the SP, PV and CV. If you're going to limit the CV between zero and 32000, best to scale both the SP and PV values to the same range. A range of zero to 100 for SP and zero to 32000 for PV would prove hard to tune.
 
Upper and lower clamp settings simply limit the value of the CV. No scaling involved. Some analog modules can configure scaling for the outputs. Thus it is possible that a 4 - 20 mA analog channel could be configured for a raw data range of 4000 to 20000.
You'll get the best results from your PID function if you maintain a consistent set of units for the SP, PV and CV. If you're going to limit the CV between zero and 32000, best to scale both the SP and PV values to the same range. A range of zero to 100 for SP and zero to 32000 for PV would prove hard to tune.

Hi Steve, thanks for the info. It sounds like I will be good with clamping to 0-100, and then I'll scale the CV to raw later. You touched on something I was worried about but didn't mention it; that the SP, PV and CV values will affect tuning so I'm glad you mentioned it.
 
Another tip...
As you know the PID block will only accept INT....not REAL for PV and SP.
If your SP and PV values are real and you need to convert them to int for the PID block, multiply by 10 first then convert.


Now...lets say you are doing pump pressure:
New values to PID block...
SP was 75.0 is now 700
PV was 75.5 PSIG, is now 755 PSIG.
This means you are doing a lot finer control of the PV because you are tuning to 0.1 PSIG. Now it also okay to have the PID a "little loose" with swing in CV due to 0.1 control.
 
Last edited:
Upper and lower clamp settings simply limit the value of the CV. No scaling involved. Some analog modules can configure scaling for the outputs. Thus it is possible that a 4 - 20 mA analog channel could be configured for a raw data range of 4000 to 20000.
You'll get the best results from your PID function if you maintain a consistent set of units for the SP, PV and CV. If you're going to limit the CV between zero and 32000, best to scale both the SP and PV values to the same range. A range of zero to 100 for SP and zero to 32000 for PV would prove hard to tune.

I have a couple of questions here...
Lets say I am doing temperature. The range of the "J" TC is 0 - 1400 F.
Why would I want to range it to 0-32000? Also the PID block does not know the full range of SP or PV... (it is only trying to make them match)
The CV is output function related to 0-100% (0-32000) output related to PID calculation. WHY would I want CV units to be same as SP and PV? The units are already only "counts" to the PID block.

Am I right here or did I misunderstand you?
 
Another tip...
As you know the PID block will only accept INT....not REAL for PV and SP.
If your SP and PV values are real and you need to convert them to int for the PID block, multiply by 10 first then convert.


Yeah I noticed this limitation; for flow in GPM obviously it doesn't matter but for CL2 residual, it of course absolutely does. I gotta say, I'm pretty unimpressed with GE controllers for how much they cost because of things like this.
 
[/I]

Yeah I noticed this limitation; for flow in GPM obviously it doesn't matter but for CL2 residual, it of course absolutely does. I gotta say, I'm pretty unimpressed with GE controllers for how much they cost because of things like this.

You will notice that you have a lot more power out of an RX3i install over the 90-30. What CPU are you using?

GE is cheaper than AB or Siemens, and to me WAY easier to program....but I do not want to get into a flame war here...
Obviously if you have 5+ years programming AB or Siemens and then go to GE, there is a learning curve, same as most any control software conversion.
But no where near as bad as going from AB to Siemens or visa-versa.
 
You will notice that you have a lot more power out of an RX3i install over the 90-30. What CPU are you using?

CPE305. I've never programmed 90-30 but I do have the old 90-30 program printed out and it looks like RX3i is a lot easier.

and to me WAY easier to program....but I do not want to get into a flame war here...

No flame war from me! Everyone is entitled to their own opinion, and we're all different. I've got experience with Scadapacks, GE, and AB and for me, AB is heads and shoulders above everything else but that's just my opinion; for me, AB makes more sense and you don't have to worry about keeping track of register addresses which is just so nice.
 
I just hate the "File Structure" you have to deal with in the earlier AB, like SLC500. RSLogix 5000 is way better when you use tagnames.
If you use tagnames when you do RX3i, it already takes care of now many registers to use for Reals, DINTs, Counters, and Timers.
Also the biggest thing I like about GE over AB....you can force everything! I hate the fact that you cannot force a "B" file bit in AB, because I use a lot of them, as I am sure most logic programmers do.
"Force" is my friend when doing a checkout of a new piece of equipment.
 
Last edited:
I just hate the "File Structure" you have to deal with in the earlier AB, like SLC500. RSLogix 5000 is way better when you use tagnames.

I've only developed in Logix5K so I haven't had very much experience with 500, other than changing a scaling value for a CL2 analyzer twice a year for a client; that being said, 5K seems far less clunky than 500.

If you use tagnames when you do RX3i, it already takes care of now many registers to use for Reals, DINTs, Counters, and Timers.

Seriously? If so, I must be doing something wrong. Whenever I create a new tag I have to go into the variable tab, find the very end of whatever type of tag I'm creating (%G, %R, etc), figure out the first available address, and then finally create the tag. And if it's a REAL or DINT, I have to remember to skip the consecutive address. It's maddeningly slow but maybe there's a way around this? I dunno, took the Intro Class from a guy who knew his stuff. Maybe there's an easier way? Because having to keep track of registers is what makes me hate Scadapacks and GEs the most.

Also the biggest thing I like about GE over AB....you can force everything! I hate the fact that you cannot force a "B" file bit in AB, because I use a lot of them, as I am sure most logic programmers do.
"Force" is my friend when doing a checkout of a new piece of equipment.

I totally know what you mean, when I was trying to force things during testing the AB stuff was pretty odd so I can dig that.

What do you mean by a "B" file bit?
 
Seriously? If so, I must be doing something wrong. Whenever I create a new tag I have to go into the variable tab, find the very end of whatever type of tag I'm creating (%G, %R, etc), figure out the first available address, and then finally create the tag. And if it's a REAL or DINT, I have to remember to skip the consecutive address. It's maddeningly slow but maybe there's a way around this? I dunno, took the Intro Class from a guy who knew his stuff. Maybe there's an easier way? Because having to keep track of registers is what makes me hate Scadapacks and GEs the most.
You don't have to assign addresses to tags in the Rx3i. All you need to do is enter a variable name. 90-30 and Versa Max PLCs require addresses.
But if you do use addresses, when assigning the address, simply type "%M" or "%R" or whatever memory type you're using without specifying the address. Proficy will select the next available address for that memory type, even taking into account the two %R addresses used by a DINT or a REAL and the three %R addresses used by a timer or counter. That has been a standard feature of GE software since the days of Dos-based Logicmaster 90.
 
I've only developed in Logix5K so I haven't had very much experience with 500, other than changing a scaling value for a CL2 analyzer twice a year for a client; that being said, 5K seems far less clunky than 500.

Seriously? If so, I must be doing something wrong. Whenever I create a new tag I have to go into the variable tab, find the very end of whatever type of tag I'm creating (%G, %R, etc), figure out the first available address, and then finally create the tag. And if it's a REAL or DINT, I have to remember to skip the consecutive address. It's maddeningly slow but maybe there's a way around this? I dunno, took the Intro Class from a guy who knew his stuff. Maybe there's an easier way? Because having to keep track of registers is what makes me hate Scadapacks and GEs the most.

See Steve's post above

I totally know what you mean, when I was trying to force things during testing the AB stuff was pretty odd so I can dig that.

What do you mean by a "B" file bit?

I meant "B3"

A "B3" file type is a memory bit in AB (Like an "M" in GE).

Structured in RSLogix 500 as:
[type]:[word]/[bit]
ie..."B3:1/3" is 3rd bit of 1st word...oops.....AB is all octal (arghhh....not GE) so it would be 4th bit of 1st word...(0 is 1st bit)

See Chapter 1 for other file types and structures:
http://literature.rockwellautomation.com/idc/groups/literature/documents/rm/1747-rm001_-en-p.pdf
 
Last edited:

Similar Topics

I'm getting frustrated creating arrays of variables in Machine edition. I need to make 2 variable arrays that are 102x2 in size, with varying...
Replies
3
Views
103
Hi, I am still a beginner with PLCs and I have never worked with GE PLCs before so looking for some help. I am using GE Proficy Machine Edition...
Replies
11
Views
1,366
I am trying to download version 9.8 of G.E.'s proficy machine edition, does anyone have a link to a download site?
Replies
9
Views
5,078
Need to learn a few more tricks in Proficy Machine Edition. I don't use it often, but one of the first things I usually do when getting into a new...
Replies
3
Views
1,009
I have a GEFanuc plc 90-30 that has dumped it's program and IP. The tool in PAC for setting a temporary IP is not available. The Offline Commands...
Replies
7
Views
2,002
Back
Top Bottom