Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
Küçük bir çalıştırılabilir model, PID kazanç değişikliklerini ve aktüatör doygunluğunu incelemeyi kolaylaştırır. Bu sonuçlar 7 Eylül 2026 tarihinde Python 3.12.3 ile hesaplanmıştır. Bunlar sayısal simülasyonlardır, ölçümler veya tanımlanmış bir motor modeli değildir.
Model ve koşullar
Tesis \ddot y+2\dot y+y=u'dır. Çıkış y ve kontrol u normalize edilmiştir; zaman saniye cinsindendir. Başlangıç çıkışı, hız ve integral sıfırdır. Hedef, sıfır zamandan itibaren 1, ardından 6 saniyeden itibaren 0,4'tür. Adım, 0-12 saniye boyunca 0,005 saniyedir ve her durum için 2401 örnek verir.
Kontrolör u=K_pe+K_iI-K_d\dot y_m'tür, e=r-y_m ile birlikte. Burada y_m ölçülen çıkıştır. Türev, hedef yerine buna etki eder. Temel kazançlar K_p=3, K_i=2, K_d=1'dir. Entegrasyon ve diferansiyasyon açıkça zaman adımını kullanır; sistem yarı-örtük Euler entegrasyonunu kullanır. Prensipler için PID temelleri bölümüne bakın.
Kodu Çalıştırın
pid_lab.py dosyasını boş bir çalışma dizinine kaydedin ve aşağıdakileri çalıştırın. Yalnızca Python standart kütüphanesini gerektirir ve aynı isimli sonuç dosyalarının üzerine yazar.
python3 --version
python3 pid_lab.py
CSV ve özet JSON dosyalarını üretir. Şekli yeniden oluşturmak için, plot_pid.py dosyasını aynı dizine kaydedin ve çalıştırın; Grafik çizimi matplotlib 3.6.3 ile kontrol edildi. CSV sütunları senaryo, zaman, hedef, çıktı, kontrol ve integraldir.
Gecikme ve doygunluğu karşılaştırma
Üstteki grafik çıktıyı; alttaki grafik kontrolü göstermektedir. Siyah çizgi hedefi göstermektedir. Senaryo etiketleri CSV ile eşleşir ve aw anti-windup anlamına gelir.
| Senaryo | Değişim | 12 s'deki çıktı | Entegre edilmiş mutlak hata |
|---|---|---|---|
| nominal | Gecikme yok, kontrol ±3 ile sınırlı | 0,4008 | 1,7913 |
| delay_0,4s | Ölçüm 0,4 s gecikmeli | 0,3883 | 1,8860 |
| limit_0.8_aw | Kontrol ±0.8, koşullu entegrasyon | 0.4003 | 3.3424 |
| limit_0.8_no_aw | Kontrol ±0.8, sınırsız entegrasyon | 0.6602 | 5.0996 |
Entegre edilmiş mutlak hata, 0-12 saniye aralığında sol dikdörtgen entegrasyonu kullanır. Birimleri, metre cinsinden fiziksel konum hatası değil, normalize edilmiş çıktı çarpı saniyedir. Salınımı ve kontrol çabasını ve ayrıca son örneği inceleyin.
Anti-windup aktüatör kapasitesini artırmaz
Denge durumunda bu tesis y=u'ya sahiptir, bu nedenle 0.8'lik bir kontrol limiti 1 hedefine ulaşamaz. Hata birikmeye devam ederse, hedef 0.4'e düştükten sonra bile integral aşırı giriş talep edebilir. Kod, doygunluğa daha fazla yol açacak entegrasyonu reddederken, doygunluktan çıkmaya yardımcı olan entegrasyona izin verir.
Bu, kontrolörün iç durumunu değiştirir, motoru veya besleme kapasitesini değil. Hedefin ulaşılabilir olması ayrı bir karardır.
Kazançları tek tek değiştirin
from pid_lab import simulate
for kp in (1., 3., 6.):
rows = simulate("gain", kp=kp)
print(kp, max(row[3] for row in rows if row[1] < 6))
İlk hedef aralığındaki tepe değerini karşılaştırın. Ardından sadece ki'i ve daha sonra sadece kd'u değiştirin ve maksimum kontrol çabasını da kaydedin. Daha büyük kazançlar her zaman daha iyi değildir; gecikme ve doygunluk ile karşılaştırmaları tekrarlayın.
Sınırlar ve sonraki kontroller
Model, ölçüm gürültüsünü, sürtünmeyi, nicelemeyi, iletişim titreşimini ve türev filtrelemeyi dışlar. Zaman adımını yarıya indirin: yanıt önemli ölçüde değişirse, önce sayısal yaklaşımı araştırın. Tesisi tanımlamadan ve birimleri ve zaman ölçeklerini eşleştirmeden bu kazançları donanıma kopyalamayın. Kontrol problemi içindeki kısıtlamaları incelemek için MPC'ye devam edin.
Aynı hesaplamayı yerel olarak çalıştırın
Çalıştırılabilir kaynak ZIP dosyasını çıkarın veya deney giriş noktasını, oluşturulan çekirdekleri ve orijinal PID kaynağını tek bir klasöre kaydedin. PID, Python standart kütüphanesini kullanır; Kalman ve ICP, NumPy gerektirir. Orijinal şekil oluşturma komutları kullanılabilir durumda kalır.
python3 experiment.py pid --parameters '{"kp":3,"ki":2,"kd":1,"delay":0,"limit":3,"antiwindup":true}' > result.json
Gecikmeyi 0,4'e veya limiti 0,8'e ayarlayın ve IAE ile son çıktıyı anti-windup ile ve anti-windup olmadan karşılaştırın.
Code, data and reproduction
The ZIP contains the same computation code as the browser, synthetic data and comparison cases. These are not physical measurements.
Download reproduction package · Instructions (EN/JA) · Files and experiment conditions (JSON)
Extract the ZIP into a new directory, then run:
python3 reproduce.py --experiment pid
This Lab compares 4 cases. PID uses Python’s standard library; Kalman/ICP require NumPy. See the instructions for dependencies and tested versions.
Yorumlar
Lütfen önce giriş yapın.
Henüz veri yok.