อะไรคือกลยุทธ์ที่ดีในการปรับลูป PID?


55

การปรับจูนคอนโทรลเลอร์ทำได้ยากกลยุทธ์ทั่วไปอะไรที่ทำงานได้ดีเพื่อให้ได้ระบบที่มีความเสถียรซึ่งแปรเปลี่ยนเป็นโซลูชั่นที่เหมาะสม


1
คำถามที่กำหนดเป้าหมายไปที่คำถามที่เฉพาะเจาะจงมากขึ้นจะมีประโยชน์มากกว่า มิฉะนั้นคุณควรดูที่บทความPIDโดยมีหัวข้อในการปรับแต่ง
ronalchn

2
ฉันพบเสมอว่าการปรับแต่ง PID นั้นขึ้นอยู่กับลักษณะของระบบเป็นอย่างมากซึ่งเป็นสาเหตุที่ฉันไม่เคยพบว่าระบบปรับค่าอัตโนมัติมีประโยชน์อย่างมาก พวกมันใช้ได้ดีสำหรับการผ่านครั้งแรกการตั้งค่าพารามิเตอร์ที่ต่ำ แต่ก็ยังห่างไกลจากความเหมาะสมและคุณจะมีปัญหาเดียวกันกับกลยุทธ์ทั่วไปใด ๆ
Mark Booth

คำตอบ:


66

สำหรับมอเตอร์ขนาดเล็กและแรงบิดต่ำที่มีเกียร์น้อยหรือไม่มีเลยขั้นตอนเดียวที่คุณสามารถใช้เพื่อปรับแต่งพื้นฐานที่ดีคือการตรวจสอบการตอบสนองต่อการรบกวน

ในการปรับแต่ง PID ให้ใช้ขั้นตอนต่อไปนี้:

  1. ตั้งค่ากำไรทั้งหมดเป็นศูนย์
  2. เพิ่มค่า P ที่ได้รับจนกระทั่งการตอบสนองต่อการรบกวนนั้นเป็นความผันผวนที่มั่นคง
  3. เพิ่มอัตราขยาย D จนกว่าความผันผวนจะหายไป (นั่นคือช่วงวิกฤต)
  4. ทำซ้ำขั้นตอนที่ 2 และ 3 จนกระทั่งการเพิ่มอัตราขยาย D ไม่หยุดการแกว่ง
  5. ตั้งค่า P และ D เป็นค่าคงที่สุดท้าย
  6. เพิ่มค่า I ที่ได้รับจนกระทั่งมันนำคุณไปสู่จุดที่ต้องการโดยมีจำนวนการแกว่งที่ต้องการ (โดยปกติเป็นศูนย์ แต่การตอบสนองที่รวดเร็วสามารถเกิดขึ้นได้หากคุณไม่สนใจการแกว่งของแรงมากเกินไป)

สิ่งรบกวนที่คุณใช้ขึ้นอยู่กับกลไกที่คอนโทรลเลอร์ติดอยู่ โดยปกติการเคลื่อนย้ายกลไกด้วยมือห่างจากจุดที่ตั้งไว้และปล่อยให้ไปก็เพียงพอแล้ว หากความผันผวนเพิ่มมากขึ้นเรื่อย ๆ คุณต้องลดค่า P

หากคุณตั้งค่า D gain สูงเกินไประบบจะเริ่มพูดพล่อย (สั่นที่ความถี่สูงกว่า P ได้รับการแกว่ง) หากสิ่งนี้เกิดขึ้นลดกำไร D จนกว่าจะหยุด

ฉันเชื่อว่าเทคนิคนี้มีชื่อ ฉันจะใส่มันที่นี่เมื่อฉันพบมัน


2
เสียงเหมือน Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
Throwback1986

1
@ Throwback1986, นี่ไม่ใช่ Ziegler-Nichols ซึ่งใช้ P gain เท่านั้นและที่ I และ D gain ถูกคำนวณตามจาก P P ที่ได้รับและระยะเวลาการ
แกว่ง

คุณมีคำแนะนำเพิ่มเติมสำหรับการปรับแต่งแขนหุ่นยนต์ที่มีข้อต่อหลายตัวที่จำเป็นต้องจูนหรือไม่? คุณเริ่มต้นจากฐานและทำงานออกไปด้านท้ายเอฟเฟกต์หรืออีกด้านหนึ่งหรือไม่
adamconkey

1
ในสถานศึกษาหรืออุตสาหกรรมคุณจะต้องการวิธีการควบคุมที่ซับซ้อนยิ่งขึ้น สำหรับคนที่ทำตัวไร้มารยาท แรงโน้มถ่วงมีผลทำให้หมาด ๆ ดังนั้นปรับข้อต่อแต่ละมุมที่แรงโน้มถ่วงมีผลต่อมอเตอร์น้อยที่สุด ตัวอย่างเช่นเมื่อแขนชี้ขึ้นตรงเพื่อให้แรงโน้มถ่วงกระทำกับแบริ่งไม่ใช่มอเตอร์ สั่งซื้อไม่เป็นไร การเพิ่มเงื่อนไขการชดเชยแรงโน้มถ่วงของฟีดไปข้างหน้าในการควบคุมของคุณน่าจะเป็นการปรับปรุงที่ง่ายที่สุด (ใช้ Newton-Euler แบบเรียกซ้ำสำหรับแขนอนุกรม) หากคุณไม่สามารถรับประสิทธิภาพที่คุณต้องการ
hauptmech

pidtuner.comเครื่องมือที่มีให้ฉันผลลัพธ์ที่ดีกว่า Ziegler-Nichols วิธีการที่มีข้อบกพร่องที่รู้จักกันหลายแห่ง folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Juan Gonzalez Burgos

13

วิธีการทดลองที่คล้ายกันกับคำตอบของ hauptmech ที่ฉันถูกสอนในวิทยาลัย:

  1. ตั้งค่าทั้งหมดเป็น 0
  2. เพิ่มK dจนกระทั่งระบบสั่น
  3. ลดK dโดยปัจจัย 2-4
  4. ตั้งเคพีประมาณ 1% ของK d
  5. เพิ่มK pจนกระทั่งการแกว่งเริ่ม
  6. ลดK pลงด้วยปัจจัย 2-4
  7. ตั้งK ฉันไปประมาณ 1% ของK P
  8. เพิ่มK iจนกระทั่งการแกว่งเริ่มขึ้น
  9. ลดK iลง2-4 เท่า

วิธีการZiegler-Nicholsมีความแม่นยำมากขึ้นถ้าคุณได้จำนวนที่แม่นยำสำหรับช่วงการแกว่ง โดยทั่วไปจะทำให้เกิดการแกว่งโดยใช้หมายเลข "classic PID" ที่กำหนดดังนั้นจึงไม่เหมาะที่สุดเสมอไป

สำหรับกฎทั่วไปเกี่ยวกับผลกระทบของแต่ละคำศัพท์เกี่ยวกับเวลาที่เพิ่มขึ้นเกินกำหนดเวลาตั้งเวลาข้อผิดพลาดคงที่และความมั่นคงให้ดูตารางที่ 1 ของ"การวิเคราะห์และออกแบบระบบควบคุม PID"โดย Li, Ang และ Chong ในระบบควบคุม IEEE นิตยสาร.


2
Kd ก่อน? ฉันคิดเสมอว่ามันเป็นการดีที่สุดที่จะเริ่มต้นด้วย Kp
Rocketmagnet

ฉันกำลังถ่ายทอดจากสไลด์บรรยายเก่าถ้ามีเหตุผลที่ดีที่จะไม่ทำอย่างนั้นฉันก็อยากรู้อยากเห็น
Joe Baker

1
นั่นคืออัลกอริทึมที่ฉันแนะนำให้ใช้สำหรับการ "จูนกางเกง" มันจะทำให้คุณใกล้เคียงที่สุดเท่าที่จะทำได้โดยไม่ต้องสร้างแบบจำลองระบบหรือวัดการตอบสนอง (การสร้างแบบจำลองและ / หรือการวัดเป็นวิธีเดียวที่จะไปหากคุณต้องการปรับจูนอย่างถูกต้องจริงๆ)
TimWescott

การปรับแต่ง Kd เป็นครั้งแรกไม่สมเหตุสมผลกับฉันเช่นเดียวกับใน PID ทุกตัวที่ฉันใช้สัญลักษณ์ Kd นั้นเป็นลบ มันถูกใช้เพื่อลดสัญญาณควบคุมเมื่อมีการเปลี่ยนแปลงข้อผิดพลาดเกิดขึ้นอย่างมาก หากคุณมี Kd เพียงระบบจะเคลื่อนที่ไปในทิศทางตรงกันข้ามเพิ่มความผิดพลาดและรวมปัญหา หาก Kd เป็นค่าบวกดังนั้นเมื่อใดก็ตามที่มีการเปลี่ยนแปลงข้อผิดพลาดเกิดขึ้นในทิศทางที่ถูกต้องคุณจะต้องทำการเปลี่ยนแปลงให้เร็วขึ้นและเกินเป้าหมายของคุณ
Andrew Capodieci

ที่จริงแล้วการปรับ D gain ครั้งแรกทำให้รู้สึกบางอย่าง แต่ฉันสมมติว่า "การเพิ่ม D" หมายถึงการเพิ่มค่าสัมบูรณ์และเป็นการเพิ่มความหมาด ๆ ปัญหาที่ใหญ่ที่สุดของ D gain คือมันขยายสัญญาณรบกวนความถี่สูงและมันดีที่ได้เห็นเอฟเฟกต์โดยที่ไม่ได้รับ P ดังนั้นคุณต้องเริ่มต้นด้วยการมองหากำไรที่จะหยุดทำตัวเหมือนหมาด ๆ และเริ่มขยายสัญญาณรบกวนและสัญญาณข้อผิดพลาดที่ล้าหลัง ฉันสมมติว่าในขั้นตอนที่ 2 คุณต้องกระตุ้นโรงงานของคุณเพื่อดูว่ามันสั่นหรือไม่
DrRobotNinja

7

Embedded.com ได้ย้ายบทความของฉันอีกครั้ง แต่นี่คือที่ที่มันอยู่ตอนนี้ นี่แสดงให้คุณเห็นวิธีการเขียนลูป PID (การหาวิธีการทำในสิ่งอื่นที่ไม่ใช่จุดลอยตัวเป็นแบบฝึกหัดให้ผู้อ่าน) และวิธีการปรับแต่ง

PID ที่ไม่มีปริญญาเอก

วิธีที่ดีที่สุดขึ้นอยู่มากในความสามารถของคุณ วิธีที่จะได้รับการปรับแต่งที่ดีที่สุดสมมติว่าคุณเป็นมือของระบบควบคุมที่มีประสบการณ์คือการวัดการตอบสนองของพืช ("โรงงาน" == "สิ่งที่คุณกำลังควบคุม") จากนั้นขึ้นอยู่กับว่าคุณทำ การวัดการสกัดแบบจำลองของพืชและการออกแบบที่หรือเพียงแค่ออกแบบโดยตรงกับการวัด

สำหรับพืชที่ยากบางชนิดคุณจะพบว่าคุณไม่สามารถทำการวัดที่น่าพอใจได้ซึ่งในกรณีนี้คุณจะต้องใช้แบบจำลองเพียงอย่างเดียว สิ่งเหล่านี้หายาก แต่สร้างความพึงพอใจเมื่อคุณทำให้พวกเขาทำงาน


5

Sebastian Thrun นำเสนออัลกอริธึมง่ายๆสำหรับปรับแต่ง PID ในชั้นเรียน "How to Program a a Robotic Car" มันเรียกว่า "เกลียว" เขาอธิบายว่าที่นี่

Twiddle มีแนวโน้มที่จะพบกับ minima ท้องถิ่นน้อยมาก - ซึ่งหมายความว่าคุณสามารถหาค่าคงที่สามค่าที่ไม่เป็นไร แต่ไม่เหมาะกับสถานการณ์ ปัญหาของการปรับค่าคงที่ PID เป็นส่วนย่อยของปัญหาการค้นหาทั่วไปเพิ่มเติมเพื่อค้นหาพารามิเตอร์บางอย่างเพื่อเพิ่มประโยชน์สูงสุด (ในกรณีนี้ลดข้อผิดพลาดของอัลกอริธึม PID ให้น้อยที่สุด) คุณสามารถดูวิธีแก้ไขปัญหาทั่วไปอื่น ๆ สำหรับปัญหานี้เช่นการปีนเขาการหลอมจำลองอัลกอริธึมทางพันธุกรรม ฯลฯ ซึ่งอาจสิ้นสุดลงเพื่อค้นหาวิธีแก้ไขปัญหาที่เหมาะสมที่สุด


4

ตรงกันข้ามกับคำตอบอีกสองคำตอบที่ฉันบอกว่าวิธีที่ดีในการปรับแต่ง PID คือการไม่สนใจ Kd ดังนั้นเริ่มต้นที่ 0 และเพิ่ม Kp จนกว่าคุณจะไปถึงเป้าหมายจากนั้นเพิ่ม Ki เพื่อกำจัดข้อผิดพลาดที่คงที่

Kd สามารถสร้างความสับสนให้กับปัญหาได้เนื่องจากมันตอบสนองต่อเสียงรบกวนได้ไม่ดีจากนั้นคุณเริ่มเพิ่มตัวกรองในอินพุตแบบอะนาล็อกของคุณแล้วถามว่ามันทำอะไรได้นอกจากชะลอการควบคุมของคุณและทำให้ทุกอย่างยากขึ้น ...

อีกสิ่งที่ทำให้ฉันสับสนคือถ้าสมการ PID อยู่ในรูปแบบมาตรฐานหรือในรูปแบบอิสระ (ขนานในรูปแบบวิกิพีเดีย) ดูเหมือนว่าเอฟเฟ็กต์ของ Ki จะผกผันเมื่อรูปแบบเป็นวิธีที่ผิดกับสิ่งที่คุณคิด ทั้งสองชนิดใช้ในระบบอัตโนมัติบางครั้งมีตัวเลือกเพื่อสลับระหว่างกัน


4

การสร้างแบบจำลองระบบ

แน่นอนว่าการปรับการทดลองสามารถทำได้ดังที่กล่าวไว้ในคำตอบอื่น ๆ แต่ถ้าคุณสามารถกำหนดรูปแบบไดนามิกที่เหมาะสมสำหรับสิ่งที่คุณต้องการควบคุมและสามารถระบุพารามิเตอร์ได้คุณควรออกแบบตัวควบคุมของคุณได้ดี เกณฑ์ -defined เช่นแหก , เวลาที่เพิ่มขึ้น , การตกตะกอนเวลา , มั่นคงของรัฐข้อผิดพลาดและอื่น ๆ

มีแม้แต่เครื่องมือใน MATLABที่สามารถปรับแต่งคอนโทรลเลอร์ของคุณเพื่อปรับให้เหมาะสมกับการรวมกันของเกณฑ์เหล่านี้ซึ่งทำให้ใช้งานได้ดียิ่งขึ้น

รู้จักผู้ควบคุมของคุณ

เรียนรู้ว่าแต่ละพารามิเตอร์ในตัวควบคุม PID นั้นมีประโยชน์เช่นกัน อัลกอริธึมการทดลองทั้งหมดขึ้นอยู่กับความรู้ประเภทนี้อย่างใด หากคุณไม่เพียงทำตามคำแนะนำ แต่สามารถรู้สึกถึงตัวคุณได้คุณอาจปรับจูนคอนโทรลเลอร์ของคุณได้ง่ายขึ้น

ปัญหาโลกแห่งความจริง

มีโอกาสเป็นหนึ่งในสิ่งเหล่านี้ในหมู่คนอื่น ๆ จะได้รับในทางของคุณเมื่อการปรับการควบคุมของคุณเป็น: windup , อัตราการสุ่มตัวอย่างไม่เพียงพอ , ความอิ่มตัวของสี

ข้อสรุป

ในท้ายที่สุดทุกอย่างขึ้นอยู่กับสิ่งที่คุณสามารถทำได้กับระบบของคุณเพื่อรับความรู้เกี่ยวกับวิธีการทำงานและการทดลองประเภทใดที่สามารถทำได้ สิ่งที่ดีที่สุดคือการเรียนรู้เพิ่มเติมเกี่ยวกับตัวควบคุม PID และทฤษฎีการควบคุมโดยทั่วไป IMO แต่ฉันลำเอียง :)


ฉันไม่เข้าใจว่าเพราะเหตุใดผู้คนจึงแนะนำให้ใช้การวิเคราะห์พฤติกรรมสำหรับการปรับ PID ในปัจจุบันเรามีเครื่องมืออัตโนมัติมากมายสำหรับการระบุพืชและการออกแบบตัวควบคุมที่ไม่ต้องการพื้นหลังเชิงลึก ยกนิ้วให้สำหรับคำตอบนี้แล้ว
Ugo Pattacini

3

ฉันจะพยายามขยายประสบการณ์ของฉันเล็กน้อยสำหรับผู้ที่อาจสนใจ ฉันคิดว่าปัญหาคือเรามีทฤษฎีการควบคุมจำนวนมากที่ไม่สามารถเข้าถึงได้ (และบางครั้งก็ไม่มีประโยชน์) จากนั้นเรามีกฎง่ายๆที่ทำให้สมมติฐานเกี่ยวกับระบบที่มักจะไม่ถูกต้อง

ความมั่นคง

มาพูดคุยกันก่อนว่าทำไมลูปควบคุมจึงไม่เสถียร สำหรับการสนทนานี้ฉันจะถือว่าเป็นระบบเชิงเส้น หมายความว่าหากสัญญาณควบคุมของคุณเป็นคลื่นไซน์ที่ความถี่ที่กำหนดเอาท์พุทที่คุณสังเกตจะอยู่ที่ความถี่เดียวกันและถ้าคุณเปลี่ยนแอมพลิจูดของระบบควบคุมของคุณเอาต์พุตของคุณจะตอบสนองในอัตราส่วนเดียวกัน สมมติฐานนี้เป็นการประมาณที่ดีสำหรับระบบในโลกแห่งความเป็นจริงมากมายและให้เราดูความถี่ที่แตกต่างกันในการแยก

หากคุณดูที่เส้นทางควบคุมที่คุณกำหนดไว้คอนโทรลเลอร์ PID ของคุณระบบของคุณ (หรือที่เรียกว่า "โรงงาน") จากนั้นเซ็นเซอร์ของคุณ ลองนึกภาพการตั้งค่าจุดคงที่และคลื่นไซน์จากเซ็นเซอร์ของคุณ (นี่เท่ากับการรบกวนที่โลกแห่งความเป็นจริงที่เซ็นเซอร์ถูกป้อนกลับ) ในระบบที่ไม่เสถียรคำติชมของคุณทำให้วงควบคุมเพื่อขยายข้อผิดพลาดแทนที่จะลดลงเช่นเมื่อเวลาเพิ่มขนาดของแอมป์เพิ่มขึ้น เหตุผลนี้เกิดขึ้นเนื่องจากความล่าช้าหรือความถี่เฉพาะนี้เปลี่ยนเฟสระหว่างอินพุทและเอาท์พุท สำหรับความถี่ที่กำหนดเราสามารถดูว่าวงเปิด (เช่นไม่มีข้อเสนอแนะ) การเปลี่ยนแปลงและความกว้างของเอาท์พุทและเมื่อเราวาดทั้งหมดเหล่านั้นบนกราฟที่เราได้รับสิ่งที่เป็นพล็อตเป็นลางบอกเหตุ. หากเรามีสถานการณ์ในกราฟลูปเปิดที่ซึ่งข้อผิดพลาดยังคงได้รับการขยายจากนั้นเรามีระบบที่ไม่เสถียร หากล่าช้าจะน้อยกว่า 1/2 ความยาวคลื่นหรือได้รับน้อยกว่า x1 ระบบจะมีเสถียรภาพ ในทางปฏิบัติเราต้องการมาร์จิ้นจากจุดนั้น (กำไรมาร์จิ้นและระยะขอบ) ซึ่งเป็นเหตุผลที่คุณจะเห็น "การสำรองข้อมูล" ในวิธีการด้วยตนเอง / วิธีแก้ปัญหาหลายวิธี

ปัญหาหลักของวิธีการแบบแมนนวลคือการที่คุณตาบอดได้และคุณค่อนข้างมั่นใจว่าจะได้รับระบบควบคุมที่ไม่ดี

โปรดระลึกไว้ด้วยว่าความหมายของ P, I และ D นั้นเกี่ยวข้องกับสิ่งที่เซ็นเซอร์ของคุณทำการวัดและการควบคุมที่คุณใช้ ข้อผิดพลาดทั่วไปในตัวควบคุมที่สร้างขึ้นภายในบ้านสำหรับคนที่คิดว่าพวกเขากำลังใช้ P เมื่อพวกเขาไม่ได้จริง ตัวควบคุมมอเตอร์มักจะมีลูปตำแหน่งวิ่งผ่านลูปความเร็วที่วิ่งผ่านลูปแรงบิด ( น้ำตก )

ตกลง แต่สิ่งนี้ช่วยเราได้อย่างไร

ประเด็นแรกที่ฉันอยากทำก็คือถ้าคุณกำลังสร้างตัวควบคุม PID ของคุณเองคุณก็ควรสร้างวิธีการวัดการตอบกลับแบบลูปเปิด ทำการกวาดความถี่ที่อินพุตไปยังคอนโทรลเลอร์ของคุณและวัดเอาท์พุทของเซ็นเซอร์โดยตัดการเชื่อมต่อกับข้อเสนอแนะ จากนั้นคุณสามารถวาดพล็อตแบบวนลูปแบบเปิดและดูว่าทำไมระบบของคุณจึงมีความเสถียรและสามารถแลกเปลี่ยนการควบคุมต่าง ๆ ได้ นอกจากนี้ยังมีประโยชน์ในการวัดการตอบสนองแบบลูปปิดและคุณสามารถทำได้กับระบบใด ๆ โดยทำการกวาดความถี่ของชุดจุดของคุณในขณะที่วงปิด ทั้งสองอย่างนี้ไม่ยากและไม่ต้องการความรู้เชิงทฤษฎีมากมาย

หากคุณเพียงแค่ปรับแต่งการควบคุมโดยไม่เข้าใจว่าเกิดอะไรขึ้นภายใต้ประทุนคุณจะไม่สามารถปรับระบบให้เหมาะสมได้ การสร้างสัญชาตญาณเกี่ยวกับระบบเหล่านี้นั้นไม่ใช่เรื่องยาก เช่นอัตราขยายที่เพิ่มขึ้นจะไม่ส่งผลกระทบต่อเฟส แต่เพิ่มอัตราการเปิดแบบวนซ้ำในทุกความถี่ ดังนั้นสิ่งที่คุณทำเมื่อคุณเพิ่มอัตราการได้สัดส่วนในวิธีการจูนด้วยตนเองเหล่านั้นคือการค้นหาความถี่ที่เฟสไปที่ -180 ดูสิ่งนี้เพื่อรับแนวคิดเพิ่มเติมเกี่ยวกับผลกระทบของการควบคุมต่างๆที่มีต่อการตอบสนองความถี่ของคุณ

บ่อยครั้งที่การรับประสิทธิภาพของลูปปิดที่ดีที่สุดนั้นเกี่ยวข้องกับการปรับแต่งระบบและไม่ใช่แค่ตัวควบคุมที่ได้รับ สิ่งที่คุณต้องการคือการทำให้ระบบเป็น "แข็ง" ที่สุด ซึ่งจะช่วยให้คุณเพิ่มพารามิเตอร์การควบคุมและรับแบนด์วิดธ์วงเปิดและปิดที่ดีที่สุด จากประสบการณ์ของฉันในแอปพลิเคชั่นการควบคุมมอเตอร์การเพิ่มสัดส่วนเป็นสิ่งที่ควรทำในส่วนของ "งาน" และ "ส่วนที่เหลือ" ฉันไม่คิดว่าคุณต้องการเทอม D เลย การมีตัวกรองผ่านความถี่ต่ำและตัวกรองรอยช่วยได้มากในสถานการณ์ที่คุณอาจมีการสั่นพ้องทางกล แต่การตั้งค่าโดยไม่มีพล็อตโบเด็ตเป็นเรื่องยากมาก (ความถี่ความผันผวนที่คุณสังเกตภายใต้วงปิด

หากความปลอดภัยเป็นเรื่องที่กังวล (มอเตอร์ที่ทรงพลังมากหรือระบบที่อาจถูกทำลายโดยมอเตอร์ที่อยู่นอกการควบคุม) คุณจำเป็นต้องใส่ข้อ จำกัด บางอย่างก่อนที่คุณจะเริ่มจูน (เช่นขีด จำกัด ปัจจุบันข้อผิดพลาดตำแหน่งสูงสุด) เพื่อป้องกันระบบ จากนั้นคุณต้องรับความรู้สึกบางอย่างสำหรับช่วงของพารามิเตอร์ หากข้อเสนอแนะของคุณมี 40 การนับต่อการหมุนหรือการนับ 4000 ครั้งต่อการหมุนพารามิเตอร์ของคุณจะเป็นปัจจัย 100 สำหรับระบบที่กำหนด วิธีการของฉันคือการหาช่วงที่คุณมีความสามารถในการควบคุมได้ไม่ดีนักจากนั้นก็เริ่มจากจุดเริ่มต้นด้วย P แล้วฉัน (แม้ว่าคุณจะตาบอด) การสำรองปิดสร้างความมั่นคงนี้

เกินวงปิด

วงปิดพยายามที่จะนำข้อผิดพลาดออกจากระบบ มันจะมีประสิทธิภาพที่ จำกัด อยู่เสมอ สิ่งที่คุณต้องการทำคือลดข้อผิดพลาดที่คอนโทรลเลอร์ของคุณเห็นและวิธีหนึ่งในการทำเช่นนั้นก็คือการใช้เทคนิคที่เรียกว่าฟีดฟอร์เวิร์ด. ในฟีดไปข้างหน้าคุณไปรอบ ๆ ตัวควบคุมและไดรฟ์คำสั่งโดยตรงกับระบบ ตัวอย่างของสิ่งนั้นก็คือการเร่งความเร็วไปข้างหน้า ถ้าคุณรู้ว่าคุณมีค่าคงที่แรงบิดของมอเตอร์และคุณรู้ว่าภาระคุณสามารถบอกได้ว่าคุณต้องขับกระแสไฟฟ้าเพื่อเร่งความเร็วของโหลด คุณเพียงแค่ทำการเร่งความเร็วอินพุตคำสั่งคูณมันด้วยค่าคงที่และเพิ่มเข้าไปในคำสั่งไดรฟ์ของคอนโทรลเลอร์ โดยทั่วไปคุณกำลังทำสิ่งที่ใช้ในการขับเคลื่อนระบบหากไม่มีตัวควบคุมและยิ่งคุณได้รับข้อผิดพลาดน้อยลงเท่าที่ลูปของคุณต้องนำออกไปและระบบของคุณก็จะทำงานได้ดีขึ้น มันสร้างความแตกต่างอย่างมากในทางปฏิบัติ


"จากประสบการณ์ของฉันในแอปพลิเคชั่นควบคุมมอเตอร์การได้สัดส่วนเป็นสิ่งที่ควรจะทำ" งาน "และ" หยุด "ส่วนใหญ่ฉันไม่คิดว่าคุณต้องการเทอม D เลย ฉันจะเห็นด้วยกับที่สำหรับโปรแกรมควบคุมมอเตอร์ทั่วไป P ทำหน้าที่หลักและฉันชดเชยการดริฟท์ / ข้อผิดพลาดในระยะยาว แต่ที่นี่ quadcopter จะต้องเจอกับความปั่นป่วนภายนอกจำนวนมากดังนั้นเทอม D จึงเป็นสิ่งสำคัญที่จะได้รับการตอบสนองที่รวดเร็ว สำหรับคำว่าฉันยกเว้นว่ารูปสี่เหลี่ยมอยู่ในโหมดนำทางอัตโนมัติมันไม่สำคัญเลย
dm76

@ dm76: ประสบการณ์ส่วนใหญ่ของฉันอยู่ที่การควบคุมมอเตอร์และฉันทำข้อจำกัดความรับผิดชอบนั้น ;-) สัญชาตญาณของฉันแม้ว่าจะบอกว่ายังมีที่ว่างสำหรับฉันในแอปพลิเคชัน Quadcopter และฉันคิดว่าถ้า P สูงมากมันสามารถจัดการกับการรบกวนจากภายนอกได้ มันทำในการควบคุมมอเตอร์) ฉันต้องดูระบบเหล่านั้นให้ละเอียดเพื่อพูดอะไรบางอย่างที่ชัดเจนเกี่ยวกับควอดคอปเตอร์ ... ฉันคิดว่าสิ่งที่ฉันพูดที่นี่จะมีผลมาก (โดยเฉพาะการปรับจูนของคุณในโดเมนความถี่และมีการตอบสนองวงเปิดของระบบ )
Guy Sirton

1
@ dm76: และการปรับแต่ง PID แบบ "กฎแห่งหัวแม่มือ" เหล่านั้นจริงๆแล้วส่งผลให้ประสิทธิภาพการทำงานของมอเตอร์ในระดับปานกลางและน่าจะเหมือนกันใน quadcopters บางครั้งตัวกรองบากวางไว้อย่างดีสามารถทำให้คำสั่งซื้อของความแตกต่างขนาด ...
ผู้ชาย Sirton

0

Ziegler-Nicholsเป็นวิธีการใช้งานง่าย มีวิธีการที่แข็งแกร่งกว่านี้ - โดยทั่วไปจะขึ้นอยู่กับโซลูชันทางคณิตศาสตร์ (การวิเคราะห์การเพิ่มประสิทธิภาพการวนซ้ำ ฯลฯ )

นอกเหนือจากนั้น Google "PID ปรับตัวเอง" สำหรับเทคนิคอัตโนมัติบางอย่าง สิ่งที่ฉันชอบคือแอปพลิเคชันของเครือข่ายประสาทเทียมในการปรับจูน


0

หากคุณต้องการค่าสัมประสิทธิ์ PID ที่ถูกต้อง:

  • รับข้อมูลสถิติแอคทูเอเตอร์ของคุณ (เช่นcollecting input voltages+ encoder pulsesใน const บ่อยครั้ง0.01sec) ( ) 20secsเป็นเมทริกซ์3x 2000)
  • รับฟังก์ชั่นการถ่ายโอน (TF) ของแอคชูเอเตอร์ของคุณ (โดยใช้กล่องเครื่องมือIdentใน MATLAB)
  • สุดท้ายใช้PIDToolกล่องเครื่องมือใน MATLAB และอัปโหลดฟังก์ชั่นการแปลงของคุณ

หรือในลักษณะที่ง่ายและรวดเร็ว:

มีวิธีที่เร็วกว่าเรียกว่าZiegler – Nichols : ป้อนคำอธิบายรูปภาพที่นี่

และในภาพนี้แสดงให้เห็นถึงผลกระทบของพารามิเตอร์ PID :
ผลพารามิเตอร์ PID

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.