Jump to content

Not able to change Integral and Derivative in PID logic.


Recommended Posts

SM43-J-TA22

 

Hey guys, I'm doing a PID control in an Industrial Furnance which can heat up to 600°c.

I followed the instructions and at first glance there's nothing wrong with my ladder. After the auto-tune (550°c setpoint) my furnace returns with a steady-state error, only being capable of mantaining up to 548.8°c. The furnace, at 100% output, can heat up to 697°c. (capped at 600 for safety purpouses)

However, when I try to change Integral and Derivative time after the auto-tune to try fix the steady-state they have no effects at all in the output (4-20ma).

 

I tried to switch between PID and Manual (on/off) modes to see if there is a difference and see if PID is working, and manual has (obviously) a much worse control over the temperature, so I can confirm that PID is, in fact, running.

 

But no matter what number I put in the I or D parameters, either by logic or PID server, the output is the same and only changes when I change the Proportional value. Which sadly, is already at 1. Here are the full parameters that the auto tune gave me:

 

P : 112

I 37

D : 88

 

This gave me a PID control with a 1.2% (544.2°c) error. Here's what I changed to have it at 0.4% (548.8°c) max:

 

P : 1

I : 37

D : 88

😧

 

Also, I noticed that after the auto-tune at 550°c only 7 of the 32 reserved parameters has numbers on it, which changes for every setpoint. (For example, auto-tune at 500°c wrote in 11 of the 32 parameters).

And last, the SS error is present at every setpoint.

I know it is hard to give hints without looking at the logic, but company-wise it is confidential because it is a product, so I can't give the files. However I will be please to answer any questions about it.

Any thoughts?

Link to comment
Share on other sites

  • MVP 2023

From your post I gather that you have your input temperature resolution set to 0.1 deg C.   I would seriously consider knocking that decimal point off your temperature.  If your input is a type K thermocouple your sensor has +/- 2 deg C accuracy and that extra decimal gives managers something to focus on and get upset about when it moves 0.5 degrees.  Everyone expects perfection these days.

To answer your question - if this is the resolution of the PV input the the PID block then your P band will be 0.1% times the P value times PV, or (0.001 * P * PV).

So at 548.8 degrees C with P = 1 your P Band is 0.55 degrees C.  

In a PID loop the Proportional band is the first and most weighted component of the equation.  Outside the Proportional band the output is either full on or full off.

A proportional band of 1 is effectively an ON/OFF control.  Changing the I and D parameters will have no effect on the output at this point.

Sometimes the Autotune doesn't work.  Your loop is drooping slightly.  If you want it to go higher you need to set your D = 0, set your P =10, and start incrementing I until the temperature starts coming up.  If it starts oscillating double your P value.

Are you monitoring the actual electrical value of the 4/20 output signal?  If you logic is working with a P value of 1 it should be effectively alternating between 4 mA and 20 mA with nothing in-between.

The difference between ON/OFF and the PID you have defined at this point is ON/OFF switches off at the setpoint, PID is switching off at 0.55 degrees below the setpoint.

Honestly if you're able to maintain 548.8 degrees at a 550.0 degree setpoint I wouldn't be worrying about it.

Joe T.

Link to comment
Share on other sites

42 minutes ago, Joe Tauser said:

From your post I gather that you have your input temperature resolution set to 0.1 deg C.   I would seriously consider knocking that decimal point off your temperature.  If your input is a type K thermocouple your sensor has +/- 2 deg C accuracy and that extra decimal gives managers something to focus on and get upset about when it moves 0.5 degrees.  Everyone expects perfection these days.

 

Hey Joe, thanks for the answer. You helped me in many other problems by replying in this forum, really appreciate it.

But unfortunately, I only wish I could. Ever worked in the ceramic industry? They say that a 0.5% margin is unnaceptable. It is a furnace for qualitry control tests.

By saying this, anyone would think that this would ask for high precision temperature controllers, but nah, its all about cutting the costs.

By the way, it is a type S thermocouple.

 

47 minutes ago, Joe Tauser said:

Are you monitoring the actual electrical value of the 4/20 output signal?  If you logic is working with a P value of 1 it should be effectively alternating between 4 mA and 20 mA with nothing in-between.

The difference between ON/OFF and the PID you have defined at this point is ON/OFF switches off at the setpoint, PID is switching off at 0.55 degrees below the setpoint.

 

Now I think you understand why this sounds crazy, because I have a proper multimeter to catch mA and it really shows it dealing with the temperature changes. They go slowly from 4mA all the way to 20mA if needed. And no matter what I change in the parameters, it stays the same.

You said about the P being a 1 is what makes the I and D stop affecting the controller, but if change P to 50, 100 or 1000 and then change the others, it is the same. Only P seems to take effect in the output. 

Now I'm really worried that the autotune just didn't worked as it is supposed to, but doing it over and over again is suicide as we have goals to complete. I just doesn't understand what turned out so wrong in these parameters that somehow it turns off the heaters almost completely (6.46mA output) after it reaches 500.0, then it drops to 549 and is never able to reach the SP again.

Link to comment
Share on other sites

this may sound silly, but what happens if you put your setpoint at 552?

does it settle in at closer to 550, or stay at 548.8?

numbers are just visual indications of what's going on, but sometimes you just gotta tweak the numbers to get/show the results you want..

Just my 2-cents

Link to comment
Share on other sites

Based on my experience, the Vision Autotune FB used on slow response systems like temperature control, doesn´t give optimal PID parameters except by sample time. That´s why I´ve tuned those systems manually.

5 hours ago, Hyugin said:

You said about the P being a 1 is what makes the I and D stop affecting the controller, but if change P to 50, 100 or 1000 and then change the others, it is the same. Only P seems to take effect in the output. 

 

Probably you don´t need D, so set it to 0.

 

5 hours ago, Hyugin said:

I just doesn't understand what turned out so wrong in these parameters that somehow it turns off the heaters almost completely (6.46mA output) after it reaches 500.0, then it drops to 549 and is never able to reach the SP again.

 

It may be caused by integral wind-up. You can check it looking at PID status register. In that case, what I do is to reset it manually

Link to comment
Share on other sites

  • MVP 2023

You've clarified several things about your background and application.  Good to know.

Auto-tune is not a perfect process wizard. 

image.png.700ca8bcf2220985a6d7d32bd65c6691.png

It will get you into the ballpark but you'll need to tweak the settings.

I can't say I've spent a lot of time in the ceramic industry,  but I did help out the Ceramic Engineering Department at my alma mater with some controls so I now know what S and R thermocouples are.  They were nowhere near as demanding as your client.

Just to clarify a few things-

1.  Is it a 0.5% error margin or a 0.5 degree error margin they get upset about?  

2.  Is your 4/20 signal controlling SSRs via a PWM control or a phase-angle fired control?

3.  You've verified that you are precisely measuring the control signal and it is changing over the very small P band.  At this point I'd follow Gabriel's advice and set the D = 0.   Increasing the value of I should pull the droop up.  If not there's something wrong.

 

There are a couple of functions under FB's->PID Auto-Tune->   Read Control Components and Read Error Integral.  Put both of those in your program so we can get some more diagnostic information while the loop is running.

 

Joe T.

Link to comment
Share on other sites

On 1/19/2024 at 7:16 PM, Joe Tauser said:

1.  Is it a 0.5% error margin or a 0.5 degree error margin they get upset about?  

2.  Is your 4/20 signal controlling SSRs via a PWM control or a phase-angle fired control?

3.  You've verified that you are precisely measuring the control signal and it is changing over the very small P band.  At this point I'd follow Gabriel's advice and set the D = 0.   Increasing the value of I should pull the droop up.  If not there's something wrong.


1. They like things perfect. For example, there is another Furnace that we make that can heat up to 1300ºc. However, it is much smaller and uses a RS-485 controller which comunicates with the PLC. This one is able to maintain a perfect 1300ºc PID, but is a different system. 

As I clarified, we make these for quality control purposes, thats why they get upset about these things and want these extra decimal points.

2. P/A control.

3. It seems that setting D to 0 gets me a much stable ramp-up, but unfortunately and for some reason, increasing I doesn't change the output.

I'll set up the function blocks and let you guys know if they catch something.

Link to comment
Share on other sites

On 1/19/2024 at 7:16 PM, Joe Tauser said:

There are a couple of functions under FB's->PID Auto-Tune->   Read Control Components and Read Error Integral.  Put both of those in your program so we can get some more diagnostic information while the loop is running.

 

image.png.05285145771a9d6cfb6255d17f1c400b.png

 

Idk how can I even understand this.

Setpoint is at 85º, was at 76º.

P : 1
I : 59
D : 0

But as you can see, Integral error is 0 and and the Integral output is also 0. The process had an overshoot of 2º (87º before decreasing). The final PID input was around 84.7º.

After it stabilized, these were my results:

image.png.0a48e7b56ec9208d787ac5f794ea2c9f.png

 

Values stays the same where P=1, I=59, D=0.

Anything that I should be worrying about?

EDIT: As it tries to reach the setpoint, I just got a negative gain in P of -13908. It doesn't seems that good.

Link to comment
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...