Temperature Control With Omron NJ

ceilingwalker

Lifetime Supporting Member
Join Date
Mar 2010
Location
Phoenix, AZ
Posts
1,586
Hello. I have an NJ101-9000 with NX I/O. I am trying to create a recipe for heat treatment, using ramp and soak times. Has anyone here done that with an NJ? I went through the reference manual, searched online, and did a google search here on this website but have found nothing. I am trying with just a basic ramp to a certain temperature in 1 hour, then set at that temp for 5 minutes, ramp up another 10 degrees........ . I am sure I will need a timer instruction but am not exactly sure. I haven't had to control a temp with just a PLC before. Usually the PLC would drive a unit like a Eurotherm Temp controller, which one would enter their parameters and the Temp control drove to that temp. Thank you for any and all advice.
 
I haven't used it, but there is a function block "PIDAT_HeatCool" that may do what you want. You'd still have to write the logic to change the setpoint for the ramping, but the PID would take over the ramping functions.

You never told us what you are controlling. Is it an analog output or just heaters on/off?
 
Its analog control. I have the PIDAT instruction in use, I just needed a way to create ramp/soak parameters, which was easy enough to do, after some trial and error. Thank you for the reply.🍻
 
It appears from your post that you want to know how to build a recipe in logic and then PID is next..
You will probably have to build the recipe in logic from scratch.
It would take me a while to explain how to build a recipe in logic in detail.
So..here is the basics

In your recipe you have multiple "Segments", each one containing (at a minimum):
Ramp Rate
Soak Setpoint
Soak Time

These are stored in a bank of "Recipe Storage Data" registers. When each segment is active that data is moved to "Current Segment Data" registers:
Active Ramp Rate
Active Soak Temp
Active Soak Time

1. On "Cycle Start" active move 1 into "Active Segment" ("Active Segment" = 1). Move "Recipe Storage Data" for Segment 1 to "Current Segment Data" registers.
Also at start of Segment 1 move current furnace temp to "Active Setpoint" -25 degrees (this will keep from upsetting the PID on the jump). This is only done at start of recipe, not on every segment change.
2. The "Active Setpoint" is controlled by Ramp Rate. You will be adding or subtracting the ramp rate calculation to the "Active Setpoint" depending which way the ramp is moving to "Active Soak Temp" (This is found out by comparing "Active Soak Temp" to furnace temperature ["Active Setpoint" < Furnace Temperature = Pos Ramp and "Active Setpoint" > Furanace temp = Neg Ramp]). See below for ramp rate calculation.
3. When "Active Setpoint" = "Active Soak Temp" it holds.
4. When furnace temp reaches "Active Soak Temp" "band" (you can build a +/- deviation band for within +/- 25 for example)...."Current Soak Time" starts.
5. At completion of "Current Soak Time" (Soak Time => "Active Soak Time") add 1 to "Active Segment" register and the next segment's data is moved from "Recipe Storage Data" registers for that Segment number to "Current Segment Data" registers (example..Active Segment = 2)

6. Then the "Active Setpoint" starts ramping to the next "Active Soak Temp".

7. When the moved "Active Segment Data" for Ramp Rate, Soak Temp, and Soak Time = 0 then end the cycle.


For the "Ramp Rate" you need to calculate it to the 0.1 second. If you do it in minutes, The moving temperature will look like too much like a "stair step" and PID will not work as well.
So....if Ramp Rate is 25 degree a minute:
(60/25) / 10 = 0.24 degrees will be added to "Active Setpoint" every 0.1 seconds to meet required "Active Ramp Rate".


In your PID block:
PV = Furnace Temperature
SP = "Active Setpoint" (which will be moving by "Active Ramp Rate")

Hope this helps...
 
Last edited:
It appears from your post that you want to know how to build a recipe in logic and then PID is next..
You will probably have to build the recipe in logic from scratch.
It would take me a while to explain how to build a recipe in logic in detail.
So..here is the basics

In your recipe you have multiple "Segments", each one containing (at a minimum):
Ramp Rate
Soak Setpoint
Soak Time

These are stored in a bank of "Recipe Storage Data" registers. When each segment is active that data is moved to "Current Segment Data" registers:
Active Ramp Rate
Active Soak Temp
Active Soak Time

On Segment 1 active ("Active Segment" = 1)..At start of recipe..move "Recipe Storage Data" for Segment 1 to "Current Segment Data" registers.
At start of Segment 1 move current furnace temp to "Active Setpoint" -25 degrees (this will keep from upsetting the PID on the jump). This is only done at start of recipe, not on every segment change.
Setpoint is controlled by Ramp Rate. You will be adding or subtracting the ramp rate calculation to the "Active Setpoint" depending which way the ramp is moving to "Active Soak Temp" (This is found out by comparing "Active Soak Temp" to furnace temperature). See below for ramp rate calculation.
When "Active Setpoint" = "Active Soak Temp" it holds.
When furnace temp reaches "Active Soak Temp" "band" (you can build a +/- deviation band for within +/- 25 for example)...."Current Soak Time" starts.
At completion of "Current Soak Time" (Soak Time => "Active Soak Time") add 1 to "Active Segment" register and the next segment's data is moved from "Recipe Storage Data" registers for that Segment number to "Current Segment Data" registers (example..Active Segment = 2)

Then the "Active Setpoint" starts ramping to the next "Active Soak Temp".

When the moved "Active Segment Data" for Ramp Rate, Soak Temp, and Soak Time = 0 then end the cycle.


For the "Ramp Rate" you need to calculate it to the 0.1 second. If you do it in minutes, The moving temperature will look like too much like a "stair step" and PID will not work as well.
So....if Ramp Rate is 25 degree a minute:
(60/25) / 10 = 0.24 degrees will be added to "Active Setpoint" every 0.1 seconds to meet required "Active Ramp Rate".


In your PID block:
PV = Furnace Temperature
SP = "Active Setpoint" (which will be moving by "Active Ramp Rate")

Hope this helps...

Yes, this helped a lot. Thank you for the information. :)
 
Wondering why you wouldn't just use a Eurotherm controller for something like this. Sorry for no useful input.

Doing it in logic gives a lot more power to the "Process Cycle" by not being strapped to the limits of an external controller.
You can "dial it in" better to YOUR process requirements.
If you are using an HMI, then recipes can be stored by name and/or number.
1. ANY number of additional parameters can be monitored during the "Process Cycle" by complete cycle or per segment..
2. ANY number of recipes.
3. ANY number of segments.
4. Easier to program in soak control parameters like "Guaranteed Load Soak" (GLS).
5. Then being able to enter any +/- dev for "GLS" per segment on active load tcs and/or control tc is band. The logic can determine active Load TCs and only use them for "GLS".
6. ANY number of digital events can be set up to be turned on/off per segment or timed.
7. Cooling pressure can be set in 0.1 psia to max cooling pressure of cycle. (Add pressure transducer as "analog in' to logic.)
8. Being able to advance segment either forwards or backwards at any time.

I can go on and on.....it is a true custom built recipe with tons of capabilities. You have all the power of plc logic elements to control the cycle..


The Eurotherm will duplicate most of these abilities but not all and you have to load it up with options.
 
The one advantage I will give to rhe Eurotherm is PID.
I despise PLC based PID logic. It is a pain to "tune" to control within the specifications used in the heat treating/brazing of new and/or repair of aircraft engine components (or even within NADCAP specs)... then it works okay IF you are heating the same load at the same rate rate to the same temperature. Add adjustable ramp, soak temps, and load variations and it seems you are re-tuning over and over.

I usually slave a temperature controller (that accepts a remote setpoint) to the plc for PID control. The auto tune works GREAT on the controller I use (Azbil SDC36) and it supports multiple (8 and I use 5) PIDs. 1 day 1 time - to ramp to 5 different temps and tune PID.....DONE

The controller I use also supports a "SP_Lag" parameter. If I set it at 50... then when the SP is moving (ramp mode), the PID reacts to keep the PV (furnace) tracking the SP by 50 degrees. This help's give the PID time to prevent any overshoot when the Ramping Setpoint stops at the required Soak Temp....Sweeet.
 
Last edited:
The controller I use also supports a "SP_Lag" parameter. If I set it at 50... then when the SP is moving (ramp mode), the PID reacts to keep the PV (furnace) tracking the SP by 50 degrees. This help's give the PID time to prevent any overshoot when the Ramping Setpoint stops at the required Soak Temp....Sweeet.[/quote]

Pretty sure that can be done too with the eurotherms we use, we refer to it as a cutback, that will allow the pid to take over and slow the ramp rate when control reaches Xdeg of setpoint.

I'm not very knowledgeable on programming the temp controllers, nor am I very knowledgeable with anything more complex than simple DI DO type PLC programming. So to me, it seems very complicated to use a plc when there are commercially available standalone products out there that do just that. Not knocking it, might just be my low level understanding of things.

On a different note, when I signed up for this site, I really hadn't anticipated talkin heat treat at all with other people. Seems to be a very small community. Have you had much experience with SSi's chart recording systems?
 
You already usually have a PLC controlling the equipment.....why add the cost of a recipe programmer?
This usually valid on new system not a retrofit. .


"On a different note, when I signed up for this site, I really hadn't anticipated talkin heat treat at all with other people. Seems to be a very small community. Have you had much experience with SSi's chart recording systems?"

Yes...I work with the SSI system also.
My view...the PID on their control system sucks.
Their chart recording system is pretty good...with 1 major flaw.
You cannot save data any faster than every minute. Their are a lot of quench cycles that require the load tcs to cool to a certain temperature in a set time. Sometimes... saving in seconds is needed to meet this.

Yokogawa makes a pretty nice process recorder...you can even write on the "chart" on the screen.

Most if my systems are using Wonderware Intouch as control/monitoring system. I also use their "Recipe Manager" to handle recipe storage.


Yes, it is rare running into people in the heat treat industry on this site...but there are a few. Until now I don't believe I have ever been involved in 2 threads at once relating to temperature and furnaces.

There are lots of threads relating to people having trouble getting the PID tuned correctly in PLC logic....
 
Last edited:
We're using the Eurotherm controllers and 6100 (I believe) series charts. I have no experience with Super Systems charts, but have heard things about it recently, such as having a major cost advantage and flexibility. The 1 minute thing, I have not heard, and doesn't sound very good at all. Believe me, seconds count, and has saved us in the past. What I like about Euro's setup is the communication between recorder and controller with just a cat 5 cable. Can have multiple furnaces on a single chart, and edit setpoints from the recorder. It's a touch screen that you can input information onto, edit times, temps, will auto initiate soak with an inputed deviation based on coldest t/c, load or otherwise, and alarm when batch is done. It's nice compared to paper, but I believe it makes for poor heat treaters, as you aren't watching your charts anymore and are relying on a buzzer to tell you it's done. It's not without it's bugs though.
 
Last edited:
The one advantage I will give to rhe Eurotherm is PID.
I despise PLC based PID logic. .

I was of the same attitude until this project. This is my first Omron NJ project, using Sysmac Studio. I used the auto tune and impressed with the control it delivers.
 

Similar Topics

Hello, I am trying to write a program for a freezer system. I have a CP1E with TS101 expansion for testing, but the actual project will use...
Replies
7
Views
2,142
hi all, hope some of you omron guys may be able to point me in the right direction regards addressing and temp control cards. the task is...
Replies
4
Views
3,087
Does anyone know where I can get documentation on a module for out Omron PLC. The module is: Temperature Control Unit Omron CQM1-TC001 Thanks...
Replies
6
Views
3,317
I have S7 1512C controler for controlling 48 PID temperature loop, the output is PWM. Please I need the best, most efficient way to write the...
Replies
13
Views
591
Hey everyone I'm trynna write a program to a WEST PRO16 temperature controller, but it just won't download the program i made using BlueControl...
Replies
0
Views
745
Back
Top Bottom