Taz Posted July 11, 2011 Report Posted July 11, 2011 Hi, I am designing an annealing oven using V350 and I was wondering what would be the best approach to my application. The temperature has to be plotted against time, with predefined levels and it will be a combination of ramp-ups, plateaus and ramp-downs. In all the sections of my temperature graph I need to avoid sudden fluctuations, since the samples I am working with are very small and sensitive to sudden changes (I will be pushing the temperature close to the material melting point so I need a very low oscillation amplitude around the prescribed temperature; the same scenario applies to the ramp-ups and ramp-downs in order to avoid sudden re-crystallization of my samples). To cut a long story short I need to control the ramps (during the warming up), the plateau (during the annealing) and the slopes (during cooling off) as smooth as possible. The heat will be provided by infrared heaters controlled via solid state relays, while the temperature will be monitored through thermocouples. I am thinking of using the PID option on my PLC, but not too sure how to do it for my ramps and slopes (which again are time based - e.g. temperature should rise from 30oC to 60oC in 30 minutes). Any hints/tips will be much appreciated. Thank you, Bogdan
MVP 2023 Joe Tauser Posted July 12, 2011 MVP 2023 Report Posted July 12, 2011 You're going to have to write logic to create the ramps and soaks. Read the help on the Linear Block - you can load it with the start and end points of your graph segments and extract the linearized Y value to feed the setpoint of a PID block. You'll need to create your own timebase to feed the X values. You can store the start temp, end temp, and ramp duration in a data table and page through it to load a common linear block. If you could supply some example values I can write and post a simple program to get you started. Joe T.
Emil Posted July 12, 2011 Report Posted July 12, 2011 Hi Bogdan, Joe, Please take a look at VisiLogic examples (VisiLogic > Help menu > Examples > Project examples > PID). I have the strong feeling you will find something very, very close to what Bogdan needs.
Walkerok Posted July 12, 2011 Report Posted July 12, 2011 I have done this for melting furnaces a few times. The easiest way to acomplish what you want to to treat this like a soak ramp (both in the up and down direction). So for example, you want to make sure that you limit the progression of heat to 2 degrees F every 1 hour. Set a PID loop to control the heating rate at a particular set point then write ladder code so that the set point starts at the current temperature of the Kiln and then raise the Set Value (SV) of the PID loop 2 degrees above its current present value (PV). Hold this (SV) for one hour then raise the (SV) 2 more degrees and count off another hour and then dit it again. Rinse and repeat until you meet your final temperature. Hold the final temperture (SV) at the max soak point until the process is complete, and then ramp the (SV) down the same way you brought it up till you get bellow a particular temperature point then stop the process. The values for the PID I can not help you with since this is as variable as the colors in the rainbow. However, there is an Autotune Function Block that can help out quite a bit. (You will have to fire the anealing oven to do this autotune) Thanks Keith
Taz Posted July 12, 2011 Author Report Posted July 12, 2011 Hi All, Thank you very much for your suggestions! I have a pretty good idea now how to tackle this application. What you guys gave me here will keep me busy for a while. Your help is much appreciated. Joe if you don't mind I will send you some sample values and a basic graph I want to implement. Having a basic program to start with would be fantastic! Regards, Bogdan
MVP 2023 Joe Tauser Posted July 14, 2011 MVP 2023 Report Posted July 14, 2011 Hi All, Thank you very much for your suggestions! I have a pretty good idea now how to tackle this application. What you guys gave me here will keep me busy for a while. Your help is much appreciated. Joe if you don't mind I will send you some sample values and a basic graph I want to implement. Having a basic program to start with would be fantastic! Regards, Bogdan Bogdan- Your graphics post was a binary explosion - I had to delete it. Email it directly to me at joe@jtauser.com. Joe T.
Hardus Posted January 24, 2020 Report Posted January 24, 2020 On 7/12/2011 at 4:28 AM, Joe Tauser said: You're going to have to write logic to create the ramps and soaks. Read the help on the Linear Block - you can load it with the start and end points of your graph segments and extract the linearized Y value to feed the setpoint of a PID block. You'll need to create your own timebase to feed the X values. You can store the start temp, end temp, and ramp duration in a data table and page through it to load a common linear block. If you could supply some example values I can write and post a simple program to get you started. Joe T. Firstly thank you for your valuable inputs and replies to posts on the Form. Much appreciated. So I’m using the linearize block but am not sure which values should go where. And also not sure with what you mean by “time base”? To be specific I need to increase temperature from ambient to 1000C over 3hours. Regards, Hardus
MVP 2023 Ausman Posted January 24, 2020 MVP 2023 Report Posted January 24, 2020 For clarity of numbers, have a look at my calculator from here: http://forum.unitronics.com/topic/3540-linearization-calculator-for-all/ Play with numbers as appropriate and watch the result. The idea for ramping is to relate the time elapsed to the desired temperature at that elapsed time, and then control heaters appropriately to match the desired temp. cheers, Aus
MVP 2023 Joe Tauser Posted January 24, 2020 MVP 2023 Report Posted January 24, 2020 16 hours ago, Hardus said: So I’m using the linearize block but am not sure which values should go where. Think back to your youth to when you took algebra. Hopefully you took algebra. And you may be still in your youth. A linear block is just that - a line equation. It creates a unique Y for each X. For your application I chose a timebase of one minute, so your entire x axis is 180. Make a one minute timer to increment an MI every minute to feed the X value of the block. So X1 = 0, X2 = 180 , Y1 = 0, Y2 = 1000. Let us know if you still don't understand how I got the values for the Linear block. Your homework now is to implement the above into a program and post it here with any more questions you have. Joe T.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now