PID döngülerini ayarlamak için iyi stratejiler nelerdir?


55

Denetleyici kazançlarını ayarlamak zor olabilir, hangi genel stratejiler doğru çözüme ulaşan istikrarlı bir sistem elde etmek için iyi çalışır?


1
Daha spesifik bir soruya yönelik bir soru daha yararlı olacaktır. Aksi takdirde, sadece PID makalesine
bakmalısınız

2
Ayarlama PID'lerini her zaman sistemin özelliklerine bağlı olarak buldum, bu yüzden otomatik ayar sistemlerinin hiçbir zaman çok faydalı olduğunu bulamadım . İlk geçiş için iyi bir performans sergiliyorlar, düşük performansa sahip bir dizi parametre var, ancak bunlar optimal olmaktan çok uzak ve belirli bir sistemin mekanik, elektriksel ve kontrol yönleri için optimize edilmemiş herhangi bir genel strateji ile aynı problemi yaşayacaksınız .
Mark Booth

Yanıtlar:


66

Çok az dişli çarkı olan veya hiç kük olmayan küçük, düşük torklu motorlar için, iyi bir temel melodi elde etmek için kullanabileceğiniz bir prosedür, bir rahatsızlığa verdiği yanıtı araştırmaktır.

Bir PID ayarlamak için aşağıdaki adımları kullanın:

  1. Tüm kazancı sıfıra ayarla.
  2. Rahatsızlığa cevap sürekli salınım olana kadar P kazancını arttırın.
  3. Salınımlar giderilinceye kadar D kazancını arttırın (yani kritik olarak sönümlüdür).
  4. D kazancını artırmak, salınımları durdurmayana kadar 2. ve 3. adımları tekrarlayın.
  5. P ve D'yi en son kararlı değerlere ayarlayın.
  6. İstenilen salınımların sayısı ile sizi istenen noktaya getirinceye kadar I kazancını artırın (normalde sıfır ancak aşan bir kaç salınım sakıncası yoksa daha hızlı bir yanıt olabilir)

Kullandığınız rahatsızlık, denetleyicinin bağlı olduğu mekanizmaya bağlıdır. Normalde mekanizmayı elle ayar noktasından uzağa hareket ettirmek ve serbest bırakmak yeterlidir. Salınımlar büyüyüp büyüyerse P kazancını azaltmanız gerekir.

D kazancını çok yükseğe ayarlarsanız, sistem konuşmaya başlar (P kazanç salınımlarından daha yüksek bir frekansta titrer). Bu olursa, D kazancını durana kadar azaltın.

Bu tekniğin bir adı olduğuna inanıyorum. Onu bulduğumda buraya koyacağım.



1
@ Throwback1986, Bu, yalnızca P kazancını kullanan ve I ve D kazancını hesaplayan Ziegler-Nichols değil , o zaman salınan P kazancına ve osilasyon süresine göre hesaplanır
dm76

Özel olarak ayarlanması gereken birden fazla bağlantıya sahip bir robot kolu ayarlamak için ek öneriniz var mı? Tabandan başlayıp son efektöre doğru dışarı mı çıkıyorsunuz yoksa başka bir yoldan mı çalışıyorsunuz, yoksa fark eder mi?
adamconkey

1
Akademik veya endüstriyel bir ortamda daha sofistike bir kontrol yöntemi isteyeceksiniz. En hobbi için; yerçekimi sönümleme etkisine sahip olduğundan, her bir eklemi yerçekiminin motorları en az etkilediği açıda ayarlayın. Örneğin, kol yukarı bakacak şekilde, yerçekimi motorlara değil yataklara etki eder. Sipariş önemli değil. İstediğiniz performansı alamıyorsanız, kontrolünüze feedforward gravity kompanzasyon terimi eklemek en kolay gelişmedir (seri bir kol için özyinelemeli Newton-Euler kullanın).
hauptmech

Pidtuner.com araç bana vermiştir iyi sonuçlar bilinen çeşitli dezavantajları vardır, Ziegler-Nichols yöntemiyle, daha; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Juan Gonzalez Burgos

13

Hauptmech'in üniversitede okuduğum cevabına benzer bir deneysel yöntem:

  1. Tüm kazancı 0 olarak ayarlayın.
  2. Artış K d sistemi salınım yapana kadar.
  3. Azaltır K d 2-4 arasında bir faktör kadar.
  4. Set K p yaklaşık% 1 K d .
  5. Salınımlar başlayana kadar K p değerini arttırın .
  6. Azaltma K p 2-4 arasında bir faktör kadar.
  7. K i'yi K p'nin yaklaşık% 1'i olarak ayarlayın .
  8. Salınımlar başlayana kadar değerini arttırın .
  9. Azaltma K i 2-4 kat.

Ziegler-Nichols yöntemi size salınım dönemi için net bir sayı elde edebilirsiniz eğer daha hassas. Genellikle verilen “klasik PID” numaralarını kullanarak salınımlara neden olur, bu nedenle her zaman en uygun değildir.

Her bir terimin yükselme süresi, aşma, durma süresi, sabit durum hatası ve kararlılık üzerindeki etkisine ilişkin genel kurallar için, IEEE Kontrol Sistemlerinde Li, Ang ve Chong tarafından verilen "PID Kontrol Sistemi Analizi ve Tasarımı" , Tablo 1'e bakınız. Dergi.


2
İlk önce Kd? Her zaman Kp ile başlamanın en iyisi olduğunu düşündüm.
Rocketmagnet

Eski ders slaytlarından yazıyorum, böyle yapmamak için iyi bir neden varsa duymak isterim.
Joe Baker,

1
Bu "pantolonun oturduğu yer" ayarlaması için savunduğum algoritma. Sistemi modellemeden ya da cevabını ölçmeden sizi olabildiğince yakınlaştıracaksınız. (Doğru ayarlamaya gerçekten ihtiyacınız varsa, modelleme ve / veya ölçme tek yoldur).
TimWescott

İlk önce Kd'yi ayarlamak bana bir şey ifade etmiyor, her PID'de yaptığım gibi Kd'nin işareti negatif. Sistemin sönümlenmesi gibi hatalarda çok büyük değişiklikler meydana geldiğinde kontrol sinyalini azaltmak için kullanılır. Yalnızca Kd'niz varsa, sistem ters yönde hareket eder, hatayı arttırır ve sorunu birleştirir. Kd pozitifse, o zaman hatada büyük bir değişiklik doğru yönde gerçekleştiğinde, onu daha da hızlı değiştirecek ve hedefinizi aşacaksınız.
Andrew Capodieci

Aslında, D kazancının ayarlanması ilk önce bir anlam ifade eder, ancak “D” artışının “mutlak değeri arttırmak anlamına geldiğini ve sadece sönümlemeyi artıracağını farz ediyorum. D kazancıyla ilgili en büyük sorun, yüksek frekanslı gürültüyü yükselttiği ve bu etkiyi P kazancı olmadan görmek güzel olmasıdır. Yani, aslında sönümleme gibi davranmayı bıraktığı, gürültüyü yükseltmeye ve hata sinyallerini geciktirmeye başladığı kazanımları aramaya başlıyorsunuz. 2. adım için sanırım, salınımını görmek için tesisinizi dürtmeniz gerekir.
DrRobotNinja

7

Embedded.com makalemi bir kez daha taşıdı, ancak işte şimdi olduğu yer burası. Bu, hem PID döngüsünün nasıl yazılacağını (bunun kayan noktadan başka bir şeyde nasıl yapılacağını bulmak, okuyucuya bir egzersiz olarak bırakıldığını gösterir) ve nasıl ayarlanacağını gösterir.

Doktora olmadan PID

En iyi yol yeteneklerine çok bağlıdır. Deneyimli bir kontrol sistemi eli olduğunuzu varsayarak en iyi ayarlama yöntemini elde etmek için genellikle tesisin ("tesis" == "kontrol ettiğiniz şeyin") cevabını ölçmek, daha sonra nasıl yaptığınıza bağlı olarak ölçümler, tesisin bir modelini çıkarır ve bunun için tasarım yapar veya doğrudan ölçümlere göre tasarım yapar.

Bazı zorlu tesisler için, asla tatmin edici ölçümler yapamayacağınızı, bu durumda yalnız mankenlere gitmek zorunda kalacağınızı bulacaksınız. Bunlar nadir, ancak onları çalıştırırken tatmin edici.


5

Sebastian Thrun, "Robotik Bir Araba Nasıl Programlanır" dersinde PID'yi ayarlamak için basit bir algoritma sundu. Onun ondan açıklar, "ayarlarıyla" denir burada .

Twiddle yerel minima bulmaya çok meyillidir - bu durum, tamam olan fakat durum için uygun olmayan üç sabit seti bulabileceğiniz anlamına gelir . PID sabitlerini ayarlama sorunu, yardımcı programı maksimize etmek için bazı parametreleri bulmak için daha genel bir arama probleminin alt kümesidir (bu durumda, PID algoritmasının hatasını en aza indirir). Bu problemin diğer genel çözümlerine bakabilirsiniz; tepe tırmanma, benzetilmiş tavlama, genetik algoritmalar vb.


4

Diğer iki cevabın aksine, PID ayarlamanın iyi bir yolunun Kd'yi göz ardı ettiğini söyleyebilirim. Öyleyse 0'dan başlayın ve hedefe ulaşana kadar Kp'yi artırın, ardından sabit durum hatasından kurtulmak için Ki'yi artırın.

Kd sorunu gürültüye iyi yanıt vermediğinden dolayı şaşırtabilir, sonra analog girişinize filtreler eklemeye başlarsınız ve sonra kontrolünüzü yavaşlatmanın yanı sıra her şeyi daha da zorlaştırmanın yanı sıra ne yaptığını sorgularsınız ...

Kafamı karıştırması gereken bir başka şey de, PID denkleminin standart formda mı yoksa bağımsız (wikipedia'da paralel) bir formda mı olduğudur. Form, düşündüğünüze göre yanlış bir yol olduğunda Ki'nin etkisi ters görünüyor. Her iki tür de otomasyonda, bazen aralarında geçiş yapma seçeneğiyle kullanılır.


4

Sistem modellemesi

Elbette deneysel ayarlama diğer cevaplarda belirtildiği gibi yapılabilir, ancak kontrol etmek istediğiniz herhangi bir şey için makul bir dinamik model tanımlayabiliyorsanız ve parametrelerini tanımlayabiliyorsanız, kontrol cihazınızı iyi bir şekilde tasarlayabilmeniz gerekir. aşma , yükselme zamanı , durma zamanı , sabit durum hatası vb. gibi tanımlanmış kriterler .

Bile vardır MATLAB'da araçları kullanmak daha iyi yapar bu ölçütlerin bir kombinasyonu için optimize gibi ayarlamak denetleyicisi edebiliyoruz.

Kontrol ünitenizi bilin

PID kontrol cihazındaki her bir parametrenin ne yaptığını öğrenmek de oldukça yararlıdır. Tüm deneysel algoritmalar bir şekilde bu tür bilgilere dayanmaktadır. Yalnızca talimatları takip etmekle kalmaz, aynı zamanda bu hissi kendiniz de alabilirseniz, kontrol cihazınızı manuel olarak ayarlamanızı daha kolay bulabilirsiniz.

Gerçek dünya problemleri

Bunlardan birinin, diğerlerinin yanı sıra, kontrol cihazınızı ayarlarken yola çıkma şansı vardır: sarma , yetersiz örnekleme hızı , doygunluk .

Sonuç

Sonunda, hepsi nasıl çalıştığı ve ne tür bir deney yapılabileceği hakkında biraz bilgi sahibi olmak için sisteminizde gerçekte neler yapabileceğinize bağlıdır. En iyisi aslında PID kontrolörleri ve genel olarak kontrol teorisi hakkında daha fazla şey öğrenmek, IMO, ama önyargılıyım :)


İnsanların neden PID'i ayarlamak için buluşsal bulgular önerdiğini sürekli anlayamıyorum , günümüzde ise tesis tanımlaması ve denetleyici tasarımı için derin teorik arka plan gerektirmeyen birçok otomatik araç sağlanmaktadır. O zaman bu cevap için başparmak.
Ugo Pattacini

3

İlgilenenler için deneyimimden biraz daha genişletmeye çalışacağım. Bence sorun, biraz erişilemez (ve bazen yararlı olmayan) bir sürü kontrol teorisine sahip olduğumuz ve daha sonra çoğu zaman yanlış olan sistemler hakkında varsayımlar yapan temel kurallarımız olduğunu düşünüyorum.

istikrar

Önce kontrol döngülerinin neden dengesiz hale geldiği hakkında konuşalım. Bu tartışma için doğrusal bir sistem varsayacağım. Gayri resmi olarak bunun anlamı, eğer kontrol sinyaliniz belirli bir frekansta sinüs dalgasıysa, o zaman gözlemlenen çıktınız aynı frekansta demektir ve kontrol sisteminizin genliğini değiştirirseniz, çıktınız aynı oranda yanıt verir. Bu varsayım, birçok gerçek dünya sistemi için iyi bir yaklaşımdır ve izolasyonda farklı frekanslara bakmamızı sağlar.

Kontrol yoluna bakarsanız bir ayar noktanız, PID kontrol cihazınız, sisteminiz (aka "Plant") ve sonra sensörünüz vardır. Sensörünüzden sabit bir ayar noktası ve sinüs dalgası hayal edin (bu, sensördeki gerçek bir dünya rahatsızlığına eşittir, geri beslenir). Kararsız bir sistemde geri bildiriminiz, kontrol döngüsünün hatayı büyütmek yerine hatayı büyütmesine neden olur, böylece zaman arttıkça genlik artar. Bunun olmasının nedeni bir gecikme ya da bu belirli bir frekans için giriş ile çıkış arasında bir faz kayması olabilir. Belirli bir frekans için, çıkışın açık döngüsüne (yani geri besleme yok) kaymaya ve genliğe bakabiliriz ve hepsini grafik üzerinde çizdiğimizde Bode Plot gibi bir şey elde ederiz.. Bu açık döngü grafiğinde, hatanın artmaya devam ettiği bir durum varsa, dengesiz bir sisteme sahibiz. Gecikme 1 / 2'den düşükse, dalga boyu veya kazanım x1'den azsa, sistem kararlıdır . Uygulamada biz bu noktadan bazı marjlar istiyoruz (kazanç marjı ve faz marjı), bu nedenle bu manuel / sezgisel yöntemlerin çoğunda bu "geri çekilmeyi" göreceksiniz.

Bu manuel yöntemlerle ilgili temel sorun, kör uçmanız ve kötü bir kontrol sistemi elde etmenin garantili olmasıdır.

Ayrıca, P, I ve D anlamlarının, sensörünüzün ölçtüğü ölçümler ve uyguladığınız kontrol ile ilgili olduğunu unutmayın. Ev yapımı kontrol cihazlarında sık karşılaşılan bir hata, insanların aslında değilken P uyguladıklarını düşünmeleridir. Motor kontrolörleri genellikle bir tork döngüsü üzerinden çalışan bir hız döngüsü üzerinden çalışan bir pozisyon döngüsüne sahiptir. (Bir çağlayan )

Tamam ama bu bize nasıl yardımcı oluyor?

Yapmak istediğim ilk nokta, eğer kendi PID denetleyicinizi oluşturuyorsanız, açık döngü yanıtını ölçmenin bir yolunu da oluşturmanız gerektiğidir. Kontrol ünitesinin girişinde bir frekans taraması yapın ve geri besleme bağlantısı kesik olarak sensör çıkışını ölçün. Sonra açık döngü Bode arsa çizip edebilir bkz sistem stabil olmasının nedeni çeşitli kontroller kapalı ticaret yapabilecektir. Kapalı döngü yanıtını ölçmek de yararlıdır ve bunu döngü kapalıyken ayar noktanızın frekans taramasını yaparak herhangi bir sistemle yapabilirsiniz. Her ikisi de bu kadar zor değil ve çok fazla teorik bilgi gerektirmiyor.

Sadece başlık altında neler olup bittiğini anlamadan kontrolleri ince ayarlıyorsanız, sisteminizi optimize edemezsiniz. Bu sistemler hakkında biraz sezgi oluşturmak o kadar da zor değil. Örneğin orantılı kazancın faz üzerinde etkisi yoktur, ancak tüm frekanslarda açık döngü kazancını artırır. Öyleyse, tüm bu manuel ayarlama yöntemlerinde oransal kazancı arttırırken yaptığınız şey, fazın -180'e gittiği frekansı bulmaktır. Bkz bu frekans tepkisi üzerinde çeşitli kontrollerin etkisi hakkında biraz daha fikir edinmek için.

Sık sık en iyi kapalı döngü performansını elde etmek, yalnızca kontrol cihazının kazandığı değil sistemin ince ayarını da içerir. İstediğiniz, sistemi mümkün olduğunca "sert" hale getirmektir. Bu, kontrol parametrelerini yükseltmenize ve en iyi açık ve kapalı döngü bant genişliğini elde etmenize izin verir. Motor kontrol uygulamalarındaki deneyimimde oransal kazanç, "iş" ve entegratör "dinlenme" nin çoğunu yapması gereken kazançtır. Hiç D terimine ihtiyacın olduğunu sanmıyorum. Düşük geçişli bir filtreye ve bir çentikli filtreye sahip olmak, bazı mekanik rezonansa sahip olabileceğiniz durumlarda ancak bunları bir Bode Grafiği olmadan ayarlamak çok zordur (kapalı döngü altında gözlemlediğiniz salınım frekansı açık döngüden farklı olabilir).

Güvenlik bir endişe ise (çok güçlü motorlar veya motorun kontrolden çıkmasıyla tahrip olabilecek bir sistem) sistemi korumak için ayarlamaya başlamadan önce (örneğin mevcut limit, maksimum pozisyon hatası) bazı limitler koymanız gerekir. Ardından, parametrelerin menzili için bir çeşit his edinmeniz gerekir. Görüşleriniz dönüş başına 40 sayım veya dönüş başına 4000 sayım varsa, parametreleriniz verilen bir sistem için 100 faktörü olacaktır. Benim yaklaşımım, önce kontrolünüzün zayıf olduğu ve ardından P ile başlayan oradan yukarı doğru yükselen (sonra yine kör uçtuğunuz) bir aralık bulmak olacaktır. Geri çekilmek bu istikrar marjını yaratır.

Kapalı döngünün ötesinde

Kapalı döngü, hatayı sistemden almaya çalışır. Her zaman biraz sınırlı bir performansa sahip olacak. Yapmak istediğiniz şey, kapalı döngü denetleyicinizin gördüğü hatayı en aza indirmek ve bunu yapmanın bir yolu, feed feed (ileri besleme) adı verilen bir tekniktir.. İleri beslemede denetleyicinin etrafından dolaşır ve doğrudan sisteme bir komut iletirsiniz. Buna bir örnek ilerleme ivmesidir. Motorun tork sabiti olduğunuzu biliyorsanız ve yükü biliyorsanız, yükün belirli bir ivmesini almak için ne kadar akım kullanmanız gerektiğini hemen hemen söyleyebilirsiniz. Sadece komut giriş ivmesini almanız, sabit ile çarpmanız ve kontrol cihazının sürücü komutuna eklemeniz yeterli. Temelde hiçbir kontrolör yoksa sistemi sürmek için ne gerekiyorsa yapıyorsunuzdur ve döngü ne kadar yakınsa o kadar az hata alabilirsiniz ve sisteminiz o kadar iyi performans gösterir. Pratikte büyük bir fark yaratıyor.


"Motor kontrol uygulamalarındaki deneyimimde orantılı kazanç," iş "ve entegratör" dinlenme "nin çoğunu yapması gereken kazançtır. D terimine hiç ihtiyacınız olmadığını sanmıyorum." Tipik motor kontrol uygulaması için buna katılıyorum. P ana işi yapar ve ben uzun süreli kayma / hataları telafi ederim. Fakat burada, quadcopter çok fazla dış türbülansa maruz kalacak, bu nedenle D terimi hızlı bir yanıt almak için önemlidir. I terimine gelince, dörtlü özerk navigasyon modunda değilse, o kadar önemli değil.
dm76

@ dm76: Tecrübelerimin çoğu motor kontrolü ile ilgili ve bu feragatnameyi yapıyorum ;-) Sezgim, quadcopter uygulamasında hala yerim olduğunu ve P'nin çok yüksek olması durumunda dış rahatsızlıklarla baş edebileceğini düşünüyorum motor kontrolünde yapar). Quadcopters hakkında kesin bir şey söylemek için bu sistemlere daha yakından bakmam gerekecek… Burada söylediklerimin çoğunun geçerli olduğunu düşünüyorum (özellikle frekans alanındaki ayarlarınızı yapın ve sistemin açık döngü yanıtını alın) ).
Guy Sirton,

1
@ dm76: Gerçekten de bu "temel kural" PID ayarlaması motorlarda çok vasat bir performans ve dörtlü gruplarda muhtemelen aynı. Bazen iyi yerleştirilmiş bir çentik süzgeci büyüklük farkı yaratabilir ...
Guy Sirton

0

Ziegler-Nichols kolay bir manuel yöntemdir. Daha sağlam yöntemler de var - bunlar genellikle matematiksel çözümlere (analitik, yinelemeli optimizasyon vb.) Dayanıyor.

Bunun ötesinde, bazı otomatik teknikler için "otomatik ayarlamalı PID" google. En sevdiğim sinir ağlarının PID ayarına uygulanması.


0

Doğru bir PID katsayısına sahip olmak istiyorsanız:

  • İstatistiksel aktüatör verilerinizi alın (ör . Bir x matrisi olarak collecting input voltages+ encoder pulsessık sık ( 0.01sec) )20secs32000
  • Aktüatörünüzün transfer fonksiyonunu (TF) alın ( MATLAB içindeki Ident araç kutusunu kullanarak ).
  • Son olarak, MATLAB'da PIDTool araç kutusunu kullanın ve dönüştürme işlevinizi yükleyin.

Veya hızlı ve basit bir şekilde:

Ziegler – Nichols diye daha hızlı bir yaklaşım var : görüntü tanımını buraya girin

Ve bu resimde PID parametrelerinin etkilerini göstermektedir :
PID parametreleri etkileri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.