ระบบควบคุมพีไอดี

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

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

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

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

## ทฤษฎี
การควบคุมแบบ PID ได้ชื่อตามการรวมกันของพจน์ของตัวแปรทั้งสามตามสมการ:
:\mathrm{MV (t)}=\,P_{\mathrm{out}} + I_{\mathrm{out}} + D_{\mathrm{out}}

เมื่อ
:P_{\mathrm{out}}, I_{\mathrm{out}} และ D_{\mathrm{out}} เป็นผลของสัญญาณขาออกจากระบบควบคุม PID จากแต่ละพจน์ซึ่งนิยามตามรายละเอียดด้านล่าง

### สัดส่วน
right|thumb|320px|กราฟ PV ต่อเวลา, K<sub>p</sub> กำหนดเป็น 3 ค่า (K<sub>i</sub> และ K<sub>d</sub> คงที่)

พจน์ของสัดส่วน (บางครั้งเรียก *อัตราขยาย*) จะเปลี่ยนแปลงเป็นสัดส่วนของค่าความผิดพลาด การตอบสนองของสัดส่วนสามารถทำได้โดยการคูณค่าความผิดพลาดด้วยค่าคงที่ *K<sub>p</sub>* หรือที่เรียกว่าอัตราขยายสัดส่วน

พจน์ของสัดส่วนจะเป็นไปตามสมการ:
:P_{\mathrm{out}}=K_p\,{e (t)}

เมื่อ
: P_{\mathrm{out}}: สัญญาณขาออกของพจน์สัดส่วน
: K_p: อัตราขยายสัดส่วน, ตัวแปรปรับค่าได้
: e: ค่าความผิดพลาด  = SP - PV  
: t: เวลา

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

### ปริพันธ์
right|thumb|320px|กราฟ PV ต่อเวลา, K<sub>i</sub> กำหนดเป็นสามค่า (K<sub>p</sub> และ K<sub>d</sub> คงที่)

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

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

I_{\mathrm{out}}=K_{i}\int_{0}^{t}{e (\tau)}\,{d\tau}

เมื่อ
: I_{\mathrm{out}}: สัญญาณขาออกของพจน์ปริพันธ์
: K_i: อัตราขยายปริพันธ์, ตัวแปรปรับค่าได้
: e: ความผิดพลาด  = SP - PV
: t: เวลา
: \tau: ตัวแปรปริพันธ์หุ่น

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

### อนุพันธ์

right|thumb|320px|กราฟ PV ต่อเวลา, สำหรับ K<sub>d</sub> 3 ค่า (K<sub>p</sub> และ K<sub>i</sub> คงที่)

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

พจน์อนุพันธ์เป็นไปตามสมการ:
:D_{\mathrm{out}}=K_d\frac{d}{dt}e (t) 

เมื่อ
: D_{\mathrm{out}}: สัญญาณขาออกของพจน์อนุพันธ์
: K_d: อัตราขยายอนุพันธ์, ตัวแปรปรับค่าได้
: e: ความผิดพลาด  = SP - PV
: t: เวลา

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

### ผลรวม

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

:\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) 

### รหัสเทียม

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

 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

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

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

right|thumb|400px|ผลของการเปลี่ยนพารามิเตอร์ของ PID (K<sub>p</sub>,K<sub>i</sub>,K<sub>d</sub>) บนขั้นของการตอบสนองของระบบ

### วิธีการ
วิธีการนี้นำเสนอโดย John G. Ziegler และ Nathaniel B. Nichols ในคริสต์ทศวรรษที่ 1940 ขั้นแรกให้ตั้งค่า K_i และ K_d เป็นศูนย์ เพิ่มอัตราขยาย *P* สูงที่สุด, K_u, จนกระทั่งเริ่มเกิดการแกว่ง นำค่า K_u และค่าช่วงการแกว่ง P_u มาหาค่าตัวแปรที่เหลือดังตาราง:

## ดูเพิ่ม

* ทฤษฎีระบบควบคุม
* 
* 
* 
* 

## อ้างอิง

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

* 
* 
* 
* 
* 
* 
* 

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

### หัวข้อพิเศษและการประยุกต์ใช้การควบคุมแบบพีไอดี
* Proven Methods and Best Practices for PID Control 
* PID Control Primer  Article in Embedded Systems Programming

หมวดหมู่:ทฤษฎีระบบควบคุม
พีไอดี