PID კონტროლი უფრო დეტალურად
მოდით უფრო დავხვეწოთ ჩვენი მოდელი რომ უფრო კარგად გავიგოთ PID მართვის მათემატიკური არსი.
აქამდე ჩვენ კონდიციონერს ვარეგულირებდით ჩვენი სხეულის შეგრძნებით, მაგრამ ეს ზუსტი არაა, უფრო ზუსტი იქნება თუ ოთახში დავდებთ ელექტრონულ თერმომეტრს, რომელიც იძლევა ტემპერატურის ჩვენებას ცელსიუს გრადუსებში.
ჩვენი მიზანია რომ ოთახში იყოს კონკრეტული ტემპერატურა, დავუშვათ 20 გრადუსი.
ამისათვის ვიყენებთ კონდიციონერს რომელსაც აქვს 1000 ვატი სიმძლავრის კომპრესორი და ამ კომპრესორის მართვა შეგვიძლია კომპიუტერით. კომპიუტერზე მიერთებულია ასევე ეს ციფრული თერმომეტრი. ჩვენი მიზანია დავწეროთ ისეთი პროგრამა რომ ოთახში იყოს სასურველი ტემპერატურა.
შემოვიღოთ განმარტებები:
სასურველი ტემპერატურა - g (20C);
რეალური ტემპერატურა (ციფრული თერმომეტრის ჩვენება) - y;
თერმომეტრის ჩვენება ცვალებადია და დროზე დამოკიდებულია, ამიტომ მათემატიკოსებისთვის გასაგებია რომ ეს დროის ფუნქციაა y(t), მაგრამ ვისთვისაც გაუგებარია, ნუ შეშინდებით, სხვანაერადაც ავხსნით.
სხვაობას სასურველსა და რეალურ ტემპერატურებს შორის ვუწოდოთ შეცდომა:
e = y - g (მათემატიკოსებისათვის e(t) = y(t) - g);
ესე იგი დროის ნებისმიერი მომენტისთვის გვაქვს შეცდომის მნიშვნელობა, მაგალითად თუ ოთახში 22 გრადუსია, მაშინ შეცდომა გვაქვს 2, თუ 15 გრადუსია, შეცდომის მნიშვნელობა არის -5.
გავიხსენოთ ეხლა ჩვენი ფორმულა

აქ u აღნიშნავს მართვის პარამეტრს ანუ ჩვენ შემთხვევაში კონდიციონერის სიმძლავრეს.
სიმძლავრის გამოსათვლელად 3 შესაკრების ჯამი უნდა დავთვალოთ.
პირველი არის: Kp•e. e უკვე აღვნიშნეთ რომ შეცდომაა, Kp კი განვიხილეთ წინა პოსტში. ანუ რაც მეტია შეცდომა (გადახრა სასურველი მნიშვნელბისგან) მით მეტი იქნება ეს შესაკრები. თუ მარტო ამ შესაკრებს დავტოვებთ (Ki = 0, Kd=0) მაშინ სისტემა შეიძლება შევიდეს რხევით რეჟიმში იმის გამო რომ კონტროლერი და გარემო შეიძლება ინერციული იყოს და ასევე უკუკავშირი (ოთახის თერმომეტრი) მუშაობდეს დაყოვნებით (როდესაც ჩაირთვება კონდიციონერი, საჭიროა დრო რომ ცივი ჰაერი მივიდეს თერმომეტრამდე).
სხვა მაგალითის მოყვანა შეილება კიდე - წარმოიდგინეთ ჟონგლიორი ცდილობს ხელისგულზე ვერტიკალურად გაიჩეროს ჯოხი. თუ ჟონგლიორი გამოუცდელია, ის მოქმედებს ასე - როდესაც ხედავს რომ ჯოხი ვარდება რომელიმე მხარეს, ის ამოძრავებს ხელს იმავე მხარეს რომ ჯოხი გასწორდეს, მაგრამ ჯოხიც და ხელიც არის ინერციული, ამიტომ ხშირად ჟონგლიორი ხელს გადაადგილებს უფრო მეტად ვიდრე საჭიროა, რის გამოც ჯოხი გადაიხრება მეორე მხარეს, ახლა უკვე უკუღმა ამოძრავებს ხელს და ისევ მეტი მოსდის, ასე იწყებს ჯოხი რხევას და შეიძლება დაუვარდეს კიდეც. გამოცდილი ჟონგლიორი კი ცდილობს წინასწარ გათვალოს რა ძალით უნდა გააქანოს ხელი რომ ჯოხი შეჩერდეს და თან ხელის ინერციულობაც გაითვალისწინოს. აქ შემოდის დიფერენციალის და ინტეგრალის ცნება.
მერე შესაკრები არის ინტეგრალი: Ki•∫edt.
Ki არის კოეფიციენტი რომელიც წინა პოსტში ვახსენეთ. ინტეგრალს რაც შეეხება, შევეცდები ავხსნა არამათემატიკოსისათვის გასაგებ ენაზე.
თუ დავუშვებთ რომ e არის ჩემი ყოველდღიური შემოსავალი ან ხარჯი, მაშინ ინტეგრალი e-დან არის ჩემი მიმდინარე ბალანსი.
ანუ დავუშვათ დავიწყე მუშაობა ტაქსისტად ორშაბათს და თავიდან ფული არ მქონდა საერთოდ.
ყოველდღე ვხარჯავ ფულს ბენზინზე და საჭმელზე და მაქვს რაღაც შემოსავალი, დღის ბოლოს ვითვლი სხვაობას შემოსავალსა და ხარჯებს შორის, ეს იქნება ამ დღის e (ანუ e(t) ფუნქცია ყოველი დღისთვის).
ჩამოვწეროთ ყოველდღე e-ს მნიშვნელობა რა გამოვიდა:
ორშაბათი: 20 ლარი;
სამშაბათი: 10;
ოთხშაბათი: -15 (ვიზარალე);
ხუთშაბათი: 5;
პარასკევი: 0;
შაბათი: -5;
კვირა:10;
ინტერგალი e-დან კვირის ბოლოსთვის არის უბრალოდ კვირის ყოველდღიური e-ს ჯამი ანუ ის თანხა რაც უნდა მქონდეს კვირის ბოლოსთვის.
∫edt = 20+10-15+5+0-5+10 = 25
ეს არის ინტეგრალის გამარტივებული წარმოდგენა იმიტომ რომ ჩვენ დავუშვით რომ ყოველი დღის ბოლოსთვის ვაკეთებთ ჩანაწერს, სინამდვილეში კი შეიძლება ჩანაწერი კეთდებოდეს სხვადასხვა დროის ინტერვალში, მაგრამ უმეტეს შემთხვევაში შესაძლებელია დროის თანაბარ ინტერვალში გაზომვა, ამიტომ ამჯერად არ გავართულებთ.
ეხლა უფრო გასაგები უნდა იყოს რას აკეთებს შესაკრები Ki∫edt - ის სულ უფრო და უფრო გაიზრდება თუ გარემო არაა სასურველ მდგომარეობაში, ჩვენ შემთხვევაში ეს ნიშნავს რომ ოთახში ცხელა, რაც უფრო დიდხანს ცხელა, მით უფრო დიდი გახდება ეს შესაკრები, ეს ნიშნავს რომ ვაკვირდებით ოთახში ტემპერატურას არა მყისიერად, არამედ დროში გაწელილად და თუ ვხედავთ რომ კონდიციონერი ვერ ერევა დროის გასვლის შემდეგაც, სიმძლავრეს ვუმატებთ, რაც უფრო დიდხანს ვერ ერევა, მით უფრო მეტად ვუმატებთ სიმძლავრეს. ეს ერთგვარი შენელებული რეაქციაა და უზრუნველყოფს გარემოს "რბილ" მართვას, მყისეული ბიძგების გარეშე. სორედ მართულ გარემოში ინტეგრალური შესაკრები ნულის გარშემო უნდა ირხეოდეს, თუ ის მუდმივად იზრდება ან მცირდება, ეს ნიშნავს რომ გარემო ვერ უახლოვდება სასურველ მდგომარეობას.
მესამე შესაკრები არის დიფერენციალი: Kd•de/dt. დიფერენციალი (წარმოებული) არის უბრალოდ სიჩქარე.
წარმოიდგინეთ რომ ყოველ საღამოს სეირნობთ და თან დაგაგვთ GPS ოდომეტრი. ყოველ 10 წუთში იწერთ სეირნობის დასაწყისიდან გავლილ გზას (e(t)), e-ს წარმოებული იქნება თქვენი სიჩქარე. მიახლოებით რომ დაითვალოთ სიჩქარე, ყოველ ჩანაწერს უნდა გამოაკლოთ წინა ჩანაწერი და გაყოთ ჩანაწერებს შორის გასულ დროზე (ჩვენ შემთხვევაში 10 წუთზე). ანუ თუ დავუშვათ 20-ე წუთზე მე გავლილი მქონდა 800 მეტრი, ხოლო 30-ე წუთზე 1100 მეტრი, მაშინ ჩემი სიჩქარე გამოდის (1100-800)მ/10წთ=30მ/წთ. ყურადღება მიაქციეთ რომ სიჩქარე შეიძლება არ იყოს მუდმივი და იცვლებოდეს გავლილი მანძილის ჩანიშვნების მომენტებს შორის. მაგრამ რაც უფრო ხშირად ჩავინიშნავთ მანძილებს, მით უფრო ზუსტი მონაცემები გვექნება სიჩქარეზე დროის ყოველ მომენტში.
ჩვენ ოთახის მაგალითზე, დიფერენციალი არის ტემპერატურის ცვლილების სისწრაფე. თუ ვხედავთ რომ ოთახში ტემპერატურა მცირდება სწრაფად, ეს ნიშნავს რომ კონდიციონერის სიმძლავრე საკმარისზე მეტია, აქდან გამომდინარე შეგვიძლია ის შევამციროთ, ანუ ეს შესაკრები ერთგვარი მუხრუჭია, ჯოხით ჟონგლირების მაგალითზე, თუ ვხედავთ რომ ჯოხი სწორდება სწრაფად, მაშინ შეგვიძლია ვივარაუდოთ წინასწარ რამდენად შევამციროთ ხელის მოძრაობა რომ ჯოხი მეორე მხარეს არ გადაქანდეს ან მინიმალურად გადაქანდეს ანუ თუ e შეცდომა მცირდება მაშინ მისი წარმოებული (სიჩქარე) არის უარყოფითი და შესაბამისად ეს ამცირებს კონტროლერის ზემოქმედებას გარემოზე.
PID მართვის მთელი არსი მდგომარეობს Kp, Ki და Kd კოეფიციენტების სწორ შერჩევაში. მიზანი არის ის რომ გარემოს მართვისას რხევები იყოს მინიმალური, თუმცა სხვადასხვა ამოცანების დროს სხვადასხვა მოთხოვნებია გარემოს მართვაზე, ზოგჯერ მთავარია გარემო იმართებოდეს რაც შეიძლება სწრაფად, ხოლო ზოგჯერ რაც შეიძლება რბილად (რხევების გარეშე), ამის შესაბამისად სხვადასხვანაერად არჩევენ ამ კოეფიციენტებს, ამიტომაც არ არსებობს უნივერსალური კოეფიციენტები. თუმცა გარკვეული დაშვების შემთხვევაში არის მეთოდები ამ კოეფიციენტების გამოსათვლელად მაგრამ ეს უკვე ცალკე თემაა და მას ეწოდება PID რეგულირება (PID Tuning).
გავიხსენოთ ეხლა ჩვენი ფორმულა
აქ u აღნიშნავს მართვის პარამეტრს ანუ ჩვენ შემთხვევაში კონდიციონერის სიმძლავრეს.
სიმძლავრის გამოსათვლელად 3 შესაკრების ჯამი უნდა დავთვალოთ.
პირველი არის: Kp•e. e უკვე აღვნიშნეთ რომ შეცდომაა, Kp კი განვიხილეთ წინა პოსტში. ანუ რაც მეტია შეცდომა (გადახრა სასურველი მნიშვნელბისგან) მით მეტი იქნება ეს შესაკრები. თუ მარტო ამ შესაკრებს დავტოვებთ (Ki = 0, Kd=0) მაშინ სისტემა შეიძლება შევიდეს რხევით რეჟიმში იმის გამო რომ კონტროლერი და გარემო შეიძლება ინერციული იყოს და ასევე უკუკავშირი (ოთახის თერმომეტრი) მუშაობდეს დაყოვნებით (როდესაც ჩაირთვება კონდიციონერი, საჭიროა დრო რომ ცივი ჰაერი მივიდეს თერმომეტრამდე).
სხვა მაგალითის მოყვანა შეილება კიდე - წარმოიდგინეთ ჟონგლიორი ცდილობს ხელისგულზე ვერტიკალურად გაიჩეროს ჯოხი. თუ ჟონგლიორი გამოუცდელია, ის მოქმედებს ასე - როდესაც ხედავს რომ ჯოხი ვარდება რომელიმე მხარეს, ის ამოძრავებს ხელს იმავე მხარეს რომ ჯოხი გასწორდეს, მაგრამ ჯოხიც და ხელიც არის ინერციული, ამიტომ ხშირად ჟონგლიორი ხელს გადაადგილებს უფრო მეტად ვიდრე საჭიროა, რის გამოც ჯოხი გადაიხრება მეორე მხარეს, ახლა უკვე უკუღმა ამოძრავებს ხელს და ისევ მეტი მოსდის, ასე იწყებს ჯოხი რხევას და შეიძლება დაუვარდეს კიდეც. გამოცდილი ჟონგლიორი კი ცდილობს წინასწარ გათვალოს რა ძალით უნდა გააქანოს ხელი რომ ჯოხი შეჩერდეს და თან ხელის ინერციულობაც გაითვალისწინოს. აქ შემოდის დიფერენციალის და ინტეგრალის ცნება.
მერე შესაკრები არის ინტეგრალი: Ki•∫edt.
Ki არის კოეფიციენტი რომელიც წინა პოსტში ვახსენეთ. ინტეგრალს რაც შეეხება, შევეცდები ავხსნა არამათემატიკოსისათვის გასაგებ ენაზე.
თუ დავუშვებთ რომ e არის ჩემი ყოველდღიური შემოსავალი ან ხარჯი, მაშინ ინტეგრალი e-დან არის ჩემი მიმდინარე ბალანსი.
ანუ დავუშვათ დავიწყე მუშაობა ტაქსისტად ორშაბათს და თავიდან ფული არ მქონდა საერთოდ.
ყოველდღე ვხარჯავ ფულს ბენზინზე და საჭმელზე და მაქვს რაღაც შემოსავალი, დღის ბოლოს ვითვლი სხვაობას შემოსავალსა და ხარჯებს შორის, ეს იქნება ამ დღის e (ანუ e(t) ფუნქცია ყოველი დღისთვის).
ჩამოვწეროთ ყოველდღე e-ს მნიშვნელობა რა გამოვიდა:
ორშაბათი: 20 ლარი;
სამშაბათი: 10;
ოთხშაბათი: -15 (ვიზარალე);
ხუთშაბათი: 5;
პარასკევი: 0;
შაბათი: -5;
კვირა:10;
ინტერგალი e-დან კვირის ბოლოსთვის არის უბრალოდ კვირის ყოველდღიური e-ს ჯამი ანუ ის თანხა რაც უნდა მქონდეს კვირის ბოლოსთვის.
∫edt = 20+10-15+5+0-5+10 = 25
ეს არის ინტეგრალის გამარტივებული წარმოდგენა იმიტომ რომ ჩვენ დავუშვით რომ ყოველი დღის ბოლოსთვის ვაკეთებთ ჩანაწერს, სინამდვილეში კი შეიძლება ჩანაწერი კეთდებოდეს სხვადასხვა დროის ინტერვალში, მაგრამ უმეტეს შემთხვევაში შესაძლებელია დროის თანაბარ ინტერვალში გაზომვა, ამიტომ ამჯერად არ გავართულებთ.
ეხლა უფრო გასაგები უნდა იყოს რას აკეთებს შესაკრები Ki∫edt - ის სულ უფრო და უფრო გაიზრდება თუ გარემო არაა სასურველ მდგომარეობაში, ჩვენ შემთხვევაში ეს ნიშნავს რომ ოთახში ცხელა, რაც უფრო დიდხანს ცხელა, მით უფრო დიდი გახდება ეს შესაკრები, ეს ნიშნავს რომ ვაკვირდებით ოთახში ტემპერატურას არა მყისიერად, არამედ დროში გაწელილად და თუ ვხედავთ რომ კონდიციონერი ვერ ერევა დროის გასვლის შემდეგაც, სიმძლავრეს ვუმატებთ, რაც უფრო დიდხანს ვერ ერევა, მით უფრო მეტად ვუმატებთ სიმძლავრეს. ეს ერთგვარი შენელებული რეაქციაა და უზრუნველყოფს გარემოს "რბილ" მართვას, მყისეული ბიძგების გარეშე. სორედ მართულ გარემოში ინტეგრალური შესაკრები ნულის გარშემო უნდა ირხეოდეს, თუ ის მუდმივად იზრდება ან მცირდება, ეს ნიშნავს რომ გარემო ვერ უახლოვდება სასურველ მდგომარეობას.
მესამე შესაკრები არის დიფერენციალი: Kd•de/dt. დიფერენციალი (წარმოებული) არის უბრალოდ სიჩქარე.
წარმოიდგინეთ რომ ყოველ საღამოს სეირნობთ და თან დაგაგვთ GPS ოდომეტრი. ყოველ 10 წუთში იწერთ სეირნობის დასაწყისიდან გავლილ გზას (e(t)), e-ს წარმოებული იქნება თქვენი სიჩქარე. მიახლოებით რომ დაითვალოთ სიჩქარე, ყოველ ჩანაწერს უნდა გამოაკლოთ წინა ჩანაწერი და გაყოთ ჩანაწერებს შორის გასულ დროზე (ჩვენ შემთხვევაში 10 წუთზე). ანუ თუ დავუშვათ 20-ე წუთზე მე გავლილი მქონდა 800 მეტრი, ხოლო 30-ე წუთზე 1100 მეტრი, მაშინ ჩემი სიჩქარე გამოდის (1100-800)მ/10წთ=30მ/წთ. ყურადღება მიაქციეთ რომ სიჩქარე შეიძლება არ იყოს მუდმივი და იცვლებოდეს გავლილი მანძილის ჩანიშვნების მომენტებს შორის. მაგრამ რაც უფრო ხშირად ჩავინიშნავთ მანძილებს, მით უფრო ზუსტი მონაცემები გვექნება სიჩქარეზე დროის ყოველ მომენტში.
ჩვენ ოთახის მაგალითზე, დიფერენციალი არის ტემპერატურის ცვლილების სისწრაფე. თუ ვხედავთ რომ ოთახში ტემპერატურა მცირდება სწრაფად, ეს ნიშნავს რომ კონდიციონერის სიმძლავრე საკმარისზე მეტია, აქდან გამომდინარე შეგვიძლია ის შევამციროთ, ანუ ეს შესაკრები ერთგვარი მუხრუჭია, ჯოხით ჟონგლირების მაგალითზე, თუ ვხედავთ რომ ჯოხი სწორდება სწრაფად, მაშინ შეგვიძლია ვივარაუდოთ წინასწარ რამდენად შევამციროთ ხელის მოძრაობა რომ ჯოხი მეორე მხარეს არ გადაქანდეს ან მინიმალურად გადაქანდეს ანუ თუ e შეცდომა მცირდება მაშინ მისი წარმოებული (სიჩქარე) არის უარყოფითი და შესაბამისად ეს ამცირებს კონტროლერის ზემოქმედებას გარემოზე.
PID მართვის მთელი არსი მდგომარეობს Kp, Ki და Kd კოეფიციენტების სწორ შერჩევაში. მიზანი არის ის რომ გარემოს მართვისას რხევები იყოს მინიმალური, თუმცა სხვადასხვა ამოცანების დროს სხვადასხვა მოთხოვნებია გარემოს მართვაზე, ზოგჯერ მთავარია გარემო იმართებოდეს რაც შეიძლება სწრაფად, ხოლო ზოგჯერ რაც შეიძლება რბილად (რხევების გარეშე), ამის შესაბამისად სხვადასხვანაერად არჩევენ ამ კოეფიციენტებს, ამიტომაც არ არსებობს უნივერსალური კოეფიციენტები. თუმცა გარკვეული დაშვების შემთხვევაში არის მეთოდები ამ კოეფიციენტების გამოსათვლელად მაგრამ ეს უკვე ცალკე თემაა და მას ეწოდება PID რეგულირება (PID Tuning).
No comments:
Post a Comment