PID Instruction: SLC vs CLX

jnblackwood

Lifetime Supporting Member
Join Date
Aug 2012
Location
Oklahoma
Posts
6
Having to recreate an existing SLC/RS500 program into a CLX/RS5000 version. 99% is complete, but one issue remains: a half-dozen PID instructions.

I'm very comfortable with vast majority of the RS5000 instructions and programming, but I've never been faced with a need to do PIDs in 5000, so this one has me stumped.

I was hoping someone could help me map the configuration of one format to the other. Let me provide a specific example to help.

In RS500, one PID instruction is as such:

On PID Faceplate:
Control Block: N10:0
Process Variable: N7:3
Control Variable: N7:20
Control Block length: 23

On Setup Screen:
-Tuning Parameters-
Controller Gain Kc = 0.7
Reset Ti = 0.2
Rate Td = 0.01
Loop Update = 1.00
Control Mode = E=SP-PV
PID Control = AUTO
Time Mode = TIMED
Limit Output CV = YES
Deadband = 50
Feed Forward Bias (ghosted out) = 0
-Inputs-
Setpoint SP = 8192
Setpoint MAX (Smax) = 16383
Setpoint MIN (Smin) = 0
Process Variable PV = 0
-Output-
Output Control CV (%) = 0
Output Max CV (%) = 100
Output Min CV (%) = 0
Scaled Error SE = 0
-Flags-
TM = 1
AM = 0
CM = 0
OL = 1
RG = 0
SC = 0
TF = 0
DA = 0
DB = 0
UL = 0
LL = 0
SP = 0
PV = 0
DN = 0
EN = 0

The RS5000 version has much more on its faceplate, and several tabs inside the setup... many more places to input data than the RS500 version. The client wishes everything to work on their new CLX like it did on their SLC, so I'm a bit lost as to what goes where and where to come up with this "new" data so that everything works the same.

In hopes I get the stellar help I've always seen here before.

Thanks in advance!

~James
 
Additional Notes

I did search the forum, and found this:

http://www.plctalk.net/qanda/showthread.php?t=72023

I found a lot of helpful information here, and it explains why the conversion process was less than helpful. But it does answer a few of my questions.

Yes, the scaling is handled in other logic. After all else is solved, I'll probably migrate them into the PID instruction, but that's not my primary concern.

Do I understand correctly that the "Time Mode = TIMED" setting in the RS500 version means that its functionality is dependant on how frequently the rung is processed? I guess I thought the "Loop Update" value determined this.

So, since 1/2 of the PIDs in the RS500 version are on unconditional rungs, should I incorporate a timer instruction in the RS5000 version to try and reproduce an approximation of the original rate of execution?
 
Additional Notes

I did search the forum, and found this:

http://www.plctalk.net/qanda/showthread.php?t=72023

I found a lot of helpful information here, and it explains why the conversion process was less than helpful. But it does answer a few of my questions.

Yes, the scaling is handled in other logic. After all else is solved, I'll probably migrate them into the PID instruction, but that's not my primary concern.

Do I understand correctly that the "Time Mode = TIMED" setting in the RS500 version means that its functionality is dependant on how frequently the rung is processed? I guess I thought the "Loop Update" value determined this.

So, since 1/2 of the PIDs in the RS500 version are on unconditional rungs, should I incorporate a timer instruction in the RS5000 version to try and reproduce an approximation of the original rate of execution?

No. I wouldn't use a timer...

By far the best way is to put your PID instructions in a Periodic Task, that way the execution rate won't be affected by the small but significant fluctuations in scan time.

Example : Periodic Task Rate = 500mS - Set all PID Loop Update parameters (.UPD) to 500.

I usually automate this setting, by using a GSV to read the Task Rate, and load this into the .UPD of all the loops. By doing so, I avoid re-tuning the loops if the task rate is changed, as the .UPD parameters will get changed accordingly.

Note : only the PID instructions themselves need be in the periodic task, the rest of the "glue-logic" that inevitably surrounds PIDs can be executed normally.
 
It better be that NONE of the PIDs in Logix500 are on conditional rungs. If they are then they weren't working very well and someone didn't read the manual.

The ControlLogix PID is more similar to the PLC/5 PID than it is similar to the Logix500 PID. Program it as though it was on an STI. In the CLX that means putting them on unconditional rungs in periodic tasks as Daba suggested. Except there is no reason to not put the rest of the associated logic in the same task. The continuous task is a pig and should be avoided whenever possible.
 
Last edited:

Similar Topics

Hello, I changed controller type in RSLogix 500 from SLC 5/02 to MicroLogix 1200 and was given the ladder logic to update it for the new...
Replies
25
Views
4,822
Hi, I want to know the difference between Timed Mode and STI Mode for PID instruction. I’ll use 4 blocks of PID in my program so which Mode...
Replies
1
Views
1,921
Hello, there is anyone who have already used hpmont plc? now i am programming for that plc and have " pid autotuning is not working" issue. I have...
Replies
0
Views
978
Hello, Speaking of PID Instuction in RSLogix. What is the difference between Both "Manual" and Software Manual" (.MO versus .SWM) modes and...
Replies
2
Views
1,528
Back
Top Bottom