Scaling Cascaded PID loops SLC 500

robertmee

Lifetime Supporting Member
Join Date
Feb 2008
Location
NC
Posts
2,016
How best to consistently scale the PID SP of the inner loop when it can operate in both cascaded and single loop mode?

Right now, I have an Inner loop1 setup as follows:

PV1 - RTD scaled for PID (0 to 16383) which represents -328 to 1562
SP1 Min = -328
SP1 Max = 1562
CV1 - Scaled in SCP instruction to Analog Output
SP1 is Engineering Units (800 deg F max) from HMI
I use the PV Scaled of the PID for display of the temp on the HMI

I want to add an Outer loop2 for Cascaded control, but of course keep the inner loop operational as is when in non-cascaded mode (vessel empty).

PV2 - Product RTD scaled for PID as above
SP2 Min = -328
SP2 Max = 1562
CV2 - ?
SP2 is Enginnering Units (800 deg F max) from HMI
I use the PV scaled of this PID for display of the product temp

I started to point CV2 at PID loop1's SP but realized I can't do that as the SP in loop 1 is scaled to EU for single loop control, and CV2 is unscaled (0 to 16383). So, if I stick CV2 in its own integer and do a separate SCP to Loop 1's SP what do I scale it to? I thought 0-16383 to 0-800, but is that right? Or should it be 0-16383 to -328 to 1562? It's a little confusing, but if I understand correctly, the SPMin and SPMax actually scales the PV to the SP engineering units, and so I should probably scale it 0-800 which is the normal SPs range as in single loop mode.
 
To feed CV2 to SP1 the scaling would need to match loop1 SP1Min and SP1Max. To do this it looks to me like you need to scale CV2 from 0-16383 to -328-1562. You can limit (LIM instruction) the value of SP1 to 0-800 if you use a word to feed into SP1 and don't write it directly into SP1. I hope this made sense.

Charlie
 
averytc said:
To feed CV2 to SP1 the scaling would need to match loop1 SP1Min and SP1Max. To do this it looks to me like you need to scale CV2 from 0-16383 to -328-1562. You can limit (LIM instruction) the value of SP1 to 0-800 if you use a word to feed into SP1 and don't write it directly into SP1. I hope this made sense.

Charlie

On the surface, that's what I thought initially, but SPMin and Max don't apply to the setpoint (I think that's a confusing term by AB). They convert the PV into the same engineering units as the Setpoint. The -328 to 1562 will take the 0-16383 PV RTD and convert it to EU of deg F. To that end, i don't think it matters what the SP is scaled to as long as it is scaled to the same EU from CV2. So, whether I use the lim as you suggest or just scale it to 0 to 800, it should be the same, I think.

From AB PID Help:

Max (Smax) Type in a value. (With 5/02 controllers the valid range is from -16383 to +16383. With the 5/03, 5/04, and 5/05 controllers the valid range is -32768 to +32767.) If the setpoint is to read in engineering units, this corresponds to the value of the setpoint in engineering units when the control input is 16383. In otherwords, when the CV is 16383 what should it be in EUs of the SP. In this case 1562. It doesn't act upon the SP itself
 
Last edited:
My vote is for 0-800, keep it in real engineering units.

I take cascaded loops a step further and clamp the setpoint so it doesn't travel outside known good limits.
SP1 = [CV2/16383 * (SpMaxAdd - SpMinAdd)] + SP2 + SpMinAdd

SpMaxAdd and SpMinAdd are floating point addresses that can be set to desired values. Depending on the process, SpMaxAdd is usually 20°F and SpMinAdd is 0°F. With these settings, when CV2 = 100%, SP1 = SP2 + 20. When CV2 = 0%, SP1 = SP2.
 
gmferg said:
My vote is for 0-800, keep it in real engineering units.

I take cascaded loops a step further and clamp the setpoint so it doesn't travel outside known good limits.
SP1 = [CV2/16383 * (SpMaxAdd - SpMinAdd)] + SP2 + SpMinAdd

SpMaxAdd and SpMinAdd are floating point addresses that can be set to desired values. Depending on the process, SpMaxAdd is usually 20°F and SpMinAdd is 0°F. With these settings, when CV2 = 100%, SP1 = SP2 + 20. When CV2 = 0%, SP1 = SP2.

Excellent. I didn't want to clutter the original post with that info but that was my follow up question. 800 is just an arbitrary SP range, but in actuality, the process is only able to achieve a PV1 of 600. So, in basic terms, I could actually scale CV2 to my limits, no? Something like 0 to 16383 = 300 to 600 (which is the practical limit that PV1 should stay within). Therefore, when I'm trying to heat my product (PV2), the setpoint of the heating medium (oil) will never exceed 600 or go below 300. The product PV2 will be around 400, so I will never add more than 600 deg oil or less than 300 deg oil, otherwise something is seriously wrong.
 
Last edited:

Similar Topics

Hi, having some issues with scalings (SCP commands) with some Vegapuls 65 guided wave radar level transmitters. I've set the min/max in the...
Replies
1
Views
55
I want to measure the tank level and get the sensor output to the PLC. Below are the details : Tank Height =0 - 3m, the sensor is stalled 0,2m...
Replies
15
Views
599
Hi, I have a ControlLogix system with 1756-IF16 analogue inputs. I can't scale the inputs at the card as there is a requirement to facilitate...
Replies
14
Views
352
I know nothing about simaticnet OPC server. I do know Kepware. I would only ever scale raw to engineering in the PLC, but it is possible to scale...
Replies
5
Views
218
Hi all. I'm working on a rehab and I'm trying to figure stuff out. See screenshot at the bottom. Local:5:I.Data[6] in BTD instruction is a...
Replies
6
Views
712
Back
Top Bottom