Tracking process variable

ddeshi2

Member
Join Date
Dec 2010
Location
Baton Rouge
Posts
89
Hi all, I'm trying to implement PID loop to control air flow to a small burner. When I searched this forum I have found this:

Sounds to me like you're trying to achieve a ramped setpoint.

I'm not familiar with your make of plc but I assume that if it has built in PID function then there will be a specific register which holds the setpoint for the PID loop.

This register will need to be incremented on a periodic basis, e.g. for 100 degrees per hour the register needs to be incremented by 1 degree every 3600/100 seconds = 36 seconds.

This can be achieved with a self resetting timer which, in my experience, is normally accurate enough for this type of application.

You may also want to stop the pid loop and make the setpoint register track the process value until the burner is lit.

I'm trying to implement the same. I couldn't understand his last line of stopping the PID loop and make the setpoint to track process value. Can anyone please explain how can I implement that last line using ladder logic.

Thank you,
Ding
 
Can anyone please explain how can I implement that last line using ladder logic.
Sure, the discussion is about using a RAMP function to move a burner setpoint from some low temperature (usually ambient air temperature) up to the final furnace operating temperature. Most furnace manufacturers recommend a start-up ramp to bring the furnace temperature up slowly over some time period to prevent cracking of the firebricks or refractory walls. If your burner does not need a start-up ramp, then most of this does not apply.

When the burner is off, there is no need for the PID control, so the PID is bypassed with a relay (or switched to Manual Mode), and the same relay does a Move to move the Process Variable (Temperature) to the Setpoint. Then for burner start-up, PID is switched back on, and the "Move PV to Setpoint" is disabled.

This allows starting a ramp function wth the beginning point = Setpoint = Process Variable. Then the Setpoint is simply auto-stepped X degrees per unit of time, up to the final desired furnace operating temperature. 1 degree every 2 seconds has worked for me as a start-up ramp on several furnaces. The idea is that you can't pick a fixed temperature to start your ramp, because the furnace may be still warm from the last run (or after several cold days it may be less than ambient). So you just set your Setpoint = Furnace Temperature, and start your ramp from there. Then do an ADD function every T seconds: Setpoint = Old Setpoint + 1 degree. This can save some time when ramping up a furnace.

PS: The ramp rate is calculated by taking the manufacturer's recommended max temperature rise for 1 hour. In many cases it seems that 1800 degrees per hour is recommended maximum rate of rise. So 1800 degrees / (1 hour x 60 min/hour x 60 sec/min) = 1800/3600 = 1/2 degree per second, or 1 degree every 2 seconds.
 
Last edited:
I'm glad to help. Did you get your burner PID working? The key is how to use a PLC relay to turn the PID function Off when the burner is starting up (controlled then by an approved burner relay controller), then once all burner interlocks are proven, and the flame is extablished, control of the burner can be safely switched to the PID instruction, which then controls the fuel-air valve, until burner shutdown (at which time the burner relay again takes control).
 
@Lancie

I'm trying to write the program. We are using a small burner and I don't think we need a ramp up for that. In our process we use a small burner. We feed water, air and natural gas(water first for few secs and then air and natural gas). Water covers the walls of the combustion chamber and in the middle of it we create a flame. It is a steam generator. After detecting the flame we nee to ramp up the flow rates of all three to desired settings. I'm attaching my program that I have written so far. Can you please take a look at it and let me know whether I'm on the right track (like loop update times, timer preset values etc). By the way I'm using Valve Position Control for my process. Following is the link to an article that explains it.

http://modelingandcontrol.com/2011/02/valve_position_control_1/

Thank you!
 
I don't think I have ever seen the concept of using both a coarse and fine valve in the same control loops. Interesting idea. Let us know how it works out. How did you get the Integral-only term out of the PID signal?
 
@Lancie

I haven't implemented this yet but thinking of doing it for my current unit. And to your question about Integral only term- I read somewhere here that in Allen Bradley PID if we set Proportional Gain and Derivative constant to zero and the Integral constant to some value (tune it according to your needs) then the PID behaves as a Integral-only controller. Hope it works. Also I have a question .. my air and gas valves are of different sizes (Air: Min-- 2.5 SCFM, Max--850 SCFM; Gas: Min -- 0.3 SCFM, Max-- 85 SCFM). As you can see they are in the ratio of 10:1 (850/85)Now I want my air:gas ratio as 10:1 . What I'm trying to do is divide the setpoint of air ( given through HMI)by 10 and assign that value to Gas setpoint. Should I divide it by 10 or 1 (as the valves are already in the ratio of 10:1)?? Also is it the setpoint that I should divide or is it the PV of air?? please help.

Thank you!!
 
I read somewhere here that in Allen Bradley PID if we set Proportional Gain and Derivative constant to zero and the Integral constant to some value (tune it according to your needs) then the PID behaves as a Integral-only controller.
Yes that works to get Intergral only controller, but then you still need another controller with the P and D terms. How do you plan to do that? Probably you will need to set up two identical PID instructions, same except for the P and D settings for one = 0.
What I'm trying to do is divide the setpoint of air ( given through HMI)by 10 and assign that value to Gas setpoint. Should I divide it by 10 or 1 (as the valves are already in the ratio of 10:1)?? Also is it the setpoint that I should divide or is it the PV of air?? please help.
No, do not do anything to the setpoint. Also do not change the Process Variable! If you need to scale anything, it will be the Control Variable, the output going to the air valve. Set up your PID to control the gas valve. Because the air valve is 10 time larger (10 times the flow rate of the gas valve, then the same PID Control Variable output should work for it also (sending the same CV to two separate valves). It is possible that you might need to fine tune the Control Variable for the air valve some to allow for elevation above sea level (if you were in the mountains), or differences in the fuel. I see you are in Baton Rouge near sea level, so most likely it will work fine for both valves without any additional scaling.
 

Similar Topics

Hello all, I am working on a tracking system, using RSLogix5000, for my factory that will allow me to transfer data for each product load at each...
Replies
3
Views
2,736
I am attempting to reject a bottle If the label fails. The rejection works fine at normal line speed but at low speed the rejector fires (air...
Replies
35
Views
1,147
Is it possible to gather OPC data through a 1783-NATR? Searching around, it sounds like OPC data might be blocked by any NAT... Is there any work...
Replies
2
Views
246
Hi All. I have a very specific question about tracking using an encoder and bitshift register. We would like to use a Compact or Control Logix PLC...
Replies
40
Views
1,728
Hello, I have a servo motor running a conveyor belt system. I do not have the exact circumference of the head pully and therefore I get some...
Replies
5
Views
1,391
Back
Top Bottom