कैसे एक आत्म ट्यूनिंग पीआईडी ​​की तरह नियंत्रक को लागू करने के लिए


15

मैं निम्नलिखित विशेषताओं वाली प्रणाली में तापमान को नियंत्रित करने के लिए एक माइक्रो-कंट्रोलर प्रोग्राम लिखने की कोशिश कर रहा हूं:

  • निश्चित चक्र आवृत्तियों के साथ आउटपुट केवल चालू या बंद हो सकता है (~ प्रति घंटे 2-10)
  • संयंत्र प्रतिक्रिया करने के लिए धीमा है (तापमान में औसत दर्जे का परिवर्तन लंबे समय> 10 मिनट लगते हैं)।
  • संयंत्र पर्यावरणीय परिस्थितियों के आधार पर तापमान खो देता है।
  • सेट-पॉइंट उपयोगकर्ता की मांग के आधार पर बड़े चरणों में भिन्न हो सकते हैं।

मैं एक नियंत्रक लिख रहा हूं जिसका उद्देश्य त्रुटि को कम करना है, साथ ही इनपुट के रूप में प्रदान की गई चक्र-दर का पालन करना है।

यह आसानी से एक पीआई नियंत्रक के साथ किया जा सकता है और यह आउटपुट को कर्तव्य-चक्र में बदल दिया गया है। समस्या यह है कि कार्यक्रम को ऑटो-ट्यून की आवश्यकता है और सही केपी, की स्थिरांक का चयन करें और बदलती पर्यावरणीय परिस्थितियों और ताप क्षमता में परिवर्तन के लिए अनुकूल करें। इसलिए, पीआई नियंत्रक को पहले से ट्यूनिंग करना बहुत उपयोगी नहीं है।

एक वास्तविक पीआई या पीआईडी ​​का उपयोग करना एक आवश्यकता नहीं है। मैं फजी-लॉजिक का उपयोग करने के लिए खुला हूं यदि यह मदद करता है, तो चिप पर एक मशीन-लर्निंग एल्गोरिदम है जो सिस्टम प्रतिक्रिया और गर्मी-नुकसान (रैखिक लगभग) को मॉडल करता है जो मापा कदम प्रतिक्रिया के बारे में जानकारी देता है । बस उस जानकारी के साथ क्या करना है पता नहीं है।

कुछ पदों का सुझाव है कि मैं पीआई को ऑन-लाइन ट्यून करने के लिए मॉडलिंग डेटा का उपयोग कर सकता हूं, साथ ही लैब-व्यू मैनुअल जो सुझाव देता है कि मैं पीआई को ट्यून करने के लिए फजी-लॉजिक का उपयोग कर सकता हूं।

मेरा सवाल यह है कि इस तरह के परिदृश्य के लिए सबसे अच्छा तरीका क्या है (जैसे पीआईडी, फ़ज़ी-पीआईडी, कनविक्शन, आदि) और मैं वास्तव में इसे सॉफ्टवेयर / अभ्यास में लागू करने के बारे में कैसे जाऊँगा।

मैं ईई नहीं हूं इसलिए किसी भी इनपुट की बहुत सराहना की जाएगी।


1
मैंने रोबोटिक्स एसई पर पीआईडी ​​नियंत्रकों को स्वचालित रूप से ट्यून करने के लिए एक सिंप्लेक्स एल्गोरिथ्म का उपयोग करने के बारे में एक उत्तर लिखा था जो कि रुचि का हो सकता है।
एम्बेडेड।

@ एम्बेडेड.काइल महान, मैं सिम्पलेक्स / सबसे बड़ा-एसेंट समझता हूं। क्या आप बता सकते हैं कि उसने X1, x2 के लिए क्या इस्तेमाल किया था? मुझे पीआईडी ​​स्थिरांक से संबंधित समस्या हो रही है।
मंडोमांडो

1
यह थोड़ी देर का समय है, लेकिन मेरा मानना ​​है कि हमने X1 = P, x2 = I, x3 = D. x0, जैसे गुरुत्वाकर्षण के केंद्र का उपयोग किया है, जो भी स्थिरता का माप आपके लिए सबसे महत्वपूर्ण है। मेरे आवेदन में, मोटर नियंत्रण, हमारे पास दो लूप थे। एक का x0 वेग था और दूसरे का x0 करंट था। अधिक के लिए यहाँ देखें ।
embedded.kyle

@ embed.kyle क्या आपको अपनी टिप्पणी का जवाब देने में कोई आपत्ति नहीं है? यदि आप चाहें तो कोई अतिरिक्त जानकारी जोड़ें। -थिक्स
मंडोआमांडो

एक इनाम? ओह यार! किया और किया।
एम्बेड।

जवाबों:


7

मैं पीआईडी ​​को आउटडेटेड कहने के लिए इतनी दूर नहीं जाऊंगा। लेकिन निश्चित रूप से इसमें सुधार की गुंजाइश है। एक तरीका है जिसमें मेरे पास ऑटो-ट्यून्ड पीआईडी ​​कंट्रोल लूप है, नेल्डर-मीड विधि का उपयोग करना है जो पहाड़ी चढ़ाई सिंप्लेक्स एल्गोरिथ्म का एक रूप है । समय के साथ आगे बढ़ने वाले लक्ष्य पैरामीटर पर अभिसरण और पुन: संयोजन करने में सक्षम होने का लाभ है।

नेल्डर-मीड विधि पहाड़ी चढ़ाई

से इस पत्र :

उदाहरण के लिए हमारे मानकों के मामले में पीआईडी ​​पैरामीटर ट्यूनिंग {के पी , के आई , के डी } एक सिम्प्लेक्स टेट्राहेड्रोन है। नेल्डर-मीड सिम्प्लेक्स के रूप में व्यवस्थित प्रत्येक परीक्षण बिंदु पर मापा उद्देश्य फ़ंक्शन के व्यवहार को एक्सट्रपलेशन करके सिम्प्लेक्स की एक नई परीक्षण स्थिति उत्पन्न करता है। एल्गोरिदम फिर इनमें से एक परीक्षण बिंदु को नए परीक्षण बिंदु के साथ बदलने का विकल्प चुनता है और इसलिए तकनीक आगे बढ़ती है।

मेरा विशेष आवेदन मोटर नियंत्रण के लिए था। हमारे पास दो लूप थे, एक पीआईडी ​​वर्तमान नियंत्रण लूप और एक पीआई वेग नियंत्रण लूप। हम क्रमशः पी, आई, और डी के लिए अपने कोने सेट करते हैं और लूप के आउटपुट पर आंकड़े चलाते हैं। हमने तब प्रतिबिंब, विस्तार, संकुचन और कमी को बार-बार चलाया जब तक कि वर्तमान या वेग नियंत्रण लक्ष्य कुछ मानक विचलन के भीतर उत्पन्न नहीं हुए।

हमारे उत्पाद के साथ, वीपी बहुत चिंतित था कि मोटर "ध्वनि" कैसे हो। और जैसा कि यह निकला, यह "बेहतर" लग रहा था जब मौजूदा लक्ष्य गणितीय रूप से इष्टतम की तुलना में थोड़ा अधिक था। इसलिए, हमारी ट्यूनिंग "लाइव" की गई थी जिसमें हमने एल्गोरिथ्म की तलाश की, जबकि मोटर चल रही थी ताकि उपयोगकर्ता की मोटर ध्वनि की धारणा को भी ध्यान में रखा जाए। जब हमें ऐसे पैरामीटर मिले, जो हमें पसंद आए, तो वे हार्ड-कोडेड थे और बदले नहीं गए।

यह संभवतः आपके लिए आदर्श नहीं होगा क्योंकि आप राज्य करते हैं, "सिस्टम को दोलन में डाल देना, क्योंकि ऑटो-ट्यूनिंग का एक हिस्सा उपयोगकर्ताओं के लिए स्वीकार्य नहीं है"। हमारा सिस्टम सबसे निश्चित रूप से दोलन करेगा और अन्य भयानक चीजें करेगा जबकि यह ऑटो-ट्यूनिंग था।

हालाँकि, आप PID नियंत्रक की दो प्रतियाँ चला सकते हैं। एक जो "लाइव" था और वास्तव में प्रक्रिया को नियंत्रित कर रहा था। और एक दूसरा जो लगातार "लाइव" नियंत्रक के रूप में उसी इनपुट से तंग आकर ऑटो-ट्यून किया जा रहा था। जब ऑटो-ट्यून्ड कंट्रोलर का आउटपुट "बेहतर" या अधिक स्थिर हो जाता है, तो आप गुणांक को "लाइव" कंट्रोलर में स्वैप कर सकते हैं। नियंत्रक तब तक प्रक्रिया के लिए सुधार करेगा जब तक वांछित प्रदर्शन प्राप्त नहीं किया गया था। यह ऑटो-ट्यूनिंग के दौरान उपयोगकर्ता द्वारा होने वाले दोलनों को रोक सकता है। लेकिन अगर इनपुट में भारी बदलाव होता है और पीआईडी ​​नियंत्रक अब इष्टतम नहीं है, तो ऑटो-ट्यूनिंग नए गुणांक में स्वैप कर सकते हैं क्योंकि वे उपलब्ध हो जाते हैं।


NM विधि को उद्देश्य फ़ंक्शन (यानी उपयोगकर्ता की वास्तविक दुनिया) पर अपने जंगली अंक चलाने की आवश्यकता होती है। हालांकि, मेरा मानना ​​है कि सेंसर माप के आधार पर माइक्रो-कंट्रोलर पर ही एक क्रूड मॉडल (स्पेस-स्टेट?) बनाया जा सकता है। यह तब आपके प्रस्तावित 'छाया' PI नियंत्रक को चलाएगा जैसा कि यह अनुकूलन करता है। मुझे इस बात पर यकीन नहीं है कि यह एक ज्ञात सेटिंग में पीआई को ट्यून करने और फिर सेंसर रीडिंग और सिस्टम रिस्पांस के आधार पर केपी और की स्केल करने के लिए संभव है । किसी भी तरह, अच्छा किया साहब।
मंडोआमांडो

@MandoMando बहुत बहुत धन्यवाद! और मुझे वास्तव में 'छाया' पीआई नियंत्रक शब्द पसंद है।
एम्बेड

3

एक पीआईडी ​​नियंत्रक उन स्थितियों में उपयोगी होता है जहां नियंत्रण किए जा रहे सिस्टम के व्यवहार को नियंत्रण उत्तेजना के योग, नियंत्रण उत्तेजना के अभिन्न अंग और उस पहले अभिन्न के अभिन्न अंग के रूप में अनुमानित रूप से अनुमानित किया जा सकता है। कुछ तापमान नियंत्रण प्रणालियाँ इस तरह की कसौटी पर खरा उतर सकती हैं, अगर कोई ऐसी वस्तु है जो उत्तेजना द्वारा समान रूप से गर्म की जाती है, और यदि वह वस्तु किसी अन्य वस्तु में समान रूप से ताप अंतर को उनके बीच के तापमान के अंतर के अनुपात में स्थानांतरित करती है। उदाहरण के लिए, पहली वस्तु एक ताप तत्व हो सकती है, और दूसरी वस्तु एक कमरे में प्रसारित हवा हो सकती है, अगर हवा के लिए एक समान तापमान होने के लिए पर्याप्त वायु संचलन हो। थर्मल मॉडल के लिए उससे अधिक जटिल (जैसे कि एक ठोस माध्यम में थर्मल ग्रेडिएंट शामिल हो सकते हैं),

मेरा सुझाव है कि नियंत्रक के पास एक अच्छा तरीका हो सकता है, जब हीटर चालू होता है, लगातार अनुमान लगाता है कि डिवाइस को विनियमित किया जा रहा है तो गर्म कैसे प्राप्त होगा यदि आउटपुट तुरंत बंद हो गया था, और तापमान जिस पर वह ठंडा हो जाएगा। उसके बाद जैसे ही अनुमति मिली, हीटर चालू कर दिए गए। यह भी अनुमान लगाएं कि यदि उन हीटरों को दूसरे सेकंड, दो सेकंड, तीन सेकंड, आदि के लिए छोड़ दिया जाता है, तो वे मान क्या होंगे, जब वे मान प्राप्त करने वाले होते हैं, तो हीटर बंद कर दें। एक बार जब हीटर बंद हो जाता है, तो समान गणना करना शुरू करें, लेकिन जब वापस स्विच करना है, तो यह तय करने के लिए चालू / बंद, गर्म / ठंडा आदि की भूमिकाओं की अदला-बदली करें। सिस्टम के थर्मल व्यवहार के आधार पर, एक कदम या दो आगे देखने के लिए एक 'मिनट / अधिकतम' की आगे की रणनीति का उपयोग करना आवश्यक हो सकता है।


1

नियंत्रण की स्थिति को (चालू या बंद) प्रति घंटे 2-10 बार बदलने में सक्षम होने के नाते खुद को कर्तव्य चक्र नियंत्रण के लिए उधार नहीं देता है। पीआई लूप का आउटपुट एक नियंत्रण संकेत होने जा रहा है जो त्रुटि के एक समारोह के रूप में परिमाण में भिन्न होता है, और आपका संयंत्र (बाइनरी) केवल बाइनरी इनपुट (बंद या चालू) को स्वीकार कर सकता है, क्योंकि नियंत्रण की 'आवृत्ति' के बाद से कर्तव्य चक्र जिसे स्वीकार किया जा सकता है वह एक हर्ट्ज का एक अंश है।

आप चीजों को सरल बनाना चाहते हैं और हिस्टेरेटिक नियंत्रण के साथ जा सकते हैं:

  • जब तापमान कम सीमा को पार करता है तो सिस्टम चालू हो जाता है
  • जब तापमान ऊपरी सीमा को पार करता है तो सिस्टम बंद हो जाता है
  • नियंत्रण आउटपुट के उछलने को रोकने के लिए ऊपरी और निचली सीमाओं के बीच पर्याप्त दूरी है

पीआई आउटपुट को लेने का विचार है: 60% और ऑन-टाइम = 60% चक्र में परिवर्तित -> 0.6 x 30 मिनट -> 18 मिनट पर और 30 मिनट के चक्र के दौरान 12 मिनट बंद। आपके द्वारा सुझाए गए बैंग-बैंग नियंत्रक आवश्यक चक्र-दर (प्रति घंटे n समय से अधिक नहीं, पर स्विच करना) और एक ही समय में कम त्रुटि रखने की गारंटी नहीं देता है। ऑफ-टाइम के दौरान नुकसान को संतुलित करने के लिए सिस्टम को अस्थायी रूप से कुछ समय के लिए ओवरशूट करना आवश्यक हो सकता है।
मंडोमांडो

1

एक विशिष्ट (हालांकि ऐसा करने का संयुक्त रूप से सरल तरीका) को लाभ निर्धारण कहा जाता है। यह एक गैर-रैखिक नियंत्रण के लिए एक क्लासिक दृष्टिकोण है जब आपके पास एक अवलोकन योग्य चर (या चर) होता है जो आपके सिस्टम (शेड्यूल पैरामीटर) के साथ बदलता है। आपके सिस्टम में परिवर्तनशील तापमान की संभावना सबसे अधिक होगी। विचार यह है कि आप शेड्यूलिंग पैरामीटर (तापमान) के विभिन्न मूल्यों पर नियंत्रक लाभ की एक सूची बनाते हैं और शेड्यूलिंग पैरामीटर में परिवर्तन के रूप में आप अपने नियंत्रक में उन लाभों का उपयोग करते हैं (यह पीआई, पीआईडी, राज्य प्रतिक्रिया या जो भी हो)। यदि यह वास्तव में सरल लगता है, तो यह है क्योंकि यह है। हालांकि यह काम करता है और कुछ बहुत ही जटिल प्रणालियों में उपयोग किया जाता है।

यदि आप फैंसी प्राप्त करना चाहते हैं, तो आप अपने लाभ मैट्रिक्स को उत्पन्न करने के लिए मशीन लर्निंग एल्गोरिदम को लागू कर सकते हैं। यह विकसित और सीखने के नियंत्रक के परिणामस्वरूप होगा जिसका आप वर्णन कर रहे हैं। हालांकि, यह ओवरकिल हो सकता है अगर सिस्टम पूरी तरह से विशेषता हो सकता है।

संपादित करें: क्षमा करें, मैं थोड़ा गलत था। आप तापमान को नियंत्रित करने की कोशिश कर रहे हैं, इसलिए आपने जिस "पर्यावरणीय परिस्थितियों" की बात की है, वह आपका शेड्यूलिंग पैरामीटर होगा।


0

आप फुल ब्लो रिकर्सिव लिस्ट स्क्वेयर कंट्रोलर, cf एस्ट्रो और विटनमार्क , अडैप्टिव कंट्रोल में जा सकते हैं, लेकिन मुझे नहीं पता कि ऐसा करने के लिए माइक्रोकंट्रोलर के पास पर्याप्त ओम्फ होगा या नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.