พิมพ์คำที่ต้องการค้นหา ทั้งภาษาไทยและอังกฤษ

  1. หน้าแรก
  2. บทความ
  3. ระบบควบคุมและ PID
  4. PID คืออะไร

// บทความ · ระบบควบคุม

PID Controller คืออะไร: Kp Ki Kd ทำงานอย่างไร และจูนอย่างไร

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

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • u(t)=Kpe(t)+Ki∫e dt+Kddedtu(t)=K_pe(t)+K_i\int e\,dt+K_d\dfrac{de}{dt} โดย e=r−ye=r-y
  • P = ปัจจุบัน · I = อดีต (กำจัดค่าผิดพลาดคงตัว) · D = แนวโน้ม (ลดการเกินเป้า)
  • จูนเริ่มต้นด้วย Ziegler–Nichols แล้วปรับละเอียดจากผลตอบสนองจริง

สูตรและฟังก์ชันถ่ายโอนของ PID

ให้ r(t)r(t) เป็นค่าที่ต้องการ y(t)y(t) เป็นค่าที่วัดได้ และค่าผิดพลาด e(t)=r(t)−y(t)e(t)=r(t)-y(t)

u(t)=Kp e(t)+Ki∫0te(τ) dτ+Kd de(t)dtu(t)=K_p\,e(t)+K_i\int_0^t e(\tau)\,d\tau+K_d\,\frac{de(t)}{dt}

ในโดเมน ss ได้ตัวควบคุมที่เขียนได้สองรูปเทียบเท่ากัน

C(s)=Kp+Kis+Kds  =  Kp(1+1Tis+Tds),Ki=KpTi,  Kd=KpTdC(s)=K_p+\frac{K_i}{s}+K_d s \;=\; K_p\left(1+\frac{1}{T_i s}+T_d s\right),\qquad K_i=\frac{K_p}{T_i},\; K_d=K_pT_d

รูปแรกใช้ในคู่มือซอฟต์แวร์หลายตัว รูปหลังพบในตำราและตัวควบคุมอุตสาหกรรม ต้องดูว่าอุปกรณ์ที่ใช้ตั้งค่าแบบไหน

แต่ละเทอมทำอะไร

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

ผลของการเพิ่มแต่ละค่าต่อการตอบสนองขั้นบันได

เพิ่มเวลาขึ้นเกินเป้าเวลาเข้าที่ค่าผิดพลาดคงตัว
KpK_pลดลงเพิ่มขึ้นเปลี่ยนเล็กน้อยลดลง
KiK_iลดลงเพิ่มขึ้นเพิ่มขึ้นกำจัดได้
KdK_dเปลี่ยนเล็กน้อยลดลงลดลงไม่เปลี่ยน

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

จูนเริ่มต้นด้วย Ziegler–Nichols (วิธีวงปิด)

ตั้ง Ki=Kd=0K_i=K_d=0 เพิ่ม KpK_p ทีละน้อยจนระบบแกว่งสม่ำเสมอ บันทึกค่า KpK_p ตอนนั้นเป็น KuK_u (ultimate gain) และคาบการแกว่งเป็น PuP_u แล้วอ่านค่าจากตาราง

ชนิดKpK_pTiT_iTdT_d
P0.5Ku0.5K_u––
PI0.45Ku0.45K_uPu/1.2P_u/1.2–
PID0.6Ku0.6K_uPu/2P_u/2Pu/8P_u/8
ตัวอย่าง

พบ Ku=8K_u=8 และ Pu=2P_u=2 วินาที

  1. Kp=0.6×8=4.8,Ti=22=1 s,Td=28=0.25 sK_p=0.6\times8=4.8,\qquad T_i=\frac{2}{2}=1\ \text{s},\qquad T_d=\frac{2}{8}=0.25\ \text{s}
  2. Ki=KpTi=4.8,Kd=KpTd=4.8×0.25=1.2K_i=\frac{K_p}{T_i}=4.8,\qquad K_d=K_pT_d=4.8\times0.25=1.2

ค่าเริ่มต้น Kp=4.8K_p=4.8, Ki=4.8 s−1K_i=4.8\ \text{s}^{-1}, Kd=1.2 sK_d=1.2\ \text{s} วิธีนี้มักให้การเกินเป้าสูง ให้ใช้เป็นจุดเริ่มต้นแล้วลด KpK_p หรือ KiK_i ลงตามผลตอบสนองจริง

ปัญหาที่พบจริง

  • Integral windup: ตัวขับอิ่มตัวแต่เทอม I ยังสะสม ทำให้เกินเป้ามากเมื่อค่าผิดพลาดกลับเครื่องหมาย แก้ด้วย anti-windup เช่น หยุดสะสมเมื่ออิ่มตัว
  • สัญญาณรบกวนในเทอม D: ใส่ตัวกรองความถี่ต่ำที่เทอมอนุพันธ์ และหาอนุพันธ์จากค่าที่วัด yy แทนค่าผิดพลาด ee เพื่อไม่ให้เกิดการกระชากเมื่อเปลี่ยนค่าเป้าหมายทันที
  • ความหน่วงเวลา (dead time): ยิ่งมาก ยิ่งต้องลด KpK_p และเทอม D ไม่ช่วยมากนัก

เรียนต่อในคลังความรู้

คำถามที่พบบ่อย

Kp Ki Kd แต่ละค่าทำหน้าที่อะไร?

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

ทำไมบางระบบใช้แค่ PI ไม่ใช้ PID?

เพราะเทอมอนุพันธ์ขยายสัญญาณรบกวนจากเซนเซอร์ วงควบคุมที่สัญญาณวัดมีสัญญาณรบกวนมาก เช่น อัตราการไหลและระดับของเหลว จึงมักใช้ PI ซึ่งเรียบง่ายและเพียงพอ ส่วนระบบที่ตอบสนองช้าและสัญญาณวัดสะอาดอาจได้ประโยชน์จากเทอม D

Integral windup คืออะไร?

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

Ziegler–Nichols ใช้ได้กับระบบทุกชนิดไหม?

ไม่ทุกชนิด วิธีวงปิดต้องปล่อยให้ระบบแกว่งต่อเนื่องที่ KuK_u ซึ่งอาจอันตรายกับกระบวนการจริง และให้ผลเริ่มต้นที่มักแกว่งแรง ควรใช้เป็นจุดเริ่มต้นแล้วจูนละเอียดต่อ

ระบบควบคุม การจูน PID ฉบับสมบูรณ์: จาก Step Test ถึง Ziegler–Nichols, SIMC และ Anti-Windup คอร์สจูน PID ครบในบทความเดียว: หาแบบจำลองด้วย step test จูนด้วย Ziegler–Nichols, Cohen–Coon, SIMC และ relay เทียบผลด้วยการจำลอง แล้วแก้ปัญหา windup… อ่านบทความ → Python · AI เริ่มต้นเข้าใจการเขียนโปรแกรมในยุค AI: ทำไมควรเริ่มที่ Python ยุค AI เขียนโค้ดได้ทุกภาษา แต่คนที่อ่านโค้ดไม่ออกจะตรวจไม่ได้ว่าถูกหรือผิด บทความนี้อธิบายว่าทำไม Python เหมาะเป็นภาษาแรก 6 แนวคิดที่ต้องเข้าใจ… อ่านบทความ → พีชคณิตเชิงเส้น กฎของคราเมอร์ (Cramer's Rule) ใช้อย่างไร ทำไมถึงได้ และเมื่อไรไม่ควรใช้ สอนกฎของคราเมอร์แบบเห็นภาพ แทนหลักด้วยค่าคงที่แล้วหารดีเทอร์มิแนนต์ ตัวอย่าง 2×2 และ 3×3 หาตัวแปรเดียว ที่มาของสูตร กรณี Δ = 0 โจทย์พารามิเตอร์ k… อ่านบทความ →

ดูบทความทั้งหมดในหมวดระบบควบคุมและ PID (2 เรื่อง) → · บทความทั้งหมด