Jump to content

Talk:Proportional–integral–derivative controller

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Engelec (talk | contribs) at 20:04, 12 February 2009 (Excel spreedsheet: fix link). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
WikiProject iconSystems: Control theory B‑class High‑importance
WikiProject iconThis article is within the scope of WikiProject Systems, which collaborates on articles related to systems and systems science.
BThis article has been rated as B-class on Wikipedia's content assessment scale.
HighThis article has been rated as High-importance on the project's importance scale.
Taskforce icon
This article is within the field of Control theory.

Proportional control

Proportional - To handle the present, the error is multiplied by a (negative) constant P (for "proportional"), and added to (subtracting error from) the controlled quantity. P is only valid in the band over which a controller's output is proportional to the error of the system. For example, for a heater, a controller with a proportional band of 10 °C and a setpoint of 20 °C would have an output of 100% at 10 °C, 50% at 15 °C and 10% at 19 °C. Note that when the error is zero, a proportional controller's output is zero


This means that when the process variable maches the set point there is no out put from the controller i want to know that if gives 0% out put at when the process variable achieve the set pont position then it will make a rapid change after some time and again begain to decrease the temprature acording to the process lag

And for pressure loop is it same the proportional band is 100 psi and the set point is 200psi what u think is it possible that when 200 psi achieved it closes the valve 100% then wht will be the correct table for it


   INPUT(PSI)              OUTPUT(%)
      200                     0%
      150                    50%
      100                   100%

plese clear my concept about this confusion.And its only about proportional controler. I am at initial state learning process your guidence will be very knowledgeful for me.you can also mail me at my email address

Thanks REHAN RIAZ rehanriaz.tech@gmail.com


This page is borked. I tried cleaning it up down to 'Theory', standardizing, etc etc.

Cascade

I couldn't come up with a good example of cascading PID. I was thinking of a waste wood fed steam boiler, with one PID loop internal to the feed auger VFD + steam pressure and a second PID loop of an external loop controller with a sensor on the stack temperature, but then couldn't figure out how you would feed the output of the second controller into the first if it was already a loop with its own input. What is cascading PID?

Input > Controller > Output=Input > Controller > Output??? Why would you want to do that? Someone clarify?

GarrettSocling 21:07, 10 May 2006 (UTC)[reply]

(Answer) In a cascading structure, the controller output of the outer loop is used as the set-point of the inner loop. With y1=plant output used for inner loop, y2=plant output used for outer loop, u1=plant input, r1=set-point of inner loop and r2=set-point of outer loop, the outer controller uses r2-y2 as input (it tries to bring this quantity to 0) and generates u2; the inner controller takes it as set-point r1=u2, using u2-y1 as input (it tries to bring this quantity to 0) and generates u1 which is fed to the plant (for the sake of simplicity, we assume our controllers act on the error between the set-point and the measured plant output). Cascading is used typically when your inner loop is faster than the outer loop: you improve the performance of the inner part by adding a controller to make it more linear, less sensitive to disturbances, etc.; then you design the outer loop by considering the inner loop to be a simple system. For instance, in a car, the inner loop could control the wheel direction with an electrical motor, and the outer loop could control the trajectory of the car on the road. Basically, cascading is a trick to have more parameters to tune and to split the design when a simple PID isn't enough.

Mausy5043 09:17, 18 October 2006 (UTC): The example I like to use is that of a large tank filled with liquid and a jacket used to heat it up. The temperarature of the tank's content is controlled (master loop) by regulating the temperature in the jacket (slave loop).[reply]

The other key application of cascade is to allow an intermediate common path to the secondary loop from several influences besides just the influence captured by the primary loop. This allows several loops to target a common secondary setpoint. An example is steam boiler drum level control being influenced by feedwater flow as well as outlet steam pressure.--Billymac00 16:54, 28 August 2006 (UTC)[reply]

Cascade PID control is used widely in the water industry. A good example is controlling a common inlet channel level that feeds multiple filter vessels. the output of a P or PI loop on the inlet channel level is the setpoint to each filter vessel outlet flow PID controller. As a filter is taken offline (or gets blocked) the resulting change in common filter inlet channel level creates a change in setpoint to the remaining on-line filters thereby creating a self compensating system. --Darran12 11:00, 13 August 2007 (UTC)[reply]

Theory

Mausy5043 09:39, 18 October 2006 (UTC): I don't understand the first two paragraphs of this chapter:[reply]

  The PID loop adds positive corrections, removing error from the process's controllable variable (its input). 
Differing terms are used in the process control industry: The "process variable" is also called the "process's input" or "controller's output." The process's output is also called the "measurement" or "controller's input."

What we're trying to say here is that the PID loop has an input (e.g. from a measurement device) and an output (e.g. to a controlling device such as a valve or motor). Could someone please simplify these two paragraphs?

Undefined Parameters

Oh my. It's great to have a Loop Tuning section, but it remains kind of useless, because none of the parameters are defined -- Tr, Td, even P. Somewhere in the article, those parameters should appear in an equation describing the PID response. Something like action = P * error + Td * d(error)/dt + ... I don't know how it's conventionally stated, so I won't guess. But whoever put in the otherwise good description of the Ziegler-Nichols method would know. Spiel496 18:43, 12 June 2006 (UTC)[reply]

Representative HMI Interface

Here is a sample PID interface screen:

PID Interface

The interface should summarize key parameters such as gains, output clamps, direction of action (direct/reverse), setpoint and input and output values.--Billymac00 18:34, 6 August 2006 (UTC)[reply]

Confusion of names

The names given to different quantities aren't used in a consistent way. For instance, it is said that the measurement is also called process variable, but later there are input process variables, and one can manipulate some other process variable. And the PID loop is sometimes used for the controller itself; actually, the loop includes the process. It's likely that this confusion also exists in the literature (and perhaps even among a few engineers), but the result is that the article is difficult to understand for someone who doesn't know control. I think we should agree on some simple and explicit terms (e.g. measurement for the process output, controlled value for its input, and desired value for the set-point), use them consistently, and have a separate section where we mention all the other terms the reader may find in books and papers. Engelec 10:21, 18 October 2006 (UTC)[reply]

This entire long article needs to be edited by one person to ensure consistency in names, avoid repetition, etc. Encyclops 15:34, 18 October 2006 (UTC)[reply]

PID Loop Example diagram

Thanks, whoever recently added the PID loop example diagram, but I think it may be incorrect. It appears to be some variation on a parallel PID control algorithm; however, every control text I have, plus a recent traning course I went on show all three terms (P,I,D) acting on the error for a parallel PID algorithm. In the given diagram, the P and I terms act on the error, and the D term acts acts on the process variable( / measurement / plant output). While I appreciate that in some circumstances, there may be performance advantages to doing it this way, it doesn't appear to be the norm. Additionally, the first paragraph describes a PID controller acting on '...the rate of change of the error signal...' and not '...the rate of change of the plant output...'. The diagram and text should tell the same story. Many industrial PID controllers don't use the parallel algorithm anyway, they use the non-interacting or interacting algorithm. Dave t uk 16:08, 24 October 2006 (UTC)[reply]

This diagram is not uncommon, but I agree it's unfortunate that it doesn't match the text; there should be at least a caption. Pure parallel algorithms give large control signals when the set-point isn't smooth enough; and filtering the set-point is equivalent to not having a pure parallel algorithm. BTW, which difference do you see between parallel and non-interacting algorithms? There are certainly multiple definitions of both, but with the ones given in the article, one can assume they are the same. Engelec 22:16, 24 October 2006 (UTC)[reply]
For Standard/Non-interacting, I have Kc(e + (1/Ti)*integral(e)dt + Td(de/dt))
For Interacting, I have Kc(e + (1/Ti)*integral(e)dt) * (1 + Td*de/dt)
For Parallel, I have Kc*e + (1/Ti)*integral(e)dt + Td(de/dt)
The difference between the parallel and non-interacting algorithm is that with a non-interacting, the Kc term acts on all 3 terms, with parallel, it is independent. It means that with a parallel algorithm, lowering the Kc alters the output phase angle and could destabilise the system. Changing Kc on a non-interacting algorithm only alters the magnitude, hence it is prefered over parallel in many cases.Dave t uk 15:43, 25 October 2006 (UTC)[reply]
In that case, for the parallel implementation, Ti and Td include gains and don't correspond to times anymore (with dimensional analysis, comparison with the proportional term shows that there is a problem). I'd rather write Kp e + Ki integral e dt + Kd de/dt (or Kc instead of Kp). But this doesn't correspond to the article where non-interacting = parallel. Engelec 16:34, 25 October 2006 (UTC)[reply]
I just uploaded a new diagram I made and replaced the old one. Is this better? -- SilverStar 06:56, 25 October 2006 (UTC)[reply]
Yes, it's very nice and clear. I wouldn't use t' for the integration variable, though, because ' has already different meanings in control (τ would be fine if it's possible). And integration should begin at 0 instead of -inf (or some arbitrary time instant, but it would be needlessly confusing). Engelec 10:21, 25 October 2006 (UTC)[reply]
Thanks. I've uploaded a corrected version. The original integration formula was from the article, so it may need to be corrected as well. SilverStartalk 10:37, 25 October 2006 (UTC)[reply]
That is an improvement, but the three blocks labeled "P", "I" and "D" have no meaning. Normally, a block has some effect on the signal, as with the block labeled "Process". I suggest putting the formulas inside blocks, along with P, I, D labels. Spiel496 06:29, 26 October 2006 (UTC)[reply]
Ok, new image on page. --SilverStartalk 09:27, 26 October 2006 (UTC)[reply]

"following with dimensional analysis"

Is the reasoning that Kd = Dt and follows from dimensional analysis valid (I'm not denying the conclusion, just the stated reasoning)? Dimensional analysis can only show that a certain relationship is possible, it can't actually prove equality. At the very least, dimensional analysis would allow for an arbitrary unitless constant term to be multiplied on either side of the equation.

--SilverStar 07:26, 25 October 2006 (UTC)[reply]

Need to restart (almost) from zero

The article has accumulated so many errors and inaccuracies it becomes impossible to manage (just to enumerate a few: sign confusion (PID coefficients are usually positive), interacting mentionned before being defined, wrong definition for the "interacting form" (the parts connected in series are not the same as those of the parallel version), confusion between unstability and oscillations (a system can be unstable and not oscillate, and a nonlinear system can have stable oscillations), meaningless statements (e.g. filter applied to a complex frequency-domain system), etc.). I'd suggest to have a small, clean article on what PID controllers are in their academic version (parallel, controller input = error = setpoint - process output, controller output = process input) with a minimum amount of redundancy with control theory; maybe a section about why it isn't implemented like that; and a separate article on what's found in the industry, jargon, etc. (i.e. everything a beginner shouldn't read before understanding the basics). Engelec 10:52, 25 October 2006 (UTC)[reply]

I agree on your assessment, though I lean towards pruning and repair. There's too much "another way to look at it..." stuff. And, there should be a law against parentheses in article intros. I'll do what I can to fix stuff, but if someone can pull off a major rewrite, more power to him. The part where I feel most confident contributing is the Loop Tuning, which is also a mess, referring to variables mentioned nowhere else. Spiel496 16:35, 26 October 2006 (UTC)[reply]

I'd missed this one: the discrete-time version is wrong. Of course, you can implement a PID with three independent coeffients in discrete time (that's how they're done in digital devices like microcontrollers or FPGA). Equation becomes, when using q as the forward-shift operator (see z transform), u(k) for controller output and e(k) for error: u(k) (q-1) = Kp e(k) + Kd (q-1)/q e(k) or u(k)/e(k) = Kp / (q-1) + Kd / q; in other words, a kind of PI controller where Kp is the integral gain and Kd the proportional gain. To get the correct equation, start with u(k)/e(k) = Kp + Ki q/(q-1) + Kd (q-1)/q; then u(k) q (q-1) = (Kp q (q-1) + Ki q^2 + Kd (q-1)^2) e(k), and finally, with the article notations,

Engelec 00:20, 27 October 2006 (UTC)[reply]

Changed. Engelec 10:20, 7 February 2007 (UTC)[reply]

Is it worth the trouble to fix changes by 129.241.206.68 ("by adding a integration of the average error to the process input" in the I term description)? The previous version wasn't better... Eventually, I'll probably remove all that's wrong, reducing significantly the size of the article. Engelec 15:14, 2 February 2007 (UTC)[reply]

I like what Engelec has been doing. Along the same lines as removing the "proportional band" stuff, I suggest we choose just one form for the math. Specifically, do we want

---or---

In practice, I prefer the second form, but with and replaced with and , respectively. However, for an encyclopedia article, the first form is probably a less confusing way to introduce the subject. And it matches the figure. Spiel496 04:42, 10 February 2007 (UTC)[reply]

Okay, so Crinoid has made a lot of changes, mostly good. Unfortunately, we now have three forms of the main equation in rapid succession, none of which is strictly consistent with the top figure or the section on tuning: Kp+Ti+Td vs. Kp(1+Ti+Td) vs K+Ki+Kd. The display of these different forms is not interesting. Let's just pick one form. I vote for Kp(1+Ti+Td). Are there any objections to this form? It would mean fixing the figure. Spiel496 03:34, 16 February 2007 (UTC)[reply]

Feedback controller

Feedback controller redirects to this page, obviously PID is not the only feedback compensator ZyMOS

I've changed it to control theory. Engelec 01:13, 7 February 2007 (UTC)[reply]

"Traditional" or not

I consider myself an expert in this subject :) So I did a lot of changes to the article. Here are some thoughts.

A lot of confusion in this article arises from the PID's long history. The first implementations were interacting and did not permit the setting of individual gains.

The purely parallel model with separate tunable gains for each part is mostly a mathematical model and can't really be used except in simulators and control engineering education. (Real implementations are digital anyway and most systems include premade PID blocks.)

That's why I think this article should mostly describe the "traditional" model and mathematics that include terms like integral TIME. One interesting fact about using integral TIME is that the integrator element's contribution cannot be made zero with a finite value of Ti. This is a feature of most industrial PID's.

Another interesting fact is that not all non-interacting controllers can be realized in the interacting form. The limiting factor is that Ti must be greater than or equal to 4*Td. If that is satisfied, the parameters can be transformed between the two forms.

This has implications when one tunes a PID with some method and has to input it to a controller that uses the interacting form. The parameters are not even close to being the same value when moving to the other implementation.

Some comments about the interacting/non-interacting (I'll just use I and NI :) forms are also confused. The difference is that the I form is

G = K * ( 1 + Integrator / Ti ) * ( 1+ Derivator * Td )

This is in effect a PD controller(with P gain 1) in series with a (parallel) PI controller.

The parameters of I and NI forms are not interchangeable!

Oh, the point? :-) One MUST know what is the implementation one is working on. The different forms should be properly introduced if they are mentioned at all.

Perhaps another page would be a solution, like... "implementations and extensions to the PID algorithm"? ;)

Crinoid 08:02, 16 February 2007 (UTC)[reply]

(Tip of the day: use the Show Preview button.) I don't think a separate page on "implementations and extensions" would really stand on its own. That's what sections are for. I'd like to see one form used for most of the article. Then in an implementation section we could have the interacting form and digital implementations. Spiel496 14:44, 16 February 2007 (UTC)[reply]
Okay Crinoid, if you're an expert, we welcome your ideas on how to fix the article. But as I said earlier, your formulas are inconsistent with other parts of the article. I liked where you were going, but unless you have a plan to finish what you started, I think it's time to revert your changes so the article is at least self-consistent. Spiel496 06:56, 24 February 2007 (UTC)[reply]

ZN tuning

Should the tuning parts be omitted from this article as well? I think it should be shortened considerably. Ziegler-Nichols tuning rules are given way too much emphasis. The ZN rules are anyway designed for rejection of load disturbances and if used for tuning for step responses, they give too much overshoot (too much sensitivity). Better methods exist.

If PID control is sufficient for the system, even a poorly tuned PID (a stable loop of course) gives results. I remember hearing an estimate that 70% of PID controllers in the industry operate on default settings, and probably the rest just have the "auto-tune" function run once :-)

Crinoid 08:17, 16 February 2007 (UTC)[reply]

I think a tuning section is appropriate -- a less rambling one, anyway. With regards to the Ziegler-Nichols method, I don't know what you mean by "way too much emphasis". It's described using three sentences and a 4x4 table. Spiel496 14:52, 16 February 2007 (UTC)[reply]

Proportional band and I control

Boring Friday at work, it seems ;)

About the proportional band, to clarify. It's known that a P controller gives zero output if the error is zero. Thus, no process variable value that requires non-zero input can be reached.

But, if a P controller is used with a bias value (output = K*e + bias), there is one process variable value that can be reached exactly, and that is of course the output corresponding to the bias input.

This is a very powerful control method - first determine the input value that gives the desired output. Then on top of this, implement a P controller with the proportional band set to some reasonable value around the desired output. (Adjusting the bias value is also called reset action.)

The clever thing about PI control is that the integrator part in effect keeps re-setting the bias value for the P controller! So all (reachable) output values can be exactly reached.

Crinoid 08:31, 16 February 2007 (UTC)[reply]

Parameter nomenclature

"A controller setting of 100% proportional band means that a 100% change of the error signal (setpoint – process variable) will result in 100% change of the output" is another way to say that the proportional term is proportional. The rate "measured in proportional band/minute" was certainly domain-specific. Unless someone older than me can provide better explanations, I'd suggest to remove this section. Engelec 22:43, 21 February 2007 (UTC)[reply]

I second the motion. I can't make any sense out of that prose. Spiel496 04:42, 22 February 2007 (UTC)[reply]

Ok, done. Engelec 15:14, 26 February 2007 (UTC)[reply]

Example System

I was thinking in the "Theory" section (would "PID formula" be better name?) the P, I, and D terms could be better described in terms of a tangible example. A good example would be an automobile cruise control, because many people are familiar with both human- and PID-control of car speed. The P term could be described, along with the limitations of P-only controller. Then the motivation for the I term is to remove steady-state error. Then the D term kind of mimics what a person does -- back off on the accelerator if you are rapidly approaching the target speed. Spiel496 06:46, 24 February 2007 (UTC)[reply]


Don't be mad...

So I have had the last three night shifts to work on the intro to this article. While I am not an expert I am a process operator so I have some experience. I attempted to explain the basic theory and define PID so that someone new to the concept could at least understand it. I ran it by several of my coworkers and they felt my edit was much easier to comprehend than what existed prior. That being said, no hard feelings if it needs to be reverted or so forth. I am going to leave the math and loop tuning to the experts. MDSNYDER 13:51, 5 May 2007 (UTC)[reply]

Major overhaul

Expert? I've got a PhD Chemical Engineering and 4 years in controller design and implementation, but please judge by the work, not the credentials. I've made minor edits to the intro, major edits to "Controller Basics" and merged the next two (redundant) sections.

With respect to nomenclature and alternative PID forms. Fact is, there is so much variety in common use. It sucks, but there it is. Myself and another guy in the office use different nomenclature. That said, I don't think it is helpful to have all of the alternatives inline in the text because it's just too confusing. I've created a new section "Alternative nomenclature and PID structures" that will contain all of that, keeping the main article consistent and clean. Only got half way so far: we've all got to eat :)

Please post feedback. Even positive feedback is appreciated ;). I'd like to know if I'm on the right track with this. Dhatfield 11:43, 27 July 2007 (UTC)[reply]


I like what you've done. I would just like to reiterate my opinion that we should choose between
---or---
I have a problem with the current form:
because it would mean that and don't necessarily have units of time. (For example, if e is speed error and u is accelerator pedal position). Most descriptions of the Ziegler-Nichols tuning method assume the second form, and it screws people up if they try to use it on a system that is expressed in the third way. Spiel496 12:37, 27 July 2007 (UTC)[reply]
Agreed. I happen to prefer the first form because it looks neat and clean.Dhatfield 15:34, 27 July 2007 (UTC)[reply]
Corrected the form of the equations as suggested, added a note to alternative nomenclature that the standard form is indeed the standard. Still to do in future: Clean up description of integral and derivative actions. Remove the section on implementation? (is it relevant beyond historical interest?), or maybe move it into a section called 'history'. Add nomenclature and/or glossary. This field is rife with MV = OP = CV, PV = MV (yes, it's amazing, but true). At least SP is just SP. Add something about error-squared PID and alternatives to PID (fuzzy, MPC) and when and where they are more applicable (maybe). Didn't you know I was only doing all this cleanup so that I could clutter the article up again? :)
I really like the tuning section, but I feel that we could create much better impact with some graphs (eg. stable vs unstable, slow vs fast). Have to figure out how to upload pngs first. Dhatfield 16:59, 27 July 2007 (UTC)[reply]
Editing / cleanup mostly done. Dhatfield 21:07, 27 July 2007 (UTC)[reply]
Uploading PNGs is pretty easy, the file upload wizard on the left bar will let you do it, but you must choose a wiki compatible licence, (Creative Commons(CC) or Public domain or GNU Free Doc. Lic. (GDFL)) Once uploaded you can add your images in as per Wikipedia Images. Does anyone have a nice image of the inverted pendulum experiment? Thats always good for an impact in control. User A1 02:47, 28 July 2007 (UTC)[reply]
Thanks

I have not seen this implemented and I don't know what it means: "# setpoint weighting Setpoint weighting uses different multipliers for the error depending on which element of the controller it is used in. The error in the integral term must be the true control error to avoid steady-state control errors. This affects the controller's setpoint response. These parameters do not affect the response to load disturbances and measurement noise." Can anyone clarify? For now I'll just leave it alone.

To have smoother responses to setpoint changes, some people (e.g. KJ Åström) suggest to reduce or totally discard the proportional path from setpoint to control signal. Many concepts would become clearer with graphics. Engelec 13:37, 14 August 2007 (UTC)[reply]

I've removed the "{{Expert-portal|Technology|October 2006}}" tag. If you revert (which I will understand completely) please give guidelines for further improvement. Thanks. --Dhatfield 08:43, 30 July 2007 (UTC)[reply]

Limiting the integral history

In the "Alternative Nomenclature..." section there is the statement:

I'll be blunt: I consider this technique to be based on a misunderstanding about what the integral term does. Yes, it does remember that big error from long ago, but the overshoot of the loop since then has canceled out that error. The integral output settles to exactly what it is supposed to be. The infinite memory of the integral term just freaks out some some engineers, and their response is to make modifications like those described in the quote. But the mathematics doesn't point to any benefit. That's my personal belief, anyway. I'd love to excise this section, or present it as "a common misguided technique" but it would be completely original research at this point. Does anyone have a control systems text book that speaks to this? Spiel496 05:42, 15 September 2007 (UTC)[reply]

I agree with you. I think we can say it's misguided, or not mathematically sound, or remove it, or move it to a section about things to be avoided, as long as nobody provides any reference. Also mathematically the integral starts at t = 0 isn't really relevant. Engelec 13:40, 17 September 2007 (UTC)[reply]
I don't have a text-book to hand, but there are clear practical problems with what is called "integral wind-up". In response to Spiel496, 'the overshoot of the loop' is precisely what we try to avoid. If a furnace takes 50 minutes to heat by 1000 deg C (say, from ambient to a fixed setpoint just above 1000 deg C) then when it reaches setpoint, you do not want it to overshoot while something like 0.5 * 50 * 1000 = 25,000 degree-minutes of integral wind-up are "unwound". That, without integral wind-up prevention, would render the system useless in practice. --Nigelj 16:40, 17 September 2007 (UTC)[reply]
ARW (anti-reset windup) is a perfectly valid, documented improvement of the basic PID or PI controller, already mentionned in the article. I object to such as windowing the signal or applying a decay term to the integral value itself: with windowing the signal, I understand that the I term would be proportional to with some constant , and by applying a decay term to the integral value itself that its frequency response would be bounded at null frequency. That's not how ARW works. Engelec 17:12, 17 September 2007 (UTC)[reply]

I agree integral windup is a real problem. It arises when the Process Variable is unable to respond linearly to the Manipulated Variable. In Nigelj's example, when the furnace is way below the 1000 C set point, the heater may be saturated at 100W, while the PID loop is requesting something absurd, like 500kW. It would indeed make sense to prevent the Integral from remembering that frustrating period from its past. Does it make sense then to restrict the "clever modifications of the integral" to the section on windup? Even there I don't see the wisdom in "Limiting the time period over which the integral error is calculated", but the other three techniques sound legit. Spiel496 04:28, 18 September 2007 (UTC)[reply]

Since we all agree, I've been bold and removed it. Engelec 21:23, 18 September 2007 (UTC)[reply]

What use e for error?

Hi, I think that when using e for the error is somewhat not suitable notation as when learning this coupled with being introduced to laplace transforms at uni. I was under the understanding that this was some expenisional term which as when using laplace occurs a lot so for someone learning this topic it would be easier to note this as E or ε. I do see now that this was denoted as error but still confused me.

I know this may seem perdantic but i feel this is a nessessury change to make the topic (which is great by the way) better.

Thanks Andy (Study Chemical Engineering) —Preceding unsigned comment added by 138.38.152.11 (talk) 12:22, 20 November 2007 (UTC)[reply]

Pseudocode

I don't feel that the second block of code in PID_controller#Pseudocode adds much to the article. The content is virtually identical to the first block, except for the absence of the constant dt. Do many others feel this level of implementation detail is warranted? Spiel496 (talk) 22:56, 27 March 2008 (UTC)[reply]

I'm with you. Normally I tend towards being inclusive, but this level of detail is beyond 'encyclopeadic' and doesn't add enough. At the risk of discouraging Shriramrs31, I believe it should be reverted. To Shriramrs31 - please give motivation for the addition of the Z-transform. Dhatfield (talk) 14:31, 2 April 2008 (UTC)[reply]
It didn't add anything but confusion. The first block of code already was based on the Z transform, and much cleaner; I've grouped Ki*dt and Kd/dt to suggest they can be precomputed outside the loop. "Successive subtraction" didn't mean much. The range of values for dt was totally arbitrary. I've removed all that. Engelec (talk) 00:21, 3 April 2008 (UTC)[reply]
Hello guys. I was trying to implement the first pseudo code block in a FPGA. I had to use lots of resources for division and felt that dt calculation can be removed by executing the loop every dt, so that addition and subtraction, functions as integration and division over the period of dt. in FPGAs its easier to use the timer (even in nanoseconds for faster loops), so just by executing the loop on the expiry of timer and by modifying the first pseudo code, i reduced resources and speeded up the whole loop. I felt it might be useful for others, who wants to reduce Floating Point Arithmetic and Logic resources. So, the second pseudo code, differs in reducing the division and implements dt by executing the loop in frequency based on dt. Shriramrs31 (talk) 11:56, 3 April 2008 (UTC)[reply]
You mean you actually imagine that someone doing hardware design would use resources to divide by a constant in a loop? This kind of obvious optimization should not be used to complicate explanatory pseudocode. Dicklyon (talk) 15:12, 3 April 2008 (UTC)[reply]
Well, apparently someone did. Then they learned :) BTW, nice work in other areas of optics, signal processing, etc. Could you maybe help out optical flow - it's pretty dire. Dhatfield (talk) 08:01, 4 April 2008 (UTC)[reply]
I know, I was making fun of that someone. As to optical flow, I'll take a look; I have passing familiarity with that through various friends. Dicklyon (talk) 04:53, 5 April 2008 (UTC)[reply]
Hi, well for my application, i has to choose different sets of PID constants according to varying commands from an outside interface. So i could not assume the value of KP,KI and KD as constants. This is one of my first contributions to wikipedia and I am not very much aware of all this thorough review involved. I am glad about this and happy to learn things from experts like you. I will try my best in further contributions. Thanks a lot guys :) Shriramrs31 (talk) 12:06, 4 April 2008 (UTC)[reply]
Welcome to Wikipedia. Dhatfield (talk) 21:59, 4 April 2008 (UTC)[reply]
But 1/t can still be a constant, can't it? Or just update coefficients when they change, not every time around the loop. Whatever the strategy, we don't need pseudocode for it. Dicklyon (talk) 04:44, 5 April 2008 (UTC)[reply]

Loop Tuning Initial Estimates Table

I am trying to add a table of manual loop tuning initial estimates.
The table is useful information for people practically trying to tune a control valve.
This table is relevant to the manual tuning of control valves and thus appropriately placed.
The source article is a hard copy of a single page document issued by Exxon as a starting point for tuning control valves.
The units presented in the table are in SI.
Proportional - dimensionless (-)
Integral - seconds (s)
Derivative - seconds (s)

Is the reference note all that is required to keep the table in place? How do I reference a single page hard copy? Are there philosophical objections to its inclusion based on the fact it is for practical rather than theoretical application?

I will revert the document to include the table once again. But if undoing the change could you please respond here. —Preceding unsigned comment added by 203.47.182.117 (talk) 06:39, 11 June 2008 (UTC)[reply]

Here are the problems I see with the table:
  • The coefficients "P", "I" and "D" are not defined elsewhere in the article. OK, they are, but not with those names. It's been a chore to make the nomenclature self-consistent, so the understandable reaction by many editors is just to delete new material if it doesn't follow the conventions used in the rest of the article.
  • The formatting is confusing. "Units" appears to be one of the "Loop Type" entries.
  • The systems at Exxon are too narrow an application. For example, a temperature control loop could have a timescale of 10 milliseconds and another might be 2 hours, depending on the size of the system.
69.111.133.13 (talk) 17:47, 11 June 2008 (UTC)[reply]
Counter-Arguments...
Those coefficients are used elsewhere in the article. So it is consistent with labels used elsewhere.
The formatting may be confusing, but I have tried to edit the format numerous times to fit in with what appears to be the standard. Wouldn't a better way be to help fix the formatting than just deleting the table?
I think the systems at Exxon cover a very diverse range of control applications. In fact I would go so far as to suggest there probably isn't another company with as diverse a range of control applications.
The table also provides a starting point for slow and fast temperature controllers to allow for just that wide disparity in differences that you use in your example.
Finally these initial estimates are starting values for manual tuning only not the final values. The other table listed under the "manual tuning" segment would then be used as a guide to modify these values.
BUT given people seem determined not to include this table I will refrain from reintroducing it once again. —Preceding unsigned comment added by 203.47.182.117 (talk) 08:13, 13 June 2008 (UTC)[reply]

203.47.182.117, a few comments to get you started (I'm assuming you are new around here). First, you are congratulated for being bold. If you plan to continue editing, here are some tips:

  1. Create an account - it increases you credibility by a factor of roughly 10 bazillion (I'm only serious about the create an account part).
  2. Sign your posts on the talk page. It is considered unprofessional, or even rude, not to.
  3. Think carefully before reverting the edits of a registered user with a long presence on the edit history or (especially) talk pages. Considering what you need to learn about WP:NOTABILITY, WP:WIKIPEDIA and WP:SPIDER and that fact that he probably already knows these things, be patient mostly replaces WP:BE BOLD in practice.
  4. I apologise if your first edit on Wikipedia has been a frustrating experience and if I sound like a boring old fart. I hope that you will come back and help us and go through the (sometimes painful) learning curve from newbie to experienced editor. We all went through it and I have found it a great learning experience. Dhatfield (talk) 09:21, 13 June 2008 (UTC)[reply]
My objectives were the lack of a stated source, and the units. The derivative and integral terms can't have the same units. Even the proportional term being dimensionless has some other assumption built into it, since the "Process" input and output are not generally in the same units, and since the process can have any gain. So the numbers seem be quite mysterious and meaningless. If a source we presented, we could try to see what's behind them, and maybe help find a way to explain. No objection a table per se, though. Dicklyon (talk) 14:58, 13 June 2008 (UTC)[reply]
I'm afraid I don't think a manual loop tuning table from a proprietary source will meet the copyright or notability requirements, but I've become sensitive to the fact that newcomers may view high standards for accuracy and referencing as hostile. We have a prospective new (apparently very competent) contributor who made a new page at PI controller rather than integrate his content here. I have discussed it on the Talk:PI_controller page, but I fear I came across as hostile. How to solve the eternal problem that being edited is not a fun experience? I don't know. Dhatfield (talk) 09:35, 19 June 2008 (UTC)[reply]

Pseudocode II

Regarding recent edits to the Pseudocode, with the removal of dt. In order for a loop of this nature to funciton, it would have to be driven such that the loop executes every dt units of time *as well as* incorporating the units of time into the tuning parameters. This is not consistent with the rest of the article, as the tuning parameter is now not just system dependant, but also dependent upon your loop's update time period.

Examples:

  • "The magnitude of the contribution of the derivative term to the overall control action is termed the derivative gain, Kd" -- this would not *quite* be true under the new Pseudocode.
  • "Defining as the controller output, the final form of the PID algorithm is:

and the tuning parameters are" -- this form does not match the new pseudocode either. User A1 (talk) 11:01, 14 October 2008 (UTC)[reply]

I changed it such that the integral and the derivative are explicit; perhaps this will make it more clear and people will be less likely to mess it up? Dicklyon (talk) 15:44, 14 October 2008 (UTC)[reply]


Now it's ok, but remember that this type of struct is ideal PID, change "Here is a simple software loop that implements the PID algorithm:" to "Here is a simple software loop that implements a Digital Ideal PID algorithm:" —Preceding unsigned comment added by 189.19.196.155 (talk) 16:20, 14 October 2008 (UTC)[reply]

Use of bold

Bold has been used since the article began in August 2006. Dicklyon (talk), I don't know why you think this is no longer appropriate. I think it made the article easier to read. Please put it back. Robert - Northern VA (talk) 20:08, 30 October 2008 (UTC)[reply]

Manual tuning

On Oct 14 [1], the article was modified to indicate that the I term controls the long term offset and that D controls the rise time (as described in the article). This agrees with what was in the article Jan 2008 [2]. For some reason Dicklyon (talk) removed this edit. I don't understand why. Robert - Northern VA (talk) 20:23, 30 October 2008 (UTC)[reply]

You're right -- it used to say that D eliminates offset, which is incorrect. I don't know why I didn't notice it before. One place I would dispute the current wording, though, is the claim that excessive D leads to excessive response and overshoot. I could believe that too much D would amplify noise and thus lead to instability, but elsewhere the article says D reduces overshoot, so that's confusing at best. The other issue I have is that P, I and D are undefined in the article's nomenclature; they should be Kp, Ki and Kd. Spiel496 (talk) 22:12, 30 October 2008 (UTC)[reply]

Modifications to the PID algorithm

Old modifications:

This's proportional only! :

  • Setpoint weighting – Setpoint weighting uses different multiplier for the proportional error (only!!! derivative and integral don't use this!), this help reducing steady-state error from proportional controller. The error in the integral and derivative term don't change. This affects the controller's setpoint response (ok that's for proportional). These parameters do not affect the response to load disturbances and measurement noise (derivative and integral responses could be removed from here?).

Dead Bands:

  • Integral dead band:
 if(absolute(error) <= dead_band) then:      integral_sum don't change
 else:      integral_sum = integral_sum + error
  • Proportional dead band:
 if(absolute(proportional_error) <= dead_band) then:      proportional term = 0
 else:      proportional term = proportional_error * proportional gain
  • Derivative dead band:
 if(absolute(derivative value) <= dead_band) then:      derivative term = 0
 else:      derivative term = derivative value * derivative gain

New modifications, Derivative modifications:

  • Derivative of the input signal - In this case derivative is calculated from input signal not from error, a change on setpoint don't change the derivative control.
  • Lowpass filter on derivative - With a lowpass filter after derivative control high frequency created by derivative control are cutted, allowing a smooth response from derivative control.

Integral modifications:

  • anti windup?! - a saturation output should: reduce integral term on upper saturation, increase integral term on lower saturation, proportional to error value. (inverse error sum)
   integral_sum = integral_sum - error_value 

or proportional to saturation value. (anti windup sum showed on books)

   integral_sum = integral_sum - (pre saturation output filter - saturated output)   

saturation filter function:

   if(value>max) then: output = max
   elseif(value<min) then: output = min
   else output = value

Others modifications, i didn't found the name but are used:

Conditional integral sum

  • Derivative input signal invert error on integral

if absolute(derivative_value) > pre_determined_value then: integral = integral - error

  • Limit integral error value or saturated integral error, it's near ramp error but don't work with a time function or low pass filter of setpoint. This work with error value

if (error > x) then: integral_error=x else if (error < y) then: integral_error=y else: integral_error=error integral_sum = integral_sum + integral_error

Terminology

The following associations were recently added

  • proportional term (sometimes called gain)
  • integral term (sometimes called reset)
  • derivative term (sometimes called rate)

I don't know where these come from and I suggest removing them unless a reference is provided. Q Science (talk) 15:22, 5 January 2009 (UTC)[reply]

It's possible that a reader of the article has experience only in operating a PID, but would like to learn more about the meaning of the knobs he's been turning. If one of those knobs had been labeled "reset", then providing these associations in the article would help connect the article's content with his past experience. On the other hand, it could lead to confusion if we don't get it right. At least one site [3] has reset defined as 1/integral. Spiel496 (talk) 16:08, 5 January 2009 (UTC)[reply]

Error in the formula of the derivative term?

I think it should be:

(unsigned comment by 89.133.22.172)

The formula currently reads:
which has the identical meaning. Spiel496 (talk) 14:34, 6 February 2009 (UTC)[reply]

Excel spreedsheet

user:User A1, I thought the excel spreadsheet was pretty cool. It even allows random noise to be added. I assume that you deleted it because it broke one of the wikipedia rules, but isn't there some way that it can be added? Robert - Northern VA (talk) 07:08, 10 February 2009 (UTC)[reply]

From WP:EL,
  1. Links to blogs, personal web pages and most fansites, except those written by a recognized authority (this exception is meant to be very limited; as a minimum standard, recognized authorities always meet Wikipedia's notability criteria for biographies).

A short piece of scilab or matlab psuedocode would be more appropriate for this task. Furthermore, there are technical issues with their method.

  1. They should use a higher order integration, rather than Euler, or at least confim that changing the step size has minimal effect on algorithmic convergence, particularly in the presence of "noise". Euler method has issues of its own.
  2. There is no notion of "system". The transfer function of the system that they are controlling is effectively 1, which is completely non-physical.
  3. Finally, the idea of "noise" is not quite right either, as noise in processes usually significantly outweighs noise in the control device itself, so the "noise" being added is not system fluctation, but fluctuation in the actuator position.

In total, these issues, as well as the WP:EL guidelines prompted me to remove the article, as it is a non-authoritarian source. User A1 (talk) 10:36, 10 February 2009 (UTC)[reply]

I hope that this response is not to terse or blunt, please feel free to contribute to the article, and of course any article, in any way you see fit!. User A1 (talk) 11:52, 10 February 2009 (UTC)[reply]
Excellent points.
  1. I haven't read anything on how different forms (orders) of integration will effect the system. It seems that, for many systems, the extra time delay could cause oscillations, but for others, it would really help. Perhaps a section on this would make an important addition to the article.
  2. The examples (plots) already in the article appear to assume linear systems with no noise. The existing article does not even have a link to transfer function.
  3. With a simple linear system, I don't think it matters where the noise is added.
So, I guess the spreadsheet implements what the article describes, but the article actually needs to be expanded a bit. I originally thought it was just the WP:EL guidelines. Specifically, personal web site and rich media. Robert - Northern VA (talk) 17:59, 10 February 2009 (UTC)[reply]