Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Control of Process with dominant deadtime ---> Step response test parameter estimation

Status
Not open for further replies.

Regensteiner

Mechanical
Sep 2, 2013
9
0
0
DE
Hi,
I'm a newbie using matlab and to deal with system identification. But as it happend I have to tune a PI Controller for a process. So I thought a open loop test like a step response test is sufficient. I carried out the following test:
set the control signal to a fixed value and see what happen: control signal is set to 6 A at t=0 and the output value is measured. I got the follwoing data for Y: 0.03, 0.04, 0.04, 0.11, 0.11, 0.7, 0.7, 1.06, 1.06, 1.22, 1.22, 1.29, 1.29, 1.34, 1.39, 1.39, 1.42, 1.42, 1.42, 1.42, 1.43, 1.43, 1.42, 1.42, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.43, 1.43, 1.42, 1.42, 1.39, 1.39, 1.4, 1.4, 1.4 --> unit kW
the time is t=0:0.5:39;
Then according to Hägglund one calculate the paramaeters of first-order plus deadtime model G(s)=Ks/(1+sT)*e^(-sL):
Ks=Y(end); %not quite right but close
A0=trapz(T,(Ks-Y));
t0=A0/Ks;
t0=A0/(Ks);
idx=find(T<t0);
t1=T(idx);y1=Y(idx);
A1=trapz(t1,y1);
tau=exp(1)*A1/(Ks);
L=max(0,(A0-exp(1)*A1)/(Ks));
GM=tf(Ks,[tau 1],'iodelay',L);
Well, I got something for the parameters: L=1.7 K=1.4/6 T=1.325 but what tunig rule (practical) is suitable for this problem? The deadtime is twice as the time constant. So it's hard to control. Does somebody has a suggestion?

cheers,





 
Replies continue below

Recommended for you

PID controllers do not control processes with dead time very well. Dead time is also called transport delay. If you want accurate control you must go with more advanced controllers.
 
I'm not sure your coding works, so I'm not confident in your resulting values for your model parameters. It seems like you are confusing t and T in various lines. Also, your time vector t is almost twice the length of your output data Y. Is it supposed to be t=0:1:38? If so, I get different parameter values for L and tau. The plot of the model vs the data looks pretty good when I run it that way.

Finally, there are plenty of PI and PID tuning rules given for dead-time dominant processes. Check out this link, and look for rules where the τ[sub]m[/sub] / T[sub]m[/sub] is greater than your calculated ratio of L/τ.

xnuke
"Live and act within the limit of your knowledge and keep expanding it to the limit of your life." Ayn Rand, Atlas Shrugged.
Please see FAQ731-376 for tips on how to make the best use of Eng-Tips.
 
Hi xnuke, What do you mean I am confusing t and T. Could you please give me an example where this is. You are completely right that the time vector is wrong it should be 0:0.5:19 the sample time was 0.5 seconds.

Thanks for the link I will check it...
 
You confused me by defining the time vector using lowercase t ("t=0:0.5:39") and the model's time constant using T ("G(s)=Ks/(1+sT)*e^(-sL)") in the top part of your first post, but then you must have used T in your code as your time vector and then you called the system time constant tau, and t doesn't appear at all. OK, now with the correct time vector I get the same results you got despite the confusion in variable names.

As far as using the link I provided: for PI tuning, I'd be looking at Table 1; for PID tuning, I'd be looking at Table 25, or if I have a noisy process and needed to filter the derivative, I'd look at Table 36.

xnuke
"Live and act within the limit of your knowledge and keep expanding it to the limit of your life." Ayn Rand, Atlas Shrugged.
Please see FAQ731-376 for tips on how to make the best use of Eng-Tips.
 
If your system identification is right you should be able to control it even if the dead time is two times the plant time constant. Here is an example:
I made the dead time 3 minutes and the plant time constant 1 minute just for you. You can see the response as a little over shoot but it isn't bad.
There are actually two simulations. One with my gain calculations and the other using the IMC model gains. I would use the IMC model gains to start because they are simple to calculate.

I would move your control signal more. The more changes you make in the excitation the better your system identification will be.



Peter Nachtwey
Delta Computer Systems
 
Hello Peter,

many thanks for your reply. I haven't worked with internal model control so far. But I would like to learn more about it.
Do you have a simple example how to enhance a PI controller to IMC?
What do you mean by "move your control signal more", to use a higher step?

Regards,

Ossi
 
Regensteiner, see this
Scan down to "Implementing IMC within a Conventional PID frame work. You will see the same formula for calculating the gain and time constant their. My pdf goes into detail as to how it is derived. You should be able to control your FOPDT easily even if the dead time is longer than the plant dead time.

The second half the the pdf in the link of my previous post should be all you need.

There is another good site about basic PID and FOPDT control. It is:

I don't have Matlab. I do grudgingly use Scilab. I have a FOPDT and SOPDT auto tuner here:
In the end it all comes down to knowing your plant. Having a good transfer function for it is essential.
You should be able to convert this to Matlab.

Have, fun.


Peter Nachtwey
Delta Computer Systems
 
Hi Peter,

thanks for the information especially about Scilab. I haven't heard about it but I discussed it with a colleague and we agreed on to check this open source tool.
However, I am going to estimate the parameter to get an IMC based PID. But I have one question about how to calculate the time constant of the low-pass filter. The reference says that a good value would be twice as fast as the open loop response. Is there a better way? Another question is how to estimate a “good” transfer function of the process? As I have written I am using the method of areas to get the approximation of my process.
Regards,

Lars
 
But I have one question about how to calculate the time constant of the low-pass filter. The reference says that a good value would be twice as fast as the open loop response. Is there a better way?
I think you over estimated the time constant in your first post. I would have used the time from the reading at 0.7 to the first reading at 1.42 and call that 5 time constants. I didn't bother to figure out the time between the readings in your post. You should have provided that. I am assuming the deadtime is the time from the first reading to the first 1.06. If so you can seem to be able to figure out the model by yourself. If you want a more accurate estimation using my auto tuning program. There are test input data files so you can see what it does. Scilab is free. Try it.

Did you look at the text files or input data in my Scilab directory? If you can export your data in the same format it will be easy to read up into the auto tuning program.


Peter Nachtwey
Delta Computer Systems
 
Status
Not open for further replies.
Back
Top