PID Tuning Without a Plant Model on a Slow System

Sorry for the late reply. This is my first time working on any system, and I appreciate all of your input. I can see now that the ITAE formulas that I used were not applied properly.. however I'll have a go at using the tuning with a step input provided by @GrahamJ. I am also going to look at a cascaded system.. I've never actually thought of that, so thank you for the ideas.

The current PID settings (4, 4, 0) were probably set arbitrarily by the company that did the installation of the system (essentially whatever worked) but I'll have to call them to find out how they chose them. Our resident controls guy is more of an electrician.. all about PLCs as opposed to control theory.

Bottles are not apart of the heating system.. to clarify, 'to bottles' means release to the rest of the system, then to the filler.. that point is irrelevant. If the product has not reached the set point temperature in the hold loop, then it is recirculated. If it has, then it is sent out the 'to bottles' piping. Also note, the product spends approx. 50 seconds in the hold loop.

Below I have attached 2 notepad files that I used to create the red plot. Normalized is just TT-132 (triple tube heater temp.) divided by the set point of 200 degrees F.. and the timestamp is the temperature (TT-132) readings taken every 5 seconds over the course of a 3 hour start up period. I can pull other data values if it can provide more clarification.. once again I apologize, my week got taken up with other issues.


Is your P setting in % of the range of in °C? In both cases 4 is quite low to start with. I would try to start with a larger value of i.e. 25% of your measurement range or 25°C. So your process does not behave in an on/off way.
An I value of just 4 seconds is also very low. See what happens when you try higher values.
Work step by step and write down what you do.
Leave D at 0 for now, that will come later in the finetuning.
The controller gain should have units of % control output per degree of error. If the ambient temperature is 20 degree C and the open loop gain is 2%/degree of error then it will take 40% control output raise the temperature to 100 degrees C.
The units are important.

GrahamJ's auto tuner allows for finding many poles and zeros but in his example it did find a SOPDT.
The formulas for calculating the controller gains is easy. I have a python example here.
Included is a .csv file of data called hotrod.txt and a separate python module that reads the the .csv file
It does the system identification on a small test system and calculates the gains and show the response.
This was originally done in 2005 on the forum.

There should be one gain to place one pole. A SOPDT needs two gains which are the P and D term. The integrator comes with its own pole so it doesn't count towards the one gain for each pole requirement. If you have fewer gains then some of the closed loop poles can and probably will be complex so there will be oscillations.

Auto tuning cascaded loops is trickier. If the auto tuner can only tune one loop at a time then start with the inner loop. Then tune the outer loop. It usually takes custom software to tune two loops at the same time.
The controller gain should have units of % control output per degree of error. If the ambient temperature is 20 degree C and the open loop gain is 2%/degree of error then it will take 40% control output raise the temperature to 100 degrees C.
The units are important.
The units are indeed very important. It depends on the brand of controller you use if the P setting is in either % of the measurement range or in °C. The I and D settings are (most of the time) in seconds and (not so often) in minutes.

Auto tuning cascaded loops is trickier. If the auto tuner can only tune one loop at a time then start with the inner loop. Then tune the outer loop. It usually takes custom software to tune two loops at the same time.
Tuning such a cascaded loop is indeed trickier. When I manually tune I always tune the slave, that drives the actuator of the process, first. The RKC Instrument controllers that I use have on top of the PID settings slow, medium and fast control response settings. In this case, the slave, I set it to fast.
We will arrive at quite tight PID setting with a relatively low P and short I.
It makes sense to use a D setting here to make the slave controller reacting tight and fast for the process. I often set the D to 25% of the I (from many years of experience). Often even higher than 25% to keep it nice and tight.

Starting a slave burner or electrical heater with a cascaded loop:
Here comes a nice procedure for starting up a cascaded loop, to prevent damage to the system (because of thermal stress) and to prevent unneccesary wasted startup-products.

When using an electrical heater or (even more important) a burner. You need to look out when starting up the process when everything is cold.
If you just let the cascaded loop start, the master immediately asks max. power from the slave and the heaters go to maximum.
But that is not a good idea:
- damage to the (cold) heaters can occur, especially with burners which have to heat up first for sometimes 10 minutes at a relatively low fixed power setting until they reach a certain temperature. After reaching that heat-up temperature and having been there for i.e. 10 minutes, you can release the power limit.
- what also happens, is that the integration sums start to count up, resulting in a quite high overshoot
I prevent this by starting in local mode (so not cascaded) and leaving the master controller in stop mode (so the integration sum doesn't count up).
I first let the slave heat up for a specific amount of time to a relatively low temperature setting of about 50% of the temperature I need to reach running a normal process (sometimes also with power limited at first).
I also let the desired temperature setting ramp up slowly so things don't go too fast and everything in the heaters can nicely settle/expand and heat-up.
After reaching that temperature I switch to the next area (switch from area 1: startup to area 2: waiting) in the controller (it has up to 8 different area's) and wait for i.e. 10 minutes.
Then I switch to the next area (area 3: slave ready and standing by in local mode, so not-cascaded)

Now it's time to put the master controller from stop into running mode. Remember that the integration sum is still 0 when switching to run. Don't let the integration sum start counting when it is not necessary and needed. Only start when ready. This prevents a large overshoot in the process.
We start in area 1 with a relatively low startup temperature setting of also about 50% of the temperature to reach.
Also here I let the temperature setting ramp up nicely and slowly.

Time to couple the controllers in the cascaded loop.
We have to set the slave controller from local control (taking desired temperature from internal setting) to remote (take desired temperature from either an analog input or via communication, I prefer the last one, so desired values are the same in both controllers)
We switch the slave controller from area 3 to area 4: cascaded, and the process starts to heat up to 50% of the desired temperature

After waiting for a while we nicely get at 50% of the desired temperature.
Now we switch the master controller from area 1: startup to area 2: process active
In this area 2 process active we set the desired temperature to the value we want to reach.

Now when we reached that temperature, it is time to feed the products in so you don't have to throw away so much.

Note that each area in the controller can also have its own PID settings.
Keep in mind, that for specific processes that have to run over a large temperature range, different PID settings must be used, because around 600°C you switch slowly from convected heating to radiation heating and the PID settings must be tighter (factor 2). Same thing happens above 1200°C (fully radiated heating without convection)

When the process needs to stop, or wait temporily (because no product is feeded in) you can also set it to a certain standby temperature in order to save energy and also create a nice way to start up again without losing products because of start up.

Now, maybe you all think, this is way too complex.
But if you have to make (expensive) products, things like this save a lot of time and money.
And also: it prevents damage to the system because of unneccesary stress because of large temperature deviations without letting them settle in.

Just some thoughts from 30 years of experience with many kinds of processes.....

Look out with control power output limiter settings: do it in the controller and not the thyristor module/burner control
Sometimes, when for example a burner or electrical heater with maximum power setting is used, I also need to limit the control output to a certain value (lets say 80%) to prevent damage of the burner/electrical heater. When using an electrical heater in combination with a thyristor module you can also limit the power setting there, but it is better to do it in the controller because otherwise you lose a part of possible control response and introduce extra lag time.
When for example the temperature is too low with a control output limiter set to 80% in the thyristor, the PID controller still goes on controlling from that (limited) 80% to 100% thinking all is fine but doesn't see anything happening. Integration keeps on counting up (introducing a lag time when the control output has to come down again).
Now when the temperature is (finally) too high the controller starts to reduce the output from 100% to lets say 60%, the first part (100%->80%) nothing actually happens with the power driving the heater and you react -way- too slow.
So: keep this power limit setting preferably in the controller and not in the thyristor module driving the heating element.

Tuning the master controller:
Can't you model the slave controller into a process, and tune the master controller separately with this newly modeled process of the slave?
Then you can also tune the master controller with the software as a starting point.
The PID settings of the master controller must be set way less aggressively, so with a wide P and long I setting, compared to the slave controller. And I set the control response to slow.
I often have P settings of 25% of the measurement range for master controllers.
The D I keep very low or at 0, the master controller must be relaxed.