Jump to content

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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. :D

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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.

image.png.4d716d38a008382e2f5e24a922114784.png

 

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...