RSLogix 5000 PID code

technolog

Lifetime Supporting Member
Join Date
May 2015
Location
Ohio
Posts
318
I'm on site at a customer's facility. We're using solid-state relays to control heaters in two halves of a manifold and a heated hose supplying the manifold. My boss said prior to start-up, that on-off control would be fine but the customer isn't happy with the overshoot (about 10-15°F).

I did some googling last night and I've put in a PID instruction in a periodic task, set at 0.1ms period. I've tested this by toggling a bit every scan and counting off-on transitions and I'm getting 5 counts per second. So the task appears to be running. The PID instruction update rate is also set at 0.1s. I'm using the output to give me time proportioning control of the heater SSRs (or will be if I get it working).

The problem I have at the moment is that the output of the PID loop is not moving from 100%. When I change the control action from SP-PV to PV-SP, the output ramps down to 0% but then it stays there too.

I've not actually got the PID instruction controlling heaters yet, I'd like to have some confidence that it's going to work first.

I'm using a 1769-L16ER-BB1B. With 1734-IR2 RTD modules connected to 120ohm Nickel 672 RTDs. The modules are configured as

Sensor: 120ohm Ni 672, Temperature units: Fahrenheit, High engineering: 5000, Low Engineering: 1000, Digital filter: 0.

I'm not entirely sure what the engineering units mean. I'm fairly certain that they're the default values. The user manual for the module says that the low scaling endpoint is 32°F and the high is 482°F. We've seen temperatures in the range 75°F to 250°F and the temperatures seem accurate.

I'm hoping someone could take a look at the attached screenshots and offer some advice as to why it's not working. Thanks in advance.

Capture1.jpg Capture2.jpg Capture3.PNG Capture4.PNG Capture5.PNG
 
I've only set up one PID loop in Logix5000, but that was not for heater proportional control. I have set up proportional heat control in Logix500. Try adjusting your "Set Output" to something less than 100%. If that parameter is equivalent to Logix500 "Max Output", then in my Logix500 program that is doing proportional heat control, I have that parameter set at 17%. Also, I think your PID parameters may be set way too high? I usually start at a very low value (<= 0.1).
 
Correction, I think it would be the "CV High Limit" under the Configuration tab that you may need to adjust to lower value than 100%
 
I've not actually got the PID instruction controlling heaters yet, I'd like to have some confidence that it's going to work first.

Since the PIDE is not in control, if there is any difference between the SP and the PV the instruction will ramp to either 0 or 100% in an effort to make the SP & PV match.

For trial purposes try feeding the PIDE a fake SP that matches the PV value. You should see the instruction change it's output to something close to zero, then raise the fake setpoint by a small amount, maybe 0.5 deg., and you will see the output start ramping back up. Change it to match again and it will ramp back down.
 
Why is your PV scaling ENG units 5000 Max and 1000 Min I think this is scaling your error to extreme measure which is why you are in constant saturation. You'll notice your error is 784 which is what your PID is reacting to. the error should be 166, I am trying to find the scaling equation so I can confirm this but to me that's the problem.
 
Last edited:
Why is your PV scaling ENG units 5000 Max and 1000 Min I think this is scaling your error to extreme measure which is why you are in constant saturation. You'll notice your error is 784 which is what your PID is reacting to. the error should be 166, I am trying to find the scaling equation so I can confirm this but to me that's the problem.

Yes, thank you. That was it. I set the PV scaling to 320 low and 4820 high to match the module's manual and it started working as I expected it to.
 
Is the pv not able to be in floating point? The rtd values are floating point correct? Does the pid block only work as integers?
 
If you aren't using derivative you might need to reset integral windup (thinking from memory).

Do you have a trend and what kind of time frame does it take going from ambient to setpoint?
 
Is the pv not able to be in floating point? The rtd values are floating point correct? Does the pid block only work as integers?

The RTD modules produce INTs scaled in 0.1°F from 32.0°F (320) to 482.0°F (4820). I didn't see the need to rescale or convert it to REAL. The PID loop seems to work fine at the moment and just needs tuning closer but, at the moment, I'm happy with it.

I've been pulled off site now as there are other issues not of our making, so any further improvement will have to wait.

Thanks as ever for all the help.
 
If you aren't using derivative you might need to reset integral windup (thinking from memory).

Do you have a trend and what kind of time frame does it take going from ambient to setpoint?

I'd guess it takes about 10-15 minutes to reach setpoint (155°F) from ambient (70-80°F). The temperature control without any product flowing through the manifolds or hoses is in the order of +/- 1°F using just some guessed PI parameters.
 
The RTD modules produce INTs scaled in 0.1°F from 32.0°F (320) to 482.0°F (4820). I didn't see the need to rescale or convert it to REAL. The PID loop seems to work fine at the moment and just needs tuning closer but, at the moment, I'm happy with it.

I've been pulled off site now as there are other issues not of our making, so any further improvement will have to wait.

Thanks as ever for all the help.

Ah OK. I didn't realize the rtd data was represented like that.
 

Similar Topics

Hi, Long time not in the forum, and not in the programming. I´m getting back. I was issued a conversion from RSLogix 500 to RSLogix 5000 (studio...
Replies
0
Views
1,286
So I have a PID loop on an 1756-L61 running V17 software just for background. Also the PID PV is a pressure transmitter and the CV is speed sent...
Replies
1
Views
893
Hi All, I have a PID control application that I would like to get your opinions on. As I am reality new to PID loops I am struggling somewhat...
Replies
14
Views
4,276
Hi, I am confuse with the scaling tab on the PID dialog box. On the Process variable I am using a tag that is already scale. 0 to 16 Feet Level...
Replies
2
Views
2,412
Hi I am trying to understand the best method of providing bumpless transfer to the PID function (not PIDE) The existing code shows In Manual...
Replies
10
Views
4,604
Back
Top Bottom