ฉันไม่เข้าใจส่วนประกอบของตัวควบคุม PID


12

ฉันไม่เข้าใจส่วนหนึ่งของตัวควบคุม PID สมมติว่าใช้ pseudocode นี้จาก Wikipedia:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

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

ใครช่วยอธิบายหน่อยได้ไหม?

คำตอบ:


16

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


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

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

8

ลองนึกภาพว่าคุณตั้งค่าคอนโทรลเลอร์ PID ไว้บนแขนของคุณเองเพื่อที่จะได้ถือกาแฟหนึ่งถ้วยตรงหน้าคุณ

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

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


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

0

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

https://www.youtube.com/watch?v=l03SioQ9ySg

มีวิดีโอติดตามผลที่อธิบายคณิตศาสตร์และแสดงวิธีรับรหัสจากสูตรทั่วไป

https://www.youtube.com/watch?v=sDd4VOpOnnA

ป้อนคำอธิบายรูปภาพที่นี่

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