For discussion of all aspects of measurement and control in the process industries, such as pharmaceutical, power, pulp and paper, chemical, etc.
If you have any questions or comments, please post them here. If you see a question that you can answer, or perhaps add your insight, please use the reply to add to the thread.
When the secondary (slave, inner loop) is in automatic but locally adjusted setpoint, the output of the primary (master, outer loop) tracks the setpoint of the secondary loop. This way, when the operator transfers the secondary loop to remote setpoint (or cascade mode) there is no bump. At the time of the transfer the primary control loop automatically transfers its mode from manual to automatic.
Though, John's explanation is will work well for 99% scenarios, I have a comment on that to take care the 1% leftout. The master controller should better track the process variable (PV) rather than the SV of slave. This is because, if there was some deviation in slave controller at the time of cascade switching, the auto-set point may not be very relevant from that point (cascaded) onwards. So it will be better, if the master can track the PV itself(that is the real stuff itself, not a previously set target like SV)
I have, in some situations, had the master track the slave process variable. However, there can be some problems you have to watch out for.
If the slave has a high (or even moderate) gain, and the slave SP differs from the PV, at the transfer the slave SP will suddenly jump from its original value to the current PV. Unless the slave PID uses an option to not apply the gain to setpoint changes (available on some control systems) the slave output will move in the direction that will move the PV away from the operator set SP. Keep in mind that the SP, set by the operator before the transfer to cascade, is where the operator thinks the slave PV should be.
I find that it is usually helpful, however, to connect the slave PV to the external (reset) feedback of the master.
Does anyone know what kind of file system Honeywell uses on thier zip disks? Any code out there that will allow a Window's machine to read it? I know that Honeywell has thier own software, but I don't like it!!!
One of the plants in the company I work for uses a TDC 3000 DCS so I emailed one of the instrument techs there. I will paste our conversation here. I don't know if it will help. -Curtis
Curtis
To the best of my knowledge the disks are formatted IBM Compatible (I have
never had a problem deleting the files and reusing the disks). The files
themselves are in a different format. I have heard rumor that the actual
file system is Unix based. Being a programmer myself I could probably build
a translator if the need arose, however I have some software on my PC that
does the translating already so I have not felt the need. If you want more
info on how they would be converted from Honeywellese to PC, you would need
to tell me which type of file you are trying to translate.
Let me know, as the project sounds interesting.
Curtis
Just aquired one of those Honeywell disks. It is not PC compatible. The
file system is an "Unknown PC Format, 16 bit FAT" So maybe the Unix rumour
is true. Hope that helps.
Need help in reducing the noise in a dc muffin fan
by
I recently installed a PWM DC Motor Speed Control Module to vary the speed of a dc muffin fan. My problem is the fan motor gets very noisy at slow speeds. Is this normal or is there something that can be done?
Thank You for any help on this.
Arden
I sent you some stuff I wrote in a word document because of some pictures. If you don't get it let me know and I'll paste it here without the pictures.
Hello Sir,
I am a student from INDIA. I have to develop a project on Autotuning PID controller using ADC & DAC. Please help me in it. If possible please help me by sending me the interfacing diagram and algorithm of pid controller if possible.
i will be very gratefull to u for it.
thanking you
Saheel Shah
Hello Sir
Im am a student from Viet Nam. Now, I have a project for controling DC motor using microcontroler, AVR 9Ss8535.please send to me PID algorithm to control DC motor at nguyenlehoastc@yahoo.com .
Thanks a lot!
Now i am doing a new project which using the PID controller to control the temperature and the rate of fuel in to the boiler system . i need the PID algorithm urgent now. can u send to me also with the soft code. the software which i am using is VHDL.
thank you
I am looking for some Assemble source code or any source code on a PID loop. I am interested in seeing the way it is solved software wise. I try to control burnning oven. That control the temperature input from thermocouple and control output to valve controller. please e-mail me.
I need a algoritham for pid regulator in turbo pascal .
If is possible send to me something alike algoritham or code in pascal , and after i will recognize it .
This is something that I wrote up a while ago. I hope it helps. It's pasted here from Microsoft Word so it doesn't look too great
-Curtis
CONTROLLER ACTION
There are two possible output changes a controller can make when it detects an error. It can increase the output or it can decrease the output. This controller response due to error it what determines the controller action. The controller can be direct acting or reverse acting.
In a direct acting controller, the error is determined by subtracting the setpoint from the measured variable. This is represented in the equation: e = b – r
Looking closely at this equation, it is obvious that the output of the controller will follow the same direction as the measured variable. If the measured variable increases the error will increase, and if the measured variable decreases the error will decrease. If the measured variable is above the setpoint, the error will be positive and if the measured variable is below the setpoint the error will be negative.
Example: A direct acting level controller has a setpoint of 65% vessel level. The vessel level (measured variable) is at 57%. What is the controller error?
Error = Measured Variable – Setpoint
= b – r
= 57% – 65%
= -8%
In a reverse acting controller, the error is determined by subtracting the measured variable from the setpoint. This is represented by the equation: e = r – b
Looking closely at this equation, it is obvious that the output of the controller will follow the same direction as the setpoint. If the setpoint increases the error will increase, and the if setpoint decreases the error will decrease. If the setpoint is above the measured variable the error will be positive and if the setpoint is below the measured variable the error will be negative.
Example: A reverse acting level controller has a setpoint of 65% vessel level. The vessel level (measured variable) is at 57%. What is the controller error?
Error = Setpoint – Measured Variable
= r – b
= 65% – 57%
= 8%
Although this is a fairly simple concept, it is important to completely understand it, as some “stupid mistakes” can be made just be getting the sign of the error signal wrong. Some people consider error to always be e = b – r and when the controller is reverse acting they put a negative sign in front of the error or using a negative gain. This works just fine, but I find you have to be careful when the PID equation includes all the modes and the equation gets kind of long. Personally I don’t like this method and in all example will determine the action of the controller, then the error by the appropriate equation.
I am evaluating process control related software on the market. I found one, called PlantDoctor. Below are four statements about this software. But I am not quite sure whether or not it has control loop tuning capability. I don't want to ask the ower of this software. Would you please tell me whether or not this PlantDoctor has control loop tuning capability? I want to get as many answers as possible.
Dan
-------------------------
Statement #1: With PlantDoctor you can quickly analyze hundreds of loops simultaneously and find the most troublesome loops. Once isolated, you can either use PlantDoctor's tuning suggestions, or other loop tuning methods and tools to adjust the tuning constants.
Statement #2: Non-Intrusive Operation: Traditional controller tuning frequently involves a trial and error approach. Unfortunately, by its very nature, this procedure disrupts the process and a lot of product may be lost due to poor quality control. PlantDoctor is non-intrusive as it does not disturb the running process. That is, PlantDoctor takes historical measurements and suggests an action item. The result is a saving of both time and money because the improvement is correct the first time, and no product is lost due to poor quality control.
Statement #3: A pulp mill retained us to audit and improve the performance of the regulatory loops in and around its Kamyr digester. We assessed the performance of a large number of loops to prioritize opportunities for improvement based on the loops' influence on digester controllability. Targeted loops, the ones with the worst performance index and therefore
the highest potential for improvement, were examined in detail and re-tuned following the recommendations from PlantDoctor. Since re-tuning, there has been a reduction of over 40% in the standard deviation of the
digester pressure. We further showed the performance indicators of 20 important loops, in and around a two-vessel Kamyr digeter, before and after tuning using PlantDoctor.
Statement #4: One user's experience about PlantDoctor: "By using PlantDoctor, variation in pressure control was cut in half. That really surprised us. Getting pressure control variation down was important. We had previously tried tuning the controllers to bring variation down but we just couldn't get there. After using PlantDoctor, we now understand the key parameters in digester pressure control and were able to reduce variation significantly."
-------------------------
I am aware that integral action is most commonly viewed as in integrator that integrates the error found by a difference in SP and PV. Therefore when the process is on SP the error is 0 and the integral action is steady. I am also aware that a first order lag can replace the integrator, and the controller output will be fed back through the lag into itself and the time constant of that lag will be equivalent to the integral time. What I don't quite understand is how at steady steady state (controller SP=PV) this action will cease. To me it looks as if it would keep integrating and then cause overshoot and then the error sign would change and it would start all over again the other way. I'm wondering if someone can explain this to me.
The output is fed back through a first order lag and added to the error x gain. If the error is zero (SP=PV) then the error x gain (zero) added to the output is the output. The output will remain constant as long as there is no error.
Hi..do you know where can ý have information about development of process control (classical control,advanced control,digital control,artificial intelligence and their advantages and disadvantages,their errors in control,why one is invented,a view to process control)
why have i got a 10 amp current flowing in the neutral conductor of a 3 phase generator when supplying a purely resistive and ballanced load. the line current is 30 amps per phase with a 10 amp neutral current.
i thought that neutral current will flow when there is an unballanced load. i have tryed using another loadbank but the results were identical. any help would be greatly appreciated. thanks.
For those of you who are looking for some type of source code for a PID loop for 8051 or AVR, go to http://www.mcselec.com and click on the Application Notes button. Under AVR Application notes look for AN109.
I want to develop a programme to communicate to AB 1756 ENET card over Ethernet. I think I can do it just like communicating to any device over Ethernet. Then how to read and write data from it? For that do I need to implement CIP protocol OR do I need to communicate as per DF1 protocol? Does this AB 1756 ENET has got a CIP Server embedded in it? Can anybody give some relevant information on this?
Hi Everybody
I want to implement a multivariable PID controller for my final year project!However I know only little about it.Where can I get knownledge from the web???
My project is to move a magnetic pendulum to a setpoint by three electromagnetic actuators placed at three vertices of triangle.The pendulum is suspended by an inelastic string.
I am looking for on-line Kappa number sensor, Brigness and shade sensor. If any one can give some information to lead me to suppliers of such sensors, it will be of great help. This is for automating process in a paper mill. Thanks in advance.
I saw your posted questions about you are looking for an on-line analyzer for Kappa/Brightness etc.
I'm not so sure you found some already or not!, if you still looking for it, you can find it from www.metsoautomation.com or send your question to myself. I will try to assist you on this matter as much as possible.
With regards,
Ravinder Sachdev
(National Sales Manager)
Metso Automation (Thailand)
I am looking for on-line Kappa number sensor, Brigness and shade sensor. If any one can give some information to lead me to suppliers of such sensors, it will be of great help. This is for automating process in a paper mill. Thanks in advance.
Subject: Scada software from the UK authors in Manchester / Midlands / Southampton...... would you be interested in playing with or working with our scada software ?
Dear All,
I have been trawling around on the net and encountered your site...
would you be interested in trying or playing with our scada software
I see from your site that you are involved with scada systems and or DAS
our web address is www.modular-scada.co.uk
we are a UK company and have engineers in Manchester, Birmingham & Southampton.
If you have a product with communication facilities and it is not supported.. we can write a support/communications handler within a few days.
We are also looking for agents , resellers and system integrators to help promote exposure of our products.
The site is fairly new and under construction.so please bear with us
have a look and your comments are welcome
drop me an email if the product is of interest.
Update / product developments since our last release May2001
We have just been commissioned by Shinko Japan to write an interface to their Multi-loop controller.
We now support IMO temp controllers..(Shinko)
We have opc driver for the IDAC's& Adams
OPC Client and Server inbuilt .
Microsoft ADO Support to allow SQL database interaction+ODBC
Out of box solutions using idacs for datalogging and control
IMO Plc comms
Full protocol and support for main line Omron PLC's
New Mitsubishi FX1N and Q series PLC high speed comms.
Some enhanced features added to trending and replay functions.
WEB server and browser support for distributed data and enterprise systems
& of course it also supports Allen Bradley on DF1, Modbus, Omron, Toshiba etc...
How do we differentiate between the noise(random varible) and actual process variation. What I understand from the the literature that I have read so far is that, if the variation is more than 3.0% , filtering should be used. Well they do not specify what is that 3.0%.Is this 3.0% of mean or 3 Sigma? How do we exactly decide that when we need to put a filter.I am referring to a moving average filiter and not first pass filter(one polar). Appreciate your help. Well based on trend observation ,I am pumping the filter values , which I am sure it is not correct.
I'm not sure where the 3% comes from. Whether or not the noise is a problem depends upon the process control situation. For example, I have seen flow loops with much more than 3% noise which worked fine when tuned with low gain and high reset. Boiler drum level loops have a high noise, but when controlled by "3 element" control (feedforward with steam flow, cascade to feedwater flow, feedback trim from level) the noise is not too much of a problem. For other loops that require tight control and will likely be tuned with a high gain 3% may be too much.
The % of noise is based, I assume, on the range of the loop. So if the range of a level is 0 to 50 inches, 3% noise would be a variation of 1.5 inches.
If noise is a problem then there are several methods of filtering available. I have only used a simple first order filter and obtained the results I needed.
Why not replace DCSs with an autotune single loop controllers, with some communication protocol, plus some SCADA including a PC? It is a simple and cheap and safe.
I used to work for one (ABB) of several companies that made both single loop controllers and DCSs. In general, most DCSs have more advanced features on the control algorithm, including features related to auto tuning, than the corresponding single loop controllers. If you have sufficient number of loops and requirements for the operator interface, the DCS is far cheaper. This is particularly true if you count engineering and programming time. If you do not have sufficient number of loops, the single loop controller is the best choice.
If there is batch or sequential control or other control not easliy handled by standard control blocks (pid, etc.) then DCS is the better choice.
There is, of course, a wide gray area where different people will have different opinions.
As Mr.John Shaw has rightly pointed out that, primarily, more number of controllers to be implemented leads to DCS, and also the processing and configuring capability requirements for batch and sequence controls also leads to DCS.
Another important point is time critical and configurable data transfer requirements between controllers. If different loops are executed at different execution cycles, this issue becomes more complex. There is no such requirements and if it is only for regulating controls of less than, say, 50 loops I too would prefer to have Single Loop Controllers with a SCADA package running in a PC.
Could anyone tell me if the Ziegler-Nichols method for autotuning a PID controller has been implemented on the 8051 microcontroller using "C". If so could someone please tell me where to start coding or even send me some code.
Any help would be much appreciated
Tom,
If the action of the propotional controller is to act on the error then each time the output signal varies in response to the error, the error reduces and ultimately a time will come when there will be no error. but this does not happen . always an offset remains. can anybody help with an explanation.
You are looking for 'integral action' and expecting 'Proportional action' to deliver it.
Proportional action generates an output proportional to the error. This corrective action wont be sufficient for nullifying the error at different process loads. Only integral action can nullify the error by continuously resetting the output.
With only proportional action, the output will change only when there is a change in the input or setpoint. As long as the input and setpoint are constant (so the error is constant) the output will not change.
See http://www.jashaw.com/pid/tutorial/pid3.html for more information, or buy the book or simulator advertised on those pages for more information.
With an integral controller, for a finite constant steady-state output the input (i.e. error) must be zero.
With a proportional controller, for a finite constant steady-state output the input (i.e. error) must be finite. The exception to this is where the proportional controller output signal is equal to the controller bias.
This is text copied out of a book I am writing. It is fairly long winded but if you read through it I am confident you will understand proportional control very well.
When stability of the controlled variable is a requirement (and it usually is!) On-Off control will not suffice. A controller that could make small output changes when the error is small and large output changes when the error is large would work much better.
A proportional controller has an output that is proportional to the error signal generated by the controller. The formula for a proportional controller is:
M = Mo + e(kc)
This controller can position the control valve anywhere between 0% and 100%, and it’s control output pattern follows the needs of the process (small changes for small errors and large changes for large errors).
The graph on the left represents a Direct Acting Proportional Controller reacting to a ramp change in error. The slope of the output is the same as the slope of the input, so it has a gain of 1.
The graph on the right represents a Reverse Acting Proportional Controller reacting to a step change in error. The step change of the output is twice what the error is, so this shows there is a gain of 2.
A block diagram of a Proportional Controller is shown below. It contains a Direct/Reverse switch for controller action, a gain setting, and the controller bias.
Example:
An inlet separator in a small gas processing plant separates the hydrocarbon liquids from the gas for further processing. The separator has a Proportional Direct Acting Level Controller with a setpoint of 30%. The controller bias is set at 50% and the gain is set at 2. Normally there is 100 m3/day of liquid entering the separator.
In this normal steady state, the controller equation is:
M = Mo + e(kc)
M = 50% + 0%(2)
M = 50% + 0%
M = 50%
With the control valve open 50%, there is 100 m3/day of liquid flowing out of the separator.
Sometimes the vessel gets “liquid slugs” where the liquid flowrate is 150m3/day. With the valve 50% open, the level will begin to rise and the controller will detect an error and begin to correct for it. When the level rises to 35% the controller equation will be:
e = b – r M = Mo + e(kc)
e = 35% – 30% M = 50% + 5%(2)
e = 5% M = 50% + 10%
M = 60%
When the level rises to 40% the controller equation will be:
e = b – r M = Mo + e(kc)
e = 40% – 30% M = 50% + 10%(2)
e = 10% M = 50% + 20%
M = 70%
At some new level, the valve position will be open enough so that the liquid flowing out of the vessel will be the same as the increased liquid flow that is flowing into the vessel. For this example, at 70% valve opening, the liquid flowing out of the vessel is 150m3/day – The same amount that is flowing in. Now the level will be at steady state. It will not rise anymore because the outflow = inflow, and it will not fall until the flow into the vessel drops off.
But what caused the valve position to change, and why is the level now higher that it was before?
Look again at the proportional equation: M = Mo + (ekc)
The only variable that can cause the controller output to change is the error (gain and bias are normally fixed). This means that for every error there is a corresponding valve position.
If the error is +2%, the valve position will be: 50+(2)(2) = 54%
If the error is –7% the valve position will be: 50+(-7)(2) = 36%
So if there is an increased liquid flow into the vessel, and the valve must be open more to deep the vessel from overflowing, the thing that will cause the valve to be open more is an error caused by the level being above setpoint. The difference between this level and the setpoint is called OFFSET.
In theory the level in the vessel will now stay at 70% until the next process load change. When the liquid slug is over, and the amount of liquid entering the separator begins to decrease, the level will begin to drop. As the level drops, the valve will begin to close at a rate of the gain x error (2 x error). If the liquid flow into the vessel drops back to 100m3/day, the valve will close off to 50% and the level will return to the SP of 30%. If the liquid flow in stays higher than 100m3/day the level will stay above setpoint and the valve will be open at 50% + 2 x error. If the liquid flow rate drops lower than 100m3/day, the level will drop below SP and the valve will be closed 50% - 2 x error.
With Proportional control, the controller can only be set up for one process load. If the process undergoes a load change the controller will not be able to bring the process back to setpoint.
OFFSET
As seen in the example, the Proportional controller suffers from a serious problem called offset. Offset occurs when a process undergoes a load change and the controller must change its output to remedy the consequent error. The only way for the controller to output a new valve position to cause the process to get back to steady state again is to allow an error to be present.
HOW DO WE GET RID OF OFFSET?
Once again, look back at the Proportional Controller equation: M = Mo + (ekc)
There are 3 terms that can be manipulated to change the controller output:
Controller Error ( the error can be manipulated by changing the controller setpoint)
Controller Gain
Controller Bias
In the previous example the error was 10% and the valve was at 70% when the process reached steady state with the load change. If the controller SP was lowered to 20% the valve would first go to 90% open.
e = b – r M = Mo + (ekc)
= 40 – 20 = 50% + 20%(2)
= 20% = 90%
With the valve this far open the level would begin to drop until the valve is at a position where the outflow = inflow again. It was said that this position was 70% open. A +10% error will still cause the valve to be 70% open. With the SP at 20%, a +10% error will cause the PV to be 30%. Now the level is back at the original SP wanted – Until the next load change…
This is not a desirable thing to have to “fool” the process by changing the setpoint when there is a load change to keep the PV at the desired SP.
The Controller Gain is the next term that can be manipulated. If the gain of the level controller was increased this would reduce the amount of error needed to drive the valve to 70% (needed for steady state – inflow = outflow). Assume that the gain (kc) was increased to 5:
M = Mo + (ekc)
70% = 50% + 5e
20% = 5e
4% = e
This shows that the PV would only need to be 34% to drive the valve to 70% and put the process back into steady state. The offset has been reduced but has not been eliminated, and increasing the gain could cause the process to go into oscillation depending on the process gain.
The last term on the controller that could be changed is the bias. If the bias was raised to 60% when the controller output was at 70% with the 10% offset (error), the controller output (and valve position) would go to 80%.
M = Mo + (ekc)
= 60% + 10%(2)
= 60% + 20%
= 80%
The level would begin to drop until the valve output was 70%. The equation can be used again to find out what the error would be:
M = Mo + (ekc)
70% = 60% + e(2)
10% = 2e
5% = e
The error has been reduced to 5%. This means that now the PV is 35% instead of 40%. The offset has not been eliminated, but it has been reduced. There is no reason why the bias cannot be increased again to try to decrease the error further. Unlike the kc value, the bias can be changed to any value and it will now cause oscillation in the process provided it is not changed to quickly. Unlike the setpoint the bias can be changed to any value without any adverse effects on the controller/operator interface.
If the bias was raised 10% once again to 70% with the control output at 70% and a 5% offset the control output and valve position would once again go to 80%.
M = Mo + (ekc)
= 70% + 5%(2)
= 70% + 10%
= 80%
Now the level would begin to drop again until the valve output was 70%. The equation can be used to find out what the error would be.
M = Mo + (ekc)
70% = 70% + e(2)
0% = 2e
0% = e
There is no error! This means by increasing the bias, the offset has been reduced to 0 with no adverse effect on the controller, the process, or the operator/controller interface.
A pneumatic diagram and a block diagram of a pure proportional controller are shown below:
If the bias could be changed at a rate that is proportional to the magnitude of error, increase if the error is positive and decrease if the error was negative, it looks as if it would be the cure for offset.
Looking back at the whole example, it makes perfect sense. 50% is always used in examples for controller bias, which to someone just learning control theory could be more of a hindrance than a help. In reality, the bias can be set at any number. 50% is usually used because control valves are sized to operate in the middle of their range during normal operation so there is less likelihood of them hitting a physical limit during upset. In reality, if the process normally runs with the valve at 65% to hold the PV at SP then the controller can be biased at 65%. Then when the error is 0 the control output and valve position is at 65%. Of course and has just been shown in the last example, it doesn’t matter what the bias is, it is only good for one process load. As soon as there is a load change, there will be some offset.
Hi i am currently a final year student. My problem is to build a test bed for PID control systems on the 8051. I assume that i will have to connect 3 potentiometers to the 8051 these will allow for the adjustment of the p,i and variables, if anyone has any hints or help it would be much appreciated!!!!
Don't go back to analog when you have it in digital
by
Are you trying to build a test bed for PID controllers? If so, you don’t need to create a PID controller with 8051, but you need to simulate process with 8051.
Whether it is 'Process' or 'Controller' to be built with 8051, the parameters with-in it needs frequent adjustment. When you go for a digital (8051 based) system, better to have these parameters too get adjusted digitally. The system should have interface to change it digitally through a keypad or through the interfaces you use for programming 8051.
Here is one from www.cs.ucr.edu/~dalton/8051/i8051benchmarks/pid.c
/*
This file implements a pid controller used to simulator cruise control in a car
The input is a throtle value between 0 - 100 ( read on P1 )
The output is the car's speed ( P2 - P0 )
*/
typedef struct
{
double dState; // Last position input
double iState; // Integrator state
/* double iMax, iMin; Maximum and minimum allowable integrator state */
double iGain; // integral gain
double pGain; // proportional gain
double dGain; // derivative gain
} SPid;
Hi,
it looks long time passed, no answers. I am looking for the same, I need to calculate rms with an 8051 or AVR. Did you progress with your project, could you give me a hand?
Regards,
Laszlo
Excellent Work!!!!
and very useful for to get introduced to the world of PID
My problem is a process with 8-10 minutes dead time almost zero process lag. Due to the limits you set in your applet I am unable to go beyond 20 seconds dead time. Can you provide some help to simulate such a control requirement.
a) You can scale the time scale. i.e. "Pretend" that the time units of the applet is minutes and not seconds. You set up the process time constants at dead time = 10, lag = 2 and process gain = 1. The optimum tuning for this is then controller gain = 0.29 and integral time = 4.73
These settings are just as valid in minutes as in seconds, as long as the time units of the process and controller are the same.
b) My applet unfortunitly also has a low limit of 2 time units, and your process has neglegible lag time. The good news is that with a dead time to lag ratio of 5, the optimum tuning is very similar than for a pure dead time process. If this is not good enough for you, you can contact me at pieters@ambio.co.za and i will help you with a better solution.
Process cahnges in minutes but controller acts in seconds!!!!
by
With process lag =2, dead time = 10 the tuning parameters your applet give is 0.15 and 2.87 (not o.29 and 4.73 as you have indicated). A PID controller with these tuning parameters will miserably fail to control a process with 10 minutes dead time as it is going to keep on changing its output during the deadtime period and at the end of dead time its starts getting the huge impact of the action it was doing for last 10 minutes.
I have been facing such situation in various projects and I have tried different known methods such as sampled PID, Smith predictor and finally I developed a new algorith to control it. If you can apply a simple PID to control such a process I would be interested to know the details of it.
a) I did make a mistake, when i ran it again, i got the same answer than you.
Keep in mind that if the time units of the process is given in minutes, the time units of the controller is also minutes and NOT seconds.
I am not claiming that this controller is the best you'll get, but what i do claim is that, provided that the process parameters do not change and there are not significant other disturbances, a PID controller with tuning constants of: gain = 0.15 and integral time constant = 2.87 minutes, will do a reasonable job of controlling a pure 10 minutes dead time process with a process gain of 1.
b) For a process with a high dead time to lag ratio (like yours), any model based control algorithm can give significant better performance than a PID controller, in terms of stability, tracking and robustness. Common examples of model based algorithms are the Smith-predictor (dating from the 1950's), Internal Model Control (IMC) and Model Predictive Control (MPC). I have had good real plant success in both Smith-predictor and MPC.
There are undoubtedly other algorithms that can also beat a PID controller.
Do you mind sharing more information on your algorithm? Maybe others can also learn from your experience.
We market a model-based adaptive predictive controller that works very well with dead-time dominant processes, as well as processes exhibiting integrating characteristics, such as level control. More detailed information can be found on our website. I'd appreciate any feedback.
What kind of process has 8 minutes of dead time? I once worked with a plastic extruder with about 5 minutes DT.
About the only thing that seems to work is either a plain PI with a gain of much less than one and very low reset rate, or a Smith predictor.
The Smith predictor will allow the use of a higher gain, and therefore better disturbance rejection. However, it won't overcome the dead time as far as setpoint response and rejection of some types of disturbances.
I think that the only thing that will really help is a crystal ball.
I have faced the problem of control of process with dead-time of 8 minutes or more. One is in the intermediate bunker level control of a sintering plant(in a steel plant) and another one for shade control system for a stock preparation in a paper mill. Both processes were controlled with a dedicated algorithm developed for it which is not a model based one.
Can you please give some idea on Crystall bal. I am new to it.
I was just joking about the use of a crystal ball. The only really effective way to solve the dead time problme would require the ability to predict the future, which of course we cannot do.
I have never work on controls for a steel mill. I have worked with control of color and other variables in stock prep for paper mills. The dead time is a problem. It requires that setpoints be changed slowly, with low gains.
Dear All
I have some problem about Feed-Forward control, Help me please.
1. Why pure Feed-Forward Control is "self destructive" after oprerate for long time?
2. Can I use pure Feed-Forward control in practice?
2) You can rarely use pure feed-forward in practice because, in order to keep the controlled variable at its setpoint, you would have to have perfect measurements of every variable that could affect the controlled variable (including, in some cases, effect of weather such as cold rain on an outside pipe or vessel). In a few rare cases when it is not necessary to hold the controlled variable at its setpoint and when feedback controlled variable is not measureable pure feed forward may be used. But this is rare.
1) I am not sure what you mean by "self destructive". But consider the case of a tank with flow in, which is measured, and flow out, which is controlled to be equal to the flow in. We start with the level at 50%. If the mesurement of the flow in was even slightly incorrect, eventually the time would come when the tank would become empty.
For this reason feedback is always used when feedforward is used. In most cases the result of the PID controller is added to a caculated feed forward signal.
I am looking for any papers,publishes or chapter of any books about "PID controller applied to MIMO processes"
I only want to study about fundamental of this topic
and see any Examples of it.
You can go to the ISA bookstore, http://www.isa.org/isastore/isastore.cfm
and search on multivariable. There are a number of papers and a book excerpt that can be downloaded for reasonable prices.
A book from ISA that is, I believe, out of print but may still be available from www.Amazon.com or Barnes & Noble.com is F. Greg Shinskey, Control of Multivariable Processes.
Can someone recommend a starting point for me for settings in a PID loop (SLC500) for air flow control? I'm controlling Dissolved Oxygen (DO) with oversized butterfly valves. The DO is slow to respond to airflow changes, but once it starts to respond, it changes quickly. Any help would be appreciated.
Your problem can be sorted out with PID controller with dervative action enabled and a limit ranging at the output side. With the limited information available through your message, this is what I can suggest. If your problem is more complex, please send me mre information on your proces response, preferably an open loop response graph will be ideal.
I have implemented delay compensator logics along with PID to take care such problems in Sintering Machine control for Steel Plants and Color flow control in stock preparation of paper mills. Do communicate with me if your problem is more complex than what I understand.
I am attempting to design a simple PID controller to manage humidity and temperature for an imaginary industrial environment. I hope to implement it using a 68HC11 embedded application board and use MATLAB to model the result of changes in the variables. Can anyone help me out with the PID algorithms for this or even some C code?
I am starting from scratch to design a PID controller for a central heating system and hope to simulate it on the MC68HC11 and hope to then develop a fuzzy controller.....can anyone recommend where I might find good reading on design spec algorithms etc...and maybe some c code......... thanks
I am in a process to complete an adaptive temperature controller may be more usefull for home heating system.What heating system are you reffering ?
Wainting for your reply
Stelian
Matei, I am going to use a hydronic heating system where the controller will drive a stepper or servo motor which will open a valve to allow more or less heat
Before I 'cheated' and upgraded our radiant floor heat using a commercially available BTU-injection mixing control (which works fantastically well, thank you!), I'd sketched out a pump-based (vs. valve-based) mixing control -- using a PIC processor and stepper- or servo-motor driven positive-displacement pump. In a system with primary (boiler-temp) and secondary (floor-temp) loops, each with their own circulators, all you need to keep track of is the temperature of the water in each loop, using that to decide how much hot water to move from the primary loop to the secondary loop. The control can get really smart by monitoring outdoor air temp, using that info to anticipate how many more BTUs it needs to inject into the floor to keep up with heat loss as the outdoor temperature falls. The commercial controller does just that... using three sensors.
How a PID used in a micro-controller based temperature regulator system
by
I am student who is designing a micro-controller based temperature regulator system. This kind of a system must regulate temperature in a tank, and provide a 7-segment LED display. All I like to know is How a PID is used for this design.
Re: How a PID used in a micro-controller based temperature regulator system
by
I wat to designing a micro controller based PID control
temperature system and provide a 7 segment LED display, All I like to know is How PID used for this design and what ia algorithm of PID control for this design
I am trying out to implement(small working lab model) the application for suspension system in automobiles using PID controller,i am a beginner and need some inputs from the community such as
1)How to start
2)How to map the PWM signal from the controller to the actual actuator force used for control
3)What are the steps to be followed.
It depends upon what the old methods are. If you are converting between relays and a PLC, the PLC is usually programmed in "Relay Ladder Logic", similar to the electrical diagrams for the relay wiring.
Need help with auto tuning PID for microcontroller
by
I am looking for a PID algorythm written in C which can provide the auto tuning of the P, I, & D constants. This is to be used for temperature control applications. I am not against paying for the code but I must stress that it has to WORK! It will be implimented in a small 8 bit microcontroller all I am looking for is the PID & auto tune functions. The SV, PV, and output are already scaled to 0 - 100. Any takers out there? Any thoughts or ideas? All advice is welcomed...
It's very simple and easy to be written in C. You can find the algorithm in books and sites on the internet. A good reference book is "PID Controllers: Theory, Design, and Tuning". Have fun.
respected sir
i want to design a 16 bit microcontroller optimized for pid application using vhdl language,
can you suggest me what are the controling parameters i should take . which approach i should use.
thanku sir
reply me soon
I would like to know the basics on
selection of control valve characteristics
with respect to the other system
components.
Is there any general guidelines
on this ?
Can We say with the help of advancement in
electronic controllers, that any characteristic
requriements can be compensated using
appropriate tuning methods of controllers.
Valve charecteristics selection depends on the nature controllability you need on the flow also the safety considerations. Though this can be compensated by controller tuning/with look up table at the o/p of PID, it makes the loop more complex and difficult to tune.
Hi,
I'm using a DC geared motor coupled with a optical encoder with 500cpr.The motor is connected to a motor amplifer.while the optical encoder is connected to a data aquisition card.
I would like use simulink real time workshop to mointor the optical encoder output and to control the speed of the motor via a feed back contol loop.
1.can anyone suggest how to model this problem in simulink block diagram?
2.The next model i would like achive control using PID.Please advice too.
Looking for a good source of MOD300 parts such as B controllers, multibus controllers, burr/brown IO cards, etc. (but not things like orginal mice/trackballs, operator keyboards & such). Would like to avoid the high prices from ABB. As I probably won't check this site, please email me & don't post a reply.
What kind " experimental methods " that can be applied for tuning PID parameter for speed control of DC Motor??.
How about Ziegler - Nichols Method ??.
Saturation properties of a PID control algorithm are explained in my tutorial on my web site. See http://www.jashaw.com/pid/tutorial/pid3.html
(About the middle of the page) for information about how the integral function (which causes saturation) works with one common implementation of the Integral feature. Saturation is explained at: http://www.jashaw.com/pid/tutorial/pid4.html (near the bottom of the page).
In what I call the "integrated velocity form" (common among digital implementations), if the output is at its upper or lower limit (that's when it is "saturated") a change in the measurement will immediately pull the output away from the limit.
In the algorithm shown on page 3 (and on the next to the last section of page 4) the output will not pull away from the limit until the measurement crosses the setpoint. The limits are shown in the block diagrams on both pages as a box with a UL and LL in it (not above upper limit, not below lower limit).
This is somewhat of an over simplification. If you have any more questions, or if I got you totally confused, please let me know.
In my application I have to control the temperature of a furnace (up to 1200°C).
I used a simple PID algorithm (ideal PID) with anti integrator windup. The algorithm works good, but when changing SP (ramp)there is a problem at the corner. PV is always too high. It seems that the controller is too slow.
Example:
Increasing SP from 400°C to 800°C with small steps (1°/sec)and stay at 800°C
--> PV follows SP; but at the corner (800°C) PV doesn't stop. PV grows up to 810°C.
When changing SP in 1 step from 400°C to 800°C the controller works correct!
What's wrong in my algorithm?
Is there a difference in making 1 big step or more small steps?
That seems strange. Normally overshoot is reduced or eliminated when a setpoint is ramped rather than changed in one step change. I would have to know more about the controller algorithm details and tuning to even guess at a reason for this behavior.
There are three types of PID control equations: type A, type B, and type C. You are using type A. Both type A and B, especially type A, will typically cause an overshoot when setpoint changes, even for small step in SP. For more info please take a look at
However, in your case you made a big step change in SP. That will take a longer time for the temperature to rise. Before the temperature reach the setpoint, there is already no SP change for a while. When there is no setpoint changes, your type A will be the same with type C, and hence there is no overshoot.
Remember, no matter how large or small the SP change is, type C PID will not cause any overshoot if it is well tuned.
Many thanks for this important information! I changed the algorithm (type C) and it seems to work.
But one last question: Integrator windup? In my algorithm I only calculate the new integrator-term when the controller output is not in saturation! I think when using the new algorithm I get a problem with that.
respected sir
i want to design a 16 bit microcontroller optimized for pid application using vhdl language,
can you suggest me what are the controling parameters i should take . which approach i should use.
thanku sir
reply me soon
First of all I have to thank you for taking the time to read and respond to our questions. I m a student in University of Coimbra - Portugal and I have quite a few questions that I need an answer. I am new at this subject and barely a begginer. I ask that you, once again, take the time to help one more student...
1. Caracterize process variable. What are the different methods of transmission of signal representative of analogic variables and where/when can/should one use them.
2. Consider an elastomer in a Wheatstone bridge, for measuring pressure: draw the analogic interface knowing that the dinamic interval of the data aquisition is 0-10V.
2b) The signal of the bridge is transmitted im current in the 4-20mA interval - draw the new analogic interface for this new situation and exlain the differences.
3. Comment on the use os transducers and intelligent actuator in distributed systems in instrumentation application - also explain the part they play in modern perspective of virtual instrumentaion.
4. In what circumstances should one prefer the use of either one of the decision criteria of proporcioanl control PID and PWM
The free demo of PID controller tuning can be downloaded from the following ftp site:
ftp.geocities.com
User ID: pidtuning
Password: public
File to download: BTdemo.zip (some users may also need the file DLL.zip).
With this demo you can see why the type C PID equation is better than type A and type B, as I pointed out earlier.
Major improvements:
(1) Now you can "see" on the BESTune ver 4.4 GUI that how much dynamics is in your CO and PV data file co_pv.txt. This tells you whether your CO and PV data is usable or not for tuning purpose. If your CO_PV.txt contains enough dynamics, you should be confident with your tuning results.
(2) A small bug is removed from previous version and better performance can be expected.
Questions welcome ---> bestune@163.net
--
Regards,
Dan Liu, PhD
BESTune.Com
#108, 10615-111 Street
Edmonton, Alberta
Canada T5H 3G1
Phone: +1-780-424-5074
WWW: http://bestune.50megs.com
Email: bestune@163.net
hi everyone! does anyone have a VB source code for implementing PID controller...i've found only in C++ code...I'm very gratefull if someone could give it to me...thanks!!!
hi there mate. i bumped into your request regarding the PID source code in Visual Basic. and actually i'm looking for it as well.would you please forward me the PID source code if you have got it.thankz!
Enloy that users are wanting PID source-code. I am looking for some good documented sources for some time now! Please forward PID source code if you found som
any source where i could find some information on an effecient methode of being able to change between different controlers (more than 2) with minimum distortion in behaviour.
If you mean switching the output to the valve from one controller to another, there is one very important consideration:
The output of the controller being switch to must be the same as the output of the controller being switched away from. How this is done depends upon the features of the particular controller. Most manufacturers provide some form of tracking where the output of controllers not in use are made equal to the output of the controller in use. You will have to refer to the instructions of the controller.
I do not know of any information in the web about this.