Studio 5000 PID

bbishop108

Member
Join Date
Mar 2017
Location
Indiana
Posts
86
So I have an application where I will be controlling a block with 6 cartridge heaters connected to a controller (not a PLC). The controller will be cycling power to allow the heater cartridges to heat up based on the temp readings from a Thermocouple. So this is where I need help with configuring the PID instruction and tuning as well. This heater block is used to heat 5 parts at a specific temp for a minimum of 10 minutes at that temp. I need to control the temp for that block, I've looked at the PID instruction but I do not understand how to actually configure it or what tags I need to create. Any assistance will be greatly appreciated! Thanks
 
Hi, your process variable will be the block temp (from the thermocouple. Make a tag that says for instance Block Temp Raw. That would be from your Analog in address. Make sure to scale it in the PID. If it's 4-20 then it would be 4000-20000 on the PV scale in the scaling tab in the PID on the top left, and then for the engineering units on the top right scaling the range of the transmitter or thermmocouple I.E 60 to 600 degrees, min/max.
on the top right.
The Control Variable (CV) is the output to the block temp controller, probably from an Analog out card. So 4 - 20 or 0 - 10 would be 0 - 100% on the controller. So on the bottom left of the scaling tab, put 0 - 100. Make a tag for the PID that says, Heat Block Percent, and then logic to move that value to the analog out. I usually use FBD scaling blocks to do all of this. Separate routine I call Scaling.

Lastly, your setpoint. In your logic you'll need to make a setpoint tag, say "Heat block SP" and this will come in from the HMI, or keypad or whatever. Do a MOV and move this value to the name of the PID instruction (PID_Heat_Block) to a PID_Heat_Block.SP tag. That will go into the PID and the CV will modulate to keep the process variable stable when you get it tuned.
Lastly, you need to have a free running timer for the PID to update. PID's are really not supposed to be "turned off" (false rung)so be sure to condition your logic to keep it active when the heat is not needed. If not, sometimes it will go back to it's last value immediately after being energized and not modulate properly. You can use your logic to enable and disable the heat after a certain time.

If you can't get some of this, I can send you an example of some PID's I made for some Burner Controls. Give it a try and get back to me or even many folks who are much better than I am at this if you get stuck. Good luck
 
Thanks for this info, as yet I have not had the time to try out these suggestions!!! Work has a way of getting in the way of work!!! Once I get some time I will be trying to implement these suggestions, I will update then to my results. Thanks for all the suggestions!
 
Greetings to those who may remember this issue I have been dealing with, I know it has been a while but it looks like I will be moving forward with this now. I have been reviewing the previous posts to refresh my memory with where I last left off.


Let me start with some further info regarding controlling my heaters, I will have a thermocouple (actually 2 and will average them in my application) for reading the temp. I am not sure if I truly need to use a PID instruction and here's why: I will not have an analog signal to control the heater, it is a digital output so it will just be on or off. As such I know the PID works better with an Analog Output Signal as it sends a percentage. Since my application is digital, do I still need the PID and if so why???


I have seen an example of using the PID instruction, but the actual digital output cycles on and off based on a timer loop. When the temp is greater than the timer's ACC value then the heater is on, and once the ACC value is greater than the temp then the heater is off. The timer uses its own done bit as a NC instruction to control a 5 sec timer, making it a continuous loop. I understand the cycling of the heater on and off with the timer, but I just don't fully understand the need for the PID instruction. Please let me know how, why to control this digital output with a PID instruction. Thanks
 
We do this w/ heating/cooling blocks using the SRTP instruction. I use the PID loop output to feed the IN parameter of the SRTP block.

But yeah, you don't need to use a PID loop for this if you don't want.
 
If you don’t have a controller picked out yet, look at Watlow, Red Lion Controls, and Omega. Check out a few manuals to help you understand control options. Any of these will likely operate similar to your PID example in post #5.
 
I actually already have the controllers, Din-a-Mite, and they just require a 24vdc input to control them.

What you will be doing is time proportion control of the Din-a-Mite SCR power controller, which uses that 24 VDC input as an on/off switch (as you know).

One way to do this with the Logix 5000 platform is to use the PID instruction and two periodic tasks: one slow (e.g., 1000 ms) and one fast (e.g., 5 ms). The PID instruction is in the slower task and computes a percent output -- then scaled to a Control Variable (CV) -- each time that task runs. The faster task controls a digital output wired to the SCR input, leaving it on for a specific number of task cycles based on the value of the CV.

As an example, using the numbers above, the controller duty cycle is 1000 ms, and the control resolution is 0.5 percent (5 ms/1000 ms). You will have 200 cycles of the Fast Task between updates of the PID task (1000/5). Scale the output of the PID loop (the CV Min/Max) so that 0 to 100 percent is 0 to 200 CV.

Within the Fast Task create a DINT tag that will repeatedly count from 0 to 199, 0 to 199, 0 to 199, ... using the ADD instruction to unconditionally increment this DINT. Clear (CLR) the DINT counter when it is >= 200. In another rung, energize the digital output (OTE) to the Din-a-Mite when the DINT value is less than the PID's CV value. [Also, consider using an Immediate Output (IOT) instruction for the digital output word at the end of the Fast Task, though not absolutely necessary.]

This relatively simple approach relies on various setup and configuration data to be consistent in order to work correctly. There are methods to make it more error-proof by using PLC tags for some of the key parameters.
 
Last edited:
Mispeld: Today I was finally able to do some testing on this PID instruction, and following your suggestions I have been successful in getting the PID to work and keep the temp stable within +/- 1 degree.


Just as a note that I haven't played around too much with the Proportional and Integral values for tuning. I have noticed that changing the proportional value to a higher value (1800) works well when I am trying to stabilize temps above 200 deg F. For temps below 200 deg F, I have the Proportional set at about 1500. I believe that I am using the Integral set at .12 as of now.


So again thanks for all the helpful suggestions, I'm still not too comfortable yet with this PID instruction but I have a better understanding of it now!!! Thanks!!!
 

Similar Topics

I'm setting up a PID for a 50hp RO pump in a water treatment plant. When I go to manual mode on hmi I set the swm bit, I also ons the pid output%...
Replies
5
Views
567
Hi All, I'm using Studio 5000 ver 30 to modify existing logic that has PID, and I want to be able to use an external/remote source as a setpoint...
Replies
3
Views
628
In this routine, i have an issue where when "lineSpeed" is changed, the PID loop math does not appear to be working out correctly and if I'm only...
Replies
10
Views
2,700
It is now an add on license option for $ 713 After a week of nobody @ Rockwell being able to tell me why my Auto tune was grayed out... I...
Replies
33
Views
11,065
Does anyone know of any sample code for an analog process simulator? I'm looking to test out some PID tuning methods but would rather have the...
Replies
26
Views
7,608
Back
Top Bottom