← All articles

PLC10 min read

จูน PID แบบมีหลักฐาน · จาก Step test ถึง IMC λ (ทบทวนโปรเจกต์จบของเรา)

ตอนที่ 3 ของซีรีส์ Build. Test. Commission. Share. เอา Pressure loop จากโปรเจกต์จบปริญญาตรีของเรามาทบทวนใหม่ทั้งหมด ตั้งแต่ทำ Step test อ่านค่า K, θ, τ เทียบ Ziegler–Nichols กับ IMC λ พร้อมตรวจว่าทฤษฎีที่ใช้ตอนนั้นส่วนไหนถูก ส่วนไหนควรปรับ และมีตัวจำลองให้ลองจูนเอง

Watch on YouTube ↗

ลูป 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 คงที่ไว้ เพื่อให้เห็นว่าแต่ละเทอมทำหน้าที่อะไร

SP+−ePKc · eI(Kc/Ti) ∫ e dtD− Kc · Td · dPV/dtΣMVControlvalvePressureprocessPT · PVPV1.81.00SP0 → 120 s
  • 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)
MV +20 %28.3 %63.2 %θτ (to 63.2 %)ΔPV = K·ΔMVPV
อ่านค่าจาก step test: K = ΔPV % ÷ ΔMV % · θ = เวลาตั้งแต่ MV เปลี่ยนจนเส้นสัมผัสตัดฐาน ·τ = เวลาจากจุดนั้นจน PV ถึง 63.2 % · วิธีสองจุด: τ = 1.5 (t₆₃.₂ − t₂₈.₃), θ = t₆₃.₂ − τ
  • 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 อย่าง

  1. τ/θ ≈ 5–6 กระบวนการนี้เป็นแบบ Lag-dominant คือ dead time สั้นเมื่อเทียบกับ time constant จูนง่ายและรับ Gain สูงได้
  2. 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 แล้วลองเลื่อน λ ดู

load −5 %0 → 240 s

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)

⚠️ สิ่งที่ควรปรับ ถ้าทำใหม่วันนี้

  1. ประวัติของ IMC สไลด์เขียนว่า Garcia และ Morari พัฒนาในปี 1986 ที่ถูกคือ IMC เป็นกรอบแนวคิดที่ Garcia & Morari ตีพิมพ์ปี 1982 ส่วนสูตรจูน PID แบบ IMC มาจาก Rivera, Morari & Skogestad ปี 1986
  2. “P = Process gain” ในหน้า ZN ตรงนี้ปนกันอยู่ P ในสูตร ZN คือ Controller gain (Kc) ส่วน Process gain คือ K ของกระบวนการ สองตัวนี้ห้ามสับสนกัน
  3. Step จาก 0 % ทุกครั้ง ทำให้ทุก test รวมช่วงวาล์วปิดสนิทไว้ด้วย ซึ่งเป็นช่วงที่มี deadband และ stiction มากที่สุด ทางที่ดีกว่าคือ step เล็ก ๆ 5–10 % รอบจุดทำงานจริง ทำทั้งขึ้นและลง แล้วทำซ้ำในหลายจุดทำงาน จะได้โมเดลเฉพาะช่วงที่แม่นกว่า และเห็น Hysteresis ของวาล์วด้วย
  4. ZN ไม่ควรเป็นค่าตั้งต้นที่ใช้กับเครื่องจริง มันตั้งใจให้แกว่ง ควรใช้ IMC/SIMC เป็นค่าเริ่มต้น แล้วเก็บ ZN ไว้เทียบในแง่วิชาการ
  5. K เปลี่ยนตามช่วง ไม่ได้แปลว่าต้องใช้ MPC เสมอไป คำตอบแรกในอุตสาหกรรมมักเป็น Gain scheduling (เปลี่ยน Kc ตามจุดทำงาน) หรือการชดเชย Valve characteristic ส่วน MPC จะคุ้มจริงเมื่อมี ข้อจำกัด (Constraint) หลายตัว, ลูปหลายตัวที่ส่งผลต่อกัน (MIMO) หรือ Dead time ยาว
  6. AI/ML ในสไลด์แรก ๆ MPC ไม่ใช่ Machine learning แต่เป็นการหาค่าที่เหมาะที่สุด (Optimization) บนโมเดล ML อาจใช้ช่วยสร้างโมเดลได้ แต่ต้องแยกให้ชัดว่าส่วนไหนคืออะไร ไม่อย่างนั้นกรรมการหรือผู้อ่านจะสับสน
  7. คำว่า “Big Data” ข้อมูลจาก 10 Step test เป็น CSV คือ Data logging ที่ดี แต่ยังไม่ใช่ Big data ควรใช้คำให้ตรง จะดูน่าเชื่อถือกว่า
  8. หน่วยของ Gain ใน PID_Compact ถ้าคำนวณ Kc แบบ %/% แต่ Scale PV ใน PID_Compact เป็นหน่วยวิศวกรรม (เช่น bar) ต้องแปลงเป็น Kc × 100 / span ก่อนใส่ ไม่อย่างนั้นลูปจะแรงหรืออ่อนผิดไปหลายเท่า

Commissioning checklist สำหรับการจูน

✅ ก่อนบอกว่า 'จูนเสร็จแล้ว'

0 / 8

สรุป

  1. วัดก่อน จูนทีหลัง Step test ที่ดีคือหลักฐานชิ้นแรก
  2. อ่านโมเดลให้เป็น τ/θ บอกว่าลูปจูนยากหรือง่าย และ K ที่เปลี่ยนบอกว่าค่าจูนชุดเดียวพอหรือไม่
  3. IMC λ เป็นค่าเริ่มต้นที่ดีกว่า ZN มีปุ่มเดียวที่มีความหมายทางกายภาพ คืออยากให้ลูปเร็วแค่ไหน
  4. ทบทวนงานตัวเองเสมอ เทคโนโลยีและความรู้ของเราโตขึ้น งานเก่าก็ควรถูกตรวจด้วยสายตาใหม่

ตอนต่อไปเป็นตอนสุดท้ายของซีรีส์ ฝั่ง 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
  • #PID
  • #Process Control
  • #Step Test
  • #IMC
  • #Ziegler-Nichols
  • #S7-1200