RSlogix 5000 PIDE and Adaptive Gains

Status
Not open for further replies.

Chem E

Member
We are in the process of updating the temperature controls on a jacketed vessel. The heating system uses split range control. The cooling is approximately 5 times faster than heating for the jacket so the system is set up to use adaptive gains; for example P heating = 5 and P cooling =1. The jacket controller output is 0 to 100%, with 0% being full cooling and 100% being full heating. 50% is not heating or cooling and the cross over point where the Gains are switched out (for the adaptive Gains system).

The issue I am having: When the jacket controller crosses over the 50% output, the first calculation that is made to change the output uses the last set of gains that were in the controller. Let's say we are at 50?C and the controller output is at 50%. If we increase the set-point to 60?C, the jacket temp will gradually rise to 60?C and overshoot it slightly as expected. The issue is that when it over shoots it, the controller still has the heating gains in the controller when it calculates the output for cooling. So the first calculation calling for cooling changes the output to the extent that it significantly overhoots the set-point. Since the P and I constants are so small for the cooling range, it takes a significant amount of time for the controller output to adjust and once again call for heating. This constant ?fighting? doesn?t allow the system to stabilize.

I have confirmed the system is responding as I have described by placing the system into simulation and trying various scenarios. If I set P heating = P cooling with I heating and I cooling equal to 0 (not using D since the jacket is an integrating system), then as I adjust the actual temp to the set-point, over shoot, and recover; the system settles out to 50% output as expected. However if I set P heating = 5 and P cooling = 1, the system uses the last constants in the controller to change the output when it crosses over 50%. This results is the controller calling for heating (or cooling) when the actual temp is equal to the set-point after crossing over the 50% output a few times.

Any help would be appreciated.
 

StephenSDH

Senior Member
Location
Allentown, PA
Do you want to apply cooling to bring the temperature back done when the PID overshoots or will the process naturally bring the temp back down. Generally you have the system in either a heating mode or cooling mode and not enable both at the same time.
 

Chem E

Member
Jack:

I would like to do exactly what you describe, however I have not been able to find any reference as to how to set it up in the logic.

Stephen:

The system should apply cooling to bring the temperature down to the set point. Based on my limited experience with PID controllers, overshoot is normal and the PID output lowers to call for cooling. Eventually the system balances, and the PID output stabilizes until the setpoint is changed or there is a distirbance (i.e. exotherm).
 

steve66

Senior Member
Location
Illinois
Occupation
Engineer
I like both the first two suggestions. You might make a deadband around your setpoint. If the temp, falls inside the deadband, then the controller output is automatically 50%.

Another suggestion would be to compare the setpoint and the actual temperature. Then decide if you need to heat or cool. Then you set your PID parameters to match, and finally, use the PID look to calculate the output.

Or are you saying the way the PID function works, it doesn't allow you to set teh parameters just before you calculate the output??

Steve
 

Chem E

Member
Steve:
The way the PIDE (Enhanced PID) function works, the gain parameters are not switched from heating to cooling until the PID Output goes below 50 (or vice versa). However by then it is too late, since going below 50 signals cooling and the first calculation (the one that put the output below 50) was using the heating gain. Since the heating gain is 5x the cooling gain, the output is change significantly and the process significantly overshoots. Since the cooling gains are relatively small, it takes a long time to recover. And when it finally starts to call for heating, the first calculation is using the cooling gain, so heat up is very slow. As it heats back up it will overshoot, and the whole scenario starts again. I am not sure if this is something specific to the RS Logix 5000 PIDE block or a normal limitation of PID functions. Since my process isn?t that unusual, I am hoping there is a typical way of correcting this issue.
Thanks
 

petersonra

Senior Member
Location
Northern illinois
Occupation
engineer
A few ideas:

* use a different set of tuning parameters for heating and cooling purposes.

* cycle the loop out of auto and back when it crosses over from heating to cooling and vice versa when you switch tuning parameters so the loop does not windup

* the deadband idea is a good one if you can tolerate the loss of control while in the deadband

It may turn out to be simpler to use two different loops, one for heating and another for cooling so you don't have to switch the tuning parameters in and out.
 
Overlap

Overlap

It sounds like you might want to use two PID's with so 'Overlap" where heating and cooling would occur. It reminds me of the overlap capability of the old DC spindle drives I used to work on. Overlap meaning it fired both positive and negative SCR's but at firing angles low enough to prevent a line to line short.

Does that make sense?

This is an interesting problem! :)
 

Chem E

Member
Bob:
I am using a different set of tuning parameters. That is what is creating the problem. It isn?t until after the calculation is made resulting is cooling, i.e. the PID output going under 50, that the cooling gains are moved into the PID block. For the first calculation, the heating gains are used, which creates the issue.

I had tried switching from auto to manual and back to auto, but the last gains are still in the block. It may be possible to switch from auto to manual, force the correct gains in, make sure the PID output is the same as it was, put it back into auto, then re-set the setpoint. But that seems very cumbersome. The AB literature discusses using ?adaptive gains? like I am using, but I can?t find anything about results I am seeing. AB has to have had this issue before, but my contacts are at the process controls show.

The deadband won?t work, as unless I am mistaken, it just ?suspends? changes to the PID output when the value is in a certain range. As soon as it passes through that range, the same issue will exist; as it is the change in the PID output that triggers the parameters to be switched.

I haven?t given much thought to having two loops. I had assumed that since this is a normal process, heating a jacketed vessel with a split range controller, that it shouldn?t be this difficult.

Thanks for your suggestions.

Jack:

I am not following your suggestion to overlap two PID?s. If you meant to over lap the two ranges of the split range control, I understand what you are suggesting. This would eliminate a dead zone, between heating and cooling, but wouldn?t resolve the issue I posted. I has considered some overlap, but I have issues with linearization of the valve responses. I have been able to handle the linearization issue (I hope) by adjusting the output to the valves according to their actual responses. But that is a whole other issue?..

If I misunderstood your suggestion, please provide more detail. Thanks.
 

StephenSDH

Senior Member
Location
Allentown, PA
If you can't handle overshoot it sounds like you should choose gains that are over damped.

The systems I have designed and seen have not had heating and cooling enabled enabled at the same time. Generally if you are heating a kettle you would heat it up to a temperature and if you overshoot a couple degrees thats fine. Allow time and the process to bring the temperature back down. When you need to cooling, then enable cold water and disable heating.

I have had some pain with the PIDE instruction, and used the standard PID instruction in ladder logic. I would recommend having a cooling PID and a Heating PID and not swapping gains out.

You need to be careful with the windup and how changing gains affects it.
 

steve66

Senior Member
Location
Illinois
Occupation
Engineer
Can't you just add a rung that sends the PID output to the analog output.

Then monitor for the switch between heating and cooling. When that happens, skip your output rung, and leave the output the same as it was the last scan.

Then run through your PID function again, and send that output to your analog output.

It looks like there is a ton of info on using this function on the web. Try this for example:

http://www.plcdev.com/getting_started_with_the_logix5000_pide_function_block
 

IMM_Doctor

Senior Member
My $0.02

My $0.02

I would never expect a single set of PID terms to handle bi-directional heating/cooling, as the thermal dynamicis would NOT be symetrical.

I have heating only experience.

Post this same query on PLCS.NET. There are many PID GURU's that will be able to help.
 

hurk27

Senior Member
Sounds like you need dual control with anticipation, similar to boiler heat for a house, I used dual Dwyer temps controls for a micro-brewery to keep heating and cooling from over shooting the set points before on the main cooking vats, but it didn't have a PLC control, just relay type logic.

Also variable valves with stepping motors can reduce over shooting by throttling back the heat or cooling way before the temperature set point is reached.

But it depends upon how the system is designed, and what you have to work with.
 
Status
Not open for further replies.
Top