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.

Open experiment panel in a new tab

Download reproduction source

एक छोटा निष्पादन योग्य मॉडल PID गेन परिवर्तनों और एक्चुएटर संतृप्ति का निरीक्षण करना आसान बनाता है। ये परिणाम 7 सितंबर, 2026 को Python 3.12.3 का उपयोग करके गणना किए गए थे। ये संख्यात्मक सिमुलेशन हैं, माप या कोई पहचाना गया मोटर मॉडल नहीं।

मॉडल और शर्तें

प्लांट \ddot y+2\dot y+y=u है। आउटपुट y और नियंत्रण u सामान्यीकृत हैं; समय सेकंड में है। प्रारंभिक आउटपुट, वेग और समाकलन शून्य हैं। लक्ष्य शून्य समय से 1 है, फिर 6 सेकंड से 0.4 है। 0-12 सेकंड के दौरान चरण 0.005 सेकंड है, जिससे प्रति केस 2,401 नमूने प्राप्त होते हैं।

नियंत्रक u=K_pe+K_iI-K_d\dot y_m है, जिसमें e=r-y_m शामिल है। यहां y_m मापा गया आउटपुट है। व्युत्पन्न लक्ष्य के बजाय इस पर कार्य करता है। बेसलाइन लाभ K_p=3, K_i=2, K_d=1 हैं। समाकलन और अवकलन में समय चरण का स्पष्ट रूप से उपयोग किया जाता है; प्लांट अर्ध-अंतर्निहित यूलर समाकलन का उपयोग करता है। सिद्धांतों के लिए PID मूल बातें देखें।

कोड चलाएँ

pid_lab.py को एक खाली कार्यशील निर्देशिका में सहेजें और निम्न कोड चलाएँ। इसके लिए केवल Python मानक लाइब्रेरी की आवश्यकता होती है और यह समान नामों वाली परिणाम फ़ाइलों को ओवरराइट कर देता है।

python3 --version
python3 pid_lab.py

यह CSV और सारांश JSON उत्पन्न करता है। चित्र को पुनः उत्पन्न करने के लिए, plot_pid.py को उसी निर्देशिका में सहेजें और चलाएँ; प्लॉटिंग की जाँच Matplotlib 3.6.3 का उपयोग करके की गई थी। CSV कॉलम परिदृश्य, समय, लक्ष्य, आउटपुट, नियंत्रण और समाकलन हैं।

विलंब और संतृप्ति की तुलना करें

Diagram 1 · Use the button to switch views
0.4 सेकंड के मापन विलंब, 0.8 नियंत्रण सीमा और सशर्त समाकलन के साथ सिम्युलेटेड PID आउटपुट और नियंत्रण

ऊपरी प्लॉट आउटपुट दर्शाता है; निचला प्लॉट नियंत्रण दर्शाता है। काली रेखा लक्ष्य है। परिदृश्य लेबल CSV से मेल खाते हैं, और aw का अर्थ है एंटी-विंडअप।

परिदृश्य परिवर्तन 12 सेकंड पर आउटपुट समाकलित निरपेक्ष त्रुटि
नाममात्र कोई विलंब नहीं, नियंत्रण ±3 तक सीमित 0.4008 1.7913
विलंब_0.4s मापन में 0.4 सेकंड का विलंब 0.3883 1.8860
limit_0.8_aw नियंत्रण ±0.8, सशर्त समाकलन 0.4003 3.3424
limit_0.8_no_aw नियंत्रण ±0.8, अप्रतिबंधित समाकलन 0.6602 5.0996

एकीकृत निरपेक्ष त्रुटि 0-12 सेकंड के लिए बाएँ-आयत समाकलन का उपयोग करती है। इसकी इकाइयाँ सामान्यीकृत आउटपुट गुना सेकंड हैं, न कि मीटर में भौतिक स्थिति त्रुटि। दोलन और नियंत्रण बल के साथ-साथ अंतिम नमूने का भी निरीक्षण करें।

एंटी-विंडअप से एक्चुएटर की क्षमता नहीं बढ़ती

संतुलन पर इस संयंत्र में y=u है, इसलिए 0.8 की नियंत्रण सीमा 1 के लक्ष्य तक नहीं पहुँच सकती। यदि त्रुटि बढ़ती रहती है, तो लक्ष्य 0.4 तक गिरने के बाद भी समाकलन अत्यधिक इनपुट की मांग कर सकता है। कोड संतृप्ति की ओर और आगे बढ़ने वाले समाकलन को अस्वीकार करता है, जबकि संतृप्ति से बाहर निकलने में मदद करने वाले समाकलन की अनुमति देता है।

इससे नियंत्रक की आंतरिक स्थिति बदलती है, मोटर या आपूर्ति क्षमता नहीं। लक्ष्य को प्राप्त करने योग्य बनाना एक अलग निर्णय है।

एक समय में एक ही गेन बदलें

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))

प्रारंभिक लक्ष्य अंतराल के दौरान शिखर की तुलना करें। फिर केवल ki को बदलें, और फिर केवल kd को बदलें, साथ ही अधिकतम नियंत्रण प्रयास को भी रिकॉर्ड करें। अधिक गेन हमेशा बेहतर नहीं होते; विलंब और संतृप्ति के साथ तुलना दोहराएँ।

सीमाएँ और अगली जाँचें

मॉडल में मापन शोर, घर्षण, क्वांटाइजेशन, संचार जिटर और डेरिवेटिव फ़िल्टरिंग शामिल नहीं हैं। समय चरण को आधा करें: यदि प्रतिक्रिया में पर्याप्त परिवर्तन होता है, तो पहले संख्यात्मक सन्निकटन की जाँच करें। प्लांट की पहचान किए बिना और इकाइयों और समय पैमानों का मिलान किए बिना इन गेन को हार्डवेयर में कॉपी न करें। नियंत्रण समस्या के भीतर बाधाओं का अध्ययन करने के लिए MPC पर जाएँ।

स्थानीय स्तर पर यही गणना चलाएँ

संपूर्ण चलाने योग्य स्रोत ज़िप फ़ाइल को निकालें, या प्रयोग प्रवेशबिंदु, जनित कर्नेल और मूल PID स्रोत को एक फ़ोल्डर में सहेजें। PID, Python मानक लाइब्रेरी का उपयोग करता है; Kalman और ICP के लिए NumPy आवश्यक है। मूल चित्र-निर्माण कमांड उपलब्ध रहेंगे।

python3 experiment.py pid --parameters '{"kp":3,"ki":2,"kd":1,"delay":0,"limit":3,"antiwindup":true}' > result.json

विलंब को 0.4 या सीमा को 0.8 पर सेट करें और एंटी-विंडअप के साथ और उसके बिना IAE और अंतिम आउटपुट की तुलना करें।

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.

Related reading

Study control with constraintsनियंत्रण अभियांत्रिकी परिचय: मॉडल प्रेडिक्टिव कंट्रोल — सीमाओं के भीतर कार्य करनाExplore another aspect of this fieldMPC Lab — क्षितिज और स्टीयरिंग सीमाओं के भीतर वक्रता अनुक्रम को पुनः हल करनाExplore another aspect of this fieldPath-tracking comparison Lab — समान परिस्थितियों में PP, APP, RPP, Stanley और MPC चलाएँ