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

  1. หน้าแรก
  2. คลังความรู้
  3. ระบบควบคุม
  4. จูน PID

// บทที่ 13.17 · ระบบควบคุม · PID Tuning

การจูน PID: Ziegler–Nichols, Cohen–Coon, IMC และงานจริง

ในโรงงาน เรามักไม่มีสมการของพลานต์ แต่มีพลานต์ตัวจริงให้ทดลอง ปี 1942 ซีเกลอร์และนิโคลส์ (Ziegler & Nichols) เสนอวิธีหาเกน PID จากการทดลองง่าย ๆ สองแบบ จากนั้นมีกฎที่ดีขึ้นเรื่อย ๆ หน้านี้รวบรวมกฎที่ใช้จริง พร้อมผลจำลองเปรียบเทียบว่าแต่ละกฎให้ระบบดุดันหรือนุ่มนวลแค่ไหน แล้วจบที่ขั้นตอนจูนหน้างาน สูตรใช้รหัส Z

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • ZN เกนวิกฤต: เพิ่ม KPK_P จนแกว่งค้าง ได้ Ku,TuK_u, T_u → PID: 0.6Ku, Tu/2, Tu/80.6K_u,\ T_u/2,\ T_u/8
  • ZN กราฟขั้นบันได: วัด K,L,TK, L, T ของแบบจำลอง FOPDT → PID: 1.2T/(KL), 2L, 0.5L1.2T/(KL),\ 2L,\ 0.5L
  • ZN และ Cohen–Coon ดุดัน (overshoot 40–80%) · SIMC/IMC นุ่มและทนทาน (PM ~60°) เหมาะเป็นค่าเริ่มต้นในงานจริง
  • Relay test หา Ku=4d/(πa)K_u = 4d/(\pi a) ได้ปลอดภัยและอัตโนมัติ
ระดับพื้นฐาน ใช้ตารางกลาง เข้าใจที่มาขั้นสูง งานจริง

Ziegler–Nichols แบบเกนวิกฤต (Ultimate Gain) พื้นฐาน

ปิดวงด้วย P อย่างเดียว (KI=KD=0K_I = K_D = 0) แล้วค่อย ๆ เพิ่ม KPK_P จนเอาต์พุตแกว่งค้างคงที่ จดเกนนั้น KuK_u และคาบการแกว่ง TuT_u ถ้ามีแบบจำลองก็หาได้จากเราท์ (Ku=KcrK_u = K_{cr}, Tu=2π/ωcrT_u = 2\pi/\omega_{cr})

Z1 Ziegler–Nichols (ultimate-gain method) ตาราง ZN แบบเกนวิกฤต (รูปแบบมาตรฐาน P2)

KPTiTdP0.5Ku−−PI0.45KuTu/1.2−PID0.6KuTu/2Tu/8PID (Tyreus–Luyben)Ku/2.22.2TuTu/6.3\begin{array}{l|ccc} & K_P & T_i & T_d \\ \hline \text{P} & 0.5K_u & - & - \\ \text{PI} & 0.45K_u & T_u/1.2 & - \\ \text{PID} & 0.6K_u & T_u/2 & T_u/8 \\ \text{PID (Tyreus–Luyben)} & K_u/2.2 & 2.2T_u & T_u/6.3 \end{array}

ZN ออกแบบให้การแกว่งลดลงเหลือ 1/4 ทุกรอบ (quarter-amplitude decay) ค่อนข้างดุ · Tyreus–Luyben นุ่มกว่ามาก นิยมในกระบวนการเคมี

ตัวอย่าง Z-1 · ZN เกนวิกฤต

จูน PID ให้ G(s)=1(s+1)3G(s) = \dfrac{1}{(s+1)^3} ด้วย ZN และ Tyreus–Luyben

  1. s3+3s2+3s+1+K=0s^3 + 3s^2 + 3s + 1 + K = 0 สูตรลัด: 9>1+K⇒Ku=89 \gt 1 + K \Rightarrow K_u = 8 · 3ω2=9⇒ωu=33\omega^2 = 9 \Rightarrow \omega_u = \sqrt3, Tu=2π/3=3.63T_u = 2\pi/\sqrt3 = 3.63 s

  2. ZN-PID Z1: KP=4.8, Ti=1.81, Td=0.453K_P = 4.8,\ T_i = 1.81,\ T_d = 0.453 → KI=2.65, KD=2.18K_I = 2.65,\ K_D = 2.18

  3. Tyreus–Luyben: KP=3.64, Ti=7.98, Td=0.576K_P = 3.64,\ T_i = 7.98,\ T_d = 0.576 → KI=0.456, KD=2.09K_I = 0.456,\ K_D = 2.09

กฎKPKIKDOvershootts (2%)PM
P (0.5Ku)40054%–27°
ZN-PI3.61.19056%30.8 s15°
ZN-PID4.82.652.1840%9.4 s31°
Tyreus–Luyben PID3.640.4562.092.9%20.5 s56°

จำลองด้วย python-control (D อุดมคติ ค่าอ้างอิงเข้าทุกเทอม) · P อย่างเดียวค้างที่ 0.8 ไม่ถึง 1 · ลองค่าเหล่านี้ในแล็บแล้วเปิด “D จากเอาต์พุต” จะเห็น overshoot ของ ZN-PID ลดลงชัดเจน

Ziegler–Nichols แบบกราฟขั้นบันได (Reaction Curve) พื้นฐาน

เปิดวง (ตัวควบคุมโหมด manual) แล้วสั่งเอาต์พุตตัวควบคุมเป็นขั้นบันไดขนาด Δu\Delta u บันทึกกราฟเอาต์พุต กระบวนการส่วนใหญ่ให้กราฟรูปตัว S ลากเส้นสัมผัสที่จุดชันที่สุด อ่านค่าสามตัวมาสร้างแบบจำลอง FOPDT

Z2 FOPDT model from a step test แบบจำลอง FOPDT จากการทดลองขั้นบันได

G(s)≈Ke−LsTs+1,K=Δy∞Δu,L=จุดที่เส้นสัมผัสตัดระดับเริ่มต้น,T=ช่วงจาก L ถึงจุดตัดระดับสุดท้ายG(s) \approx \frac{Ke^{-Ls}}{Ts + 1}, \qquad K = \frac{\Delta y_\infty}{\Delta u}, \quad L = \text{จุดที่เส้นสัมผัสตัดระดับเริ่มต้น}, \quad T = \text{ช่วงจาก } L \text{ ถึงจุดตัดระดับสุดท้าย}

วิธีสองจุด (แม่นกว่าเส้นสัมผัส): หาเวลา t28t_{28} และ t63t_{63} ที่เอาต์พุตขึ้น 28.3% และ 63.2% ได้ T=1.5(t63−t28)T = 1.5(t_{63} - t_{28}), L=t63−TL = t_{63} - T

Z3 Ziegler–Nichols (reaction-curve method) ตาราง ZN แบบกราฟขั้นบันได

KPTiTdPTKL−−PI0.9TKLL0.3−PID1.2TKL2L0.5L\begin{array}{l|ccc} & K_P & T_i & T_d \\ \hline \text{P} & \dfrac{T}{KL} & - & - \\ \text{PI} & \dfrac{0.9T}{KL} & \dfrac{L}{0.3} & - \\ \text{PID} & \dfrac{1.2T}{KL} & 2L & 0.5L \end{array}

ใช้ได้ดีเมื่อ 0.1<L/T<10.1 \lt L/T \lt 1 · ถ้า L/TL/T เล็กมาก เกนจะสูงเกิน ถ้าใหญ่ (หน่วงเวลาครอบงำ) ใช้ SIMC หรือ Smith predictor

Z4 Cohen–Coon (PID) กฎของโคเฮน–คูน

KP=TKL(43+L4T),Ti=L 32+6L/T13+8L/T,Td=4L11+2L/TK_P = \frac{T}{KL}\left(\frac43 + \frac{L}{4T}\right), \qquad T_i = L\,\frac{32 + 6L/T}{13 + 8L/T}, \qquad T_d = \frac{4L}{11 + 2L/T}

ปรับปรุงจาก ZN ให้ดีขึ้นเมื่อหน่วงเวลามาก แต่ยังดุดันพอกัน

IMC, Lambda และ SIMC: จูนแบบตั้งความเร็วเอง กลาง

แนวคิดสมัยใหม่: เลือกค่าคงเวลาวงปิดที่ต้องการ τc\tau_c (หรือ λ\lambda) เอง แล้วคำนวณเกนให้ได้ตามนั้น ปรับความดุ–นุ่มได้ด้วยตัวแปรเดียว Skogestad (2003) เสนอ SIMC ที่ใช้ง่ายและทนทาน ค่าเริ่มต้นที่แนะนำคือ τc=L\tau_c = L

Z5 SIMC PI rule (Skogestad) กฎ SIMC สำหรับ PI

KP=1K⋅Tτc+L,Ti=min⁡{T, 4(τc+L)},τc=L (ค่าแนะนำ)K_P = \frac{1}{K}\cdot\frac{T}{\tau_c + L}, \qquad T_i = \min\{T,\ 4(\tau_c + L)\}, \qquad \tau_c = L \text{ (ค่าแนะนำ)}

τc\tau_c เล็ก = เร็วแต่ทนทานน้อย · τc\tau_c ใหญ่ = ช้าแต่ทนทาน · IMC/Lambda tuning ใช้ KP=TK(λ+L)K_P = \frac{T}{K(\lambda + L)}, Ti=TT_i = T (เหมือนกันเมื่อ TT ไม่ใหญ่มาก) · ใช้ Ti=4(τc+L)T_i = 4(\tau_c + L) เมื่อ TT ใหญ่มาก (พลานต์เกือบเป็นอินทิเกรเตอร์) เพื่อต้านการรบกวนที่โหลดได้เร็ว

ตัวอย่าง Z-2 · เทียบกฎกับฮีตเตอร์

ฮีตเตอร์มีแบบจำลอง G(s)=e−s5s+1G(s) = \dfrac{e^{-s}}{5s + 1} (K=1, L=1, T=5K = 1,\ L = 1,\ T = 5) เทียบ ZN, Cohen–Coon และ SIMC

  1. ZN-PID Z3: KP=1.2(5)1=6, Ti=2, Td=0.5K_P = \frac{1.2(5)}{1} = 6,\ T_i = 2,\ T_d = 0.5

  2. ZN-PI: KP=4.5, Ti=3.33K_P = 4.5,\ T_i = 3.33

  3. Cohen–Coon PID Z4: KP=5(43+120)=6.92, Ti=33.214.6=2.27, Td=411.4=0.351K_P = 5\left(\tfrac43 + \tfrac{1}{20}\right) = 6.92,\ T_i = \tfrac{33.2}{14.6} = 2.27,\ T_d = \tfrac{4}{11.4} = 0.351

  4. SIMC PI Z5 (τc=L=1\tau_c = L = 1): KP=52=2.5, Ti=min⁡(5,8)=5K_P = \tfrac{5}{2} = 2.5,\ T_i = \min(5, 8) = 5

กฎKPTiTdOvershootts (2%)PMGM
ZN-PI4.53.33–54%11.7 s31°4.4 dB
ZN-PID620.573%8.7 s41°3.1 dB
Cohen–Coon PID6.922.270.35181%9.0 s28°2.8 dB
SIMC PI2.55–4.1%6.1 s61°9.9 dB

กฎเก่าให้ GM เพียง 3–4 dB (ถ้าพลานต์เปลี่ยนเกนแค่ 1.5 เท่าก็แทบไม่เสถียร) ส่วน SIMC PI เข้าที่เร็วกว่า overshoot น้อย และทนทานกว่ามาก แม้ไม่มีเทอม D

จำลองด้วยพาเดอันดับ 10 แทนหน่วงเวลา python-control · ลองในแล็บ: เลือกพลานต์ “ฮีตเตอร์ + หน่วงเวลา” แล้วใส่ KP=2.5, KI=0.5K_P = 2.5,\ K_I = 0.5

Relay auto-tune: หาเกนวิกฤตอย่างปลอดภัย ขั้นสูง

Åström และ Hägglund (1984) แทนตัวควบคุมชั่วคราวด้วยรีเลย์ (on–off ขนาด ±d\pm d) ระบบจะแกว่งค้างที่ความถี่วิกฤตเองโดยอัตโนมัติ และขนาดการแกว่งถูกจำกัดด้วย dd จึงปลอดภัย เป็นหลักการของปุ่ม “Auto-tune” ในตัวควบคุมอุณหภูมิและไดรฟ์มอเตอร์เกือบทุกยี่ห้อ

Z6 Relay feedback test การทดลองรีเลย์

Ku≈4dπa,Tu=คาบการแกว่งที่วัดได้K_u \approx \frac{4d}{\pi a}, \qquad T_u = \text{คาบการแกว่งที่วัดได้}

dd = ขนาดเอาต์พุตรีเลย์ · aa = แอมพลิจูดของเอาต์พุตระบบ · มาจากฟังก์ชันพรรณนา (describing function) ของรีเลย์ N(a)=4d/(πa)N(a) = 4d/(\pi a) · ได้ Ku,TuK_u, T_u แล้วใช้ตาราง Z1

ตัวอย่าง Z-3 · ออโต้จูนเตาอบ

ทดลองรีเลย์ด้วยกำลังฮีตเตอร์ ±1\pm1 (หน่วยปกติ) อุณหภูมิแกว่ง ±0.25\pm0.25 หน่วย คาบ 40 s หาเกน PI แบบ ZN

  1. Z6: Ku=4(1)π(0.25)=5.09K_u = \dfrac{4(1)}{\pi(0.25)} = 5.09, Tu=40T_u = 40 s

  2. ZN-PI Z1: KP=0.45(5.09)=2.29K_P = 0.45(5.09) = 2.29, Ti=40/1.2=33.3T_i = 40/1.2 = 33.3 s → KI=0.069 s−1K_I = 0.069\ \text{s}^{-1}

KP≈2.3, Ti≈33K_P \approx 2.3,\ T_i \approx 33 s เป็นค่าเริ่มต้น แล้วปรับละเอียดหน้างาน · การแกว่งระหว่างทดลองมีแค่ ±0.25 หน่วย ไม่ทำให้ชิ้นงานเสีย

ขั้นตอนจูนด้วยมือหน้างาน กลาง

Z7 Field tuning checklist เช็กลิสต์จูนหน้างาน

  1. ตรวจทิศทาง (direct/reverse acting) เซนเซอร์ หน่วย และขีดจำกัดตัวขับก่อนเสมอ เปิด anti-windup
  2. เริ่มด้วยค่าจากกฎ (SIMC หรือ ZN ลดเกนลงครึ่งหนึ่ง) หรือ P อย่างเดียวเกนต่ำ
  3. ทดสอบด้วยการเปลี่ยนค่าอ้างอิงเล็ก ๆ และการรบกวน (ถ้าทำได้) ทีละครั้ง
  4. แกว่งมาก → ลด KPK_P หรือเพิ่ม TiT_i · ช้าเกิน → เพิ่ม KPK_P · ค้างนาน → ลด TiT_i · overshoot ต่อค่าอ้างอิงมากแต่ต้านการรบกวนดี → ใช้ setpoint weighting b<1b \lt 1
  5. เพิ่ม TdT_d ทีละน้อย (เริ่ม Ti/6T_i/6 ถึง Ti/4T_i/4) ถ้าสัญญาณวัดสะอาด พร้อมฟิลเตอร์ N=8N = 8 ถึง 10
  6. บันทึกค่าและทดสอบที่จุดทำงานอื่น (โหลดต่ำ/สูง) ถ้าต่างกันมากพิจารณา 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 และสัญญาณวัดสะอาดพอ

อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์