ประโยชน์ของการแปลง PID ที่ได้จาก Z คืออะไร?


29

ฉันได้เห็นบทความ PID จำนวนมากเช่นนี้ใช้ Z transform ของสมการ PID ทั่วไปเพื่อให้ได้สมการความแตกต่างที่บ้าซึ่งสามารถนำไปใช้ในซอฟต์แวร์ (หรือในกรณีนี้คือ FPGA) คำถามของฉันคืออะไรข้อได้เปรียบในการใช้งานกับPIDแบบดั้งเดิมและใช้งานง่ายยิ่งขึ้นโดยไม่มีปริญญาเอกประเภทการใช้งาน? ดูเหมือนจะง่ายต่อการเข้าใจและนำไปปฏิบัติ คำว่า P คือการคูณแบบตรง, อินทิกรัลใช้ผลรวมสะสมและประมาณโดยการลบตัวอย่างก่อนหน้าจากตัวอย่างปัจจุบัน หากคุณต้องการเพิ่มคุณสมบัติเช่นการป้องกัน Windral แบบบูรณาการมันจะเป็นพีชคณิตไปข้างหน้า กำลังพยายามเพิ่มการป้องกันแบบบูรณาการ Windup หรือคุณสมบัติอื่น ๆ ให้กับอัลกอริธึมชนิดที่แตกต่างเช่นลิงค์ด้านบนดูเหมือนว่ามันจะซับซ้อนกว่ามาก มีเหตุผลที่จะใช้การดำเนินการดังกล่าวนอกเหนือจาก "ฉันเป็นคนเลวที่ชอบทำ Z แปลงเพื่อความสนุก" สิทธิเป้อเย้อประเภทที่ไปพร้อมกับมันได้หรือไม่

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

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

e(k-2)=e(k-1),

u(k)=u(k1)+Kp(e(k)e(k1)+KiTie(k)+KdTi(e(k)2e(k1)+e(k2))
u ( k - 1 ) = u ( k )
e(k2)=e(k1),e(k1)=e(k)
u(k1)=u(k)

หรือ

sum=sum+e(k)
u(k)=Kpe(k)+KiTisum+KdTi(e(k)e(k1))
e(k1)=e(k)

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


คุณหมายถึง "Differential Equation" หรือไม่
Kevin Vermeer

ฉันต้องเข้าใจผิดความคิดเห็นของคุณอย่างน้อยฉันก็ทำตามความคิดเห็นนี้ ฉันจะลบความคิดเห็นของฉัน!
Kortuk

1
โปรดย้ายไปที่ dsp.stackexchange.com
Jason S

คำตอบ:


7

คุณกำลังสับสนกับความเพ้อฝันของ Z-transform ทั้งหมด วิธีการสองวิธีนั้นเหมือนกันโดยพื้นฐาน - วิธี PID ที่ไม่มี PHD นั้นมีตัวห้อยน้อยกว่า พวกเขาทำหน้าที่พื้นฐานที่เหมือนกันและใช้คณิตศาสตร์พื้นฐานเดียวกัน

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

ดูเหมือนว่ากรณีศึกษาที่คุณพบว่าการนำวิธีการแปลงรูป Z มาใช้นั้นได้รับการออกแบบมาเพื่อกำหนดขึ้นสูง สิ่งนี้อธิบายการใช้ FPGA ของพวกเขา - การคำนวณจะใช้เวลาเท่ากันเสมอ PID ที่ไม่มีการใช้งาน PHD นั้นไม่ได้กำหนดแน่นอน การใช้คู่เป็นตัวแปรแทนการใช้งานแบบจุดคงที่แน่นอนว่าทำให้เกิดพฤติกรรมที่ไม่ได้กำหนดไว้ในไมโครคอนโทรลเลอร์ใด ๆ โดยไม่ต้องมีหน่วยจุดลอยตัว กรณีศึกษากำลังทำงานในระดับที่แตกต่างกันโดยสิ้นเชิงของความซับซ้อนเมื่อเทียบกับวิธี PID w / o PHD

ดังนั้นวิธีการทางคณิตศาสตร์และการควบคุมจึงเหมือนเดิม แต่กรณีศึกษา / วิธีการแปลง Z นั้นมีความเข้มงวดกว่าและมีเหตุผลทางทฤษฎีมากกว่า วิธี PID w / o PHD จะทำงานสำหรับระบบที่เรียบง่ายและไม่สำคัญเวลาเท่านั้นซึ่งค่อนข้างเสถียร


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

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

"วิธี PID โดยไม่มี PHD จะทำงานได้ง่ายมาก" - ฉันไม่เห็นด้วย คุณสามารถเพิ่มประสิทธิภาพระบบควบคุมแบบดิจิตอลอย่างแน่นอนโดยใช้การวิเคราะห์แบบ Z-transform แต่ด้านพลิกคือคุณสามารถติดตั้งในการสร้างแบบจำลองระบบของคุณเพื่อให้คุณพลาดป่าสำหรับต้นไม้อย่างแม่นยำ
Jason S

10

วิธี Z-transform ในการออกแบบตัวควบคุม PID ในที่สุดจะให้การใช้งานที่มีประสิทธิภาพมากขึ้น นี่เป็นสิ่งสำคัญหากคุณกำลังออกแบบแอพพลิเคชั่น FPGA / DSP / ไมโครคอนโทรลเลอร์ขนาดเล็กที่สุดสำหรับคุณ

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

นอกจากนี้ Z-transform ยังให้ยืมตัวเองที่ดีกว่าในการออกแบบในโดเมนแบบแยก (ดิจิทัล) วิธีการออกแบบดั้งเดิม (การแปลง Laplace) นั้นมีความต่อเนื่องมากกว่า มีหลายวิธีในการแปลงระหว่างสองวิธี (การระงับแบบ Zero-Order, การแก้ไขแบบเชิงเส้น, การวางตำแหน่งเสา, Bilinear / Tustin) แต่ละแบบมาพร้อมกับจุดแข็งและข้อเสียในแง่ของความเสถียรและการตอบสนองของระบบ โดยทั่วไปแล้วการออกแบบทั้งหมดในโดเมนแยกต่างหากนั้นง่ายกว่า

เรื่องสั้นสั้น ๆ ถ้าคุณใช้ระบบ "ช้า" (พฤติกรรมที่สำคัญทั้งหมดเกิดขึ้นอย่างมีนัยสำคัญภายใต้ 100kHz หรือมากกว่านั้น) การออกแบบครั้งแรกน่าจะดี คุณสามารถนำไปใช้กับไมโครคอนโทรลเลอร์หรือพีซีและทำได้ด้วย เมื่อระบบเร็วขึ้นคุณอาจต้องใช้วิธีการแปลง Z เพื่อให้ได้ความเร็วตามที่คุณต้องการ (บทความกล่าวถึง 9.5MHz โดยสมมติว่าคุณมี A / D และ DAC ที่สามารถติดตามได้)


1
การดำเนินการทางคณิตศาสตร์จำนวนเท่ากันการแทนตัวเลขที่แตกต่างกัน การแสดงคู่เป็นจำนวนตัวเลขที่ซับซ้อนกว่าวิธีจุดคงที่ที่ใช้ในกรณีศึกษา ความซับซ้อนน้อยลงหมายถึงการทำงานที่น้อยลง (บนซิลิคอน)
AngryEE

2
@ bt2 ฉันจะบอกว่ามีประสิทธิภาพมากขึ้นในแง่ที่ว่ามีการตั้งค่าชิป DSP สำหรับชุดคำสั่ง SIMD (Single Instruction, Multiple Data) แม้ว่าการดำเนินการทางคณิตศาสตร์จะมีจำนวนเท่ากัน แต่การแปลง Z ช่วยให้คุณทำทวีคูณทั้งหมดในหนึ่งรอบการเรียนการสอนแล้วรวมองค์ประกอบทั้งหมดของเวกเตอร์ผลลัพธ์ในหนึ่งรอบ (ขึ้นอยู่กับแพลตฟอร์ม) ดังนั้นในขณะที่คณิตศาสตร์เหมือนกันความซับซ้อนของเวลาจะลดลงอย่างมากทำให้ได้ผลเร็วขึ้น
mjcarroll

1
@ bt2 รูปแบบ z ให้ยืมตัวเองเพื่อนำไปใช้เป็นสมการความแตกต่างซึ่งขึ้นอยู่กับเอาต์พุตที่ผ่านมาและอินพุตปัจจุบันโดยไม่จำเป็นต้องมีผลรวมการรันซึ่งจะมีบางจุดที่ไหลล้น (หรืออันเดอร์โฟล์) DSP ได้รับการออกแบบมาเพื่อให้สามารถใช้งานตัวกรองดิจิตอลได้อย่างมีประสิทธิภาพผ่านแนวทางสมการความแตกต่าง ดูen.wikipedia.org/wiki/Digital_filter esp. แบบฟอร์มโดยตรง - นั่นคือสิ่งที่ DSP ปรับให้เหมาะสม
FreeSpace

1
ฉันคิดว่าคุณขาดอะไรไป ผลรวมสะสมจะไม่ล้นในสถานการณ์ปกติ ตัวกรอง IIR อาจไม่อิ่มตัวเสมอไปและในกรณีของตัวควบคุม PID ซึ่งโดยปกติจะไม่เป็นเช่นนั้น การพูดว่าจะใช้อัลกอริธึมหนึ่ง แต่จะไม่เป็นอย่างนั้นเป็นเท็จ ผลรวมสะสมจะเหมือนกันโดยอิงตามเอาท์พุทก่อนหน้า หากมีสาเหตุมากเกินไปพวกเขาทั้งสองจะ ลองคิดดูสิวิธีนี้การฝังครั้งที่ 2 เป็นครั้งแรกโดยมีการคำนวณทางคณิตศาสตร์ออกมา ... u (k-1) - kp (e (k-1) - kd / Ti (e-k-1) - e ( k-2) == (ผลรวม
สะสม

1
-1: การแปลง Z ไม่ให้การใช้งานที่มีประสิทธิภาพมากขึ้น ในความเป็นจริงถ้าคุณเปรียบเทียบตัวกรอง low-pass 1 ขั้วโดยใช้วิธีดิจิตอล "ไร้เดียงสา" กับตัวกรอง low-pass 1 ขั้วโดยใช้การแปลงแบบ bilinear คุณจะได้รับการปรับใช้ที่มีประสิทธิภาพน้อยกว่าเล็กน้อยด้วยวิธีนี้ โดยไม่คำนึงถึงตัวกรองที่ได้มาตัวแปรสถานะ # ตัวเดียวกัน = เกี่ยวกับประสิทธิภาพของการนำไปใช้ที่เหมือนกัน ส่วนใหญ่เป็นปริมาณอิสระจากวิธีการออกแบบตัวกรอง
Jason S

5

นี่คือข้อตกลงในประสบการณ์ของฉัน:

  • Z แปลงความช่วยเหลือสำหรับการวิเคราะห์: ทฤษฎีของระบบที่ไม่ต่อเนื่องเวลาตัวอย่างเป็นแบบจำลองที่ดีที่สุดผ่านการแปลง Z
  • การออกแบบตัวควบคุม PID หรือฟิลเตอร์กรองความถี่ต่ำสามารถทำได้ทั้งผ่านการแปลง Z เช่นเดียวกับการวิเคราะห์แบบดั้งเดิมโดยมีหนึ่งในหลาย ๆ การประมาณที่ใช้ในการแปลงอนุพันธ์ / อินทิกรัลจากเวลาต่อเนื่องเป็นเวลาไม่ต่อเนื่อง หากเสาและศูนย์ของคุณอยู่ที่ความถี่ต่ำเมื่อเทียบกับอัตราตัวอย่างมันไม่สำคัญ ยึดติดกับสิ่งใดก็ตามที่คุณรู้สึกมั่นใจมากที่สุด
  • การแปลง Z มาของตัวกรองและตัวควบคุมมักจะปิดบังความหมายทางกายภาพของพารามิเตอร์ของตัวกรองและตัวควบคุมเหล่านั้น ถ้าฉันมีการวนซ้ำแบบ PID ที่มีการรวมเป็นหนึ่ง, การได้สัดส่วนและการได้ส่วนต่างฉันรู้ว่าแต่ละพารามิเตอร์เหล่านี้ทำอะไรได้โดยตรง ถ้าฉันใช้การแปลง Z พวกเขาเป็นเพียงตัวเลขที่ฉันต้องได้รับอย่างใด
  • การใช้งานตัวกรองและตัวควบคุมอาจหรือไม่ปิดบังความหมายทางกายภาพของพารามิเตอร์ของตัวกรองและตัวควบคุมเหล่านั้น คุณภาพนี้ส่วนใหญ่เป็นอิสระจากจุดก่อนหน้านี้: ถ้าฉันมีการออกแบบที่ใช้การแปลง Z ฉันสามารถแปลงให้เป็นการใช้งานที่ดูคลาสสิคและในทางกลับกัน ตัวอย่างของคุณภายใต้ FINAL EDIT เป็นสิ่งที่ดีเพราะการใช้งานครั้งที่สองช่วยให้ผู้รวมระบบ (" sum") แยกกันในตัวแปรสถานะของตัวเอง ตัวแปรสถานะนั้นมีความหมาย การใช้งานครั้งแรกทำให้ตัวแปรสถานะเป็นประวัติที่ผ่านมาของข้อผิดพลาด; ที่มีความหมาย แต่ให้ความเข้าใจที่น้อยลงในความคิดของฉัน

ในที่สุดก็มีปัญหาอื่น ๆ ที่เกี่ยวข้องกับการไม่เชิงเส้นหรือการวิเคราะห์ที่มักจะทำให้คุณเลือกการใช้งานมากกว่าหนึ่ง (สำหรับฉันมันมักจะเป็นวิธีที่คลาสสิกสำหรับตัวควบคุมสำหรับตัวกรอง FIR มันคือการแปลง Z และสำหรับตัวกรอง IIR 1 หรือ 2 ขั้ว วิธีคลาสสิก):

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

  • ด้วยเหตุผลเดียวกันกับที่ฉันยังเสมอคำนวณบูรณาการในลักษณะที่เรียกว่าผลผลิต: เช่นมากกว่าsum += Ki*error; out = stuff + sum sum += error; out = stuff + Ki*sumด้วยวิธีที่สองหากคุณเปลี่ยน gain Ki ซึ่งเป็นการปรับเอฟเฟกต์ของ integrator ต่อเอาต์พุตขึ้นและลงซึ่งอาจไม่ใช่สิ่งที่คุณต้องการและการ จำกัด การเปลี่ยนแปลงขึ้นอยู่กับกำไร หากคุณทวีคูณข้อผิดพลาดโดย Ki ก่อนที่จะรวมหน่วยของผู้รวมจะเหมือนกับหน่วยของเอาต์พุตลูปการควบคุมและมีความหมายทางกายภาพชัดเจนขึ้น

(อัปเดต: ฉันเขียนบล็อกในหัวข้อนี้โดยละเอียดยิ่งขึ้น)


4

แก้ไข :

ใช้ Z-เปลี่ยนทำให้ง่ายต่อการรวมและลดความซับซ้อนของระบบ LTI สำหรับการวิเคราะห์ ตัวอย่างเช่นชุดลดหลั่นระบบ LTI k กับฟังก์ชั่นการถ่ายโอน H1, H2, ... , Hk H = H1*H2*...*Hkจะรวมเป็นสินค้าที่มีความเรียบง่าย ฟังก์ชั่นการถ่ายโอนของลูปป้อนกลับเชิงลบคือT = G/(1 + G*H)โดยที่ H อยู่บนเส้นทางป้อนกลับ เมื่อคุณมีฟังก์ชั่นการถ่ายโอนโดยรวมแล้วคุณสามารถวิเคราะห์เสถียรภาพ (ตำแหน่งของเสา) และประสิทธิภาพ (ข้อผิดพลาดชั่วคราวสถานะคงที่) เพิ่มตัวกรองเพิ่มเติมและข้อเสนอแนะเพื่อเพิ่มประสิทธิภาพการออกแบบ

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

ส่วน biquad


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

1
ฟังก์ชั่นการถ่ายโอน H (z) เป็นฟังก์ชั่นเหตุผล B (z) / A (z) พหุนามแต่ละหน่วยใน z เป็นปัจจัยหนึ่งของ N ศูนย์สำหรับระบบลำดับที่ N ศูนย์ของ A (z) ซึ่งอยู่ในตัวส่วนเรียกว่าเสา (นี่คือเส้นทางป้อนกลับ) สำหรับปัจจัยการปรับสเกลค่าคงที่ระบบ Linear Time Invariant (LTI) จะอธิบายโดยศูนย์และเสา
Eryk Sun

1
ระบบ LTI แบบไม่ต่อเนื่องมีเสถียรภาพหากเสาทั้งหมดอยู่ภายในวงกลมหน่วยบนระนาบ z แต่การวัดปริมาณด้วยความแม่นยำแบบดิจิตอล จำกัด นำเสนอเสียงที่อาจทำให้ระบบมีความเสถียรเล็กน้อยไม่เสถียรหรือล่องลอยไปในความไม่แน่นอนตลอดเวลา โดยการแยก H (z) ลงใน biquadratics ของผลิตภัณฑ์ (biquads) ข้อผิดพลาดชนิดนี้จะลดลง
Eryk Sun

2
biquad เป็นพาร์ติชันขั้นต่ำที่ต้องการเนื่องจากค่าศูนย์ของพหุนามที่มีสัมประสิทธิ์จริงเป็นจริงหรือเป็นคู่ของคอนจูเกตที่ซับซ้อน biquad B (z) / A (z) คือ (b0 + b1z ^ -1 + b2z ^ -2) / (a0 + a1z ^ -1 + a2z ^ -2)
Eryk Sun

ฉันเพิ่มแล้วเอาตัวอย่างสำหรับเสียง quantization เปรียบเทียบกำลังสองที่เรียงซ้อนกับโพลีลำดับที่ 4 โดยตรง แต่มันมากเกินไป ฉันต้องนอนบ้าง ขออภัย Tyblu
Eryk Sun

3

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

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

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

ตอนนี้ตามความชอบส่วนตัวฉันมักจะใช้วิธี PID w / oa PhD นี่เป็นเพียงเพราะฉันใช้ไมโครคอนโทรลเลอร์กับระบบที่ไม่ได้ขึ้นอยู่กับคอนโทรลเลอร์


2

มีหลายจุดว่าทำไมรูปแบบการแปลง Z จึงมีประโยชน์สูงกว่า

ขอให้ทุกคนโปรโมตวิธีตามเวลา / แบบง่าย / sans-PHD ตามที่ Kd กำหนดไว้ พวกเขามีแนวโน้มที่จะตอบ 'ศูนย์' และพวกเขามีแนวโน้มที่จะบอกว่า D ไม่เสถียร (โดยไม่มีตัวกรอง low-pass) ก่อนที่ฉันจะเรียนรู้ว่าสิ่งทั้งหมดนี้มารวมกันได้อย่างไรฉันก็จะพูดอย่างนั้น

การปรับ Kd นั้นยากในโดเมนเวลา เมื่อคุณสามารถเห็นฟังก์ชั่นการถ่ายโอน (การแปลง Z ของระบบย่อย PID) คุณสามารถดูได้ว่ามีความเสถียรเพียงใด คุณพร้อมที่จะดูว่าเทอม D มีผลต่อคอนโทรลเลอร์อย่างไรเมื่อเทียบกับพารามิเตอร์อื่น หากพารามิเตอร์ Kd ของคุณสนับสนุน 0.00001 กับค่าสัมประสิทธิ์ z- พหุนาม แต่เทอม Ki ของคุณใส่ 10.5 แล้วเทอม D ของคุณเล็กเกินไปที่จะมีผลกระทบที่แท้จริงต่อระบบ นอกจากนี้คุณยังสามารถดูความสมดุลระหว่างข้อกำหนด Kp & Ki

DSP ถูกออกแบบมาเพื่อคำนวณสมการไฟไนต์ดิฟเฟอเรนเชียล (FDE) พวกเขามีรหัส op ที่จะคูณสัมประสิทธิ์ผลรวมเพื่อสะสมและเปลี่ยนค่าในบัฟเฟอร์ในหนึ่งรอบการเรียนการสอน นี่เป็นการใช้ประโยชน์จากลักษณะขนานของ FDE หากเครื่องไม่มีรหัสนี้ ... ไม่ใช่ DSP Embedded PowerPC (MPC) มีอุปกรณ์ต่อพ่วงที่อุทิศให้กับการคำนวณ FDE's (พวกเขาเรียกมันว่าหน่วยการทำลายล้าง) DSP ของถูกออกแบบมาเพื่อคำนวณ FDE เพราะมันเป็นเรื่องง่ายที่จะแปลงฟังก์ชั่นการถ่ายโอนเป็น FDE 16-bits นั้นไม่เพียงพอสำหรับช่วงไดนามิกเพื่อหาค่าสัมประสิทธิ์ DSP ยุคแรก ๆ หลายแห่งมีคำ 24- บิตด้วยเหตุผลนี้ (ฉันเชื่อว่าคำศัพท์ 32- บิตเป็นเรื่องธรรมดาในวันนี้)

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

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

หากคุณใช้ค่าปกติ, [-1 .. 1] หรือ [0 ... 1], สำหรับจุดตั้งค่า (การอ้างอิง), ข้อเสนอแนะ, และฟีดไปข้างหน้าจากนั้นคุณสามารถใช้อัลกอริทึม 2 ขั้ว 2 ศูนย์ใน ชุดประกอบ DSP ที่ได้รับการปรับปรุงและคุณสามารถใช้เพื่อใช้ตัวกรองลำดับที่สองซึ่งรวมถึง PID และตัวกรอง low-pass (หรือ high-pass) พื้นฐานที่สุด นี่คือสาเหตุที่ DSP มี op-code ที่เข้าใจค่าปกติเช่นหนึ่งที่จะส่งออกค่าประมาณของ inverse-squareroot สำหรับช่วง (0..1] คุณสามารถใส่ตัวกรอง 2p2z สองชุดในชุดและสร้างตัวกรอง 4p4z ซึ่งจะช่วยให้ ให้คุณใช้ประโยชน์จากรหัส DSP 2p2z ของคุณเพื่อพูดใช้ตัวกรอง Butterworth low-pass 4-tap

การใช้โดเมนเวลาส่วนใหญ่ทำให้คำ dt เป็นพารามิเตอร์ PID (Kp / Ki / Kd) การใช้โดเมน z ส่วนใหญ่ไม่ dt ถูกใส่ลงในสมการที่ใช้ Kp, Ki, & Kd แล้วเปลี่ยนเป็นสัมประสิทธิ์ [] & b [] เพื่อให้การสอบเทียบ (ปรับแต่ง) ของคอนโทรลเลอร์ PID ของคุณเป็นอิสระจากอัตราการควบคุม คุณสามารถทำให้มันรันเร็วขึ้นสิบเท่าหมุนคณิตศาสตร์ [] & b [] และตัวควบคุม PID จะมีประสิทธิภาพที่สอดคล้องกัน

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

มักใช้ความพยายามอย่างมากกับคอนโทรลเลอร์ PID ตามเวลาเพื่อป้องกันปัญหาลมขาด มีเคล็ดลับง่าย ๆ กับรูปแบบ FDE ที่ทำให้ PID ทำงานได้ดีคุณสามารถหนีบมูลค่าไว้ในบัฟเฟอร์ประวัติได้ ฉันยังไม่ได้ทำคณิตศาสตร์เพื่อดูว่าสิ่งนี้มีผลต่อพฤติกรรมของตัวกรองอย่างไร (เกี่ยวกับพารามิเตอร์ Kp / Ki / Kd) แต่ผลลัพธ์เชิงประจักษ์ก็คือว่า 'ราบรื่น' นี่คือการใช้ประโยชน์จากลักษณะ 'ไม่มีข้อผิดพลาด' ของรูปแบบ FDE รูปแบบการป้อนไปข้างหน้ามีส่วนช่วยในการป้องกันการขาดลมและการใช้คำศัพท์ D ช่วยให้เกิดความสมดุลในคำศัพท์ I PID ไม่ได้ผลตามที่ตั้งใจด้วยการเพิ่ม D (เซ็ตจุดแกว่ง) เป็นคุณสมบัติที่สำคัญอีกอย่างหนึ่งเพื่อป้องกันไม่ให้ลมมากเกินไป)

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

เครื่องมืออุตสาหกรรม defacto คือ Simulink (ซึ่งขาดระบบพีชคณิตคอมพิวเตอร์, CAS ดังนั้นคุณต้องใช้เครื่องมืออื่นในการสร้างสมการทั่วไป) MathCAD หรือ wxMaxima เป็นนักแก้ปัญหาสัญลักษณ์ที่คุณสามารถใช้กับพีซีและฉันเรียนรู้วิธีการใช้เครื่องคิดเลข TI-92 ฉันคิดว่า TI-89 ยังมีระบบ CAS

คุณสามารถค้นหาสมการ z-domain หรือ laplace-domain บนวิกิพีเดียสำหรับตัวกรอง PID และ low-pass มีขั้นตอนที่นี่ที่ฉันไม่ต้องกังวลฉันเชื่อว่าคุณต้องการรูปแบบโดเมนแบบไม่ต่อเนื่องของตัวควบคุม PID จากนั้นจำเป็นต้องใช้การแปลง z ของมัน Laplace transform ควรคล้ายกับ z-transform มากและได้รับเป็น PID {s} = Kp + Ki / s + Kd · s ฉันคิดว่าการแปลง z นั้นน่าจะดีกว่าสำหรับ Dt ในสมการต่อไปนี้ Dt คือ delta-t [ime] ฉันใช้ Dt เพื่อไม่ให้สับสนค่าคงนี้กับอนุพันธ์ 'dt'

b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt

a[1] = -1
a[2] = 0

และนี่คือ 2p2z FDE:

y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]

โดยทั่วไปแล้ว DSP มีตัวคูณ & เพิ่มเท่านั้น (ไม่ใช่ตัวคูณ & ลบ) ดังนั้นคุณอาจเห็นว่ามีการปฏิเสธในสัมประสิทธิ์ [] เพิ่ม b มากขึ้นสำหรับเสาเพิ่มเติมเพิ่ม a มากขึ้นสำหรับศูนย์ที่มากขึ้น


1

เป็นการดีกว่าที่จะใช้วิธีการแปลง Z โดยทั่วไปเพราะการทำเช่นนี้คุณจะรักษาพฤติกรรมที่แน่นอนของระบบอะนาล็อกที่เทียบเท่า มีวิธีการปรับจูนที่รู้จักกันดีเช่น Ziegler-Nichols ซึ่งทำงานในโดเมนอะนาล็อกเช่นเดียวกับที่เผยแพร่ หากคุณใช้วิธีการแปลง Z คุณมีความคาดหวังทางคณิตศาสตร์อย่างเข้มงวดว่าผู้ควบคุมผลลัพธ์ของคุณจะทำสิ่งเดียวกันสำหรับค่าเดียวกันของกำไร P, I และ D ซึ่งจะทำในโดเมนอะนาล็อกตามที่ได้รับ นอกจากนี้คุณสามารถวาดรูตโลคัสแบบแยกสำหรับระบบและคาดการณ์ความมั่นคงสำหรับชุดของกำไรที่กำหนดซึ่งไม่สามารถทำได้หากคุณสร้างคอนโทรลเลอร์ ad hoc ในรหัสโดยตรง

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