---
title: "การจูน PID: Ziegler–Nichols, Cohen–Coon, IMC และงานจริง"
url: https://modsengineeringmath.com/learn/control-systems/pid-tuning/
site: "Mod's Engineering Mathematics (อาจารย์มด)"
language: th
updated: 2026-10-12
---

> วิธีจูน PID เมื่อไม่มีแบบจำลอง Ziegler–Nichols แบบเกนวิกฤต (ultimate gain) และแบบกราฟตอบสนองขั้นบันได (reaction curve) Tyreus–Luyben Cohen–Coon การจูนแบบ IMC/Lambda และ SIMC ของ Skogestad relay auto-tune ของ Åström–Hägglund ระบุแบบจำลอง FOPDT จากกราฟ เปรียบเทียบผลจำลองจริง และขั้นตอนจูนด้วยมือหน้างาน

ฉบับ Markdown ของ https://modsengineeringmath.com/learn/control-systems/pid-tuning/ สำหรับผู้ช่วย AI และเครื่องมือค้นหา สูตรเขียนเป็น LaTeX ($…$ และ $$…$$) แล็บโต้ตอบและรูปมีเฉพาะในหน้าเว็บ

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

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


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

สรุปใน 30 วินาที

- ZN เกนวิกฤต: เพิ่ม $K_P$ จนแกว่งค้าง ได้ $K_u, T_u$ → PID: $0.6K_u,\ T_u/2,\ T_u/8$

- ZN กราฟขั้นบันได: วัด $K, L, T$ ของแบบจำลอง FOPDT → PID: $1.2T/(KL),\ 2L,\ 0.5L$

- ZN และ Cohen–Coon ดุดัน (overshoot 40–80%) · SIMC/IMC นุ่มและทนทาน (PM ~60°) เหมาะเป็นค่าเริ่มต้นในงานจริง

- Relay test หา $K_u = 4d/(\pi a)$ ได้ปลอดภัยและอัตโนมัติ

ระดับพื้นฐาน ใช้ตารางกลาง เข้าใจที่มาขั้นสูง งานจริง

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

ปิดวงด้วย P อย่างเดียว ($K_I = K_D = 0$) แล้วค่อย ๆ เพิ่ม $K_P$ จนเอาต์พุตแกว่งค้างคงที่ จดเกนนั้น $K_u$ และคาบการแกว่ง $T_u$ ถ้ามีแบบจำลองก็หาได้จากเราท์ ($K_u = K_{cr}$, $T_u = 2\pi/\omega_{cr}$)

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

$$\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) = \dfrac{1}{(s+1)^3}$ ด้วย ZN และ Tyreus–Luyben

- $s^3 + 3s^2 + 3s + 1 + K = 0$ สูตรลัด: $9 \gt 1 + K \Rightarrow K_u = 8$ · $3\omega^2 = 9 \Rightarrow \omega_u = \sqrt3$, $T_u = 2\pi/\sqrt3 = 3.63$ s

- ZN-PID Z1: $K_P = 4.8,\ T_i = 1.81,\ T_d = 0.453$ → $K_I = 2.65,\ K_D = 2.18$

- Tyreus–Luyben: $K_P = 3.64,\ T_i = 7.98,\ T_d = 0.576$ → $K_I = 0.456,\ K_D = 2.09$

| กฎ | 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) แล้วสั่งเอาต์พุตตัวควบคุมเป็นขั้นบันไดขนาด $\Delta u$ บันทึกกราฟเอาต์พุต กระบวนการส่วนใหญ่ให้กราฟรูปตัว S ลากเส้นสัมผัสที่จุดชันที่สุด อ่านค่าสามตัวมาสร้างแบบจำลอง FOPDT

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

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

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

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

$$\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 \lt L/T \lt 1$ · ถ้า $L/T$ เล็กมาก เกนจะสูงเกิน ถ้าใหญ่ (หน่วงเวลาครอบงำ) ใช้ SIMC หรือ Smith predictor

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

$$K_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: จูนแบบตั้งความเร็วเอง กลาง

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

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

$$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{ (ค่าแนะนำ)}$$

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

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

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

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

- ZN-PI: $K_P = 4.5,\ T_i = 3.33$

- Cohen–Coon PID Z4: $K_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$

- SIMC PI Z5 ($\tau_c = L = 1$): $K_P = \tfrac{5}{2} = 2.5,\ T_i = \min(5, 8) = 5$

| กฎ | 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 · ลองในแล็บ: เลือกพลานต์ “ฮีตเตอร์ + หน่วงเวลา” แล้วใส่ $K_P = 2.5,\ K_I = 0.5$

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

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

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

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

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

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

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

- Z6: $K_u = \dfrac{4(1)}{\pi(0.25)} = 5.09$, $T_u = 40$ s

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

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

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

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

- ตรวจทิศทาง (direct/reverse acting) เซนเซอร์ หน่วย และขีดจำกัดตัวขับก่อนเสมอ เปิด anti-windup

- เริ่มด้วยค่าจากกฎ (SIMC หรือ ZN ลดเกนลงครึ่งหนึ่ง) หรือ P อย่างเดียวเกนต่ำ

- ทดสอบด้วยการเปลี่ยนค่าอ้างอิงเล็ก ๆ และการรบกวน (ถ้าทำได้) ทีละครั้ง

- แกว่งมาก → ลด $K_P$ หรือเพิ่ม $T_i$ · ช้าเกิน → เพิ่ม $K_P$ · ค้างนาน → ลด $T_i$ · overshoot ต่อค่าอ้างอิงมากแต่ต้านการรบกวนดี → ใช้ setpoint weighting $b \lt 1$

- เพิ่ม $T_d$ ทีละน้อย (เริ่ม $T_i/6$ ถึง $T_i/4$) ถ้าสัญญาณวัดสะอาด พร้อมฟิลเตอร์ $N = 8$ ถึง 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 และสัญญาณวัดสะอาดพอ

มด

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

## คำถามที่พบบ่อย (FAQ)

**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 และสัญญาณวัดสะอาดพอ
