- หน้าแรก
- คลังความรู้
- ระบบควบคุม
- จูน PID
// บทที่ 13.17 · ระบบควบคุม · PID Tuning
การจูน PID: Ziegler–Nichols, Cohen–Coon, IMC และงานจริง
ในโรงงาน เรามักไม่มีสมการของพลานต์ แต่มีพลานต์ตัวจริงให้ทดลอง ปี 1942 ซีเกลอร์และนิโคลส์ (Ziegler & Nichols) เสนอวิธีหาเกน PID จากการทดลองง่าย ๆ สองแบบ จากนั้นมีกฎที่ดีขึ้นเรื่อย ๆ หน้านี้รวบรวมกฎที่ใช้จริง พร้อมผลจำลองเปรียบเทียบว่าแต่ละกฎให้ระบบดุดันหรือนุ่มนวลแค่ไหน แล้วจบที่ขั้นตอนจูนหน้างาน สูตรใช้รหัส Z
- ZN เกนวิกฤต: เพิ่ม จนแกว่งค้าง ได้ → PID:
- ZN กราฟขั้นบันได: วัด ของแบบจำลอง FOPDT → PID:
- ZN และ Cohen–Coon ดุดัน (overshoot 40–80%) · SIMC/IMC นุ่มและทนทาน (PM ~60°) เหมาะเป็นค่าเริ่มต้นในงานจริง
- Relay test หา ได้ปลอดภัยและอัตโนมัติ
Ziegler–Nichols แบบเกนวิกฤต (Ultimate Gain) พื้นฐาน
ปิดวงด้วย P อย่างเดียว () แล้วค่อย ๆ เพิ่ม จนเอาต์พุตแกว่งค้างคงที่ จดเกนนั้น และคาบการแกว่ง ถ้ามีแบบจำลองก็หาได้จากเราท์ (, )
Z1 Ziegler–Nichols (ultimate-gain method) ตาราง ZN แบบเกนวิกฤต (รูปแบบมาตรฐาน P2)
ZN ออกแบบให้การแกว่งลดลงเหลือ 1/4 ทุกรอบ (quarter-amplitude decay) ค่อนข้างดุ · Tyreus–Luyben นุ่มกว่ามาก นิยมในกระบวนการเคมี
จูน PID ให้ ด้วย ZN และ Tyreus–Luyben
สูตรลัด: · , s
ZN-PID Z1: →
Tyreus–Luyben: →
| กฎ | KP | KI | KD | Overshoot | ts (2%) | PM |
|---|---|---|---|---|---|---|
| P (0.5Ku) | 4 | 0 | 0 | 54% | – | 27° |
| ZN-PI | 3.6 | 1.19 | 0 | 56% | 30.8 s | 15° |
| ZN-PID | 4.8 | 2.65 | 2.18 | 40% | 9.4 s | 31° |
| Tyreus–Luyben PID | 3.64 | 0.456 | 2.09 | 2.9% | 20.5 s | 56° |
จำลองด้วย python-control (D อุดมคติ ค่าอ้างอิงเข้าทุกเทอม) · P อย่างเดียวค้างที่ 0.8 ไม่ถึง 1 · ลองค่าเหล่านี้ในแล็บแล้วเปิด “D จากเอาต์พุต” จะเห็น overshoot ของ ZN-PID ลดลงชัดเจน
Ziegler–Nichols แบบกราฟขั้นบันได (Reaction Curve) พื้นฐาน
เปิดวง (ตัวควบคุมโหมด manual) แล้วสั่งเอาต์พุตตัวควบคุมเป็นขั้นบันไดขนาด บันทึกกราฟเอาต์พุต กระบวนการส่วนใหญ่ให้กราฟรูปตัว S ลากเส้นสัมผัสที่จุดชันที่สุด อ่านค่าสามตัวมาสร้างแบบจำลอง FOPDT
Z2 FOPDT model from a step test แบบจำลอง FOPDT จากการทดลองขั้นบันได
วิธีสองจุด (แม่นกว่าเส้นสัมผัส): หาเวลา และ ที่เอาต์พุตขึ้น 28.3% และ 63.2% ได้ ,
Z3 Ziegler–Nichols (reaction-curve method) ตาราง ZN แบบกราฟขั้นบันได
ใช้ได้ดีเมื่อ · ถ้า เล็กมาก เกนจะสูงเกิน ถ้าใหญ่ (หน่วงเวลาครอบงำ) ใช้ SIMC หรือ Smith predictor
Z4 Cohen–Coon (PID) กฎของโคเฮน–คูน
ปรับปรุงจาก ZN ให้ดีขึ้นเมื่อหน่วงเวลามาก แต่ยังดุดันพอกัน
IMC, Lambda และ SIMC: จูนแบบตั้งความเร็วเอง กลาง
แนวคิดสมัยใหม่: เลือกค่าคงเวลาวงปิดที่ต้องการ (หรือ ) เอง แล้วคำนวณเกนให้ได้ตามนั้น ปรับความดุ–นุ่มได้ด้วยตัวแปรเดียว Skogestad (2003) เสนอ SIMC ที่ใช้ง่ายและทนทาน ค่าเริ่มต้นที่แนะนำคือ
Z5 SIMC PI rule (Skogestad) กฎ SIMC สำหรับ PI
เล็ก = เร็วแต่ทนทานน้อย · ใหญ่ = ช้าแต่ทนทาน · IMC/Lambda tuning ใช้ , (เหมือนกันเมื่อ ไม่ใหญ่มาก) · ใช้ เมื่อ ใหญ่มาก (พลานต์เกือบเป็นอินทิเกรเตอร์) เพื่อต้านการรบกวนที่โหลดได้เร็ว
ฮีตเตอร์มีแบบจำลอง () เทียบ ZN, Cohen–Coon และ SIMC
| กฎ | KP | Ti | Td | Overshoot | ts (2%) | PM | GM |
|---|---|---|---|---|---|---|---|
| ZN-PI | 4.5 | 3.33 | – | 54% | 11.7 s | 31° | 4.4 dB |
| ZN-PID | 6 | 2 | 0.5 | 73% | 8.7 s | 41° | 3.1 dB |
| Cohen–Coon PID | 6.92 | 2.27 | 0.351 | 81% | 9.0 s | 28° | 2.8 dB |
| SIMC PI | 2.5 | 5 | – | 4.1% | 6.1 s | 61° | 9.9 dB |
กฎเก่าให้ GM เพียง 3–4 dB (ถ้าพลานต์เปลี่ยนเกนแค่ 1.5 เท่าก็แทบไม่เสถียร) ส่วน SIMC PI เข้าที่เร็วกว่า overshoot น้อย และทนทานกว่ามาก แม้ไม่มีเทอม D
จำลองด้วยพาเดอันดับ 10 แทนหน่วงเวลา python-control · ลองในแล็บ: เลือกพลานต์ “ฮีตเตอร์ + หน่วงเวลา” แล้วใส่
Relay auto-tune: หาเกนวิกฤตอย่างปลอดภัย ขั้นสูง
Åström และ Hägglund (1984) แทนตัวควบคุมชั่วคราวด้วยรีเลย์ (on–off ขนาด ) ระบบจะแกว่งค้างที่ความถี่วิกฤตเองโดยอัตโนมัติ และขนาดการแกว่งถูกจำกัดด้วย จึงปลอดภัย เป็นหลักการของปุ่ม “Auto-tune” ในตัวควบคุมอุณหภูมิและไดรฟ์มอเตอร์เกือบทุกยี่ห้อ
Z6 Relay feedback test การทดลองรีเลย์
= ขนาดเอาต์พุตรีเลย์ · = แอมพลิจูดของเอาต์พุตระบบ · มาจากฟังก์ชันพรรณนา (describing function) ของรีเลย์ · ได้ แล้วใช้ตาราง Z1
ขั้นตอนจูนด้วยมือหน้างาน กลาง
Z7 Field tuning checklist เช็กลิสต์จูนหน้างาน
- ตรวจทิศทาง (direct/reverse acting) เซนเซอร์ หน่วย และขีดจำกัดตัวขับก่อนเสมอ เปิด anti-windup
- เริ่มด้วยค่าจากกฎ (SIMC หรือ ZN ลดเกนลงครึ่งหนึ่ง) หรือ P อย่างเดียวเกนต่ำ
- ทดสอบด้วยการเปลี่ยนค่าอ้างอิงเล็ก ๆ และการรบกวน (ถ้าทำได้) ทีละครั้ง
- แกว่งมาก → ลด หรือเพิ่ม · ช้าเกิน → เพิ่ม · ค้างนาน → ลด · overshoot ต่อค่าอ้างอิงมากแต่ต้านการรบกวนดี → ใช้ setpoint weighting
- เพิ่ม ทีละน้อย (เริ่ม ถึง ) ถ้าสัญญาณวัดสะอาด พร้อมฟิลเตอร์ ถึง 10
- บันทึกค่าและทดสอบที่จุดทำงานอื่น (โหลดต่ำ/สูง) ถ้าต่างกันมากพิจารณา gain scheduling
แล็บ: ลองค่าจากแต่ละกฎ
รายการพลานต์ด้านล่างตั้งเกนไว้ตามกฎในตัวอย่าง เลือกแล้วกด “ปักกราฟไว้เทียบ” ก่อนเปลี่ยนไปกฎอื่น จะเห็นความต่างระหว่างดุดันกับนุ่มนวลชัดเจน เปิด “จำกัด |u|” เพื่อดูผลของ windup
กำลังโหลดแล็บ (ต้องเปิด JavaScript)
ต่อยอดไปหน้าถัดไป
PID ที่จูนแล้วต้องอยู่ในไมโครคอนโทรลเลอร์ ดูควบคุมดิจิทัล สำหรับการแปลงและเลือกคาบสุ่ม และเมคาทรอนิกส์สำหรับการจูนลูปซ้อน (กระแส ความเร็ว ตำแหน่ง) ที่ใช้ในมอเตอร์และหุ่นยนต์
คำถามที่พบบ่อย
Ziegler–Nichols ยังใช้ได้ไหมในปัจจุบัน?
ใช้เป็นจุดเริ่มต้นได้ดีและเร็ว แต่ค่าที่ได้ดุดัน ออกแบบให้ลดทอนการแกว่งหนึ่งในสี่ต่อรอบ overshoot มักเกิน 40% และเฟสมาร์จินต่ำ ในงานจริงนิยมลดเกนลง หรือใช้กฎใหม่กว่า เช่น Tyreus–Luyben, SIMC หรือ AMIGO ที่ทนทานกว่า
FOPDT คืออะไร ทำไมกฎจูนส่วนใหญ่ใช้?
First-Order Plus Dead Time คือแบบจำลอง K e^{-Ls}/(Ts + 1) ที่มีแค่สามพารามิเตอร์ เกน K หน่วงเวลา L และค่าคงเวลา T กระบวนการส่วนใหญ่ (อุณหภูมิ ระดับ การไหล) ประมาณด้วยรูปนี้ได้ดีจากการทดลองขั้นบันไดครั้งเดียว จึงเป็นฐานของกฎจูนเกือบทั้งหมด
ทำการทดลองหาเกนวิกฤตกับระบบจริงอันตรายไหม?
อาจอันตราย เพราะต้องดันให้ระบบแกว่งค้างที่ขอบเสถียร ซึ่งเครื่องจักรหรือกระบวนการบางอย่างทนไม่ได้ วิธีที่ปลอดภัยกว่าคือ relay test ที่ควบคุมขนาดการแกว่งได้ หรือใช้การทดลองขั้นบันไดแบบวงเปิด
ควรจูนอะไรก่อนระหว่าง P I D?
เริ่มจาก P อย่างเดียวจนได้ความเร็วที่พอใจโดยยังไม่แกว่งมาก จากนั้นเพิ่ม I ช้า ๆ จนความผิดพลาดค้างหายในเวลาที่ยอมรับได้ (ลด K_P ลงเล็กน้อยถ้าเริ่มแกว่ง) สุดท้ายเพิ่ม D ถ้าต้องการลด overshoot และสัญญาณวัดสะอาดพอ