การปรับจูนคอนโทรลเลอร์ทำได้ยากกลยุทธ์ทั่วไปอะไรที่ทำงานได้ดีเพื่อให้ได้ระบบที่มีความเสถียรซึ่งแปรเปลี่ยนเป็นโซลูชั่นที่เหมาะสม
การปรับจูนคอนโทรลเลอร์ทำได้ยากกลยุทธ์ทั่วไปอะไรที่ทำงานได้ดีเพื่อให้ได้ระบบที่มีความเสถียรซึ่งแปรเปลี่ยนเป็นโซลูชั่นที่เหมาะสม
คำตอบ:
สำหรับมอเตอร์ขนาดเล็กและแรงบิดต่ำที่มีเกียร์น้อยหรือไม่มีเลยขั้นตอนเดียวที่คุณสามารถใช้เพื่อปรับแต่งพื้นฐานที่ดีคือการตรวจสอบการตอบสนองต่อการรบกวน
ในการปรับแต่ง PID ให้ใช้ขั้นตอนต่อไปนี้:
สิ่งรบกวนที่คุณใช้ขึ้นอยู่กับกลไกที่คอนโทรลเลอร์ติดอยู่ โดยปกติการเคลื่อนย้ายกลไกด้วยมือห่างจากจุดที่ตั้งไว้และปล่อยให้ไปก็เพียงพอแล้ว หากความผันผวนเพิ่มมากขึ้นเรื่อย ๆ คุณต้องลดค่า P
หากคุณตั้งค่า D gain สูงเกินไประบบจะเริ่มพูดพล่อย (สั่นที่ความถี่สูงกว่า P ได้รับการแกว่ง) หากสิ่งนี้เกิดขึ้นลดกำไร D จนกว่าจะหยุด
ฉันเชื่อว่าเทคนิคนี้มีชื่อ ฉันจะใส่มันที่นี่เมื่อฉันพบมัน
วิธีการทดลองที่คล้ายกันกับคำตอบของ hauptmech ที่ฉันถูกสอนในวิทยาลัย:
วิธีการZiegler-Nicholsมีความแม่นยำมากขึ้นถ้าคุณได้จำนวนที่แม่นยำสำหรับช่วงการแกว่ง โดยทั่วไปจะทำให้เกิดการแกว่งโดยใช้หมายเลข "classic PID" ที่กำหนดดังนั้นจึงไม่เหมาะที่สุดเสมอไป
สำหรับกฎทั่วไปเกี่ยวกับผลกระทบของแต่ละคำศัพท์เกี่ยวกับเวลาที่เพิ่มขึ้นเกินกำหนดเวลาตั้งเวลาข้อผิดพลาดคงที่และความมั่นคงให้ดูตารางที่ 1 ของ"การวิเคราะห์และออกแบบระบบควบคุม PID"โดย Li, Ang และ Chong ในระบบควบคุม IEEE นิตยสาร.
Embedded.com ได้ย้ายบทความของฉันอีกครั้ง แต่นี่คือที่ที่มันอยู่ตอนนี้ นี่แสดงให้คุณเห็นวิธีการเขียนลูป PID (การหาวิธีการทำในสิ่งอื่นที่ไม่ใช่จุดลอยตัวเป็นแบบฝึกหัดให้ผู้อ่าน) และวิธีการปรับแต่ง
วิธีที่ดีที่สุดขึ้นอยู่มากในความสามารถของคุณ วิธีที่จะได้รับการปรับแต่งที่ดีที่สุดสมมติว่าคุณเป็นมือของระบบควบคุมที่มีประสบการณ์คือการวัดการตอบสนองของพืช ("โรงงาน" == "สิ่งที่คุณกำลังควบคุม") จากนั้นขึ้นอยู่กับว่าคุณทำ การวัดการสกัดแบบจำลองของพืชและการออกแบบที่หรือเพียงแค่ออกแบบโดยตรงกับการวัด
สำหรับพืชที่ยากบางชนิดคุณจะพบว่าคุณไม่สามารถทำการวัดที่น่าพอใจได้ซึ่งในกรณีนี้คุณจะต้องใช้แบบจำลองเพียงอย่างเดียว สิ่งเหล่านี้หายาก แต่สร้างความพึงพอใจเมื่อคุณทำให้พวกเขาทำงาน
Sebastian Thrun นำเสนออัลกอริธึมง่ายๆสำหรับปรับแต่ง PID ในชั้นเรียน "How to Program a a Robotic Car" มันเรียกว่า "เกลียว" เขาอธิบายว่าที่นี่
Twiddle มีแนวโน้มที่จะพบกับ minima ท้องถิ่นน้อยมาก - ซึ่งหมายความว่าคุณสามารถหาค่าคงที่สามค่าที่ไม่เป็นไร แต่ไม่เหมาะกับสถานการณ์ ปัญหาของการปรับค่าคงที่ PID เป็นส่วนย่อยของปัญหาการค้นหาทั่วไปเพิ่มเติมเพื่อค้นหาพารามิเตอร์บางอย่างเพื่อเพิ่มประโยชน์สูงสุด (ในกรณีนี้ลดข้อผิดพลาดของอัลกอริธึม PID ให้น้อยที่สุด) คุณสามารถดูวิธีแก้ไขปัญหาทั่วไปอื่น ๆ สำหรับปัญหานี้เช่นการปีนเขาการหลอมจำลองอัลกอริธึมทางพันธุกรรม ฯลฯ ซึ่งอาจสิ้นสุดลงเพื่อค้นหาวิธีแก้ไขปัญหาที่เหมาะสมที่สุด
ตรงกันข้ามกับคำตอบอีกสองคำตอบที่ฉันบอกว่าวิธีที่ดีในการปรับแต่ง PID คือการไม่สนใจ Kd ดังนั้นเริ่มต้นที่ 0 และเพิ่ม Kp จนกว่าคุณจะไปถึงเป้าหมายจากนั้นเพิ่ม Ki เพื่อกำจัดข้อผิดพลาดที่คงที่
Kd สามารถสร้างความสับสนให้กับปัญหาได้เนื่องจากมันตอบสนองต่อเสียงรบกวนได้ไม่ดีจากนั้นคุณเริ่มเพิ่มตัวกรองในอินพุตแบบอะนาล็อกของคุณแล้วถามว่ามันทำอะไรได้นอกจากชะลอการควบคุมของคุณและทำให้ทุกอย่างยากขึ้น ...
อีกสิ่งที่ทำให้ฉันสับสนคือถ้าสมการ PID อยู่ในรูปแบบมาตรฐานหรือในรูปแบบอิสระ (ขนานในรูปแบบวิกิพีเดีย) ดูเหมือนว่าเอฟเฟ็กต์ของ Ki จะผกผันเมื่อรูปแบบเป็นวิธีที่ผิดกับสิ่งที่คุณคิด ทั้งสองชนิดใช้ในระบบอัตโนมัติบางครั้งมีตัวเลือกเพื่อสลับระหว่างกัน
การสร้างแบบจำลองระบบ
แน่นอนว่าการปรับการทดลองสามารถทำได้ดังที่กล่าวไว้ในคำตอบอื่น ๆ แต่ถ้าคุณสามารถกำหนดรูปแบบไดนามิกที่เหมาะสมสำหรับสิ่งที่คุณต้องการควบคุมและสามารถระบุพารามิเตอร์ได้คุณควรออกแบบตัวควบคุมของคุณได้ดี เกณฑ์ -defined เช่นแหก , เวลาที่เพิ่มขึ้น , การตกตะกอนเวลา , มั่นคงของรัฐข้อผิดพลาดและอื่น ๆ
มีแม้แต่เครื่องมือใน MATLABที่สามารถปรับแต่งคอนโทรลเลอร์ของคุณเพื่อปรับให้เหมาะสมกับการรวมกันของเกณฑ์เหล่านี้ซึ่งทำให้ใช้งานได้ดียิ่งขึ้น
รู้จักผู้ควบคุมของคุณ
เรียนรู้ว่าแต่ละพารามิเตอร์ในตัวควบคุม PID นั้นมีประโยชน์เช่นกัน อัลกอริธึมการทดลองทั้งหมดขึ้นอยู่กับความรู้ประเภทนี้อย่างใด หากคุณไม่เพียงทำตามคำแนะนำ แต่สามารถรู้สึกถึงตัวคุณได้คุณอาจปรับจูนคอนโทรลเลอร์ของคุณได้ง่ายขึ้น
ปัญหาโลกแห่งความจริง
มีโอกาสเป็นหนึ่งในสิ่งเหล่านี้ในหมู่คนอื่น ๆ จะได้รับในทางของคุณเมื่อการปรับการควบคุมของคุณเป็น: windup , อัตราการสุ่มตัวอย่างไม่เพียงพอ , ความอิ่มตัวของสี
ข้อสรุป
ในท้ายที่สุดทุกอย่างขึ้นอยู่กับสิ่งที่คุณสามารถทำได้กับระบบของคุณเพื่อรับความรู้เกี่ยวกับวิธีการทำงานและการทดลองประเภทใดที่สามารถทำได้ สิ่งที่ดีที่สุดคือการเรียนรู้เพิ่มเติมเกี่ยวกับตัวควบคุม PID และทฤษฎีการควบคุมโดยทั่วไป IMO แต่ฉันลำเอียง :)
ฉันจะพยายามขยายประสบการณ์ของฉันเล็กน้อยสำหรับผู้ที่อาจสนใจ ฉันคิดว่าปัญหาคือเรามีทฤษฎีการควบคุมจำนวนมากที่ไม่สามารถเข้าถึงได้ (และบางครั้งก็ไม่มีประโยชน์) จากนั้นเรามีกฎง่ายๆที่ทำให้สมมติฐานเกี่ยวกับระบบที่มักจะไม่ถูกต้อง
ความมั่นคง
มาพูดคุยกันก่อนว่าทำไมลูปควบคุมจึงไม่เสถียร สำหรับการสนทนานี้ฉันจะถือว่าเป็นระบบเชิงเส้น หมายความว่าหากสัญญาณควบคุมของคุณเป็นคลื่นไซน์ที่ความถี่ที่กำหนดเอาท์พุทที่คุณสังเกตจะอยู่ที่ความถี่เดียวกันและถ้าคุณเปลี่ยนแอมพลิจูดของระบบควบคุมของคุณเอาต์พุตของคุณจะตอบสนองในอัตราส่วนเดียวกัน สมมติฐานนี้เป็นการประมาณที่ดีสำหรับระบบในโลกแห่งความเป็นจริงมากมายและให้เราดูความถี่ที่แตกต่างกันในการแยก
หากคุณดูที่เส้นทางควบคุมที่คุณกำหนดไว้คอนโทรลเลอร์ PID ของคุณระบบของคุณ (หรือที่เรียกว่า "โรงงาน") จากนั้นเซ็นเซอร์ของคุณ ลองนึกภาพการตั้งค่าจุดคงที่และคลื่นไซน์จากเซ็นเซอร์ของคุณ (นี่เท่ากับการรบกวนที่โลกแห่งความเป็นจริงที่เซ็นเซอร์ถูกป้อนกลับ) ในระบบที่ไม่เสถียรคำติชมของคุณทำให้วงควบคุมเพื่อขยายข้อผิดพลาดแทนที่จะลดลงเช่นเมื่อเวลาเพิ่มขนาดของแอมป์เพิ่มขึ้น เหตุผลนี้เกิดขึ้นเนื่องจากความล่าช้าหรือความถี่เฉพาะนี้เปลี่ยนเฟสระหว่างอินพุทและเอาท์พุท สำหรับความถี่ที่กำหนดเราสามารถดูว่าวงเปิด (เช่นไม่มีข้อเสนอแนะ) การเปลี่ยนแปลงและความกว้างของเอาท์พุทและเมื่อเราวาดทั้งหมดเหล่านั้นบนกราฟที่เราได้รับสิ่งที่เป็นพล็อตเป็นลางบอกเหตุ. หากเรามีสถานการณ์ในกราฟลูปเปิดที่ซึ่งข้อผิดพลาดยังคงได้รับการขยายจากนั้นเรามีระบบที่ไม่เสถียร หากล่าช้าจะน้อยกว่า 1/2 ความยาวคลื่นหรือได้รับน้อยกว่า x1 ระบบจะมีเสถียรภาพ ในทางปฏิบัติเราต้องการมาร์จิ้นจากจุดนั้น (กำไรมาร์จิ้นและระยะขอบ) ซึ่งเป็นเหตุผลที่คุณจะเห็น "การสำรองข้อมูล" ในวิธีการด้วยตนเอง / วิธีแก้ปัญหาหลายวิธี
ปัญหาหลักของวิธีการแบบแมนนวลคือการที่คุณตาบอดได้และคุณค่อนข้างมั่นใจว่าจะได้รับระบบควบคุมที่ไม่ดี
โปรดระลึกไว้ด้วยว่าความหมายของ P, I และ D นั้นเกี่ยวข้องกับสิ่งที่เซ็นเซอร์ของคุณทำการวัดและการควบคุมที่คุณใช้ ข้อผิดพลาดทั่วไปในตัวควบคุมที่สร้างขึ้นภายในบ้านสำหรับคนที่คิดว่าพวกเขากำลังใช้ P เมื่อพวกเขาไม่ได้จริง ตัวควบคุมมอเตอร์มักจะมีลูปตำแหน่งวิ่งผ่านลูปความเร็วที่วิ่งผ่านลูปแรงบิด ( น้ำตก )
ตกลง แต่สิ่งนี้ช่วยเราได้อย่างไร
ประเด็นแรกที่ฉันอยากทำก็คือถ้าคุณกำลังสร้างตัวควบคุม PID ของคุณเองคุณก็ควรสร้างวิธีการวัดการตอบกลับแบบลูปเปิด ทำการกวาดความถี่ที่อินพุตไปยังคอนโทรลเลอร์ของคุณและวัดเอาท์พุทของเซ็นเซอร์โดยตัดการเชื่อมต่อกับข้อเสนอแนะ จากนั้นคุณสามารถวาดพล็อตแบบวนลูปแบบเปิดและดูว่าทำไมระบบของคุณจึงมีความเสถียรและสามารถแลกเปลี่ยนการควบคุมต่าง ๆ ได้ นอกจากนี้ยังมีประโยชน์ในการวัดการตอบสนองแบบลูปปิดและคุณสามารถทำได้กับระบบใด ๆ โดยทำการกวาดความถี่ของชุดจุดของคุณในขณะที่วงปิด ทั้งสองอย่างนี้ไม่ยากและไม่ต้องการความรู้เชิงทฤษฎีมากมาย
หากคุณเพียงแค่ปรับแต่งการควบคุมโดยไม่เข้าใจว่าเกิดอะไรขึ้นภายใต้ประทุนคุณจะไม่สามารถปรับระบบให้เหมาะสมได้ การสร้างสัญชาตญาณเกี่ยวกับระบบเหล่านี้นั้นไม่ใช่เรื่องยาก เช่นอัตราขยายที่เพิ่มขึ้นจะไม่ส่งผลกระทบต่อเฟส แต่เพิ่มอัตราการเปิดแบบวนซ้ำในทุกความถี่ ดังนั้นสิ่งที่คุณทำเมื่อคุณเพิ่มอัตราการได้สัดส่วนในวิธีการจูนด้วยตนเองเหล่านั้นคือการค้นหาความถี่ที่เฟสไปที่ -180 ดูสิ่งนี้เพื่อรับแนวคิดเพิ่มเติมเกี่ยวกับผลกระทบของการควบคุมต่างๆที่มีต่อการตอบสนองความถี่ของคุณ
บ่อยครั้งที่การรับประสิทธิภาพของลูปปิดที่ดีที่สุดนั้นเกี่ยวข้องกับการปรับแต่งระบบและไม่ใช่แค่ตัวควบคุมที่ได้รับ สิ่งที่คุณต้องการคือการทำให้ระบบเป็น "แข็ง" ที่สุด ซึ่งจะช่วยให้คุณเพิ่มพารามิเตอร์การควบคุมและรับแบนด์วิดธ์วงเปิดและปิดที่ดีที่สุด จากประสบการณ์ของฉันในแอปพลิเคชั่นการควบคุมมอเตอร์การเพิ่มสัดส่วนเป็นสิ่งที่ควรทำในส่วนของ "งาน" และ "ส่วนที่เหลือ" ฉันไม่คิดว่าคุณต้องการเทอม D เลย การมีตัวกรองผ่านความถี่ต่ำและตัวกรองรอยช่วยได้มากในสถานการณ์ที่คุณอาจมีการสั่นพ้องทางกล แต่การตั้งค่าโดยไม่มีพล็อตโบเด็ตเป็นเรื่องยากมาก (ความถี่ความผันผวนที่คุณสังเกตภายใต้วงปิด
หากความปลอดภัยเป็นเรื่องที่กังวล (มอเตอร์ที่ทรงพลังมากหรือระบบที่อาจถูกทำลายโดยมอเตอร์ที่อยู่นอกการควบคุม) คุณจำเป็นต้องใส่ข้อ จำกัด บางอย่างก่อนที่คุณจะเริ่มจูน (เช่นขีด จำกัด ปัจจุบันข้อผิดพลาดตำแหน่งสูงสุด) เพื่อป้องกันระบบ จากนั้นคุณต้องรับความรู้สึกบางอย่างสำหรับช่วงของพารามิเตอร์ หากข้อเสนอแนะของคุณมี 40 การนับต่อการหมุนหรือการนับ 4000 ครั้งต่อการหมุนพารามิเตอร์ของคุณจะเป็นปัจจัย 100 สำหรับระบบที่กำหนด วิธีการของฉันคือการหาช่วงที่คุณมีความสามารถในการควบคุมได้ไม่ดีนักจากนั้นก็เริ่มจากจุดเริ่มต้นด้วย P แล้วฉัน (แม้ว่าคุณจะตาบอด) การสำรองปิดสร้างความมั่นคงนี้
เกินวงปิด
วงปิดพยายามที่จะนำข้อผิดพลาดออกจากระบบ มันจะมีประสิทธิภาพที่ จำกัด อยู่เสมอ สิ่งที่คุณต้องการทำคือลดข้อผิดพลาดที่คอนโทรลเลอร์ของคุณเห็นและวิธีหนึ่งในการทำเช่นนั้นก็คือการใช้เทคนิคที่เรียกว่าฟีดฟอร์เวิร์ด. ในฟีดไปข้างหน้าคุณไปรอบ ๆ ตัวควบคุมและไดรฟ์คำสั่งโดยตรงกับระบบ ตัวอย่างของสิ่งนั้นก็คือการเร่งความเร็วไปข้างหน้า ถ้าคุณรู้ว่าคุณมีค่าคงที่แรงบิดของมอเตอร์และคุณรู้ว่าภาระคุณสามารถบอกได้ว่าคุณต้องขับกระแสไฟฟ้าเพื่อเร่งความเร็วของโหลด คุณเพียงแค่ทำการเร่งความเร็วอินพุตคำสั่งคูณมันด้วยค่าคงที่และเพิ่มเข้าไปในคำสั่งไดรฟ์ของคอนโทรลเลอร์ โดยทั่วไปคุณกำลังทำสิ่งที่ใช้ในการขับเคลื่อนระบบหากไม่มีตัวควบคุมและยิ่งคุณได้รับข้อผิดพลาดน้อยลงเท่าที่ลูปของคุณต้องนำออกไปและระบบของคุณก็จะทำงานได้ดีขึ้น มันสร้างความแตกต่างอย่างมากในทางปฏิบัติ
Ziegler-Nicholsเป็นวิธีการใช้งานง่าย มีวิธีการที่แข็งแกร่งกว่านี้ - โดยทั่วไปจะขึ้นอยู่กับโซลูชันทางคณิตศาสตร์ (การวิเคราะห์การเพิ่มประสิทธิภาพการวนซ้ำ ฯลฯ )
นอกเหนือจากนั้น Google "PID ปรับตัวเอง" สำหรับเทคนิคอัตโนมัติบางอย่าง สิ่งที่ฉันชอบคือแอปพลิเคชันของเครือข่ายประสาทเทียมในการปรับจูน
0.01sec
) ( ) 20secs
เป็นเมทริกซ์3
x 2000
)มีวิธีที่เร็วกว่าเรียกว่าZiegler – Nichols :