नफा:
- योग्य संदर्भासह AI वर P, I, D अटी आणि PID कंट्रोलरचे प्रभाव स्पष्ट करण्याची आणि लागू करण्याची क्षमता
- AI च्या मदतीने झीग्लर-निकॉल्स आणि प्रायोगिक ट्यूनिंग पद्धती टप्प्याटप्प्याने पार पाडण्याची क्षमता
- एआय शिफारशींमधील इंटिग्रल विंडअप, डेरिव्हेटिव्ह नॉइज यांसारखे पीआयडी सापळे ओळखण्याची आणि दूर करण्याची क्षमता
ओव्हनचे तापमान स्थिर ठेवणे, मोटरचा वेग इच्छित मूल्यावर चालवणे, ड्रोनचा कोन संतुलित करणे; त्या सर्वांच्या केंद्रस्थानी एक नियंत्रण अल्गोरिदम आहे. यातील सर्वात सामान्य म्हणजे पीआयडी कंट्रोलर, जो उद्योगाचा कणा आहे. पीआयडी; हे सोपे, मजबूत आणि समस्यांच्या विस्तृत श्रेणीवर कार्य करते. परंतु "सिंपल" चा अर्थ "ट्यून करणे सोपे" असा नाही: चुकीचा सेट केलेला PID दोलायमान होईल, ओव्हरशूट करेल, उशीरा बसेल किंवा पूर्णपणे अस्थिर होईल. कृत्रिम बुद्धिमत्ता येथे एक मौल्यवान सहाय्यक आहे: ते PID अटी स्पष्ट करते, ट्यूनिंग पद्धतींद्वारे मार्गदर्शन करते, विशिष्ट त्रुटींचे निदान करते आणि ट्यूनिंग कोड लिहिते. तथापि, अंतिम समायोजन आपल्या सिस्टमचे भौतिक वर्तन पाहून केले जाते आणि स्थिरतेचा निर्णय अभियंत्याचा असतो. या युनिटमध्ये आम्ही AI सह PID सापळे कसे स्थापित करावे, ट्यून कसे करावे आणि सत्यापित कसे करावे हे समाविष्ट करतो.
PID च्या तीन अटी
PID त्रुटी सिग्नलला (e = लक्ष्य − मोजलेले) तीन प्रकारे प्रतिसाद देते:
मुदत
तो काय पाहतो?
प्रभाव
अत्यंत
पी (प्रमाणात)
वर्तमान त्रुटी
जलद प्रतिसाद
दोलन, कायम त्रुटी
मी (अविभाज्य)
संचित भूतकाळातील त्रुटी
कायमची त्रुटी रीसेट करते
overshoot, windup, oscillation
डी (व्युत्पन्न)
त्रुटी बदलण्याचा दर
ओलसर ओव्हरशूट कमी करते
आवाज वाढवा
शाब्दिक सारांश: P "मी आता किती दूर आहे", मी "मी किती काळ दूर आहे", D "मी किती वेगाने येत आहे" या प्रश्नांना उत्तर देतो. एक चांगला नियंत्रक तिन्ही समतोल राखतो.
वर्ग पीआयडी: def __init__(self, Kp, Ki, Kd, output_min=-100, output_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max = output_min, output_max self.integral = 0.0_self = 0.0_self, 0.0.0 स्व.सेल्फ एरर. लक्ष्य, मोजलेले, dt): त्रुटी = लक्ष्य - मोजलेले # P p = self.Kp * त्रुटी # I -- windup संरक्षणासह self.integral += error * dt i = self.Ki * self.integral # D -- व्युत्पन्न आवाज संवेदनशील d = self.Kd * (त्रुटी - self.previous_error) / ious p_tur = error + dt. आउटपुट असल्यास आउटपुट आणि लिमिट वाइंडअप > self.output_max: output = self.out_max self.integral -= error * dt # अँटी-विंडअप: इंटिग्रल एलिफ आउटपुट पूर्ववत करा < self.output_min: output = self.output_min self.integral -= error * dt रिटर्न आउटपुट
हा कोड "प्रशिक्षण पीआयडी" नाही, परंतु उत्पादन तर्कशास्त्राच्या जवळचा एक सांगाडा आहे: त्यात आउटपुट संपृक्तता आणि अँटी-विंडअप समाविष्ट आहे. एआयने दिलेले अनेक साधे पीआयडी या दोन संरक्षणांना बायपास करतात; त्यांच्याशिवाय, जेव्हा ॲक्ट्युएटर त्याच्या मर्यादेपर्यंत पोहोचतो, तेव्हा इंटिग्रल फुगतात आणि सिस्टम अनपेक्षितपणे ओव्हरशूट होईल.
टीप: AI ला PID साठी विचारताना "आउटपुट सॅचुरेशन आणि अँटी-विंडअप जोडा, डेरिव्हेटिव्ह टर्मवर मापन लागू करा" असे म्हणा. या तीन जोडण्या पाठ्यपुस्तक PID फील्ड PID मध्ये रूपांतरित करतात.
इंटिग्रल विंडअप आणि व्युत्पन्न आवाज
पीआयडी अयशस्वी होण्याचे सर्वात सामान्य कारण दोन क्लासिक तोटे आहेत:
इंटिग्रल वाइंडअप: जेव्हा ऍक्च्युएटर संतृप्त होते (उदा. मोटर आधीच पूर्ण शक्तीवर असते) तेव्हा त्रुटी कायम राहते आणि अविभाज्य पद वाढतच जाते. जेव्हा सिस्टीम लक्ष्यापर्यंत पोहोचते तेव्हा हे फुगवलेले अविभाज्य मोठे ओव्हरशूट होते. Solution: stopping or rolling back the integral when the output is saturated (anti-windup, demonstrated in the code above).
व्युत्पन्न आवाज: डी हा शब्द त्रुटीचे व्युत्पन्न घेतो; गोंगाटयुक्त मापनाचे व्युत्पन्न जास्त गोंगाट करणारे असते आणि ते ॲक्ट्युएटरला कंपन करते. उपाय: मापनातून व्युत्पन्न घेणे (त्रुटीऐवजी मोजमापाचे व्युत्पन्न), व्युत्पन्न टर्ममध्ये कमी पास फिल्टर जोडणे.
# व्युत्पन्न आवाज कमी करणे: मापन व्युत्पन्न + filterd_raw = -(measured - self.previous_measured) / dt ऐवजी त्रुटी
AI हे नुकसान ओळखण्यात चांगले आहे; जर तुम्ही म्हणाल की "माय पीआयडी जेव्हा लक्ष्यापर्यंत पोहोचते तेव्हा मोठ्या प्रमाणात ओव्हरशूट होते", ते वाइंडअपची शिफारस करते. परंतु आपण आपल्या सिस्टमवर निराकरण कार्य करते की नाही हे मोजून सत्यापित करता.
Ziegler-Nicols सह सेटिंग
सुरवातीपासून नफा (Kp, Ki, Kd) शोधण्याची एक उत्कृष्ट पद्धत म्हणजे Ziegler-Nicols. त्याचे सार: फक्त P ने सुरू करणे आणि प्रणाली सतत दोलनात जाईपर्यंत Kp वाढवणे; या बिंदूवर गंभीर लाभ Ku आणि दोलन कालावधी Tu सह टेबलवरून Kp, Ki, Kd ची गणना करा.
नियंत्रक
kp
ति
Td
पी.
०.५·कु
-
-
पी.आय.
०.४५·कु
Tu/1.2
-
पीआयडी
०.६·कु
तू/२
तू/८
झीग्लर-निकॉल्स स्टेप्स (एआय द्वारे बनवण्याची योजना):1. Ki=0, Kd=0 घ्या. फक्त P.2 चालवा. स्थिर, शाश्वत दोलन सुरू होईपर्यंत हळूहळू Kp वाढवा.3. हा Kp = Ku (गंभीर लाभ), दोलन कालावधी = Tu.4. टेबलवरून Kp, Ti, Td ची गणना करा; Ki = Kp/Ti, Kd = Kp*Td.5. या मूल्यांसह प्रारंभ करा, नंतर प्रायोगिक बदल करा.
खबरदारी: Ziegler-Nicols जाणीवपूर्वक प्रणालीला त्याच्या स्थिरता मर्यादेपर्यंत आणते (सस्टेन्ड ऑसिलेशन). वास्तविक हार्डवेअरवर हे करताना यांत्रिक ताण, ओव्हरकरंट आणि धोक्याचा धोका असतो; शक्य असल्यास, प्रथम सिम्युलेशनमध्ये करा, नंतर कमी उर्जा मर्यादा आणि हार्डवेअरमध्ये ई-स्टॉपसह कार्य करा. AI ने सुचवलेला Ku हा एक प्रारंभिक बिंदू आहे, तो तुमच्या सिस्टममध्ये मोजला जातो आणि सत्यापित केला जातो.
AI-सहाय्यित निदान
AI मध्ये वर्णन करून तुम्ही PID वर्तनाचे निदान करू शकता. लक्षण → संभाव्य कारण मॅपिंग:
लक्षण
संभाव्य कारण
दिशा AI सुचवेल
हळू बसणे
Kp/Ki कमी
kp वाढवा
कायमची चूक
मी अनुपस्थित किंवा खूप कमी आहे
की जोडा/वाढवा
ओव्हरशूट + ऑसिलेशन
Kp/Ki उच्च, D नाही
केडी जोडा, की कमी करा
ॲक्ट्युएटर थरथरत आहे
व्युत्पन्न आवाज
फिल्टर/कमी डी
जेव्हा आपण मोठ्या ओलांडत पोहोचता
अविभाज्य windup
अँटी-विंडअप जोडा
कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट
कमजोर:"पीआयडी नफा द्या."(कोणती प्रणाली? वर्तन कसे आहे? काही मोजमाप आहेत का? यादृच्छिक संख्या येतात.) स्ट्राँग:"मी DC मोटर गती नियंत्रणासाठी पीआयडी समायोजित करत आहे. सध्या, Kp=2, Ki=0.5, Kd=0. ते स्टेप इनपुटवर 35% ओव्हरशूट करते आणि जेव्हा ते लक्ष्य गाठण्यासाठी मोठा वेळ लागतो; सॅम्पलिंग 100 हर्ट्झ आहे, या लक्षणांमधुन संभाव्य कारणांची यादी करा, "मी कोणती दिशा बदलली पाहिजे ते सुचवा आणि मला सांगा की ओव्हरशूट अविभाज्य आहे की नाही."
मिनी केस
Control engineer Kerem adjusts the temperature control of an extruder. AI ने सुचविलेल्या नफ्यांसह, सिस्टम त्वरीत लक्ष्यापर्यंत पोहोचते, परंतु प्रत्येक सेट बदलाच्या वेळी ते मोठ्या प्रमाणात ओव्हरशूट करते आणि हळूहळू स्थिर होते. केरेम AI ला लक्षण स्पष्ट करतात; AI ला अविभाज्य विंडअपचा संशय आहे कारण हीटर काही काळ पूर्ण शक्तीवर (संतृप्त) राहते. केरेम PID कोडमध्ये अँटी-विंडअप जोडते आणि ओव्हरशूट लक्षणीयरीत्या कमी होते. पण आता हीटरच्या आउटलेटवर थोडासा झटका आहे; तो याचे श्रेय डी टर्मला तापमान सेन्सरचा आवाज वाढवतो आणि डेरिव्हेटिव्हमध्ये लो-पास फिल्टर जोडतो. शेवटी, हे झिगलर-निकॉल्ससह नफ्याचे प्रमाणीकरण करते आणि प्रायोगिक फाइन-ट्यूनिंग करते. AI चे जलद-ट्रॅक निदान आहे; पण केरेमने प्रत्यक्ष स्टेप रिस्पॉन्सचे मोजमाप करून प्रत्येक दुरुस्तीची पुष्टी केली - वाइंडअप दुरुस्त केला गेला किंवा फ्लिकरिंग गेला, ते फक्त ग्राफिक पद्धतीने पाहिले जाऊ शकते.
सामान्य चुका
- पीआयडीमध्ये आउटपुट सॅचुरेशन आणि अँटी-विंडअप जोडण्यात अयशस्वी होणे आणि ॲक्ट्युएटर मर्यादेमध्ये मोठ्या प्रमाणात ओव्हरशूट अनुभवणे.
- गोंगाटाच्या मापनाच्या व्युत्पन्नातून व्युत्पन्न घेणे आणि ॲक्ट्युएटरला कंपन करणे.
- गृहीत धरून की dt स्थिर आहे, तर सॅम्पलिंग कालावधी बदलतो.
- सुरक्षिततेची खबरदारी न घेता हार्डवेअरवर झीग्लर-निकॉल्स ऑसिलेशन चाचणी करणे.
- सिस्टम-विशिष्ट सत्यापनाशिवाय AI-व्युत्पन्न कमाई “अंतिम” म्हणून स्वीकारणे.
- खूप मोठ्या पावलांसह एकच फायदा बदलणे आणि सिस्टमला अस्थिरतेत ढकलणे.
सारांशात
- पीआयडी; ते P (वर्तमान त्रुटी), I (संचित त्रुटी), D (त्रुटी बदलण्याचा दर) सह प्रतिक्रिया देते.
- फील्ड पीआयडीमध्ये आउटपुट सॅचुरेशन, अँटी-विंडअप आणि डेरिव्हेटिव्ह फिल्टरचा समावेश असावा.
- इंटिग्रल विंडअप लार्ज ओव्हरशूट, व्युत्पन्न आवाजामुळे ॲक्ट्युएटर कंपन होते.
- Ziegler-Nicols लाभ सुरू देते; हे हार्डवेअरमध्ये सुरक्षा उपायांसह लागू केले जाते.
- AI लक्षणांपासून कारणापर्यंत निदानात जलद आहे; दुरुस्ती मोजमापाद्वारे सत्यापित केली जाते.
- dt प्रत्यक्ष मोजले; कमाईत बदल लहान पावले आणि निरीक्षणात केले जातात.
अर्ज कार्य
एक सिस्टीम निवडा (वास्तविक मोटर/हीटर किंवा पायथनमधील साधे फर्स्ट/सेकंड ऑर्डर मॉडेल) आणि एआयने सॅच्युरेशन + अँटी-विंडअपसह पीआयडी क्लास तयार करा. नंतर: (1) फक्त P ने सुरू करून आणि Kp वाढवून दोलन वर्तनाचे निरीक्षण करा, (2) कायमची त्रुटी दूर करण्यासाठी Ki जोडा आणि ओव्हरशूट कसे वाढते ते पहा, (3) अँटी-विंडअप चालू आणि बंद करून मोठ्या ओव्हरशूटवरील प्रभावाची तुलना करा. प्रत्येक टप्प्यावर स्टेप रिस्पॉन्स प्लॉट करा आणि लक्षात घ्या की कोणता फायदा कोणता वर्तन बदलतो. झीग्लर-निकॉल्सकडून मिळालेल्या नफ्यांशी तुलना करा.