**ระบบควบคุมแบบสัดส่วน-ปริพันธ์-อนุพันธ์** (อังกฤษ: PID controller) เป็นระบบควบคุมแบบป้อนกลับที่ใช้กันอย่างกว้างขวาง ซึ่งค่าที่นำไปใช้ในการคำนวณเป็นค่าความผิดพลาดที่หามาจากความแตกต่างของตัวแปรในกระบวนการและค่าที่ต้องการ ตัวควบคุมจะพยายามลดค่าผิดพลาดให้เหลือน้อยที่สุดด้วยการปรับค่าสัญญาณขาเข้าของกระบวนการ ค่าตัวแปรของ PID ที่ใช้จะปรับเปลี่ยนตามธรรมชาติของระบบ

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

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

การประยุกต์ใช้งานบางครั้งอาจใช้เพียงหนึ่งถึงสองรูปแบบ ขึ้นอยู่กับกระบวนการเป็นสำคัญ พีไอดีบางครั้งจะถูกเรียกว่าการควบคุมแบบ PI, PD, P หรือ I ขึ้นอยู่กับว่าใช้รูปแบบใดบ้าง

ทฤษฎี
-----

การควบคุมแบบ PID ได้ชื่อตามการรวมกันของเทอมของตัวแปรทั้งสามตามสมการ:

{\displaystyle \mathrm {MV(t)} =\,P\_{\mathrm {out} }+I\_{\mathrm {out} }+D\_{\mathrm {out} }}
เมื่อ

{\displaystyle P\_{\mathrm {out} }}, {\displaystyle I\_{\mathrm {out} }}, และ {\displaystyle D\_{\mathrm {out} }} เป็นผลของสัญญาณขาออกจากระบบควบคุม PID จากแต่ละเทอมซึ่งนิยามตามรายละเอียดด้านล่าง
### สัดส่วน

กราฟ PV ต่อเวลา, Kp กำหนดเป็น 3 ค่า(Ki และ Kd คงที่)
เทอมของสัดส่วน (บางครั้งเรียก *อัตราขยาย*) จะเปลี่ยนแปลงเป็นสัดส่วนของค่าความผิดพลาด การตอบสนองของสัดส่วนสามารถทำได้โดยการคูณค่าความผิดพลาดด้วยค่าคงที่ *Kp*, หรือที่เรียกว่าอัตราขยายสัดส่วน

เทอมของสัดส่วนจะเป็นไปตามสมการ:

{\displaystyle P\_{\mathrm {out} }=K\_{p}\,{e(t)}}
เมื่อ

{\displaystyle P\_{\mathrm {out} }}: สัญญาณขาออกของเทอมสัดส่วน
{\displaystyle K\_{p}}: อัตราขยายสัดส่วน, ตัวแปรปรับค่าได้
{\displaystyle e}: ค่าความผิดพลาด {\displaystyle =SP-PV}
{\displaystyle t}: เวลา
ผลอัตราขยายสัดส่วนที่สูงค่าความผิดพลาดก็จะเปลี่ยนแปลงมากเช่นกัน แต่ถ้าสูงเกินไประบบจะไม่เสถียรได้ ในทางตรงกันข้าม ผลอัตราขยายสัดส่วนที่ต่ำ ระบบควบคุมจะมีผลตอบสนองต่อกระบวนการน้อยตามไปด้วย

  

### ปริพันธ์

กราฟ PV ต่อเวลา, Ki กำหนดเป็นสามค่า (Kp และ Kd คงที่)
ผลจากเทอมปริพันธ์ (บางครั้งเรียก *reset*) เป็นสัดส่วนของขนาดความผิดพลาดและระยะเวลาของความผิดพลาด ผลรวมของความผิดพลาดในทุกช่วงเวลา (ปริพันธ์ของความผิดพลาด) จะให้ออฟเซตสะสมที่ควรจะเป็นในก่อนหน้า ความผิดพลาดสะสมจะถูกคูณโดยอัตราขยายปริพันธ์ ขนาดของผลของเทอมปริพันธ์จะกำหนดโดยอัตราขยายปริพันธ์, {\displaystyle K\_{i}}.

เทอมปริพันธ์จะเป็นไปตามสมการ:

{\displaystyle I\_{\mathrm {out} }=K\_{i}\int \_{0}^{t}{e(\tau )}\,{d\tau }}

เมื่อ

{\displaystyle I\_{\mathrm {out} }}: สัญญาณขาออกของเทอมปริพันธ์
{\displaystyle K\_{i}}: อัตราขยายปริพันธ์, ตัวแปรปรับค่าได้
{\displaystyle e}: ความผิดพลาด {\displaystyle =SP-PV}
{\displaystyle t}: เวลา
{\displaystyle \tau }: ตัวแปรปริพันธ์หุ่น
เทอมปริพันธ์ (เมื่อรวมกับเทอมสัดส่วน) จะเร่งกระบวนการให้เข้าสู่จุดที่ต้องการและขจัดความผิดพลาดที่เหลืออยู่ที่เกิดจากการใช้เพียงเทอมสัดส่วน แต่อย่างไรก็ตาม เทอมปริพันธ์เป็นการตอบสนองต่อความผิดพลาดสะสมในอดีต จึงสามารถทำให้เกิดโอเวอร์ชูตได้ (ข้ามจุดที่ต้องการและเกิดการหันเหไปทางทิศทางอื่น)

### อนุพันธ์

กราฟ PV ต่อเวลา, สำหรับ Kd 3 ค่า (Kp และ Ki คงที่)
อัตราการเปลี่ยนแปลงของความผิดพลาดจากกระบวนการนั้นคำนวณหาจากความชันของความผิดพลาดทุกๆเวลา (นั่นคือ เป็นอนุพันธ์อันดับหนึ่งสัมพันธ์กับเวลา) และคูณด้วยอัตราขยายอนุพันธ์ {\displaystyle K\_{d}} ขนาดของผลของเทอมอนุพันธ์ (บางครั้งเรียก *อัตรา*) ขึ้นกับ อัตราขยายอนุพันธ์ {\displaystyle K\_{d}}

เทอมอนุพันธ์เป็นไปตามสมการ:

{\displaystyle D\_{\mathrm {out} }=K\_{d}{\frac {d}{dt}}e(t)}
เมื่อ

{\displaystyle D\_{\mathrm {out} }}: สัญญาณขาออกของเทอมอนุพันธ์
{\displaystyle K\_{d}}: อัตราขยายอนุพันธ์, ตัวแปรปรับค่าได้
{\displaystyle e}: ความผิดพลาด {\displaystyle =SP-PV}
{\displaystyle t}: เวลา
เทอมอนุพันธ์จะชะลออัตราการเปลี่ยนแปลงของสัญญาณขาออกของระบบควบคุมและด้วยผลนี้จะช่วยให้ระบบควบคุมเข้าสู่จุดที่ต้องการ ดังนั้นเทอมอนุพันธ์จะใช้ในการลดขนาดของโอเวอร์ชูตที่เกิดจาเทอมปริพันธ์และทำให้เสถียรภาพของการรวมกันของระบบควบคุมดีขึ้น แต่อย่างไรก็ตามอนุพันธ์ของสัญญาณรบกวนที่ถูกขยายในระบบควบคุมจะไวมากต่อการรบกวนในเทอมของความผิดพลาดและสามารถทำให้กระบวนการไม่เสถียรได้ถ้าสัญญาณรบกวนและอัตราขยายอนุพันธ์มีขนาดใหญ่เพียงพอ

### ผลรวม

เทอมสัดส่วน, ปริพันธ์, และอนุพันธ์ จะนำมารวมกันเป็นสัญญาณขาออกของการควบคุมแบบ PID กำหนดให้ {\displaystyle u(t)} เป็นสัญญาณขาออก สมการสุดท้ายของวิธี PID คือ:

{\displaystyle \mathrm {u(t)} =\mathrm {MV(t)} =K\_{p}{e(t)}+K\_{i}\int \_{0}^{t}{e(\tau )}\,{d\tau }+K\_{d}{\frac {d}{dt}}e(t)}
### รหัสเทียม

รหัสเทียม (อังกฤษ: pseudocode) ของ ขั้นตอนวิธีระบบควบคุมพีไอดี โดยอยู่บนสมมุติฐานว่าตัวประมวลผลประมวลผลแบบขนานอย่างสมบูรณ์แบบ เป็นดังต่อไปนี้

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

การปรับจูน
----------

### การปรับจูนด้วยมือ

ถ้าระบบยังคงทำงาน ขั้นแรกให้ตั้งค่า {\displaystyle K\_{i}} และ {\displaystyle K\_{d}} เป็นศูนย์ เพิ่มค่า {\displaystyle K\_{p}} จนกระทั่งสัญญาณขาออกเกิดการแกว่ง (oscillate) แล้วตั้งค่า {\displaystyle K\_{p}} ให้เหลือครึ่งหนึ่งของค่าที่ทำให้เกิดการแกว่งสำหรับการตอบสนองชนิด "quarter amplitude decay" แล้วเพิ่ม {\displaystyle K\_{i}} จนกระทั่งออฟเซตถูกต้องในเวลาที่พอเพียงของกระบวนการ แต่ถ้า {\displaystyle K\_{i}} มากไปจะทำให้ไม่เสถียร สุดท้ายถ้าต้องการ ให้เพิ่มค่า {\displaystyle K\_{d}} จนกระทั่งลูปอยู่ในระดับที่ยอมรับได้ แต่ถ้า {\displaystyle K\_{d}} มากเกินไปจะเป็นเหตุให้การตอบสนองและโอเวอร์ชูตเกินยอมรับได้ ปกติการปรับจูน PID ถ้าเกิดโอเวอร์ชูตเล็กน้อยจะช่วยให้เข้าสู่จุดที่ต้องการเร็วขึ้น แต่ในบางระบบไม่สามารถยอมให้เกิดโอเวอร์ชูตได้ และถ้าค่า {\displaystyle K\_{p}} น้อยเกินไปก็จะทำให้เกิดการแกว่ง

ผลของการเปลี่ยนพารามิเตอร์ของ PID (Kp,Ki,Kd) บนขั้นของการตอบสนองของระบบ

ผลของการเพิ่มค่าตัวแปรอย่างอิสระ| ตัวแปร | ช่วงเวลาขึ้น (Rise time) | โอเวอร์ชูต (Overshoot) | เวลาสู่สมดุล (Settling time) | ความผิดพลาดสถานะคงตัว (Steady-state error) | เสถียรภาพ |
| --- | --- | --- | --- | --- | --- |
| {\displaystyle K\_{p}} | ลด | เพิ่ม | เปลี่ยนแปลงเล็กน้อย | ลด | ลด |
| {\displaystyle K\_{i}} | ลด | เพิ่ม | เพิ่ม | ลดลงอย่างมีนัยสำคัญ | ลด |
| {\displaystyle K\_{d}} | เปลี่ยนแปลงเล็กน้อย | ลดลง | ลดลง | ตามทฤษฏีไม่มีผล | ดีขึ้นถ้า {\displaystyle K\_{d}} มีค่าน้อย |

### วิธีการ

วิธีการนี้นำเสนอโดย John G. Ziegler และ Nathaniel B. Nichols ในคริสต์ทศวรรษที่ 1940 ขั้นแรกให้ตั้งค่า {\displaystyle K\_{i}} และ {\displaystyle K\_{d}} เป็นศูนย์ เพิ่มอัตราขยาย *P* สูงที่สุด, {\displaystyle K\_{u}}, จนกระทั่งเริ่มเกิดการแกว่ง นำค่า {\displaystyle K\_{u}} และค่าช่วงการแกว่ง {\displaystyle P\_{u}} มาหาค่าตัวแปรที่เหลือดังตาราง:

Ziegler–Nichols method| Control Type | {\displaystyle K\_{p}} | {\displaystyle K\_{i}} | {\displaystyle K\_{d}} |
| --- | --- | --- | --- |
| *P* | {\displaystyle 0.50{K\_{u}}} | - | - |
| *PI* | {\displaystyle 0.45{K\_{u}}} | {\displaystyle 1.2{K\_{p}}/P\_{u}} | - |
| *PID* | {\displaystyle 0.60{K\_{u}}} | {\displaystyle 2{K\_{p}}/P\_{u}} | {\displaystyle {K\_{p}}{P\_{u}}/8} |

ดูเพิ่ม
-------

* ทฤษฎีระบบควบคุม
* Feedback
* Instability
* Oscillation
* PI controller

อ้างอิง
-------

1. ↑  Kiam Heong Ang; Chong, G.; Yun Li (2005). "PID control system analysis, design, and technology" (PDF). *IEEE Transactions on Control Systems Technology*. **13** (4): 559–576. doi:10.1109/TCST.2005.847331. S2CID 921620.
2. ↑  Jinghua Zhong (Spring 2006). "PID Controller Tuning: A Short Tutorial" (PDF). คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2015-04-21. สืบค้นเมื่อ 2011-04-04. `{{cite journal}}`: Cite journal ต้องการ `|journal=` (help)
3. ↑  Ang, K.H. Chong, G.C.Y. and Li, Y. (2005). PID control system analysis, design, and technology, *IEEE Trans Control Systems Tech*, 13(4), pp.559-576.
4. ↑  "สำเนาที่เก็บถาวร" (PDF). คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2015-04-21. สืบค้นเมื่อ 2010-07-22.

อ่านเพิ่มเติม
-------------

* Liptak, Bela (1995). *Instrument Engineers' Handbook: Process Control*. Radnor, Pennsylvania: Chilton Book Company. pp. 20–29. ISBN 978-0-8019-8242-2.
* Tan, Kok Kiong; Wang Qing-Guo; Hang Chang Chieh (1999). *Advances in PID Control*. London, UK: Springer-Verlag. ISBN 978-1-85233-138-2.
* King, Myke (2010). *Process Control: A Practical Approach*. Chichester, UK: John Wiley & Sons Ltd. ISBN 978-0-470-97587-9.
* Van Doren, Vance J. (July 1, 2003). "Loop Tuning Fundamentals". *Control Engineering*.[*ลิงก์เสีย*]
* Sellers, David. "An Overview of Proportional plus Integral plus Derivative Control and Suggestions for Its Successful Application and Implementation" (PDF). คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ March 7, 2007. สืบค้นเมื่อ 2007-05-05.
* Graham, Ron; Mike McHugh (2005-10-03). "FAQ on PID controller tuning". Mike McHugh. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ February 6, 2005. สืบค้นเมื่อ 2009-01-05.
* Aidan O'Dwyer (2009). *Handbook of PI and PID Controller Tuning Rules* (PDF) (3rd ed.). Imperial College Press. ISBN 978-1-84816-242-6.

แหล่งข้อมูลอื่น
---------------

### PID tutorials

* PID Tutorial เก็บถาวร 2010-06-15 ที่ เวย์แบ็กแมชชีน
* P.I.D. Without a PhD เก็บถาวร 2010-02-09 ที่ เวย์แบ็กแมชชีน: a beginner's guide to PID loop theory with sample programming code
* What's All This P-I-D Stuff, Anyhow? เก็บถาวร 2007-09-06 ที่ เวย์แบ็กแมชชีน Article in Electronic Design
* Shows how to build a PID controller with basic electronic components เก็บถาวร 2006-04-17 ที่ เวย์แบ็กแมชชีน (pg. 22)
* Virtual PID Controller Laboratory
	+ PID Design & Tuning เก็บถาวร 2010-08-04 ที่ เวย์แบ็กแมชชีน
* ตัวอย่างการประยุกต์ใช้งานตัวควบคุมพีไอดีกับปัญหา Inverted Pendulum โดยมหาวิทยาลัยคาร์เนกีเมลลอน

### หัวข้อพิเศษและการประยุกต์ใช้การควบคุมแบบพีไอดี

* Proven Methods and Best Practices for PID Control เก็บถาวร 2011-06-05 ที่ เวย์แบ็กแมชชีน
* PID Control Primer เก็บถาวร 2010-02-09 ที่ เวย์แบ็กแมชชีน Article in Embedded Systems Programming