i'am using this node https://flows.nodered.org/node/node-red-contrib-pid for my flow.

here's how i configure it.

What is the reset windup and Integral Locked means and how to correct it?

Thanks in advance.!

i'am using this node https://flows.nodered.org/node/node-red-contrib-pid for my flow.

here's how i configure it.

What is the reset windup and Integral Locked means and how to correct it?

Thanks in advance.!

Integral locked means that the process value is far from the setpoint (compared to the proportional band), or has been a little away from the setpoint for a long time, and the integral term has got too large, so the algorithm prevents the integral term from growing any more. That is known as stopping integral windup. It is perfectly normal for this to be the case during startup or when the setpoint is changed.

An integral time of 1 second is very small, small integral time means a very rapid integral effect so if the setpoint is not very close to the setpoint then the integral will increase rapidly over a few seconds and it will be locked.

If your process is so fast that if you switch on the power it will reach 60% of full temperature (or whatever is being measured) in a couple of seconds then the algorithm is not suitable for your process.

What are you trying to control?

Did you see the link to the blog on how to tune a pid loop using the node, it is in the help panel for the node.

2 Likes

thanks for your explination. that was really helpfull. But, i wonder if there another way to determine the right values of P.I.D? a calculation equation maybe ?

Certainly, if you have a good mathematical model of your process then the values can be estimated mathematically.

If you don't have that model then no.

However, if you tell us more about the process you are trying to control then I can probably make an inspired guess at some values that should give you a start.

it's a vapor system. i want to contol the heat when the water is pushing and became a gaz.

i have the endpoint to 170 degrees with +-20 range.

with the current configuration i have set, "integral Locked" shows on and the temperature rises so fast..

As I said earlier, 1 second integral is probably much too small (small integral time means rapid change output change).

Are you unable to use the tuning algorithm in the blog?

If not then start by setting to integral time to a value which is large compared to the response of the system. So if, for example, you expect it to take 10 minutes to heat up then set the integral time to 20 minutes (1200 secs), or if you expect it to take a few minutes to reach temperature then set it to 10 minutes (600 secs). Set the derivative to 0 initially.

Next, for tuning, it is essential to be able to see a graphical representation. The graph must show the current temperature, the power output from the PID node and, if it changes, then the setpoint. It is best to use something like Influx and Grafana so you can go back and look at old charts to remind yourself how it performed with previous settings, also keep note of what changes you made when, obviously. If you can only use the standard node-red chart then take screen shots so you can look back at those.

Then power it up and see how it performs. Post the chart image here, along with what values you have got for P and I.

sorry for the late respond. i have set the integral time as you have mentioned earlier to 1200 sec but i don't see much difference! i still get integral Locked, wich is normal if i follow the calculation from here https://github.com/colinl/node-red-contrib-pid/blob/master/pid.js.

what i have noticed is that when the system starts to heat up and attend setpoint value wich is 170°C, the state of PID "Integral locked" starts blinking.

i have notice also that when i changed PB to 50 and initial integral to 0.1, it may slow down the rise of heat ....

it starts to be ambiguous to me! any explanation or this behaviour ?

thank you in advance.

Show me the chart. Without a chart it is hopeless to work out what is happening.

As I said previously the integral is locked while the temperature is far from the setpoint. As the temperature approaches the setpoint then the integral will be unlocked.

here's a screen shot of the chart. at 8:24:30 , i activate the heat, so the temperature started rising

How can i determinate the PID values ?

You haven't included the power output from the PID node

You haven't told us the current PID settings.

Also leave it a bit longer so we can see how it finally controls when it gets to the setpoint.

Finally you haven't explained why you can't use the technique suggested in the blog.

i hope this help this time.

setpoint: 170 , P= 5, I = 1(s), D= 0.1(s), Initial integral = 0.1

i connot use the technique suggested because i have never used it before, also, i'am working on 3.5inch LCD display so it is so hard to learn something on it.

Sorry, that doesn't make sense. Why can you not read the instructions and do it? Just to make sure you are looking at the right link it is http://blog.clanlaw.org.uk/pid-loop-tuning.html However by running the system with the integral much too small you have effectively already done the first phase of the tuning so we might as well just carry on now.

In an earlier post I said that 1 second for I is much too small, and suggested how to get an initial estimate. You said you had set it to a larger value, but it appears to be back at 1 again. Looking at the chart you can see it is completely unstable, that is mostly because the integral is much to small. I suggest trying 30 minutes (1800 secs) initially though we will probably be able to bring it down later. I think the PB may be a bit tight too, so put that up to 10 for the moment.

I see you still haven't got the power on the chart, it is necessary to do that for the fine tuning. Can't you run the browser on your PC connected to the Pi? Just put the IP address of the Pi in instead of 127.0.0.1. Then you can get a much bigger chart. Also configuring node-red will be much easier.

For the power put it through a Range node configured to scale the input range 0 to 1 to the output range 0 to 150 and feed that to the chart (with a different topic obviously).