ลูป PID ในโรงงานจำนวนมากถูกจูนด้วยความรู้สึก ลองเพิ่ม Gain ดูกราฟ แล้วก็ไปต่อ ได้ผลแต่ไม่มีใครรู้ว่าทำไม และไม่มีใครทำซ้ำได้
ตอนนี้คือฝั่ง Commission ของซีรีส์ เราจะจูนแบบมีหลักฐาน คือวัดกระบวนการก่อน แล้วคำนวณค่าจากโมเดล และเพื่อให้ตรงไปตรงมาที่สุด เราจะเอาโปรเจกต์จบปริญญาตรีของตัวเองมาทบทวนใหม่ทั้งหมด ว่าตอนนั้นทำอะไรถูก และอะไรที่ถ้าทำวันนี้จะทำต่างออกไป
ชุดทดลอง: Pressure loop บน S7-1200
- Actuator: Control valve
- Measurement: Pressure transmitter
- Controller: Siemens S7-1200 ใช้บล็อก PID_Compact ใน TIA Portal V17
- HMI: WinCC Unified Comfort Panel
- Data logging: SIMATIC IoT2050 บันทึกข้อมูลเป็น CSV
- Simulation: Factory I/O ใช้ซ้อมก่อนลงเครื่องจริง
PID ทำงานยังไง · เข้าใจใน 1 นาที
PID คือ Feedback controller ที่ดู error (e = SP − PV) แล้วคำนวณ Output (MV) จาก 3 มุม คือ ปัจจุบัน อดีต และแนวโน้ม แล้วรวมกัน ลองกดเปิดและปิดแต่ละเทอมดูครับ กราฟด้านล่างจำลองบน Pressure loop จริงจาก thesis ค่า Kc, Ti และ Td คงที่ไว้ เพื่อให้เห็นว่าแต่ละเทอมทำหน้าที่อะไร
- P · ปัจจุบัน ผลักแรงตาม error ตอนนี้ ยิ่งมากยิ่งไว แต่ใช้ P อย่างเดียวจะเหลือ offset และถ้ามากไปจะแกว่ง
- I · อดีต สะสม error ที่ผ่านมาจนลบ offset ได้หมด แต่ถ้าแรงไปจะ overshoot และต้องมี anti-windup
- D · แนวโน้ม ดูว่า PV กำลังเปลี่ยนเร็วแค่ไหน แล้วเบรกก่อนเลย SP แต่ขยาย noise ด้วย ลูปที่สัญญาณแกว่งไวอย่าง Flow มักไม่ใช้
สิ่งที่ควรสังเกต
- P อย่างเดียว ไปไม่ถึง SP เพราะ P ต้องมี error ค้างไว้ถึงจะยังสั่ง MV ได้ นี่คือ offset ที่เป็นธรรมชาติของกระบวนการแบบ self-regulating
- เพิ่ม I offset หายไป แต่ถ้า Ti สั้นมาก PV จะเลย SP ไปไกลก่อนกลับมา
- เพิ่ม D เบรกก่อนถึง SP จึง overshoot น้อยลงและนิ่งเร็วขึ้น
- ในตัวอย่างนี้ D คิดจาก PV ไม่ใช่ error แบบที่ PID ในอุตสาหกรรมส่วนใหญ่ทำ เพื่อไม่ให้ MV กระชากตอนเปลี่ยน SP (derivative kick)
ขั้นที่ 1 · ทำ Step test ให้ถูกวิธี
หลักการคือเปิดลูป (Manual) รอให้กระบวนการนิ่ง แล้วเปลี่ยน Output (MV) แบบขั้นบันได แล้วบันทึกว่า PV ตอบสนองยังไง
จากกราฟ (Reaction curve) เราจะอ่านค่า 3 ตัวที่ใช้บรรยายกระบวนการแบบ FOPDT (First Order Plus Dead Time)
G(s) = K · e^(−θs) / (τs + 1)
- K (Process gain) = ΔPV % ÷ ΔMV % เป็นค่าไร้หน่วย เมื่อแปลงทั้ง PV และ MV เป็น % ของช่วงแล้ว
- θ (Dead time) = เวลาที่ PV ยังไม่ขยับหลัง MV เปลี่ยน
- τ (Time constant) = เวลาจากจบ dead time จนถึง 63.2 % ของการเปลี่ยนแปลงทั้งหมด
ตอนทำ thesis เราใช้ วิธีเส้นสัมผัส (วาดเส้นผ่านจุดที่ชันที่สุด) ซึ่งถูกต้องตามตำรา แต่ไวต่อ noise มาก ถ้าวาดเอียงนิดเดียว θ ก็เพี้ยน ทุกวันนี้เราใช้ วิธีสองจุด (28.3 % / 63.2 %) เป็นหลัก เพราะใช้แค่จุดบนกราฟ ไม่ต้องลากเส้นด้วยมือ
ขั้นที่ 2 · ผลจากเครื่องจริง
เราทำ Step test ทั้งหมด 10 ครั้ง ตั้งแต่ 10 % ถึง 100 % ของวาล์ว ตัวอย่างบางแถวเป็นแบบนี้
| Step (MV %) | K | θ (s) | τ (s) |
|---|---|---|---|
| 0 → 20 | 0.60 | 4.38 | 23.3 |
| 0 → 40 | 0.87 | 3.84 | 20.9 |
| 0 → 60 | 0.92 | 3.65 | 21.1 |
| 0 → 80 | 0.93 | 3.50 | 20.5 |
| 0 → 100 | 0.97 | 3.80 | 21.7 |
สิ่งที่เห็นชัด 2 อย่าง
- τ/θ ≈ 5–6 กระบวนการนี้เป็นแบบ Lag-dominant คือ dead time สั้นเมื่อเทียบกับ time constant จูนง่ายและรับ Gain สูงได้
- K ไม่คงที่ ช่วงบน (> 30 %) K อยู่ราว 0.85–0.97 แต่ช่วงล่าง (< 20 %) K ตกเหลือ 0.3–0.6 แปลว่ากระบวนการไม่เป็นเชิงเส้น ค่าจูนชุดเดียวจะไม่ดีทั้งช่วง
ขั้นที่ 3 · จากโมเดลไปเป็นค่าจูน
ภาพรวมวิธีจูนที่นิยมใช้
ก่อนลงสูตร ลองดูภาพรวมก่อนว่าแต่ละวิธีต้องทำอะไรกับเครื่อง และเหมาะกับงานแบบไหน
| วิธี | ต้องทำอะไรกับเครื่อง | ข้อดี | ข้อควรระวัง | เหมาะกับ |
|---|---|---|---|---|
| Trial & error | ปรับแล้วดูกราฟไปเรื่อย ๆ | ไม่ต้องคำนวณ | ทำซ้ำไม่ได้ ใช้เวลานาน และขึ้นกับคนจูน | ลูปเล็ก ๆ ที่ไม่สำคัญ |
| ZN closed-loop (Ultimate gain) | เพิ่ม Kc จนลูปแกว่งค้าง แล้ววัด Ku กับ Pu | ไม่ต้องเปิดลูป | ต้องพาเครื่องไปแกว่งจริง ซึ่งอันตรายกับหลายกระบวนการ | ใช้ในแล็บ หรือระบบที่แกว่งได้ปลอดภัย |
| ZN open-loop (Reaction curve) | Step test 1 ครั้ง | เร็ว ใช้ข้อมูลน้อย | ตั้งใจให้แกว่ง (quarter decay) Robustness ต่ำ | ค่าเริ่มต้นคร่าว ๆ เชิงวิชาการ |
| Cohen–Coon | Step test | รองรับ dead time ที่ยาวกว่า ZN | ยังค่อนข้างแรง | ลูปที่ θ/τ สูง |
| IMC / Lambda / SIMC | Step test แล้วเลือก λ | มีปุ่มเดียวที่มีความหมาย Robust | ต้องมีโมเดลที่ดี | ค่าเริ่มต้นที่แนะนำ สำหรับลูปทั่วไป |
| Relay / Auto-tune | ให้ controller สร้างการแกว่งเล็ก ๆ ที่คุมขนาดได้เอง | อัตโนมัติ ปลอดภัยกว่า ZN closed-loop | ผลขึ้นกับ noise และ disturbance ระหว่างทดสอบ | Auto-tune ใน PLC เช่น PID_Compact |
| Model-based software | เก็บข้อมูล แล้ว fit โมเดลด้วยซอฟต์แวร์ | เห็นคุณภาพของโมเดล เทียบได้หลายแบบ | ต้องมีเครื่องมือและข้อมูลที่สะอาด | ลูปสำคัญ หรือ Cascade |
Ziegler–Nichols (1942) · สิ่งที่ใช้ใน thesis
สูตรแบบ open-loop (Reaction curve) สำหรับ PID
Kc = 1.2 · τ / (K · θ) Ti = 2θ Td = 0.5θ
PB % = 100 / Kc ≈ 83 · K · θ / τ
ZN ออกแบบมาให้ตอบสนองแบบ Quarter decay ratio คือแต่ละรอบที่แกว่งจะเหลือ 1/4 ของรอบก่อน แปลว่าตั้งใจให้แกว่งตั้งแต่ต้น เร็วก็จริง แต่ Robustness ต่ำ ถ้าโมเดลคลาดเคลื่อนนิดเดียวก็แกว่งหนักขึ้นได้
IMC / Lambda tuning · สิ่งที่ควรใช้เป็นค่าเริ่มต้น
IMC มีปุ่มปรับเพียงตัวเดียวคือ λ หมายถึง “อยากให้ลูปปิดตอบสนองเร็วแค่ไหน (วินาที)” สูตร PI สำหรับ FOPDT คือ
Kc = τ / (K · (λ + θ)) Ti = τ
- λ = θ ตอบสนองเร็วและยังแข็งแรงพอ (แนวทางของ SIMC, Skogestad 2003)
- λ = 2θ ถึง τ นุ่มขึ้น เหมาะกับลูปที่มีปฏิสัมพันธ์กับลูปอื่น หรือวาล์วที่ไม่อยากให้ขยับบ่อย
- SIMC ใช้ Ti = min(τ, 4(λ + θ)) เพื่อให้ลูปที่ τ ยาวมากกำจัด disturbance ได้เร็วขึ้น ข้อนี้จะเริ่มมีผลเมื่อ τ เกิน 8θ (กรณีเลือก λ = θ) ลูปของเรา τ ≈ 5.8θ จึงใช้ Ti = τ ตามเดิม
เทียบกันบนลูปเดียวกัน (K = 0.92, τ = 21.1 s, θ = 3.65 s)
| วิธี | Kc | PB % | Ti (s) | Td (s) |
|---|---|---|---|---|
| ZN PID | 7.54 | 13.3 | 7.3 | 1.82 |
| ZN PI | 5.66 | 17.7 | 12.2 | – |
| IMC PI · λ = θ | 3.14 | 31.8 | 21.1 | – |
| IMC PI · λ = 2θ | 2.09 | 47.7 | 21.1 | – |
| IMC PID · λ = θ | 4.55 | 22.0 | 22.9 | 1.68 |
สังเกตว่า Ti ของ ZN สั้นกว่า τ เกือบ 3 เท่า Integral ทำงานแรงมาก นี่คือที่มาของการแกว่ง
ลองเอง: Tune lab
ตัวจำลองนี้ใช้โมเดลจริงจากแถว 0 → 60 % ของตาราง SP จะขึ้น +10 % ที่วินาทีที่ 5 แล้วมี Load disturbance −5 % ที่วินาทีที่ 120 ลองสลับ Method แล้วกด “ช่วงล่าง K 0.30” ดูว่าค่าจูนเดิมจะเป็นยังไงเมื่อกระบวนการเปลี่ยนไป
⚙️ Tune lab · Pressure loop จาก thesis
K = 0.92 · τ = 21.1 s · θ = 3.65 s · กด Method แล้วลองเลื่อน λ ดู
PV pressure SP Valve output (scaled)
- Overshoot
- Settling ±2 %
- Disturbance peak
- Valve hits 0/100 %
ลองเล่นแล้วจะเห็นภาพแบบนี้ครับ
- ZN PID ไปถึง SP เร็ว แต่ overshoot ประมาณ 12 % และสั่งวาล์วจนชน 0/100 % ซึ่งเป็นภาระต่ออุปกรณ์จริง แต่ข้อดีคือกำจัด disturbance ได้เร็วกว่า
- IMC λ = θ overshoot เหลือราว 4 % นิ่งเร็วพอ ๆ กัน และวาล์วไม่ชนขอบ
- ช่วงล่าง (K 0.30) ทุกวิธีช้าลงชัดเจน IMC ที่จูนไว้สำหรับช่วงบนช้าลงราว 3–4 เท่า นี่คือหลักฐานจริงจาก thesis ว่าค่าจูนชุดเดียวไม่พอสำหรับทั้งช่วง
กรองทฤษฎี: ทบทวนงานตอนปี 4
เราเปิดสไลด์นำเสนอ (Revision 1, กุมภาพันธ์ 2023) มาตรวจใหม่ทีละหน้า ผลเป็นแบบนี้ครับ
✅ สิ่งที่ถูกต้อง
- โมเดล FOPDT เหมาะกับ Pressure loop ที่มี outflow ทำให้ค่าเข้าจุดนิ่งเอง (self-regulating) ข้อมูลจริงยืนยัน เพราะได้ K ค่าคงที่ ไม่ได้วิ่งไปเรื่อย ๆ แบบ integrating
- วิธีอ่าน K, θ, τ ถูกตามตำรา ทั้งการแปลง PV เป็น % ของช่วงสอบเทียบ, K = ΔPV % / ΔMV % และ τ ที่ 63 %
- ตัวเลข ZN ทุกแถวคำนวณถูก เราคำนวณซ้ำแล้ว PB % = 83·K·θ/τ, Ti = 2θ และ Td = 0.5θ ตรงทุกแถว
- ข้อสรุปเรื่อง K ไม่คงที่ เป็นการค้นพบที่สำคัญที่สุดของงาน และมีข้อมูลรองรับชัดเจน
- สถาปัตยกรรม MPC บน SCADA สั่ง PID บน PLC เป็นแนวทางที่มีงานวิจัยรองรับจริง (Aboelhassan et al., 2020)
⚠️ สิ่งที่ควรปรับ ถ้าทำใหม่วันนี้
- ประวัติของ IMC สไลด์เขียนว่า Garcia และ Morari พัฒนาในปี 1986 ที่ถูกคือ IMC เป็นกรอบแนวคิดที่ Garcia & Morari ตีพิมพ์ปี 1982 ส่วนสูตรจูน PID แบบ IMC มาจาก Rivera, Morari & Skogestad ปี 1986
- “P = Process gain” ในหน้า ZN ตรงนี้ปนกันอยู่ P ในสูตร ZN คือ Controller gain (Kc) ส่วน Process gain คือ K ของกระบวนการ สองตัวนี้ห้ามสับสนกัน
- Step จาก 0 % ทุกครั้ง ทำให้ทุก test รวมช่วงวาล์วปิดสนิทไว้ด้วย ซึ่งเป็นช่วงที่มี deadband และ stiction มากที่สุด ทางที่ดีกว่าคือ step เล็ก ๆ 5–10 % รอบจุดทำงานจริง ทำทั้งขึ้นและลง แล้วทำซ้ำในหลายจุดทำงาน จะได้โมเดลเฉพาะช่วงที่แม่นกว่า และเห็น Hysteresis ของวาล์วด้วย
- ZN ไม่ควรเป็นค่าตั้งต้นที่ใช้กับเครื่องจริง มันตั้งใจให้แกว่ง ควรใช้ IMC/SIMC เป็นค่าเริ่มต้น แล้วเก็บ ZN ไว้เทียบในแง่วิชาการ
- K เปลี่ยนตามช่วง ไม่ได้แปลว่าต้องใช้ MPC เสมอไป คำตอบแรกในอุตสาหกรรมมักเป็น Gain scheduling (เปลี่ยน Kc ตามจุดทำงาน) หรือการชดเชย Valve characteristic ส่วน MPC จะคุ้มจริงเมื่อมี ข้อจำกัด (Constraint) หลายตัว, ลูปหลายตัวที่ส่งผลต่อกัน (MIMO) หรือ Dead time ยาว
- AI/ML ในสไลด์แรก ๆ MPC ไม่ใช่ Machine learning แต่เป็นการหาค่าที่เหมาะที่สุด (Optimization) บนโมเดล ML อาจใช้ช่วยสร้างโมเดลได้ แต่ต้องแยกให้ชัดว่าส่วนไหนคืออะไร ไม่อย่างนั้นกรรมการหรือผู้อ่านจะสับสน
- คำว่า “Big Data” ข้อมูลจาก 10 Step test เป็น CSV คือ Data logging ที่ดี แต่ยังไม่ใช่ Big data ควรใช้คำให้ตรง จะดูน่าเชื่อถือกว่า
- หน่วยของ Gain ใน PID_Compact ถ้าคำนวณ Kc แบบ %/% แต่ Scale PV ใน PID_Compact เป็นหน่วยวิศวกรรม (เช่น bar) ต้องแปลงเป็น Kc × 100 / span ก่อนใส่ ไม่อย่างนั้นลูปจะแรงหรืออ่อนผิดไปหลายเท่า
Commissioning checklist สำหรับการจูน
✅ ก่อนบอกว่า 'จูนเสร็จแล้ว'
0 / 8
พร้อมลงหน้างานแล้ว 🚀
สรุป
- วัดก่อน จูนทีหลัง Step test ที่ดีคือหลักฐานชิ้นแรก
- อ่านโมเดลให้เป็น τ/θ บอกว่าลูปจูนยากหรือง่าย และ K ที่เปลี่ยนบอกว่าค่าจูนชุดเดียวพอหรือไม่
- IMC λ เป็นค่าเริ่มต้นที่ดีกว่า ZN มีปุ่มเดียวที่มีความหมายทางกายภาพ คืออยากให้ลูปเร็วแค่ไหน
- ทบทวนงานตัวเองเสมอ เทคโนโลยีและความรู้ของเราโตขึ้น งานเก่าก็ควรถูกตรวจด้วยสายตาใหม่
ตอนต่อไปเป็นตอนสุดท้ายของซีรีส์ ฝั่ง Share จะพาสร้าง UNS ด้วย MQTT + Ignition + Grafana บน Docker เพื่อแชร์ข้อมูลจากหน้างานให้ทุกฝ่ายเห็นตรงกันครับ
อ้างอิง
- Ziegler, J. G. & Nichols, N. B. (1942). Optimum Settings for Automatic Controllers. Transactions of the ASME. doi:10.1115/1.4019264
- Cohen, G. H. & Coon, G. A. (1953). Theoretical Consideration of Retarded Control. Transactions of the ASME. doi:10.1115/1.4015451
- Åström, K. J. & Hägglund, T. (1984). Automatic tuning of simple regulators with specifications on phase and amplitude margins. Automatica. doi:10.1016/0005-1098(84)90014-1
- Garcia, C. E. & Morari, M. (1982). Internal Model Control. A Unifying Review and Some New Results. Ind. Eng. Chem. Process Des. Dev. doi:10.1021/i200017a016
- Rivera, D. E., Morari, M. & Skogestad, S. (1986). Internal Model Control: PID Controller Design. Ind. Eng. Chem. Process Des. Dev. doi:10.1021/i200032a041
- Skogestad, S. (2003). Simple analytic rules for model reduction and PID controller tuning. Journal of Process Control. doi:10.1016/S0959-1524(02)00062-8
- Aboelhassan, A., Abdelgeliel, M., Zakzouk, E. E. & Galea, M. (2020). Design and Implementation of Model Predictive Control Based PID Controller for Industrial Applications. Energies. doi:10.3390/en13246594