Path: csiph.com!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!buffer1.nntp.dca1.giganews.com!news.giganews.com.POSTED!not-for-mail NNTP-Posting-Date: Mon, 15 May 2017 23:54:44 -0500 From: Tim Wescott Subject: Re: Stability in PID Controllers Newsgroups: comp.dsp References: <877f1m14we.fsf@garnerundergroundinc.com> <87fug8pukb.fsf@digitalsignallabs.com> User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-ID: Date: Mon, 15 May 2017 23:54:44 -0500 Lines: 112 X-Usenet-Provider: http://www.giganews.com X-Trace: sv3-9RgXFbFtlnWONSmzciXs9ua13a+bqVKLlfSdFSnoVGYMld4FWUwLlWFGPIU24ZFPXFUXaLmMZk3ZOjb!MCnKBHyZgBWpycLSmxYa42chEjWZu4ttnDkMo0EOT+HDp65qD5qwW3JONmuGvQlCBRpB7anmZw4= X-Complaints-To: abuse@giganews.com X-DMCA-Notifications: http://www.giganews.com/info/dmca.html X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 6317 Xref: csiph.com comp.dsp:33834 On Mon, 15 May 2017 20:03:30 -0500, Les Cargill wrote: > Tim Wescott wrote: >> On Mon, 15 May 2017 00:22:07 -0400, rickman wrote: >> >>> On 5/14/2017 8:06 PM, Tim Wescott wrote: >>>> On Sat, 13 May 2017 15:47:29 -0400, rickman wrote: >>>> >>>>> On 5/13/2017 12:53 PM, Randy Yates wrote: >>>>>> Tim Wescott writes: >>>>>> >>>>>>> On Fri, 12 May 2017 11:17:05 -0400, Randy Yates wrote: >>>>>>> >>>>>>>> I know next-to-nothing about this topic, but the following >>>>>>>> question has popped into my mind several times. >>>>>>>> >>>>>>>> It seems like folks generally (and perhaps this is totally wrong) >>>>>>>> design PID controllers by basically selecting what they think are >>>>>>>> "good" constants for the proportional, integral, and derivative >>>>>>>> terms. That is, they just sorta play with their systems and tweak >>>>>>>> the terms until it seems to work smoothly. >>>>>>>> >>>>>>>> However, how do you know that a particular configuration is >>>>>>>> stable? >>>>>>> >>>>>>> If you are tuning informally, then the informal way of making sure >>>>>>> the system is stable is to make sure that it is neither singing >>>>>>> nor dancing. Telling the difference between an autonomous >>>>>>> oscillation and some external signal being amplified is a matter >>>>>>> of experience. >>>>>>> >>>>>>> If you're doing formal loop tuning (which is _not_ a matter of >>>>>>> randomly choosing values, but rather measuring or deriving a plant >>>>>>> model from first principles, and then doing real live math on the >>>>>>> model), then there are a number of ways which are appropriate to >>>>>>> the methods you're using. >>>>>>> >>>>>>> If you're going by swept-sine measurement of the plant response, >>>>>>> then Bode and/or Nyquist charts. >>>>>>> >>>>>>> If you're going by a Laplace-domain model (i.e., transfer >>>>>>> functions), then you work out the transfer function of the overall >>>>>>> system and decide if its stable (or you decide on the pole >>>>>>> locations of the finished system and get your PID gains from >>>>>>> that). >>>>>>> >>>>>>> If you're going by a linear state-space model, then you check the >>>>>>> eigenvalues of the model of the overall system, or you do your >>>>>>> design by pole placement. >>>>>>> >>>>>>> If you're using a nonlinear plant model, then you use an >>>>>>> appropriate nonlinear method (I don't know what's popular -- I >>>>>>> rarely have to do this, and it seems that each problem has its own >>>>>>> correct method). >>>>>> >>>>>> Hey Tim, >>>>>> >>>>>> Thank you for such a comprehensive response. >>>>>> >>>>>> I was probably not clear in my question. I wasn't asking how to >>>>>> formally determine stability - that I have had a small amount of >>>>>> experience in, and certainly have studied some methods in the >>>>>> control system classes I've had (although I've forgotten much of >>>>>> it). >>>>>> >>>>>> I guess what I'm asking (which may have been a bit of a dumb >>>>>> question) is, is there some inherent property of PID controllers >>>>>> that makes them unconditionally stable, or at least stable in a >>>>>> wide variety of situations? I.e., is it unneceessary for folks who >>>>>> just sort of "tweak" such systems to be concerned about their >>>>>> stability? >>>>>> >>>>>> I'm pretty sure the answer to that last question is: no. >>>>> >>>>> I think the real problem is that while you can design a controller >>>>> that can be stable, that stability depends on the device being >>>>> controlled as it is the loop characteristics that determine >>>>> stability. >>>>> >>>>> So clearly there is no way to assure stability in a control loop >>>>> without knowing about the device being controlled. I suppose a very >>>>> sophisticated controller could perform actions to measure parameters >>>>> and then configure itself. But then you wouldn't be tweaking that >>>>> would you? >>>> >>>> Self-tweaking controllers was tried -- the field is called "Adaptive >>>> Control" and it turns out that except in narrow circumstances you >>>> work just as hard for not much better performance than you would if >>>> you just made the plant more predictable. >>> >>> Do you always have plants you can alter? >> >> No, but often the most cost-effective way to achieve a certain control- >> systems goal is to tweak the plant. The ultimate performance of any >> control system is limited by the plant; when you hit that limit the >> only way forward is by tweaking the plant. >> >> > I'd exclude - possibly - adaptive feedforward for some cases, mainly for > slow-moving plant. Actually, me too. Especially if there are lots of repetitive, identical movements and the "adaptation" is just feedback that's sampled on each movement. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com I'm looking for work -- see my website!