पीआयडी रेग्युलेटरचे ऑपरेटिंग तत्त्व. शांततापूर्ण आर्थिक हेतूंसाठी पीआयडी नियमनासह थर्मल कंट्रोलर. पीआयडी कंट्रोलर म्हणजे काय

PID (इंग्रजी P-proportional, I-integral, D-derivative मधून) - एक नियामक हे फीडबॅक लिंकसह सुसज्ज नियंत्रण लूपमध्ये वापरले जाणारे उपकरण आहे. या नियामकांचा वापर स्वयंचलित प्रणालींमध्ये नियंत्रण सिग्नल व्युत्पन्न करण्यासाठी केला जातो जेथे क्षणिक प्रक्रियेची गुणवत्ता आणि अचूकतेसाठी उच्च आवश्यकता प्राप्त करणे आवश्यक असते.

पीआयडी कंट्रोलरचे नियंत्रण सिग्नल तीन घटक जोडून प्राप्त केले जाते: पहिला त्रुटी सिग्नलच्या परिमाणाच्या प्रमाणात आहे, दुसरा त्रुटी सिग्नलच्या अविभाज्यतेच्या प्रमाणात आहे आणि तिसरा त्याचे व्युत्पन्न आहे. जर या तीन घटकांपैकी कोणताही घटक जोडण्याच्या प्रक्रियेत समाविष्ट केला नसेल, तर नियंत्रक यापुढे पीआयडी राहणार नाही, परंतु फक्त आनुपातिक, आनुपातिक-भिन्नता किंवा आनुपातिक-एकीकरण करणारा असेल.

पहिला घटक आनुपातिक आहे

आउटपुट सिग्नल आनुपातिक घटकाद्वारे दिले जाते. हा सिग्नल सेट मूल्यापासून नियमन करण्यासाठी इनपुट मूल्याच्या वर्तमान विचलनाचा प्रतिकार करतो. विचलन जितके जास्त तितके मोठे सिग्नल. जेव्हा नियंत्रित व्हेरिएबलचे इनपुट मूल्य निर्दिष्ट मूल्याच्या बरोबरीचे असते, तेव्हा आउटपुट सिग्नल शून्य होते.

जर तुम्ही फक्त हा आनुपातिक घटक सोडला आणि फक्त त्याचा वापर केला, तर नियंत्रित करायच्या प्रमाणाचे मूल्य कधीही योग्य मूल्यावर स्थिर होणार नाही. नियंत्रित व्हेरिएबलच्या अशा विचलन मूल्याप्रमाणे नेहमीच एक स्थिर त्रुटी असते ज्यामुळे आउटपुट सिग्नल या मूल्यावर स्थिर होतो.

उदाहरणार्थ, थर्मोस्टॅट गरम यंत्राची शक्ती नियंत्रित करते. इच्छित ऑब्जेक्ट तापमान जवळ येत असताना आउटपुट सिग्नल कमी होतो आणि नियंत्रण सिग्नल उष्णता कमी होण्याच्या पातळीवर शक्ती स्थिर करते. परिणामी, तापमान कधीही सेट मूल्यापर्यंत पोहोचणार नाही, कारण हीटिंग डिव्हाइस फक्त बंद करावे लागेल आणि थंड होण्यास सुरवात होईल (शक्ती शून्य आहे).

इनपुट आणि आउटपुट दरम्यान मोठा फायदा म्हणजे एक लहान स्थिर त्रुटी, परंतु जर नफा (मूलत: एक समानुपातिक गुणांक) खूप मोठा असेल, तर प्रणालीमध्ये विलंब झाल्यास (आणि ते अनेकदा अपरिहार्य असतात), स्व-दोलन लवकरच सुरू होईल. त्यामध्ये, आणि जर तुम्ही गुणांक वाढवलात तर ते आणखी मोठे असेल - सिस्टम फक्त स्थिरता गमावेल.

किंवा गीअरबॉक्ससह मोटर ठेवण्याचे उदाहरण. गुणांक लहान असल्यास, कार्यरत घटकाची इच्छित स्थिती खूप हळू प्राप्त केली जाते. गुणांक वाढवा - प्रतिक्रिया जलद होईल. परंतु आपण गुणांक आणखी वाढविल्यास, मोटर योग्य स्थितीत "ओव्हरशूट" करेल आणि एखाद्याच्या अपेक्षेप्रमाणे सिस्टम त्वरीत आवश्यक स्थितीकडे जाणार नाही. जर आपण आता प्रमाणिकता गुणांक आणखी वाढवला, तर इच्छित बिंदूभोवती दोलन सुरू होतील - परिणाम पुन्हा प्राप्त होणार नाही...

दुसरा घटक एकत्रीकरण आहे

जुळत नसलेल्या मूल्याचा टाइम इंटिग्रल हा इंटिग्रेटिंग घटकाचा मुख्य भाग आहे. ते या अविभाज्य प्रमाणात आहे. स्थिर त्रुटी दूर करण्यासाठी इंटिग्रेटिंग घटक तंतोतंत वापरला जातो, कारण नियंत्रक कालांतराने स्थिर त्रुटी लक्षात घेतो.

बाह्य व्यत्ययाच्या अनुपस्थितीत, काही काळानंतर नियंत्रित केले जाणारे प्रमाण योग्य मूल्यावर स्थिर केले जाईल, जेव्हा आनुपातिक घटक शून्य असेल आणि आउटपुटची अचूकता संपूर्णपणे एकत्रित घटकाद्वारे सुनिश्चित केली जाईल. परंतु गुणांक योग्यरितीने न निवडल्यास इंटिग्रेटिंग घटक पोझिशनिंग पॉईंटभोवती दोलन देखील निर्माण करू शकतात.

तिसरा घटक भिन्न आहे

नियमन करण्याच्या मूल्याच्या विचलनातील बदलाचा दर तिसऱ्या घटकाच्या प्रमाणात आहे - विभेदक घटक. भविष्यात भाकीत केलेल्या योग्य स्थितीपासून विचलन (बाह्य प्रभाव किंवा विलंबांमुळे) प्रतिकार करणे आवश्यक आहे.

तुम्ही आधीच समजून घेतल्याप्रमाणे, पीआयडी कंट्रोलर्सचा वापर दुसऱ्या मूल्याचे u बदलून काही एका मूल्याचे दिलेले मूल्य x0 राखण्यासाठी केला जातो. सेटपॉईंट किंवा दिलेले मूल्य x0 आहे आणि त्यात फरक किंवा विसंगती (न जुळणारी) e = x0-x आहे. जर प्रणाली रेखीय आणि स्थिर असेल (सराव मध्ये हे फारच शक्य आहे), तर खालील सूत्रे u निर्दिष्ट करण्यासाठी वैध आहेत:

या सूत्रामध्ये तुम्ही प्रत्येक तीन पदांसाठी समानुपातिकतेचे गुणांक पहा.

सराव मध्ये, पीआयडी नियंत्रक ट्यूनिंगसाठी भिन्न सूत्र वापरतात, जेथे लाभ एकाच वेळी सर्व घटकांवर लागू केला जातो:

पीआयडी नियंत्रणाची व्यावहारिक बाजू

सराव मध्ये, PID-नियंत्रित प्रणालीचे सैद्धांतिक विश्लेषण क्वचितच वापरले जाते. अडचण अशी आहे की नियंत्रण ऑब्जेक्टची वैशिष्ट्ये अज्ञात आहेत आणि सिस्टम जवळजवळ नेहमीच नॉनस्टेशनरी आणि नॉनलाइनर असते.

खरोखर कार्यरत पीआयडी नियंत्रकांना नेहमी खाली आणि वरच्या ऑपरेटिंग श्रेणीची मर्यादा असते, हे मूलभूतपणे त्यांची नॉनलाइनरिटी स्पष्ट करते. म्हणून सेटिंग जवळजवळ नेहमीच आणि सर्वत्र प्रायोगिकपणे केली जाते, जेव्हा नियंत्रण ऑब्जेक्ट कंट्रोल सिस्टमशी कनेक्ट केलेले असते.

सॉफ्टवेअर नियंत्रण अल्गोरिदमद्वारे व्युत्पन्न केलेल्या मूल्याच्या वापरामध्ये अनेक विशिष्ट बारकावे असतात. जर आपण बोलत आहोत, उदाहरणार्थ, तापमान नियंत्रणाबद्दल, तर बहुतेकदा एक नाही, परंतु दोन उपकरणे आवश्यक असतात: प्रथम हीटिंग नियंत्रित करते, दुसरे कूलिंग नियंत्रित करते. प्रथम गरम शीतलक पुरवतो, दुसरा - रेफ्रिजरंट. तीन व्यावहारिक उपायांचा विचार केला जाऊ शकतो.

प्रथम सैद्धांतिक वर्णनाच्या जवळ आहे, जेव्हा आउटपुट एनालॉग आणि सतत मूल्य असते. दुसरे म्हणजे डाळींच्या संचाच्या स्वरूपात आउटपुट, उदाहरणार्थ स्टेपर मोटर नियंत्रित करण्यासाठी. तिसरे म्हणजे जेव्हा रेग्युलेटरचे आउटपुट पल्स रुंदी सेट करण्यासाठी वापरले जाते.

आज, जवळजवळ सर्व ऑटोमेशन प्रणाली तयार केल्या आहेत, आणि PID नियंत्रक हे विशेष मॉड्यूल आहेत जे कंट्रोल कंट्रोलरमध्ये जोडले जातात किंवा सामान्यतः लायब्ररी लोड करून सॉफ्टवेअरमध्ये लागू केले जातात. अशा नियंत्रकांमधील नफा योग्यरित्या कॉन्फिगर करण्यासाठी, त्यांचे विकसक विशेष सॉफ्टवेअर प्रदान करतात.

आंद्रे पोव्हनी

). आता, वचन दिल्याप्रमाणे, आम्ही त्याचे गुणांक ट्यूनिंग आणि निवडण्याच्या मूलभूत पद्धतींचा विचार करू) सर्वसाधारणपणे, मोठ्या प्रमाणात, पीआयडी कंट्रोलर वापरताना, संपूर्ण सिस्टमचे मॉडेल तयार करणे आणि आवश्यक गणिते मोजणे आवश्यक आहे. गुणांकांची मूल्ये. हे करणे योग्य आहे. परंतु, स्वाभाविकपणे, कोणीही हे करत नाही 😉 खरं तर, गुणांकांची गणिती गणना करणे हे क्षुल्लक काम नाही; यासाठी स्वयंचलित नियंत्रणाच्या सिद्धांताचे सखोल ज्ञान आवश्यक आहे, म्हणूनच इतर, सरलीकृत समायोजन पद्धती वापरल्या जातात.

सर्वात सामान्यतः वापरली जाणारी गुणांक समायोजन पद्धत झिगलर-निकॉल्स पद्धत आहे. यात खालील गोष्टींचा समावेश आहे...

झिगलर-निकॉल्स पद्धत.

वास्तविक, येथेच पद्धतीचा व्यावहारिक भाग संपतो) प्राप्त गुणांकावरून आम्ही पीआयडी कंट्रोलरच्या आनुपातिक गुणांकाची गणना करतो:

आणि त्यातून आम्हाला उर्वरित मिळते:

पद्धत अगदी सोपी आहे, परंतु ती लागू करणे नेहमीच शक्य नसते. खरे सांगायचे तर, मला कधीही अशा प्रकारे रेग्युलेटर कॉन्फिगर करावे लागले नाही 😉 परंतु तरीही, ही पद्धत मुख्य आहे आणि मोठ्या प्रमाणात, एकमेव व्यापकपणे ज्ञात आहे. हे फक्त प्रत्येकाला अनुकूल नाही आणि नेहमीच नाही.

झिगलर-निकॉल्स पद्धत कार्य करत नसल्यास काय करावे? येथे "विश्लेषणात्मक" ट्यूनिंग पद्धत बचावासाठी येते =)

पुन्हा, आम्ही सर्व गुणांक रीसेट करतो आणि आनुपातिक एक वाढवू लागतो. परंतु आता आम्ही दोलन दिसण्याची वाट पाहत नाही, परंतु गुणांकाच्या प्रत्येक मूल्यासाठी सिस्टमचे वर्तन फक्त रेकॉर्ड करतो (गुणकाच्या प्रत्येक मूल्यासाठी स्थिर करणे आवश्यक असलेल्या मूल्याचा आलेख तयार करणे हा एक उत्कृष्ट पर्याय आहे. ). जर आपण पाहिले की, उदाहरणार्थ, सिस्टम अतिशय हळू हळू इच्छित मूल्यापर्यंत पोहोचते, तर आम्ही आनुपातिक गुणांक वाढवतो. इच्छित मूल्याच्या तुलनेत सिस्टममध्ये मोठ्या प्रमाणात चढ-उतार होऊ लागतात? याचा अर्थ असा की गुणांक खूप जास्त आहे, आम्ही ते कमी करतो आणि इतर घटक सेट करण्यासाठी पुढे जातो.

PID कंट्रोलर संपूर्णपणे कसे कार्य करते हे समजून घेऊन आणि ट्यून केलेली प्रणाली कशी कार्य करते याची कल्पना करून, तुम्ही कंट्रोलर गुणांक द्रुतपणे आणि अचूकपणे समायोजित करू शकता. विशेषतः जर ग्राफिकल अवलंबित्व तयार करणे आणि सिस्टमच्या वर्तनाचे दृश्यमानपणे निरीक्षण करणे शक्य असेल तर.

येथे काही नियम आहेत जे सेटअपमध्ये मदत करू शकतात:

  • आनुपातिक गुणांक वाढल्याने कार्यक्षमतेत वाढ होते, परंतु सिस्टम स्थिरता कमी होते
  • विभेदक घटक वाढवल्याने कार्यक्षमतेत लक्षणीय वाढ होते
  • विभेदक घटक केवळ आनुपातिक घटक वापरताना उद्भवणारे ओलसर दोलन दूर करण्यासाठी डिझाइन केलेले आहे
  • अविभाज्य घटकाने कॉन्फिगर केलेल्या आनुपातिक आणि भिन्न घटकांसह सिस्टममधील अवशिष्ट विसंगती दूर करणे आवश्यक आहे.

तसे, हे जोडणे योग्य आहे की पीआयडी कंट्रोलरचे सर्व तीन घटक वापरणे नेहमीच आवश्यक नसते, काहीवेळा आनुपातिक आणि भिन्नता पुरेसे असतात, उदाहरणार्थ (पीडी नियंत्रक). हे सर्व खाली येते की PID कंट्रोलर कॉन्फिगर करताना आणि वापरताना प्रत्येक सिस्टमला स्वतःचा दृष्टीकोन आवश्यक असतो.

आजसाठी एवढेच आहे, कदाचित एखाद्या दिवशी आम्ही PID कंट्रोलरच्या व्यावहारिक अंमलबजावणीकडे लक्ष देऊ 😉

आपल्याला तापमान एका विशिष्ट पातळीवर ठेवण्याची आणि कार्य बदलण्याची आवश्यकता आहे. एक मायक्रोकंट्रोलर आहे ज्याला तापमान मीटर जोडलेले आहे आणि पॉवर कंट्रोलसाठी ट्रायक आहे. चला TAU किंवा कशाचीही काळजी करू नका, फक्त ते घेऊ आणि PID कंट्रोलर "हेड-ऑन" बनवूया.

II. सैद्धांतिक परिचय

पीआयडी कंट्रोलर कसा बनवला जातो? आम्ही सध्याचे तापमान आणि इच्छित तापमान यांच्यातील फरक घेतो, त्यास समायोज्य गुणांकाने गुणाकार करतो आणि या क्षणी आउटपुट करणे आवश्यक असलेली शक्ती मिळवतो. हा एक आनुपातिक घटक आहे, ज्या क्षणी जुळत नाही त्या क्षणी ते कार्य करते - म्हणजेच, सेटपॉईंटमधील बदल आणि ऑब्जेक्टच्या वर्तनास ते त्वरित प्रतिसाद देते. उबदार सुरू? शक्ती कमी होऊ लागते. जास्त गरम झाले? तो बंद झाला, किंवा अगदी कूलिंग सिग्नल दिला. सर्व काही ठीक आहे, केवळ वास्तविक जीवनात प्रभावाचा प्रभाव विलंबाने दिसून येतो आणि वस्तू केवळ आपल्याद्वारेच नव्हे तर वातावरणाद्वारे देखील प्रभावित होते: गरम झालेली अणुभट्टी केवळ आतून गरम होत नाही तर थंड देखील होते, बंद होते. खोलीला उष्णता द्या, आणि म्हणून आम्ही ती पॉवर बंद करताच, ती लगेच थंड होऊ लागते. म्हणून, एक शुद्ध आनुपातिक नियंत्रक देखभाल बिंदूभोवती फिरतो, आणि पर्यावरण/अणुभट्टीच्या सामग्रीच्या संपर्कात जितके जास्त असेल तितके अधिक जोरदारपणे दोलन होते.

अणुभट्टीवरील "बाह्य" प्रभावांची भरपाई करण्यासाठी, सर्किटमध्ये एक अविभाज्य घटक जोडला जातो. सिस्टममध्ये असलेली सर्व जुळणी इंटिग्रेटरकडे जाते (त्यानुसार, आपण जास्त गरम केल्यावर, रक्कम कमी होते, जेव्हा ते कमी होते तेव्हा रक्कम वाढते). आणि संचित अविभाज्य, त्याच्या गुणांकासह, शक्तीमध्ये स्वतःची वाढ किंवा घट देते. या दृष्टिकोनाचा परिणाम म्हणून, स्थिर प्रक्रियेसह, काही काळानंतर अविभाज्य शक्तीसह असे योगदान निवडते ज्यामुळे पर्यावरणाच्या नुकसानाची भरपाई होते आणि दोलन अदृश्य होतात - अविभाज्य स्थिर होते, त्यामुळे आउटपुटचे प्रमाण शक्ती स्थिर होते. शिवाय, आवश्यक तापमान राखले जात असल्याने, कोणतेही जुळत नाही, आनुपातिक घटक अजिबात कार्य करत नाहीत.

प्रभाव आणि सिस्टम प्रतिसाद यांच्यातील विलंबांच्या प्रभावाची भरपाई करण्यासाठी, सिस्टममध्ये एक भिन्न घटक जोडला जातो. हे फक्त इतकेच आहे की तापमान इच्छित बिंदूपर्यंत पोहोचेपर्यंत एक आनुपातिक-विभेदक नियामक पुरवठा केलेली शक्ती कमी करण्यास सुरवात करतो - कारण जुळत नसल्यामुळे, एक नकारात्मक व्युत्पन्न आहे ज्यामुळे तापमान कमी होते. परिणाम हे मोठ्या संक्रमणादरम्यान ओव्हरहाटिंग कमी करते.

तर, आम्ही भौतिक अर्थ सोडवला आहे, चला अंमलबजावणीच्या मूलभूत मुद्द्यांकडे जाऊया.

III. रेग्युलेटर कोणी वापरावे?

- तंत्रज्ञ.

यातून पुढे काय? यावरून तंत्रज्ञांना भौतिक घटक समजतात आणि हार्डवेअर पीआयडी रेग्युलेटर सेट करण्याचा अनुभव आहे. याचा अर्थ असा की सॉफ्टवेअर अंमलबजावणी तंत्रज्ञांच्या सेटअपच्या सुलभतेवर आधारित असावी - भौतिक मॉडेलची पुनरावृत्ती. आणि हे अत्यंत महत्वाचे आहे! बऱ्याचदा, कोड सुलभ करण्यासाठी, गुणांक बदलले जातात, उदाहरणार्थ, त्यांच्या व्युत्क्रमांमध्ये - विभाजनापासून मुक्त होण्यासाठी. परिणामी, ट्यूनिंग एक नरक आणि दुःस्वप्न बनते, प्रक्रिया समजून घेण्याऐवजी त्या विशिष्ट नियामक ट्यूनिंगमध्ये अनुभव आवश्यक असतो. येथून आपल्याला कळते की आपले गुणांक - एकात्मतेचा स्थिरांक आणि भिन्नतेचा स्थिरांक - वेळेची परिमाणे असणे आवश्यक आहे, म्हणजेच, सेकंदात निर्दिष्ट केले आहे, आणि "1/s" मध्ये नाही, जसे की ते करू इच्छितात.

IV. कार्यक्षेत्र.

आम्ही एक सार्वत्रिक रेग्युलेटर बनवण्याचा प्रयत्न करत आहोत, याचा अर्थ ते लहान, वेगवान वस्तू आणि शक्तिशाली, प्रचंड भट्टींवर काम केले पाहिजे. याचा अर्थ असा की आपण असे गृहीत धरले पाहिजे की नियमन केलेले तापमान साधारणपणे मीटरने मर्यादित असते. XA(K) आणि XK(L) हे सर्वात जास्त वापरले जातात. त्यांची लागू होणारी श्रेणी कुठेतरी 1200°C पर्यंत आहे. कूलिंगसाठी अधिक जटिल उपकरणे (क्रायोस्टॅट्स) आवश्यक आहेत, अतिरिक्त कूलिंगचे नियंत्रण (पंखे आणि गरम कॅबिनेटचे उघडण्यायोग्य दरवाजे) देखील क्वचितच आवश्यक आहेत - याचा अर्थ आम्ही ते आत्ताच्या विचारातून वगळतो. आम्हाला कळते की नियंत्रित तापमान ~15°C ते ~1200°C आहे, फक्त वीज पुरवठा नियंत्रित केला जातो.

नियंत्रणाची अचूकता निर्धारित केली जाते, सर्वप्रथम, मापनाच्या अचूकतेद्वारे: कॅलिब्रेशन सारण्या 0.1 अंशांमध्ये दिल्या जातात; सारण्यांमधील रेखीयता, तत्वतः, सभ्य आहे, म्हणून अचूकता प्रामुख्याने ॲम्प्लिफायर आणि वर्तमान मीटरद्वारे मर्यादित आहे. माझ्या बाबतीत, मला 0.1 अंश राखण्याची अचूकता मिळवायची होती, म्हणून मीटर 1/32 अंशांवर सेट केले आहे: हे ~3 क्वांटा प्रति 0.1 अंश देते, अशा प्रकारे, नियमन +-1 क्वांटाचा सामान्य "आवाज" असणे, आम्ही त्याच 0.1 अंशांच्या आत राहतो. 1/32 वापरणे आपल्याला एका निश्चित बिंदूसह कार्य करण्यास अनुमती देते - 5 बिट्स = अंशात्मक भाग, उर्वरित पूर्णांक आहे. 16 बिट्समध्ये हे 0 ते 2047 ° पर्यंत दर्शविले जाऊ शकते. ऋण संख्यांसह कार्य करण्याऐवजी, आम्ही सेल्सिअस ऐवजी केल्व्हिन्समध्ये कार्य करू, अशा प्रकारे - 0 ते 2047 °K, जे -273 ते 1775 °C च्या समतुल्य आहे; 0.03125° च्या वाढीमध्ये.

V. समायोज्यता श्रेणी.

शक्तिशाली पॉवर प्लांटसह मायक्रोरिएक्टर नियंत्रित करण्यासाठी, असे दिसून येईल की 1% उर्जा 10 अंशांनी गरम करण्यासाठी पुरेशी आहे, तर मोठ्या निष्क्रिय भट्टीसाठी, 100% हीटिंग पॉवर केवळ ते गरम करण्यासाठी पुरेसे आहे. पदवी (वास्तविक जीवनात, हे असे दिसते - तेथे अनेक मॅन्युअली नियंत्रित हीटर्स आहेत - ते वेगळ्या स्विचद्वारे चालू केले जातात आणि प्रारंभिक हीटिंग तयार करतात, नंतर थर्मोस्टॅट ऑपरेटिंग पॉइंट राखतो, दुसर्या हीटरवर नियंत्रण ठेवतो, जे पूर्ण शक्तीने जास्तीत जास्त उत्पादन करते. +10°C ते, जे सतत गरम होते). याच्या आधारावर, मर्यादित आनुपातिकता गुणांक प्रति 1 डिग्री 100% पॉवर आहे असे गृहीत धरणे तर्कसंगत आहे. आम्हाला 0.1 डिग्री कंट्रोलेबिलिटी हवी असल्याने आता काही अर्थ नाही. साधेपणासाठी, मी किमान व्यस्त घेतला - 1% पॉवर प्रति 100 अंश.

नियामकाच्या आमच्या ऑपरेटिंग शर्तींच्या आधारे वेळ गुणांकांची श्रेणी मोजली जाते. 0 मधून गेल्यानंतर स्विच चालू होण्याच्या क्षणाच्या विलंबाची गणना करून आम्ही ट्रायकची शक्ती नियंत्रित करतो, रेग्युलेटरची कमाल ऑपरेटिंग वारंवारता 50 Hz आहे. जर आम्हाला खात्री असेल की आम्ही पॉवर नियंत्रित करतो, ज्यामध्ये प्लस किंवा मायनस फरक पडत नाही, तर आम्ही 100Hz वर कार्य करू शकतो, परंतु हे नेहमीच नसते आणि म्हणूनच सकारात्मक आणि नकारात्मक अर्ध-लहरी दोन्ही समान प्रमाणात घेणे चांगले आहे. प्रत्येक वेळी. जीवन सुलभ करण्यासाठी, मी ऑपरेटिंग वेळ 25Hz पर्यंत कमी केला, त्याद्वारे कोणताही गणना केलेला प्रभाव 4 अर्ध-वेव्हसाठी कार्य करेल आणि या काळात मी नवीन प्रभावाची गणना करू शकेन.

अशा प्रकारे, 0 ते ~ 2000 सेकंद (2000*25 = 50000, फक्त 16 बिट्समध्ये बसते) पर्यंत प्रत्येक 1/25 सेकंदाला वेळ स्थिरांक सेट केला जातो.

बरं, आमच्याकडे 0 ते 100% पर्यंत किमान आणि कमाल उर्जा मर्यादा देखील आहे.

सहावा. पॉवर व्यवस्थापन.

या क्षणापासून, सर्व सैद्धांतिक आकडेमोड संपतात, आणि कटु सराव सुरू होतो, एका विशिष्ट अंमलबजावणीशी जोडलेला असतो.

म्हणून, आम्ही आधीच ठरवले आहे की आम्ही 0 मधून गेल्यानंतर ट्रायक उघडण्यात होणारा विलंब नियंत्रित करू. अशा प्रकारे, 0 च्या विलंब म्हणजे 100% पॉवर, अनंत विलंब = 0% पॉवर.

प्रश्नः आम्ही कोणत्या अचूकतेने करतो करू शकतोशक्ती व्यवस्थापित करा? सर्वसाधारणपणे, आमच्या टाइमरच्या अचूकतेसह. दुसरीकडे, किती वीज लागते? ०.०४ सेकंदांसाठी किती % पॉवर पुरवावी लागेल याची आम्ही गणना करतो. तत्त्वानुसार, अनुभवानुसार, 0.1 सेकंदाच्या वारंवारतेवर 1% अचूकतेसह पॉवर कंट्रोल 1 डिग्री तापमान राखण्यासाठी पुरेसे आहे. आमचे नियंत्रण ०.०४ सेकंद (२.५ पट वेगवान) आहे. म्हणून, पॉवर टेबलची जास्तीत जास्त 1/250 वी (0.4% वाढीमध्ये) गणना करण्याचा निर्णय घेण्यात आला. हे सारणीला फार मोठे (500 बाइट्स) नसण्याची परवानगी देते आणि त्याच वेळी 1% पेक्षा जास्त अचूकता असते. जर तुमच्या केसला अधिक अचूकतेची आवश्यकता असेल, तर त्याची पुनर्गणना करणे इतके अवघड नाही.

आता या सारणीचीच गणना करण्याबद्दल बोलूया. प्रथम, ते आहे की खात्यात घेतले पाहिजे ज्या क्षणी शून्य क्रॉसिंग सिग्नल सुरू होतो.माझ्या बाबतीत - 12V. म्हणजेच, जेव्हा इनपुट व्होल्टेज 12V च्या खाली जाईल, तेव्हा मला 0 मधून जाणारा सिग्नल प्राप्त होईल.

याचा अर्थ 100% पॉवरसाठी, स्टार्टअप वेळ = 12V प्रवास वेळ.

चला समीकरणांची प्रणाली सोडवू

; IntMoment:= 12V ; कमाल:= sqr(220*sqrt(2)); ( Sqr(Sin(Pi/2)*K) = कमाल; ( Sqr(Sin(X)*K) = IntMoment; ; 2*k/MaxCode = 1 - cos(T*Pi) ; cos(T*Pi) = 1-2*k/MaxCode ; T*Pi = arccos(1-2*k/MaxCode) ; T = arccos(1-2*k/MaxCode) / Pi

माझा प्रोसेसर 32786 च्या फ्रिक्वेंसीवर चालतो, PLL 384/2 वर सेट केला आहे, अर्ध-वेव्ह 100Hz आहे, ज्यावरून आम्हाला कळते की टाइमरमध्ये स्थिर लोड करण्यासाठी कोड T सारखा दिसतो:

65536-(T*(32768*384/2)/100.0 + 773)

आम्हाला विलंब वेळेची गणना करणे आवश्यक आहे, जे साइनसॉइडच्या समाविष्ट भागाच्या क्षेत्रामध्ये एकसमान वाढ देते. म्हणजेच, आपल्याकडे अशी वेळ असणे आवश्यक आहे जे शक्तीमध्ये एकसमान वाढ देतात. आपण निर्माण केलेली एकूण शक्ती ही संपूर्ण साइन वेव्हवर अविभाज्य असते. [हबवर सूत्रे कशी घालायची हे कोणाला माहीत आहे? मार्ग नाही? मी मग मॅपल नोटेशनमध्ये लिहितो].

कमाल = int(sqr(sin(x)), x=0..Pi) int(sqr(sin(x)), x=0..T*Pi) = x/2 - sin(2*x)/ 4 + C | 0..T*PI ​​= (T*Pi)/2 - sin(2*T*Pi)/4 (T*Pi)/2 - sin(2*T*Pi)/4 = Q*Pi/ 2

अशा प्रकारे, आपल्याला दिलेल्या अचूकतेसह सर्व Q मधून जाणे आवश्यक आहे आणि त्या प्रत्येकासाठी T शोधणे आवश्यक आहे.

मी हे माझ्यासाठी या मूर्ख मार्गाने सोडवले:

पर्ल जनरेटर

#!/usr/bin/perl # (T*Pi)/2 - sin(2*T*Pi)/4 = Q*Pi/2 वापर स्थिर PI => 4 * atan2(1, 1); $T = 1; ($i = 250; $i >= 0; $i--) ( $int = $i*PI/2/250; $ev = ($T*PI)/2-sin(2*$T* PI)/4; असताना(abs($ev-$int) > 0.0005) ( $T -= 0.0001; $ev = ($T*PI)/2-sin(2*$T*PI)/4; ) #प्रिंट $i."\t".$T."\n"; $कोड = 65536-($T*(32768*384/2)/100.0 + 773 %04Xh = $i/250); \n", $code%256, int($code/256), $code, $i; )

एवढेच, आउटपुटवर आम्हाला 0 (अधिक तंतोतंत, 12V द्वारे, मी वर म्हटल्याप्रमाणे) मधून जाण्याचा सिग्नल मिळाल्यानंतर इग्निशनच्या क्षणापर्यंत टाइमर लोडिंग स्थिरांकांशी संबंधित 250 मूल्यांची प्लेट प्राप्त झाली.

VII. इनपुट डेटा मापन

मी हा प्रश्न वगळत आहे कारण तो स्वतःच्या दीर्घ लेखास पात्र आहे. मी थर्मल रेझिस्टन्ससह समस्येचे निराकरण कसे केले ते माझ्या उशीरा ब्लॉगच्या संग्रहणात आढळू शकते.

आम्हाला माहित असणे आवश्यक असलेली मुख्य गोष्ट म्हणजे आम्ही आवश्यक वारंवारता (या प्रकरणात, 25Hz) आणि आवश्यक अचूकतेसह डेटा मोजतो (आउटपुट 1/32 अंशांमध्ये 0 ते 2048 अंश केल्विन पर्यंतची संख्या आहे). पुढील सर्व गणनेसाठी डेटा आधीच सामान्यीकृत केला गेला आहे असे गृहीत धरले जाते.

कोणाला स्वारस्य असल्यास, टिप्पण्यांमध्ये लिहा आणि पुढच्या वेळी मी थर्मोकपल्ससाठी हे कसे केले जाते याचे वर्णन करेन.

आठवा. प्रभाव गणना

आणि आता हे घडले आहे: शेवटी आम्ही जे काही सुरू केले ते करण्यासाठी आमच्याकडे सर्व डेटा आहे: नियंत्रण घटकाला किती शक्ती पुरवली जावी याची गणना करा.

पीआयडी कंट्रोलरचे सूत्र पुन्हा एकदा आठवूया:

U = K * (Err + (1/Ti)*Int + Td*dErr)

  • यू- वितरित करण्याची शक्ती;
  • के- आनुपातिक गुणांक (टीप - ते कंसातून काढले आहे, मी खाली का वर्णन करेन);
  • ति- एकीकरण वेळ स्थिर. कृपया लक्षात घ्या की गणना परस्पर मूल्य वापरतात;
  • Td- भिन्नता वेळ स्थिर
  • चूक- वर्तमान जुळत नाही (सेट पॉइंट आणि मोजलेले तापमान यातील फरक
  • dErr- न जुळणारे व्युत्पन्न (वर्तमान आणि मागील त्रुटीमधील फरक)
  • इंट- संचित विसंगत अविभाज्य (आम्ही पाहिलेल्या सर्व त्रुटींची बेरीज)

आम्ही पुन्हा विभाग III मध्ये उपस्थित केलेल्या प्रश्नाकडे आलो: हे तंत्रज्ञ वापरतील. म्हणून, सर्व अंमलबजावणीची क्लासिक चूक टाळणे अत्यंत महत्वाचे आहे - "गुणकांचे परिमाण जसे ते बाहेर येईल." आम्ही करू डिव्हाइसड्रायव्हिंगसाठी शारीरिकप्रक्रिया, ज्याचा अर्थ मॉडेल अनुरूप असणे आवश्यक आहे.

चला सर्व आयाम आउटपुट करूया. आंशिकपणे पुढे पाहताना, मी आधीच वर्णन केले आहे, परंतु आता आम्ही अधिक तपशीलवार प्रकट करू:

  • यू- शक्तीच्या % मध्ये मूल्य आहे. आणखी तंतोतंत - पॉवरच्या % च्या 2/5 वर, कारण आमचे टेबल 100% च्या 1/250 मधून जाते.
  • चूक- जुळत नाही, अंशांमध्ये निर्दिष्ट. अधिक तंतोतंत - 1/32 अंशांनंतर.
  • इंट- अविभाज्य ही वेळेतील अंशांची बेरीज आहे - आणि म्हणून पदवी * सेकंदाची परिमाणे आहे. अधिक अचूकपणे - (1/32 अंश)*(1/25 सेकंद)
  • ति- 1/25 सेकंदानंतर सेट करा
  • (1/Ti)*Int- गणना केल्यानंतर ते परिमाण (1/32 अंश) असलेले योगदान देते.
  • dErr- व्युत्पन्न, अंश/सेकंद किंवा अधिक तंतोतंत (1/32 अंश)/(1/25 सेकंद) चे परिमाण आहे
  • Td- 1/25 सेकंदानंतर सेट करा
  • Td*dErr- उत्पादनाने परिमाणात योगदान आणल्यानंतर (1/32 अंश)
  • (...) - म्हणून, कंसांतर्गत सर्व संज्ञा परिमाण (1/32 अंश) पर्यंत कमी केल्या आहेत
  • के- सहमत आहे यूआणि (...) , म्हणजे त्याचे परिमाण टक्के-प्रति-डिग्री आहे, अधिक अचूकपणे (2/5)%/(1/32 अंश)

आता तुम्ही स्पष्टपणे पाहू शकता की आनुपातिक गुणांक कंसातून का काढला आहे - हे तुम्हाला विभेदक आणि इंट गुणांक फक्त वेळ स्थिरांक म्हणून सोडण्याची परवानगी देते, परिणामी, ऑपरेटर सेट करताना साध्या आणि समजण्याजोग्या संख्येसह कार्य करते - टक्केवारी प्रति डिग्री इंटिग्रल आणि डिफरेंशियल गुणांकांसाठी आनुपातिक गुणांक आणि सेकंद.

आणि बिंदू आणि वेळेच्या परिमाणांच्या स्थानाच्या सोयीस्कर निवडीबद्दल धन्यवाद, जसे आपण आता पाहू, सर्व गणना जवळजवळ थेट केली जातात.

एक गोष्ट वगळता - आमच्याकडे प्रमाण आहे ति, आणि गणनासाठी ते आवश्यक आहे 1/Ti. मोठ्या विभागणी ऑपरेशन खूप महाग आहे. गुणाकार ऑपरेशन अनेक पटींनी स्वस्त आहे, म्हणून आम्ही गुणाकार वापरून अपरिवर्तनीय पूर्णांकांद्वारे उत्कृष्ट भागाकार वापरू. शेवटी, आमच्याकडे आहे के / ति / Tdअत्यंत क्वचितच बदलतात, आणि म्हणून ते बदलल्यानंतर आम्हाला हवे तितके विकृत करणे आम्हाला परवडते, मुख्य गोष्ट अशी आहे की मुख्य गणना चक्र लवकर कार्य करते.

त्यामुळे त्याऐवजी तिगणनेसाठी आम्ही त्यांना एका सेटमध्ये ठेवतो Ti_m, Ti_sh1, Ti_sh2; आणि प्रत्येक चक्रात आम्ही गणना करतो:
T1 = MULUH(Ti_m, Int) Q = SHR(T1+SHR(Int-T1, Ti_sh1), Ti_sh2)

आता आपण बिट बॅलन्सची गणना करतो. हे करण्यासाठी, चरण-दर-चरण संपूर्ण सूत्र लिहू:

  1. इओ = ई; आम्हाला पास होण्यासाठी त्रुटी आवश्यक आहे. त्रुटी - 16 बिट
  2. E = Y-X ; आम्ही नवीन विसंगतीची गणना करतो. 16 बिट
  3. Int = Int + (E+Eo)/2 ; चला त्रुटी समाकलित करूया. या प्रकरणात, आम्ही फरकाची अर्धी बेरीज (फरक योजना) मोजतो. 32 बिट = 32 बिट + 16 बिट
  4. cI = Int * (1/Ti); आम्ही अविभाज्य योगदानाची गणना करतो - 32bit * 32bit => 32bit
  5. cD = Td * (E-Eo); आम्ही विभेदक योगदानाची गणना करतो - 16*16 => 32bit
  6. PID = E + cI + cD ; सबपार; 16+32+32 => 32बिट
  7. U = K*PID/256 ; कोफ; 32*16/8 बिट => 40 बिट.

सर्व गणनेसाठी, 7व्या पायरीपर्यंतच्या बिंदूची स्थिती उजवीकडून 5व्या स्थानावर राहते. शेवटच्या क्षणी कानांसह एक मनोरंजक फेंट होतो. K हे अनुक्रमे 1/256 मध्ये सेट केले आहे, गुणाकारानंतर बिंदू डावीकडे 5+8=13व्या स्थानावर हलविला जातो, म्हणून आपण निकालाचे कमी-क्रमाचे 8 बिट टाकून दिले पाहिजेत. आणि परिणामाचा सर्वात कमी बाइट म्हणजे 2/5% नंतर आवश्यक असलेली शक्ती. हे आणखी एक कारण आहे की पॉवर 1/250 च्या चरणांमध्ये समतल केली जाते - यामुळे परिणाम एका बाइटमध्ये पॅक केला जाऊ शकतो आणि इच्छित परिणाम टेबलमधून सहजपणे मिळवता येतो.

पुढे, आम्हाला आठवते की आम्हाला फक्त 0 ते 250 पर्यंतच्या पॉवरमध्ये स्वारस्य आहे - म्हणून गणनाची 7 वी पायरी अगदी सोपी आहे, जेव्हा आम्हाला नकारात्मक संख्या मिळते - आम्ही लगेच uMin जोडतो. कोणताही उच्च बाइट शून्य नाही हे कळताच आम्ही लगेच uMax जोडतो. आणि जर शक्ती श्रेणीमध्ये वाढली तरच, आम्ही कमी uMin किंवा अधिक uMax तपासतो.

कोणालाही स्वारस्य असल्यास:

गणनांचा संपूर्ण गोंधळ

; PID नियंत्रण CalcMainEnd: ; संगणन, गो-गो. CalcPid: ; 1. Eo = E | 16bit Pid1: MOV Err0H, ErrH MOV Err0L, ErrL ; 2. E = Y-X | 16bit Pid2: CLR C MOV A, SettingL SUBB A, ThermoL MOV ErrL, A MOV A, SettingH SUBB A, ThermoH MOV ErrH, A JNB OV, Pid2Ov JB ACC.7, Pid2Max Pid2Min: #LOV ErrL,*0(*-0 32) MOV ErrH, #HIGH(-500*32) SJMP Pid2End Pid2Max: MOV ErrL, #LOW(500*32) MOV ErrH, #HIGH(500*32) SJMP Pid2End Pid2Ov: JNB ACC.7, Pid2PvN; चला CLR C MOV A, ErrL SUBB A, #LOW(-500*32) MOV A, ErrH SUBB A, #HIGH(-500*32) JNC Pid2End ; > -500 => सर्व काही ठीक असल्यास SJMP Pid2Min Pid2OvP: CLR C MOV A, ErrL SUBB A, #LOW(500*32) MOV A, ErrH SUBB A, #HIGH(500*32) JNC Pid2Max ; तर< 500 => सर्व काही ठीक आहे Pid2End: ; 3. Int = Int + (E+Eo)/2 | 32bit+16bit Pid3: JNB PowerReady, Pid3End; नेटवर्क नसल्यास, आम्ही अविभाज्य भाग MOV A, ErrL ADD A, Err0L MOV R0, A जतन करत नाही; तात्पुरते MOV A, ErrH ADDC A, Err0H MOV C, ACC.7 ; अर्धी बेरीज नेहमी 16 बिट्समध्ये बसते, म्हणून स्थलांतर करताना RRC A चे चिन्ह जतन करणे आवश्यक आहे; XCH A, R0 चिन्ह न गमावता भागू या; A= कमी-ऑर्डर भाग, R0 - उच्च-ऑर्डर अर्धा-सम RRC A ; JNB IntS, Pid3IntPos जोडले; Int नकारात्मक आहे, R0:A साठी चिन्ह बदलूया, अशा प्रकारे इंट CLR C CPL A ADD A, #1 XCH A, R0 CPL A ADDC A, #0 XCH A, R0 Pid3IntPos: ; Int आणि R0:A मध्ये आता सुसंगत चिन्हे आहेत, म्हणून आम्ही नेहमीच्या पद्धतीने ADD A, IntLL MOV IntLL, A MOV A, IntLH ADDC A, R0 MOV IntLH, A MOV A, R0 JB ACC.7, Pid3Neg ; आपण नकारात्मक फरक जोडला आहे का? ; फरक सकारात्मक असल्यास, आम्ही फक्त JNC कॅरी jPid3End चा प्रसार करतो; जर आम्ही एखादा शब्द जोडला आणि कोणतेही हस्तांतरण नसेल, तर आम्हाला काहीही करण्याची आवश्यकता नाही. INC IntHL; MOV A, IntHL JNZ Pid3End वरील कॅरीचा प्रसार करा; जर हस्तांतरण 4थ्या बाइटवर झाले नाही, तर सर्व काही ठीक आहे INC IntHH; आम्ही कॅरीला सर्वात लक्षणीय बाइट MOV A, IntHH JNZ Pid3End पर्यंत वाढवतो; हस्तांतरण आणखी वर जात नसल्यास, सर्वकाही ठीक आहे MOV IntHH, #0FFh ; हस्तांतरण जास्त असल्यास, आम्ही कमाल मर्यादा MOV IntHL, #0FFh MOV IntLH, #0FFh MOV IntLL, #0FFh jPid3End: SJMP Pid3End Pid3Neg: ; जर फरक नकारात्मक असेल, तर तुम्हाला दोन्ही वेळा जोडणे सुरू ठेवावे लागेल, परंतु FFh MOV A, IntHL ADDC A, #0FFh MOV IntHL, A MOV A, IntHH ADDC A, #0FFh MOV IntHH, A JC Pid3End ; जर कॅरीओव्हर असेल, तर इंटिग्रलचे चिन्ह CPL IntS बदललेले नाही; जर कोणतेही हस्तांतरण नसेल, तर इंटिग्रलचे चिन्ह CPL C बदलले आहे; परिणामी क्रमांकाचे चिन्ह MOV A, #0 SUBB A, IntLL MOV IntLL, A MOV A, #0 SUBB A, IntLH MOV IntLH, A MOV A, #0 SUBB A, IntHL MOV IntHL, A MOV A, # 0 SUBB A , IntHH MOV IntHH, A ; ते नकारात्मक झाल्यामुळे, हस्तांतरण नेहमी येथे असेल Pid3End: ; 5. cI = Int*(1/Ti) | 32*32=>32bit Pid5: ; R3:R2:R1:R0 = Int*(1/Ti) JB Ti_sh1, Pid5Calc ; जर Ti_sh1=0, तर 1/Ti=1 किंवा Ti=0. आणि तुम्हाला MOV A, Ti_mLL ORL A, Ti_mLH ORL A, Ti_mHL ORL A, Ti_mHH JZ Pid5Zero MOV R0, IntLL MOV R1, IntLH MOV R2, IntHL MOV R3, IntHH AJMP Pid5, IntHH AJMP Pid5, काहीही करण्याची आवश्यकता नाही. #0 MOV R0 , A MOV R1, A MOV R2, A MOV R3, A MOV IntLL, A MOV IntLH, A MOV IntHL, A MOV IntHH, A AJMP Pid5End Pid5Calc: ; R7:R6:R5:R4[:R3] = MULUH(Int*Ti_m) // R3 ला MOV R2, #0 ;; R7:R6 = IntHH*Ti_mHH MOV A, IntHH MOV B, Ti_mHH MUL AB MOV R7, B MOV R6, A ; R6:R5 += IntHL*Ti_mHH MOV A, IntHL MOV B, Ti_mHH MUL AB MOV R5, A MOV A, R6 जोडा A, B MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A ; R5:R4 += IntLH*Ti_mHH MOV A, IntLH MOV B, Ti_mHH MUL AB MOV R4, A MOV A, R5 जोडा A, B MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A ; R4:R3 += IntLL*Ti_mHH MOV A, IntLL MOV B, Ti_mHH MUL AB MOV R3, A MOV A, R4 जोडा A, B MOV R4, A MOV A, R2 ; A=0 ADDC A, R5 MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A;; R6:R5 += IntHH*Ti_mHL MOV A, IntHH MOV B, Ti_mHL MUL AB ADD A, R5 MOV R5, A MOV A, R6 ADDC A, B MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A ; R5:R4 += IntHL*Ti_mHL MOV A, IntHL MOV B, Ti_mHL MUL AB ADD A, R4 MOV R4, A MOV A, R5 ADDC A, B MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A ; R4:R3 += IntLH*Ti_mHL MOV A, IntLH MOV B, Ti_mHL MUL AB MOV A, R3 MOV R3, A MOV A, R4 ADDC A, B MOV R4, A MOV A, R2 ; A=0 ADDC A, R5 MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A;; R5:R4 += IntHH*Ti_mLH MOV A, IntHH MOV B, Ti_mLH MUL AB ADD A, R4 MOV R4, A MOV A, R5 ADDC A, B MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A ; R4:R3 += IntHL*Ti_mLH MOV A, IntHL MOV B, Ti_mLH MUL AB ADD A, R3 MOV R3, A MOV A, R4 ADDC A, B MOV R4, A MOV A, R2 ; A=0 ADDC A, R5 MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A;; R4:R3 += IntHH*Ti_mLL MOV A, IntHH MOV B, Ti_mLL MUL AB ADD A, R3 MOV R3, A MOV A, R4 ADDC A, B MOV R4, A MOV A, R2 ; A=0 ADDC A, R5 MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A ;;; जर R3 > 7F -- MOV A, R3 JNB ACC. 7, Pid5Shift; जर R3<80 -- округление не надо ANL A, #7Fh JZ Pid5Round ; Если = 80 -- округляем до нечетного MOV A, #1 ADD A, R4 MOV R4, A MOV A, R2 ; A=0 ADDC A, R5 MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A SJMP Pid5Shift Pid5Round: MOV A, R4 ORL A, #01h MOV R4, A ;JMP Pid5Shift Pid5Shift: ; R3:R2:R1:R0 = (Int-R7:R6:R5:R4) > > 1 CLR C MOV A, IntLL SUBB A, R4 MOV R0, A MOV A, IntLH SUBB A, R5 MOV R1, A MOV A, IntHL SUBB A, R6 MOV R2, A MOV A, IntHH SUBB A, R7 RRC A ; >>1 कॅरी न करता MOV R3, A MOV A, R2 RRC A MOV R2, A MOV A, R1 RRC A MOV R1, A MOV A, R0 RRC A ;MOV R0, A ; R3:R2:R1:R0 += R7:R6:R5:R4 ;MOV A, R0 ADD A, R4 MOV R0, A MOV A, R1 ADDC A, R5 MOV R1, A MOV A, R2 ADDC A, R6 MOV R2, A MOV A, R3 ADDC A, R7 MOV R7, A ; आता उजवीकडे sh2 वर जा. ; sh2 16 पर्यंत असू शकते (आमचा Ti 16-बिट असल्याने; चला 16-बिट शिफ्टची आवश्यकता तपासूया) MOV A, Ti_sh2 JNB ACC.4, Pid5ShiftUnder16 ; आम्हाला MOV R0, 18h+2, bank 3 MOV R1, 18h+3, bank 3 MOV R2, #0 MOV R3, #0 Pid5ShiftUnder16 द्वारे >=16 शिफ्ट करणे आवश्यक आहे: JNB ACC 3, Pid5ShiftUnder8 ; आम्हाला MOV R0, 18h+1 सह 1 बाइट शिफ्ट करणे आवश्यक आहे; R1, बँक 3 MOV R1, 18h+2; R2, bank 3 MOV R2, 18h+3; R3, bank 3 MOV R3, #0 Pid5ShiftUnder8: ANL A, #07h JZ Pid5End ; तुम्हाला बाइटच्या आत जाण्याची आवश्यकता नसल्यास - सर्वकाही MOV R4, A SJMP Pid5ShiftRight Pid5NextShift: CLR C ; या टप्प्यावर C आमच्याकडे अजूनही संभाव्यतः लक्षणीय उच्च बिट आहे! Pid5ShiftRight: MOV A, R3 RRC A MOV R3, A MOV A, R2 RRC A MOV R2, A MOV A, R1 RRC A MOV R1, A MOV A, R0 RRC A MOV R0, A DJNZ R4, Pid5NextShift ; हेच, सर्व बदलांनंतर आम्हाला परिणाम मिळाला; हे विसरू नका की R3:R2:R1:R0 मध्ये गणना केली जाते; आता संख्या सकारात्मक आहे, आणि त्याचे चिन्ह IntS Pid5End मध्ये आहे: ; 4. PID += [ cD = Td * (E-Eo) ] | 16*16=>32bit Pid4: ; cD = R7:R6:R5:R4; ErrD = E-Eo CLR C MOV A, ErrL SUBB A, Err0L MOV DiffL, A MOV A, ErrH SUBB A, Err0H MOV DiffH, A MOV C, ACC.7 ; निकालाचे चिन्ह घ्या MOV DiffS, C ; E-Eo JNC Pid4Mul हे चिन्ह ठेवूया; Diff -- नकारात्मक, चिन्ह उलट MOV A, DiffL CPL A ADD A, #1 MOV DiffL, A MOV A, DiffH CPL A ADDC A, #0 MOV DiffH, A Pid4Mul: ; R7:R6 = DiffH*TdH ; MOV A, DiffH = कोणत्याही परिस्थितीत A=DiffH MOV B, TdH MUL AB MOV R6, A MOV R7, B ; R5:R4 = DiffL*TdL MOV A, DiffL MOV B, TdL MUL AB MOV R4, A MOV R5, B ; R6:R5 += DiffH*TdL MOV A, DiffH MOV B, TdL MUL AB जोडा A, R5 MOV R5, A MOV A, R6 जोडा A, B MOV R6, A MOV A, R7 ADDC A, #0 MOV R7, अ; R6:R5 += DiffL*TdH MOV A, DiffL MOV B, TdH MUL AB ADD A, R5 MOV R5, A MOV A, R6 जोडा A, B MOV R6, A MOV A, R7 ADDC A, #0 MOV R7, अ; 6. PID = E + cI + cD | 32 बिट Pid6: ; R3:R2:R1:R0 समान cI, IntS मध्ये साइन इन करा; ; R7:R6:R5:R4 = cD; DiffS मध्ये साइन इन करा; ई रिव्हर्स टू च्या पूरक JB IntS, ChkDiffN JNB DiffS, Pid6Add ; Int>0, Diff>0 => SJMP Pid6Sub जोडा; Int>0, Diff<0 =>Sub ChkDiffN: JNB DiffS, Pid6Sub ; इंट<0, Diff>0 => उप; इंट<0, Diff<0 =>Pid6 जोडा जोडा: ; समान चिन्ह => त्यांना ओव्हरफ्लो चेकसह जोडा MOV A, R0 ADD A, R4 MOV R0, A MOV A, R1 ADDC A, R5 MOV R1, A MOV A, R2 ADDC A, R6 MOV R2, A MOV A, R3 ADDC A, R7 MOV R3, A JNC Pid6Err ; जर तेथे कॅरी नसेल, तर जोडणीचा परिणाम म्हणून ओव्हरफ्लो MOV R3, #0FFh MOV R2, #0FFh MOV R1, #0FFh MOV R0, #0FFh SJMP Pid6Err Pid6Sub: ; चिन्हे भिन्न आहेत - दुसऱ्यामधून एक वजा करा आणि निकालाचे चिन्ह तपासा CLR C MOV A, R4 SUBB A, R0 MOV R0, A MOV A, R5 SUBB A, R1 MOV R1, A MOV A, R6 SUBB A, R2 MOV R2, A MOV A, R7 SUBB A, R3 MOV R3, A JNC Pid6Err ; उधारी नसल्यास, निकालाचे चिन्ह DiffS CPL DiffS च्या चिन्हासारखे असते; कर्ज घेतले असल्यास, DiffS चे चिन्ह आणि परिणाम MOV R6, #0 ; R6=0 MOV A, R0 CPL A ADDC A, R6 ; R6=0, C=1 => क्रिया +1 MOV R0, A MOV A, R1 CPL A ADDC A, R6 ; +MOV R1, A MOV A, R2 CPL A ADDC A, R6 MOV R2, A MOV A, R3 CPL A ADDC A, R6 MOV R3, A Pid6Err: MOV R6, #0 ; R6=0 ; R3:R2:R1:R0 मध्ये -- lies cI+cD; DiffS मध्ये बेरीज चिन्ह; तुम्हाला रिव्हर्स कोडमध्ये लिहिलेली एरर जोडणे/वजा करणे आवश्यक आहे; चला Err चे चिन्ह कमी करून DiffS MOV R4, ErrL MOV A, ErrH JB ACC.7, Pid6ChkDiffS JNB DiffS, Pid6SumErrNoInv ; एरर>0, डिफ>0 => NoInv SJMP Pid6SumErrInv Pid6ChkDiffS: JNB DiffS, Pid6SumErrNoInv ; चूक<0, Diff>0 => NoInv Pid6SumErrInv: ; एररमध्ये DiffS - उलटा SETB C पेक्षा वेगळे चिन्ह आहे; स्थिती C MOV A, ErrL CPL A ADDC A, R6 बद्दल खात्री नाही; A+=R6+C, R6=0 C=1 => A+=1 MOV R4, A ; R4=ErrL MOV A, ErrH CPL A ADDC A, R6 Pid6SumErrNoInv: MOV R5, A ; ErrH Pid6SumErr: ; तर, R5:R4 मध्ये Err आहे, ज्याचे चिन्ह DiffS शी सुसंगत आहे; परंतु उलट पूरक कोडमध्ये MOV A, R0 ADD A, R4 MOV R0, A MOV A, R5 CLR F0 JNB ACC.7, Pid6SubErrPos SETB F0 MOV R6, #0FFh ; नकारात्मक जोडा => FFs Pid6SubErrPos जोडा: ADDC A, R1 MOV R1, A MOV A, R2 ADDC A, R6 ; +विस्तार MOV R2, A MOV A, R3 ADDC A, R6 ; +विस्तार MOV R3, A MOV R6, #0 ; एकूण रकमेचे चिन्ह JNC Pid6ChkF0 JB F0, Pid7 बदलले आहे की नाही हे तपासणे आवश्यक आहे; चूक<0, был перенос =>चिन्ह बदलले नाही, SJMP Pid6SumOv ओव्हरफ्लो नाही; एरर>0, एक हस्तांतरण होते => ओव्हरफ्लो Pid6ChkF0: JNB F0, Pid7 ; एरर>0, कॅरी नाही => ओव्हरफ्लो नाही SJMP Pid6SumUf; चूक<0, небыло переноса =>चिन्ह बदलले आहे Pid6SumUf: ; चुकल्यास<0 и небыло переноса =>चिन्ह बदलले CPL DiffS MOV A, R0 CPL A जोडा A, #1 ; C=?, म्हणून आम्ही नेहमीच्या पद्धतीचा वापर करून 1 जोडतो MOV R0, A MOV A, R1 CPL A ADDC A, R6 MOV R1, A MOV A, R2 CPL A ADDC A, R6 MOV R2, A MOV A, R3 CPL A ADDC A, R6 MOV R3, A SJMP Pid7 ; परिणाम आणि DiffS चे चिन्ह Pid6SumOv: ; ओव्हरफ्लो => कमाल MOV R0, #0FFh MOV R1, #0FFh MOV R2, #0FFh MOV R3, #0FFh ; 7. U = K*PID/256 | 32bit*16bit/8bit => 40bit, ; | जे 10 बिट पर्यंत कापले जातात; | Pid7 ची गणना करताना: ; R3:R2:R1:R0 मध्ये PID चा परिणाम असतो, DiffS मध्ये त्याचे चिन्ह असते; आम्हाला K*PID/256 ची गणना करायची आहे, परिणाम 10 बिट्सपर्यंत मर्यादित आहे; K नेहमी सकारात्मक असते, म्हणून जर PID< 0 =>किमान JB DiffS, Pid7Umin ; आम्ही वरची मर्यादा काटेकोरपणे 16 बिट्सपर्यंत मर्यादित करू शकतो, ; मग R3 != ​​0 => कोणत्याही परिस्थितीत जास्तीत जास्त सेट केल्यास MOV A, R3 JNZ Pid7Umax ; = ; R7=0 R6=0, हे लक्षात घेऊन आम्ही गणना करतो; अन्यथा ओव्हरफ्लो आहे, म्हणून आम्ही R7 आणि R6 ला अजिबात स्पर्श करत नाही; परंतु आम्ही निकाल तपासतो; R7:R6 = R2*KH MOV A, R2 JZ Pid7S1 MOV A, KH JNZ Pid7Umax ; जर R2!=0 आणि KH!=0 => R7:R6>0 => ओव्हरफ्लो Pid7S1: ; R6:R5 = R2*KL MOV A, R2 MOV B, KL MUL AB MOV R5, A MOV A, B JNZ Pid7Umax ; जर R6 > 0 => ओव्हरफ्लो; R6:R5 = R1*KH MOV A, R1 MOV B, KH MUL AB ADD A, R5 JC Pid7Umax ; जर R6 > 0 => ओव्हरफ्लो MOV R5, A MOV A, B JNZ Pid7Umax ; जर R6 > 0 => ओव्हरफ्लो; R5:R4 = R0*KH MOV A, R0 MOV B, KH MUL AB MOV R4, A MOV A, R5 ADD A, B JC Pid7Umax ; जर R6 > 0 => ओव्हरफ्लो MOV R5, A ; R5:R4 = R1*KL MOV A, R1 MOV B, KL MUL AB ADD A, R4 MOV R4, A MOV A, R5 ADDC A, B JC Pid7Umax ; जर R6 > 0 => ओव्हरफ्लो MOV R5, A ; R4:R3 = R0*KL MOV A, R0 MOV B, KL MUL AB RLC A ; C = R3>=0x80, Z=R3>0x80 MOV R3, #0FFh ; R3<>0x80 => काहीही नाही JNZ Pid7S2 MOV R3, #0FEh ; R3==0x80 => गोल ते सम Pid7S2: MOV A, R4 ADDC A, B ; आम्ही गुणाकार जोडतो, नोंदणी करतो आणि कॅरी-राउंड ANL A, R3 ; आणि सम बरोबर गोलाकार केल्यास, आम्ही सर्वात कमी लक्षणीय बिट MOV R4, A MOV A, R5 ADDC A, R6 टाकून देतो; JC Pid7Umax ; जर R6 > 0 => ओव्हरफ्लो MOV R5, A ; R5:R4 => 16-बिट मर्यादित परिणाम; आता आम्हाला R5:R4 ला Umax/Umin MOV A, UmaxL SUBB A, R4 पर्यंत मर्यादित करण्याची आवश्यकता आहे; C=0 सध्या MOV A, UmaxH SUBB A, R5 JC Pid7Umax ; जर R5:R4>Umax => R5:R4 = Umax MOV A, UminL SUBB A, R4 ; C=0 सध्या MOV A, UminH SUBB A, R5 JNC Pid7Umin ; जर R5:R4 R5:R4 = Umin ; पॉवर कॅलक्युलेटेड MOV UH, R5 MOV UL, R4 SETB URready AJMP CalcExit Pid7Umax: ; जास्तीत जास्त पॉवर MOV UH, UmaxH MOV UL, UmaxL SETB URready AJMP CalcExit Pid7Umin सेट करा: ; किमान पॉवर MOV UH, UminH MOV UL, UminL SETB URready AJMP CalcExit सेट करा

IX. प्रभावाचा वापर.

म्हणून आमच्याकडे एक गणना केलेला प्रभाव आहे आणि आमचे काम ते लागू करणे आहे. या उद्देशासाठी, एक सामान्य ऑपरेटिंग सायकल 50Hz च्या वारंवारतेवर चालते. सम चक्रावर, मोजमाप आणि गणना केली जाते, विषम चक्रावर, प्रभाव लागू केला जातो. अशा प्रकारे, सामान्य योजना प्राप्त होते: पॉवर सेट केली जाते, मोजमाप आणि गणना एका साइनसॉइडद्वारे केली जाते आणि दुसर्याद्वारे नवीन वापरली जाते.

X. तोटे.

फरक योजनेच्या तुलनेत, डायरेक्ट स्कीममध्ये खूप कमी तोटे आहेत, मी पाहिलेली त्यांची यादी येथे आहे:
  • परिमाणांसाठी लेखांकन. सर्वात महत्वाची आणि सर्वात सामान्य चूक. K, Ki, Kd काय आहेत हे नमूद केल्याशिवाय तुम्ही U=K*(Err+Ki*Int+Kd*Diff) घेऊ शकत नाही. आणि कोणत्या अचूकतेने? हे गुणांक Ki साठी विशेषतः महत्वाचे आहे, ज्यामध्ये वेळेचा व्यस्त परिमाण आहे - जर ऑपरेशन पूर्णांकांमध्ये असेल, तर तुम्ही फक्त त्याचा गुणाकार करू शकत नाही - कारण तेथे DIVISION असणे आवश्यक आहे, आणि व्यस्त संख्या पूर्णांकांमध्ये दर्शविली जाऊ शकत नाही.
  • चिन्हासाठी लेखांकन. दुसरी अतिशय महत्त्वाची गोष्ट म्हणजे चिन्ह विचारात घेणे. सर्व ऑपरेशन्सवर स्वाक्षरी करणे आवश्यक आहे, अविभाज्य चिन्ह जमा करणे आवश्यक आहे - कारण ते केवळ आनुपातिक घटक बदलत नाही तर बाह्य प्रभावांना प्रतिकार करण्यास देखील अनुमती देते, उदाहरणार्थ, मिश्रणातूनच उष्णता सोडणे; आणि नंतर त्याचे चिन्ह नकारात्मक आहे.
  • ओव्हरफ्लो अकाउंटिंग. एकतर 0% ते 100% पॉवर मिळवणे किंवा गणना केलेली पॉवर 100% पेक्षा जास्त किंवा 0% पेक्षा कमी असणे महत्त्वाचे आहे. उदाहरणार्थ, नकारात्मक उप-कंस परिणाम मिळाल्यास सर्व गणना करण्याची आवश्यकता नाही. परंतु त्याच वेळी, अतिरिक्त उत्पादनादरम्यान ओव्हरफ्लो होऊ शकतो हे लक्षात घेणे आवश्यक आहे - आणि ते "100% पेक्षा जास्त" म्हणून विचारात घेतले पाहिजे आणि कोणत्याही प्रकारे ओव्हरफ्लो झाल्यानंतर परिणाम सोडू नये. . हे सर्व प्रथम, जेव्हा आवश्यक असेल तेव्हा नियमनाच्या अभावाने भरलेले आहे - ऑब्जेक्ट आवश्यक तापमानापेक्षा कमी आहे आणि वीज पुरवली जात नाही
  • गणना वेळ लेखा. मोठ्या-बिट गुणाकारांची आवश्यकता (वक्र अंमलबजावणीसह, विभागणी देखील) वेळ घेते, म्हणून गणनाच्या सर्वात वाईट-केस आवृत्तीच्या अंमलबजावणीच्या वेळेची गणना करणे अत्यंत महत्वाचे आहे आणि ते मोजमापांमधील मोकळ्या वेळेपेक्षा कमी असावे. . असे करण्यात अयशस्वी झाल्यास एक अप्रबंधित वस्तू बनते जी "कार्य करते असे दिसते, परंतु कसे तरी योग्य कार्य करत नाही."

इलेव्हन. निष्कर्ष.

परिणामी, थेट अंमलबजावणी योजनेत सारख्याच समस्या येत नाहीत, परंतु अधिक संगणकीय खर्चाची आवश्यकता असते. तथापि, योग्यरित्या अंमलात आणल्यास, थेट सर्किट अगदी स्वस्त 8-बिट मायक्रोकंट्रोलरवर देखील लागू आहे आणि अधिक अंदाजे परिणाम देते.

पीआयडी कंट्रोलर फीडबॅक कंट्रोल लूपमधील एक दुवा आहे जो मोजलेल्या पॅरामीटरसाठी सेट मूल्य राखण्यासाठी वापरला जातो. पीआयडी कंट्रोलर सेट मूल्य (तथाकथित सेट पॉइंट) पासून स्थिर मूल्याचे विचलन मोजतो आणि एक नियंत्रण सिग्नल तयार करतो, जी तीन पदांची बेरीज आहे, त्यातील पहिली या विचलनाच्या प्रमाणात असते, दुसरी प्रमाणबद्ध असते. विचलनाच्या अविभाज्यतेशी आणि तिसरे विचलनाच्या व्युत्पन्नाच्या प्रमाणात आहे. जर काही घटक संज्ञा वापरल्या गेल्या नाहीत, तर नियंत्रकाला त्यानुसार आनुपातिक-अविभाज्य, आनुपातिक-व्युत्पन्न, आनुपातिक इ. असे म्हटले जाते. आकृती 2 पीआयडी नियंत्रकाचे सरलीकृत कार्यात्मक आकृती दर्शवते:

तांदूळ. 2. पीआयडी कंट्रोलरचे कार्यात्मक आकृती.

E(t) - सेटपॉईंट (त्रुटी) पासून मोजलेल्या मूल्याचे विचलन;
u(t) ही कंट्रोलरद्वारे व्युत्पन्न केलेली नियंत्रण क्रिया आहे.

आकृती 3 एकल फंक्शनल ब्लॉकच्या स्वरूपात पीआयडी कंट्रोलरचे अधिक वैशिष्ट्यपूर्ण प्रतिनिधित्व दर्शवते, जे औद्योगिक नियंत्रण प्रणालीसाठी वैशिष्ट्यपूर्ण आहे.

तांदूळ. 3. एकल फंक्शनल ब्लॉक म्हणून पीआयडी कंट्रोलरचे सरलीकृत प्रतिनिधित्व.

पीआयडी कंट्रोलरचा उद्देश OP चे दुसरे मूल्य बदलून दिलेल्या मूल्य SP वर विशिष्ट मूल्य PV राखणे आहे, जेथे

पीव्ही - मोजलेले पॅरामीटर (प्रक्रिया मूल्य);
एसपी - मोजलेल्या पॅरामीटरचे निर्दिष्ट मूल्य (सेटपॉइंट);
ओपी - नियंत्रण क्रिया (आउटपुट);
फरक (SP-PV) याला एरर किंवा बेमेल म्हणतात.

आधीच म्हटल्याप्रमाणे, आउटपुट सिग्नल ओपी तीन अटींद्वारे निर्धारित केले जाते:

OP = P + DI + TI = KP * (SP-PV) + KDI * d(SP-PV)/dt + KTI * ?(SP-PV)dt;

जेथे KP, KDI, KTI हे अनुक्रमे आनुपातिक, विभेदक आणि अविभाज्य घटकांचे लाभ गुणांक आहेत. ? - एकीकरणाचे चिन्ह.

तथापि, बहुतेक वास्तविक प्रणालींमध्ये ते आउटपुट सिग्नलसाठी थोडेसे वेगळे सूत्र वापरतात, ज्यामध्ये आनुपातिक गुणांक ब्रॅकेटच्या बाहेर असतो:

OP = Pp * ((SP-PV) + PD * d(SP-PV)/dt + PI * ?(SP-PV)dt),

जेथे Pp = 1/KP (प्रपोर्शनल बँड); पीडी = केडीआय (भिन्नता स्थिर); PI = 1/KTI (एकीकरणाचा स्थिरांक).

आता प्रत्येक घटकाचा अर्थ पाहू.

आनुपातिक घटक.

आनुपातिक घटक एका दिलेल्या वेळी पाहिल्या गेलेल्या स्थिर प्रमाणाच्या मूल्यामध्ये थेट त्रुटी (SP-PV) दूर करण्याचा प्रयत्न करतो. या घटकाचे मूल्य सेट मूल्य (SP-PV) पासून मोजलेल्या मूल्याच्या विचलनाशी थेट प्रमाणात असते. म्हणून जर इनपुट सिग्नल सेटपॉइंटच्या समान असेल, म्हणजे. PV=SP, नंतर आनुपातिक घटक शून्य आहे.

फक्त एक आनुपातिक नियंत्रक वापरताना, प्रॅक्टिसमध्ये नियंत्रित व्हेरिएबलचे मूल्य कधीही सेट मूल्यावर सेट केले जात नाही (PVset=SP). एक तथाकथित स्थिर त्रुटी आहे, जी नियंत्रित व्हेरिएबलच्या अशा विचलनाच्या समान आहे जी आउटपुट सिग्नल प्रदान करते जे आउटपुट व्हेरिएबलला या मूल्यावर स्थिर करते. उदाहरणार्थ, तापमान नियंत्रकामध्ये, आउटपुट सिग्नल OP, जे हीटर पॉवरचे नियमन करते, PV तापमान सेट पॉइंट SP जवळ येत असताना हळूहळू कमी होते:

जेव्हा PV -> SP, OP -> 0.

सिस्टम एका विशिष्ट ओपी मूल्यावर स्थिर होते, ज्यावर हीटरची शक्ती उष्णतेच्या नुकसानाच्या बरोबरीची असते. या प्रकरणात, तापमान सेट बिंदूपर्यंत पोहोचू शकत नाही, कारण या प्रकरणात हीटरची शक्ती शून्य होईल (OP = 0), आणि ते थंड होण्यास सुरवात होईल आणि त्याच वेळी तापमान कमी होईल.

जसजसे आनुपातिकता गुणांक (नफा) वाढतो तसतसे स्थिर त्रुटी कमी होते, तथापि, खूप मोठा फायदा स्वयं-दोलनास कारणीभूत ठरू शकतो आणि गुणांकात आणखी वाढ झाल्याने, प्रणाली स्थिरता गमावू शकते आणि ओव्हरड्राइव्हमध्ये जाऊ शकते.

अविभाज्य घटक.

स्थिर त्रुटी दूर करण्यासाठी, एक अविभाज्य घटक सादर केला जातो. हे नियामकाला मागील अनुभवातून "शिकण्यास" अनुमती देते. जर सिस्टीमला बाह्य व्यत्यय येत नसेल, तर काही काळानंतर नियंत्रित व्हेरिएबल सेट मूल्यावर स्थिर होते. स्थिरीकरण (PV=SP) दरम्यान, आनुपातिक घटक शून्याच्या समान असेल आणि आउटपुट सिग्नल पूर्णपणे अविभाज्य घटकाद्वारे प्रदान केला जाईल. स्थिर विसंगत मूल्यावर (SP-PV), अविभाज्य घटक हे मूल्य दर्शविते जे वेळेनुसार रेषीयपणे वाढते.

भौतिकदृष्ट्या, अविभाज्य घटक विसंगत मूल्यातील बदलास नियंत्रकाच्या प्रतिसादात विलंब दर्शवतो, ज्यामुळे प्रणालीमध्ये काही जडत्व येते, जे उच्च संवेदनशीलतेसह वस्तू नियंत्रित करण्यासाठी उपयुक्त ठरू शकते.

विभेदक घटक.

विभेदक घटक नियंत्रित प्रमाणाच्या अपेक्षित विचलनांचा प्रतिकार करतो, जणू भविष्यात ऑब्जेक्टच्या वर्तनाचा अंदाज लावतो. हे विचलन बाह्य गडबड किंवा सिस्टमवरील नियामकांच्या प्रभावामध्ये विलंबाने उत्तेजित केले जाऊ शकते.

नियंत्रित व्हेरिएबल जितक्या वेगाने सेटपॉईंटपासून विचलित होईल तितकी विभेदक घटकाद्वारे तयार केलेली प्रतिक्रिया अधिक मजबूत होईल. जेव्हा विसंगती स्थिर मूल्य बनते, तेव्हा विभेदक घटक नियंत्रण सिग्नलवर परिणाम करणे थांबवते.

पीआयडी कंट्रोलर ट्यून करण्याच्या प्रक्रियेमध्ये मुख्यतः सेटपॉइंट आणि वरील तीन गुणांकांची मूल्ये सेट करणे समाविष्ट असते. सिस्टमची सर्वात मोठी स्थिरता सुनिश्चित करण्यासाठी पीआयडी कंट्रोलरच्या इष्टतम गुणांकांची गणना करण्यासाठी अनेक गणितीय पद्धती आहेत. तथापि, सराव मध्ये, नियामक समायोजित करणे प्रायोगिकरित्या केले जाते (म्हणून बोलायचे तर, "डोळ्याद्वारे"). आधुनिक स्वयंचलित प्रक्रिया नियंत्रण प्रणाली अनेकदा तथाकथित सेल्फ-ट्यूनिंग पीआयडी कंट्रोलर वापरतात, जे ऑब्जेक्टवर एकच प्रभाव लागू करून आणि प्रतिसादाचे विश्लेषण करून, आपोआप सेट करतात, जर इष्टतम नसतील, तर बऱ्यापैकी चांगले गुणांक. शिवाय, अनुकूलन केलेल्या PID नियंत्रणासाठी अल्गोरिदम आहेत ज्यात नियंत्रण प्रक्रियेदरम्यान नियंत्रण गुणांकांचे स्वयंचलित समायोजन (समायोजन) समाविष्ट आहे. त्यांच्या मदतीने, अगदी उच्च नॉनलाइनर सिस्टममध्ये देखील नियंत्रणाची उच्च गुणवत्ता प्राप्त करणे शक्य आहे, परंतु काही कारणास्तव, आजपर्यंत तंत्रज्ञ या कार्यक्षमतेला मोठ्या संशयाने हाताळतात.

अर्ज.

पीआयडी नियंत्रक कशासाठी वापरले जातात? उदाहरणासह स्पष्ट करणे चांगले. समजा एक अमूर्त तांत्रिक प्रक्रिया आहे. कंटेनरमधील पाणी विशिष्ट तापमानात गरम आणि राखले पाहिजे. कंटेनरच्या खाली असलेल्या गॅस बर्नरचा वापर पाणी गरम करण्यासाठी केला जातो. दहन तीव्रता गॅस सप्लाई वाल्वद्वारे नियंत्रित केली जाते. आकृती 4 दाखवते की हे PID नियंत्रण वापरून कसे केले जाऊ शकते.

तांदूळ. 4. पीआयडी कंट्रोलर वापरण्याचे उदाहरण.

तापमान सेटपॉईंट ऑपरेटरद्वारे व्यक्तिचलितपणे सेट केले जाते. रेग्युलेटर, सेट पॉइंट आणि तापमान सेन्सर रीडिंगमधील फरकाचे विश्लेषण करून, बर्नरला गॅस पुरवठा नियंत्रण वाल्व नियंत्रित करण्यासाठी सिग्नल व्युत्पन्न करतो.

नमूद केल्याप्रमाणे, नियंत्रणाची गुणवत्ता कंट्रोलर गुणांकांच्या सेटिंग्जवर अवलंबून असते. PID चुकीच्या पद्धतीने कॉन्फिगर केल्यावर आकृती 5 सिस्टीमचे वर्तन दाखवते.

तांदूळ. 5. खराब PID कंट्रोलर सेटिंग्जसह क्षणिक प्रक्रिया.

येथे ऑपरेटरने सेटिंग बदलण्याचा निर्णय घेतला. आकृतीवरून पाहिल्याप्रमाणे, रेग्युलेटर योग्यरित्या कार्य करण्यास सक्षम नाही आणि एक विचलित दोलन प्रक्रिया दिसून येते. प्रणाली स्पष्टपणे स्थिर नाही.

आकृती 6 योग्य नियंत्रक सेटिंग्जसह क्षणिक प्रक्रिया दर्शविते. ऑपरेटर पुन्हा तापमान सेटपॉईंट बदलतो, परंतु यावेळी नियामक योग्यरित्या कार्य करतो. काही ओव्हरशूट पाळले जातात, परंतु एकूणच प्रक्रिया त्वरीत एकत्रित होते.

तांदूळ. 6. चांगल्या PID कंट्रोलर सेटिंग्जसह क्षणिक प्रक्रिया.

पीआयडी कंट्रोलर वापरण्यासाठी जटिल योजनांचा विचार करूया.

कॅस्केड नियंत्रण.

क्लासिक उदाहरण. फर्नेस हीटरमध्ये (आमच्या बाबतीत बर्नर) जास्त शक्ती असते आणि हीटिंग ऑब्जेक्ट (वर्कपीस) एकीकडे जास्त गरम होऊ शकते आणि दुसरीकडे थंड राहू शकते. जर असा हीटिंग मोड अस्वीकार्य असेल तर सिंगल-सर्किट नियंत्रण यापुढे पुरेसे नसेल. ऑब्जेक्टची एकसमान हीटिंग सुनिश्चित करण्यासाठी, दोन ठिकाणी तापमान मोजणे आवश्यक आहे: हीटरच्या पुढे आणि सर्वात थंड ठिकाणी. या प्रकरणात, कंट्रोलरमध्ये मालिकेत जोडलेले दोन पीआयडी दुवे असणे आवश्यक आहे. पहिला PID घटक (ज्याला मास्टर म्हणतात), ज्याचे इनपुट कोल्ड स्पॉट तापमान आहे, दुसऱ्या घटकासाठी सेटपॉईंट मूल्य तयार करेल (याला स्लेव्ह म्हणतात). हीटरच्या जवळचे तापमान स्लेव्ह लिंकच्या इनपुटला पुरवले जाते (आकृती 7 पहा).

तांदूळ. 7. कॅस्केड नियंत्रणाचे उदाहरण.

मापन पॅरामीटर्ससाठी दोन इनपुट आणि एक कंट्रोल आउटपुट असलेल्या सीरिजमध्ये जोडलेल्या पीआयडी कंट्रोलर्सचा वापर करून दोन नियंत्रित करण्यासाठी अशा संरचनेला कॅस्केड म्हणतात. प्रभावी नियंत्रणासाठी, स्लेव्ह पीआयडी कंट्रोलर मास्टरपेक्षा वेगवान असणे आवश्यक आहे.

आकृती 8 दुसरी प्रणाली दाखवते.

तांदूळ. 8. कॅस्केड नियमनचे आणखी एक उदाहरण.

जॅकेट टाकीतील तापमान कॅस्केडद्वारे नियंत्रित केले जाते. मास्टर पीआयडी कंट्रोलर (Tc1) टाकीमधील तापमानातील बदलांना प्रतिसाद देतो, परंतु त्याचे आउटपुट थेट वाल्व्हशी जोडलेले नाही जे उष्णता हस्तांतरण द्रवपदार्थाच्या येणार्या प्रवाहावर नियंत्रण ठेवते. आउटपुट Tc1 स्लेव्ह कंट्रोलर Tc2 साठी सेटपॉईंट सेट करते आणि Tc2, वाल्व वापरून, पंप सर्किटमध्ये उष्णता हस्तांतरण द्रवपदार्थाचे तापमान नियंत्रित करते. अशाप्रकारे, Tc2 पंपच्या आसपासच्या तापमानातील चढउतारांशी संबंधित आहे जे शीतलक स्त्रोतापासून प्रसारित केले जाऊ शकते.

अशा कॅस्केडसह, येणारे सर्व अडथळे आणि तापमान चढउतार Tc2 कंट्रोलरद्वारे शोधले जातील आणि ते थेट टाकीतील तापमानावर परिणाम करण्यापूर्वी त्यावर प्रक्रिया करतील. नियंत्रण ऑब्जेक्टवर थेट परिणाम होण्याआधीच येऊ घातलेल्या व्यत्यय आणि दोलनांबद्दल जाणून घेतल्याने सिस्टमला प्रतिबंधात्मक कारवाई करता येते. व्यवस्थापन आयोजित करण्याच्या या दृष्टिकोनाला सक्रिय नियमन म्हणतात.

गुणोत्तर नियंत्रण.

कधीकधी दोन किंवा अधिक प्रक्रिया व्हेरिएबल्समधील संबंध स्थिर करणे हे त्यांच्या निरपेक्ष मूल्यांना स्थिर करण्यापेक्षा अधिक महत्त्वाचे असते. अशा परिस्थितीत, आनुपातिक नियंत्रण प्रणाली वापरली जातात.

सामान्यतः, प्रक्रिया व्हेरिएबल्स ज्यासाठी दिलेला संबंध राखला जाणे आवश्यक आहे ते घटक प्रवाह दर किंवा व्हॉल्यूम मूल्ये आहेत, जे दहन प्रक्रियेसाठी सर्वात वैशिष्ट्यपूर्ण आहेत (उदाहरणार्थ, बर्नर नोझलकडे इंधन निर्देशित करणे). आकृती 9 मध्ये, कंट्रोल लूप 2 मधील इंधनाचे प्रमाण SP1 सेटपॉईंटद्वारे सेट केलेल्या सर्किट 1 मधील हवेच्या प्रमाणासह FAC च्या प्रमाणात राखले जाते.

तांदूळ. 9. वृत्ती व्यवस्थापन.

ॲटिट्यूड मॅनेजमेंट बहुतेकदा खालील प्रक्रियांमध्ये वापरले जाते:

1. दिलेल्या रासायनिक रचनेचे मिश्रण तयार करण्यासाठी पदार्थांच्या दोन किंवा अधिक प्रवाहांचे मिश्रण करणे;
2. निर्दिष्ट भौतिक गुणधर्म असलेले मिश्रण तयार करण्यासाठी दोन किंवा अधिक पदार्थांचे मिश्रण करणे;
3. इष्टतम ज्वलन प्रक्रिया साध्य करण्यासाठी दिलेले इंधन/वायु गुणोत्तर राखणे.

सराव

आधुनिक स्वयंचलित प्रक्रिया नियंत्रण प्रणालींमध्ये, पीआयडी कंट्रोलर कंट्रोलरमध्ये कार्यान्वित केलेल्या सॉफ्टवेअर फंक्शनल ब्लॉकच्या स्वरूपात लागू केले जाते. आकृती 10 वास्तविक नियंत्रण प्रणालीच्या विकास वातावरणातून घेतलेला PID कंट्रोल ब्लॉक दाखवते. कृपया लक्षात घ्या की ब्लॉकमध्ये किती भिन्न पॅरामीटर्स आहेत (30 पेक्षा जास्त). सराव मध्ये, त्यापैकी दहा पेक्षा जास्त काळजीपूर्वक कॉन्फिगरेशन आवश्यक नाही.

तांदूळ. 10. पीआयडी कंट्रोलर फंक्शन ब्लॉक कॉन्फिगरेशन.

आम्ही ब्लॉकचे सर्वात महत्वाचे पॅरामीटर्स सूचीबद्ध करतो:
1. एसपी - सेट मूल्य;
2. पीव्ही - नियंत्रित व्हेरिएबलचे मूल्य;
3. ओपी - आउटपुट सिग्नलचे मूल्य (नियंत्रण सिग्नल);
4. SL - स्वयंचलित मोडमध्ये सेटपॉईंट सेट करण्यासाठी इनपुट;
5. रिमोटएसपी - रिमोट मोडमध्ये सेटपॉईंट सेट करण्यासाठी इनपुट;
6. मोड - रेग्युलेटरचे ऑपरेटिंग मोड सेट करण्यासाठी इनपुट;
7. XP - आनुपातिक घटक गुणांक;
8. टीडी - विभेदक घटक गुणांक;
9. टीआय - अविभाज्य घटक गुणांक;
10. SL_Track - ट्रॅकिंग मोड सक्षम करण्यासाठी इनपुट.

पूर्वी, आम्ही पहिल्या तीन पॅरामीटर्सचे तपशीलवार परीक्षण केले आहे, म्हणून आम्ही त्यांच्यावर लक्ष ठेवणार नाही. मोड पॅरामीटर खूप मनोरंजक आहे. वस्तुस्थिती अशी आहे की नियामक सेटपॉईंट सेट करण्याच्या किमान तीन मोडमध्ये कार्य करू शकतो: स्वयंचलित, रिमोट आणि मॅन्युअल.

1. स्वयंचलित मोड सर्वात सामान्यपणे वापरला जातो; या मोडमध्ये, नियंत्रक सेटपॉईंट SL इनपुट वापरून ऑपरेटरद्वारे स्वहस्ते सेट केला जातो.

2. रिमोट मोडमध्ये कार्य करत असताना, सेटपॉईंट दुसऱ्या फंक्शनल ब्लॉकमध्ये प्रोग्रॅमॅटिकरित्या व्युत्पन्न केला जातो आणि रिमोटएसपी कंट्रोलरच्या इनपुटवर पाठविला जातो.

3. मॅन्युअल मोडमध्ये ऑपरेट करताना, ऑपरेटरकडे ओपी आउटपुटमध्ये फेरफार करून नियंत्रण सिग्नलचे मूल्य थेट सेट करण्याची क्षमता असते; या मोडमध्ये, कंट्रोलर पीआयडी अल्गोरिदमनुसार कंट्रोल ॲक्शन ओपीची निर्मिती निलंबित करतो.

उदाहरण. समजा आमच्याकडे हीटरने सुसज्ज पाण्याचा कंटेनर आहे. या क्षणी, पाण्याचे तापमान 80 सी वर राखले जाते. या प्रकरणात, आमच्याकडे आहे:

पीव्ही हे सेन्सरद्वारे मोजलेले वर्तमान पाणी तापमान आहे;
एसपी - ऑपरेटरद्वारे सेट केलेली वर्तमान सेटिंग;
ओपी - हीटर पॉवर कंट्रोल सिग्नल;

या क्षणी PV=SP=80 °C, म्हणजे. कोणतीही विसंगती नाही. या प्रकरणात, OP=65% (हीटर त्याच्या रेट केलेल्या पॉवरच्या 65% वर चालतो), आणि PID कंट्रोलर स्वयंचलित मोडमध्ये आहे. आता, काही कारणास्तव, ऑपरेटर कंट्रोलरला मॅन्युअल मोडवर स्विच करण्याचा निर्णय घेतो आणि नवीन मूल्य OP=20% सेट करतो. हीटिंग पॉवरमध्ये घट झाल्यामुळे, काही काळानंतर पाण्याचे तापमान 35 डिग्री सेल्सियस पर्यंत खाली येते. आता PV=35 °C, SP=80 °C, OP=20%. नियामक स्वयंचलित मोडवर परत स्विच केल्यास काय होईल याची कल्पना करूया. विसंगती SP-PV=80-35=45 °C च्या बरोबरीची होईल, आणि म्हणून, आनुपातिक घटक XP*45/100 च्या समान असेल. ज्या क्षणी कंट्रोलर स्वयंचलित मोडवर स्विच करतो, हे मूल्य XP*45/100 (इतर घटकांसह) OP आउटपुटमध्ये प्रसारित केले जाते आणि नियंत्रण सिग्नलमध्ये अनुक्रमे XP*45/100% द्वारे अचानक बदल घडवून आणतो. नियंत्रण सिग्नलमध्ये अशा तीव्र (अचानक) बदलास "धक्का" म्हणतात. गरम घटक यावर कशी प्रतिक्रिया देईल? कदाचित सर्वोत्तम मार्गाने नाही. जरी बहुधा हीटिंग एलिमेंटला काहीही होणार नाही. पोझिशनिंग डिव्हाइस ॲक्ट्युएटर म्हणून कार्य करत असल्यास ते खूपच वाईट आहे.

या घटनेचा सामना करण्यासाठी, त्यांनी एक धूर्त योजना आणली. जेव्हा कंट्रोलर मॅन्युअल मोडमध्ये काम करतो, तेव्हा त्याची SP सेटिंग सतत चालू PV व्हॅल्यूचे (ट्रॅकिंग फंक्शन) निरीक्षण करते, जेणेकरून त्रुटी नेहमी 0 (SP=PV) च्या बरोबरीची असते. या प्रकरणात, मॅन्युअल वरून स्वयंचलित किंवा रिमोट मोडवर स्विच करताना, कोणताही धक्का दिसून येत नाही. हे कार्य सक्षम/अक्षम करण्यासाठी SL_Track पॅरामीटर आवश्यक आहे. नियमानुसार, ट्रॅकिंग मोड SL_Track=1 वर सोडला जातो.

सामान्य माहिती

सामान्यतः, आनुपातिक-अविभाज्य-व्युत्पन्न किंवा PID (PID-प्रोपोर्शनल-इंटिग्रल-डेरिव्हेटिव्ह) कंट्रोलर वापरताना आणि योग्यरित्या ट्यूनिंग करताना, ऑन-ऑफ (रिले) कंट्रोलरच्या तुलनेत उत्तम नियंत्रण अचूकता प्राप्त होते. परंतु कंट्रोलरच्या इष्टतम समायोजनासाठी आणि परिणामी, इच्छित गुणवत्ता नियंत्रण प्राप्त करण्यासाठी, पीआयडी कंट्रोलरच्या ऑपरेशनची यंत्रणा आणि तत्त्वे समजून घेणे आवश्यक आहे.
पीआयडी नियंत्रणासह, नियंत्रण सिग्नल केवळ वर्तमान आणि सेट मूल्य (त्रुटीचे प्रमाण किंवा न जुळणे) मधील फरकावर अवलंबून नाही, तर संचित त्रुटी (अविभाज्य) आणि कालांतराने त्रुटी बदलण्याच्या दरावर देखील अवलंबून असते ( भिन्नता). परिणामी, पीआयडी कंट्रोलर नियंत्रण सिग्नलचे मूल्य प्रदान करतो ज्यावर स्थिर स्थितीत त्रुटी शून्य होते. नियंत्रणाची गुणवत्ता अनेक घटकांद्वारे निर्धारित केली जाते; मुख्य म्हणजे नियंत्रण ऑब्जेक्टचा नॉन-डिटरमिनिझम, कंट्रोलर इनपुट-आउटपुटची अचूकता आणि बाह्य प्रभावांची तीव्रता.

कुठे:
Xp - आनुपातिक बँड
Ei = (SP-PV) = (setpoint-current) = त्रुटी (न जुळणारी)
टीडी - भिन्नता वेळ स्थिर
∆Ei - शेजारच्या मोजमापांच्या त्रुटींमधील फरक (Ei - Ei-1)
∆tmeas - लगतच्या मोजमापांमधील वेळ (ti - t i-1)
Ti - एकीकरण वेळ स्थिर
- i-th पायरी (अविभाज्य बेरीज) द्वारे जमा झालेल्या विसंगतींचे प्रमाण
हे पाहणे सोपे आहे की नियंत्रण सिग्नल ही तीन घटकांची बेरीज आहे: आनुपातिक (टर्म 1), भिन्नता (टर्म 2), आणि अविभाज्य (टर्म 3).
आनुपातिक घटक वर्तमान त्रुटी Ei वर अवलंबून असतो आणि त्याच्या विशालतेच्या प्रमाणात वर्तमान त्रुटीची भरपाई करतो.
विभेदक घटक त्रुटी ∆Ei / ∆tmeas च्या बदलाच्या दरावर अवलंबून असतो आणि अचानक झालेल्या व्यत्ययाची भरपाई करतो.
अविभाज्य घटक नियंत्रण त्रुटी जमा करतो, ज्यामुळे पीआयडी नियंत्रक स्थिर स्थितीत शून्य त्रुटी राखू शकतो (स्थिर नियंत्रण त्रुटी दूर करते).
सामान्यतः, PID कंट्रोलरमध्ये तीन गुणांक (Xp, Ti, Td) व्यतिरिक्त अतिरिक्त पॅरामीटर्स असतात. डिव्हाइस “ ” साठी पीआयडी कंट्रोलर पॅरामीटर्स मेनूच्या स्क्रीनशॉटचे उदाहरण वापरून त्यांना अधिक तपशीलवार पाहू या.

तांदूळ. १

डिव्हाइसमध्ये अनेक पीआयडी कंट्रोल चॅनेल (आउटपुट) असू शकतात आणि त्या प्रत्येकाचे स्वतःचे पॅरामीटर्स आहेत. म्हणून, पहिल्या स्तंभात इच्छित चॅनेल निवडा.
कंट्रोल ऑब्जेक्ट (वर्तमान नियंत्रित मूल्य) पासून फीडबॅकचा स्त्रोत डिव्हाइसचे कोणतेही मोजण्याचे चॅनेल असू शकते, म्हणून तुम्ही मालक स्तंभातील इच्छित मापन चॅनेल निवडणे आवश्यक आहे.
पीआयडी कंट्रोलर डायरेक्ट लॉजिक (फर्नेस कंट्रोल) आणि रिव्हर्स लॉ (रेफ्रिजरेशन युनिटचे नियंत्रण) च्या कायद्यानुसार दोन्ही नियंत्रित करू शकतो. इच्छित ऑपरेटिंग लॉजिक निवडा.
सेट पॉइंट (SP) हे इच्छित मूल्य आहे ज्यावर नियंत्रक स्थिर स्थितीत पोहोचला पाहिजे.
Xp - आनुपातिकता झोन. हे नियंत्रित मूल्याच्या युनिट्समध्ये सेट केले जाते (अंशांमध्ये थर्मोस्टॅटसाठी). आनुपातिक बँडला असे म्हणतात कारण फक्त त्यात ((SP - Xp)...(SP + Xp)) PID कंट्रोलरचा आनुपातिक घटक त्रुटीच्या प्रमाणात आउटपुट कंट्रोल सिग्नलची शक्ती निर्माण करू शकतो. आणि त्याच्या मर्यादेपलीकडे शक्ती 0% किंवा 100% च्या समान असेल. अशाप्रकारे, हा झोन जितका अरुंद असेल तितका रेग्युलेटरचा प्रतिसाद जलद असेल, परंतु खूप जास्त वेग प्रणालीला स्वयं-ओसीलेटिंग मोडमध्ये आणू शकतो.
Ti हा एकीकरण वेळ स्थिर आहे.
Td हा भिन्नता वेळ स्थिरांक आहे.
वर्तमान शक्ती एक माहिती मापदंड आहे.
किमान आणि कमाल पॉवर पीआयडी कंट्रोलर आउटपुटची पॉवर मर्यादा निर्धारित करते.
इमर्जन्सी पॉवर म्हणजे सेन्सर किंवा मापन चॅनेल खराब झाल्यावर रेग्युलेटरद्वारे व्युत्पन्न केलेली शक्ती. अशा प्रकारे आपण रेफ्रिजरेशन चेंबरमध्ये नकारात्मक तापमान सुनिश्चित करू शकता किंवा आपत्कालीन परिस्थितीतही ओव्हन थंड होण्यापासून रोखू शकता.
शेवटचा पॅरामीटर PWM कालावधी आहे. हे पॅरामीटर सर्व पीआयडी नियंत्रकांसाठी समान आहे, कारण PWM चॅनेल एका टाइमरवरून एकमेकांशी समक्रमित केले जातात. PWM सिग्नल तुम्हाला सिग्नलचे कर्तव्य चक्र समायोजित करून पॉवर समायोजित करण्याची परवानगी देतो (पल्स रुंदी स्थिर मॉड्यूलेशन वारंवारता समायोजित केली जाते). PWM बिट आकार (पॉवर पोझिशनची संख्या) 8192 discretes (13 बिट) आहे. PWM कालावधी (1 एमएस ते 250 सेकंद पर्यंत). हे पॅरामीटर पॉवर एक्झिक्युटिव्ह स्विचेस (m.b. रिले, स्टार्टर, सॉलिड-स्टेट रिले, ट्रायक) च्या प्रकार आणि स्विचिंग क्षमतेवर अवलंबून असते. स्विचिंग फ्रिक्वेंसी जितकी जास्त असेल (कालावधी जितका कमी असेल तितका), स्विचमधील उष्णतेचे नुकसान (फ्रिक्वेंसीवरील नुकसानाचे चतुर्भुज अवलंबित्व) आणि यांत्रिक स्विचचे परिधान जितके जास्त असेल, परंतु नियमनची गुणवत्ता तितकी चांगली असेल. मधले मैदान शोधणे महत्त्वाचे आहे.

आनुपातिक घटक सेट करणे (Xp)

आनुपातिक बँड सेट करण्यापूर्वी, अविभाज्य आणि विभेदक घटक बंद केले जातात, एकत्रीकरण स्थिरांक जास्तीत जास्त शक्य (Ti = कमाल) आणि किमान शक्य (Td = 0) वर विभेदन स्थिरांक सेट केला जातो. सुरक्षित सेटपॉईंट मूल्य (0.7…0.9)×SP च्या बरोबरीने सेट केले जाते, जेथे SP हे समायोजित केल्या जात असलेल्या सिस्टमचा वास्तविक सेटपॉइंट आहे. आनुपातिक बँड किमान शक्य (Xp = 0) वर सेट केला आहे.
या प्रकरणात, नियामक दोन-स्थिती रिले रेग्युलेटरची कार्ये शून्याच्या समान हिस्टेरेसिससह करतो. क्षणिक प्रतिसाद नोंदविला जातो.

तांदूळ. 2


Tο प्रणालीमध्ये प्रारंभिक तापमान आहे;
टीस्पून - सेट तापमान (सेट पॉइंट);
∆T - तापमान चढउतारांची श्रेणी;
∆t - तापमान चढउतारांचा कालावधी.
आनुपातिक बँड तापमान चढउतारांच्या श्रेणीच्या समान सेट करा: Xp = ∆T. हे मूल्य कार्य करते
आनुपातिकता क्षेत्रासाठी प्रथम अंदाजे.
चरण प्रतिसादाचे पुन्हा विश्लेषण केले पाहिजे आणि आवश्यक असल्यास आनुपातिक बँड मूल्य समायोजित केले पाहिजे. क्षणिक वैशिष्ट्यांसाठी संभाव्य पर्याय अंजीर मध्ये दर्शविले आहेत. 3.
तांदूळ. 3


स्टेप रिस्पॉन्स प्रकार 1: प्रोपोर्शनल बँड व्हॅल्यू खूप लहान आहे, स्टेप रिस्पॉन्स इष्टतम नाही. आनुपातिक बँड लक्षणीय वाढले पाहिजे.
क्षणिक प्रतिसाद प्रकार 2: क्षणिक प्रतिसादामध्ये, ओलसर दोलन दिसून येतात (5 - 6 कालावधी). भविष्यात पीआयडी कंट्रोलरचा विभेदक घटक वापरण्याची योजना आखल्यास, आनुपातिक बँडचे निवडलेले मूल्य इष्टतम आहे. या प्रकरणात, आनुपातिक बँडचे समायोजन पूर्ण मानले जाते.
जर भविष्यात विभेदक घटक वापरले जाणार नाहीत, तर आनुपातिक बँड आणखी वाढवण्याची शिफारस केली जाते जेणेकरून प्रकार 3 किंवा 4 ची क्षणिक वैशिष्ट्ये मिळतील.
क्षणिक प्रतिसाद प्रकार 3: क्षणिक प्रतिसाद एक लहान ओव्हरशूट आणि वेगाने क्षीण होणारे दोलन (1 ते 2 कालावधी) प्रदर्शित करतो. या प्रकारचा क्षणिक प्रतिसाद चांगला कार्यप्रदर्शन आणि सेट तापमानाची जलद उपलब्धी प्रदान करतो. बहुतेक प्रकरणांमध्ये, एका तापमानातून दुसऱ्या तापमानात संक्रमण करताना प्रणाली उत्सर्जनास (अति गरम) परवानगी देत ​​असेल तर ते इष्टतम मानले जाऊ शकते.
आनुपातिक बँड आणखी वाढवून ओव्हरशूट्स काढून टाकले जातात जेणेकरून एक प्रकार 4 चरण प्रतिसाद प्राप्त होईल.
संक्रमण प्रतिसाद प्रकार 4: तापमान चढ-उतार किंवा चढउतारांशिवाय स्थिर-स्थिती मूल्यापर्यंत सहजतेने पोहोचते. या प्रकारचा क्षणिक प्रतिसाद देखील इष्टतम मानला जाऊ शकतो, तथापि, नियंत्रकाची गती थोडी कमी केली जाते.
टाईप 5 स्टेप रिस्पॉन्स: स्टेडी-स्टेट व्हॅल्यूसाठी खूप लांब पध्दत दर्शवते की आनुपातिक बँड खूप मोठा आहे. येथे नियमनाची गतिमान आणि स्थिर अचूकता कमी आहे.
दोन परिस्थिती लक्षात घेतल्या पाहिजेत. प्रथम, वर चर्चा केलेल्या सर्व प्रकरणांमध्ये, सिस्टममधील स्थिर-स्थिती तापमान मूल्य सेटपॉईंट मूल्याशी जुळत नाही. आनुपातिक बँड जितका मोठा असेल तितका अवशिष्ट जुळत नाही. दुसरे म्हणजे, क्षणिक प्रक्रियांचा कालावधी जास्त असतो, समानता झोन जितका मोठा असतो. अशा प्रकारे, एखाद्याने शक्य तितक्या लहान प्रमाणात समानता क्षेत्र निवडण्याचा प्रयत्न केला पाहिजे. त्याच वेळी, अवशिष्ट विसंगती, पूर्णपणे आनुपातिक नियंत्रक (पी-कंट्रोलर्स) चे वैशिष्ट्य, कंट्रोलरच्या अविभाज्य घटकाद्वारे काढले जाते.

विभेदक घटक सेट करणे (टीडी)

पूर्ण-वैशिष्ट्यीकृत पीआयडी कंट्रोलर वापरला असल्यासच ही पायरी आहे. जर विभेदक घटक वापरला जाणार नसेल (एक आनुपातिक-अविभाज्य (पीआय) नियंत्रक वापरला असेल), तर ही पायरी वगळली पाहिजे.
मागील टप्प्यावर, प्रकार 2 च्या क्षणिक प्रतिसादाशी संबंधित एक आनुपातिकता क्षेत्र निर्दिष्ट केले गेले होते, ज्यामध्ये ओलसर दोलन उपस्थित आहेत (चित्र 3, वक्र 2, चित्र 4, वक्र 1 पहा).

तांदूळ. 4


भिन्नता वेळ स्थिरांक Td सेट केला पाहिजे जेणेकरून संक्रमण वैशिष्ट्य अंजीर मधील वक्र 2 सारखे दिसेल. 4. प्रथम अंदाजे म्हणून, भिन्नता वेळ स्थिरांक Тд = 0.2×∆t च्या बरोबरीने बनविला जातो.
विशेष म्हणजे, विभेदक घटक ओलसर दोलन दूर करतो आणि क्षणिक प्रतिसाद प्रकार 3 सारखा बनवतो (आकृती 3 पहा). या प्रकरणात, आनुपातिक बँड प्रकार 3 पेक्षा लहान आहे. याचा अर्थ विभेदक घटक (पीडी कंट्रोलर) च्या उपस्थितीत नियंत्रणाची गतिमान आणि स्थिर अचूकता P कंट्रोलरपेक्षा जास्त असू शकते.

अविभाज्य घटक (Ti) सेट करणे

आनुपातिक घटक (आणि आवश्यक असल्यास, विभेदक घटक) समायोजित केल्यानंतर, खालील आकृतीमध्ये दर्शविलेले क्षणिक प्रतिसाद, वक्र 1, प्राप्त होते.

तांदूळ. ५


अविभाज्य घटक सिस्टममध्ये स्थापित तापमान मूल्य आणि सेटपॉइंटमधील अवशिष्ट विसंगती दूर करण्यासाठी डिझाइन केले आहे. तुम्ही Ti = ∆t या मूल्यासह एकीकरण वेळ स्थिरांक समायोजित करणे सुरू केले पाहिजे.
स्टेप रिस्पॉन्स टाईप 2: जेव्हा इंटिग्रेशन टाइम कॉन्स्टंट खूप मोठा असतो तेव्हा उद्भवते. सेट पॉईंटवर पोहोचायला खूप उशीर होतो.
स्टेप रिस्पॉन्स टाईप 4: जेव्हा इंटिग्रेशन टाइम कॉन्स्टंट खूप लहान असतो तेव्हा उद्भवते. एकीकरण वेळ स्थिरांक आणखी कमी केल्यास, प्रणालीमध्ये दोलन होऊ शकतात.
चरण प्रतिसाद प्रकार 3: इष्टतम.

माहितीचे स्रोत वापरले

  • सबिनिन यु.ए. कोवचिन S.A. "इलेक्ट्रिक ड्राइव्ह सिद्धांत"
  • श्राइनर आर.टी. "इलेक्ट्रिक ड्राइव्हसाठी अधीनस्थ नियंत्रण प्रणाली"
  • ओल्सन, पियानी "डिजिटल ऑटोमेशन आणि कंट्रोल सिस्टम"
  • www.asu-tp.org साइटवरील साहित्य