สอนการเขียน PID Control ใน PLC พร้อมตัวอย่าง PWM และทฤษฎี
เรียนรู้การเขียน PID Control ใน PLC แบบง่ายๆ ครบถ้วน ตั้งแต่ทฤษฎี PWM การควบคุม On-Off จนถึงการปรับ PID Parameter พร้อมตัวอย่างการควบคุมอุณหภูมิ
อัพเดทล่าสุด: 8/3/2569
ราคาชุดอุปกรณ์
การเขียน PID Control ใน PLC
การควบคุม PID (Proportional-Integral-Derivative) เป็นเทคนิคสำคัญในระบบอัตโนมัติ ในบทความนี้จะสาธิตการเขียน PID Control ทั้งทฤษฎีและปฏิบัติด้วยตัวอย่างการต้มน้ำร้อนให้ได้อุณหภูมิ 50 องศาเซลเซียส
ระบบควบคุมพื้นฐาน
องค์ประกอบของระบบ
ระบบการต้มน้ำประกอบด้วย 3 ส่วนหลัก:
- Controller (PLC): รับค่า Set Value (SV) และออก Output ไปควบคุม Process
- Process (Heater): ตัวต้มน้ำที่ถูกควบคุม
- Sensor: อ่านค่า Process Variable (PV) ส่งกลับไปยัง Controller
การเชื่อมต่อวงจร:
- ใช้ PT-100 Sensor แบบ 3-wire เชื่อมต่อกับ PLC
- Output ใช้ Transistor ขับ SSR (Solid State Relay) ควบคุม Heater
- สำหรับ HMI ใช้ 2-in-1 รุ่น 4.3" หรือ 7" กับ Module F-4PT
PWM (Pulse Width Modulation)
หลักการทำงาน
PWM เป็นเทคนิคการออก Output ที่มีค่าอยู่ระหว่าง 0-100% โดยการปรับ Duty Cycle:
- Duty Cycle 25%: Output ติด 25% ของเวลา
- Duty Cycle 75%: Output ติด 75% ของเวลา
- Duty Cycle 100%: Output ติดตลอด
การเขียน PWM Code
ตัวอย่างการใช้งาน:
- D14 = 0: Output ปิดตลอด (0%)
- D14 = 1000: Output ติด 1 วิ ปิด 1 วิ (50%)
- D14 = 2000: Output ติดตลอด (100%)
การควบคุมแบบ On-Off
ปัญหาของ On-Off Control
ปัญหาที่เกิด:
- เกิด Overshoot (อุณหภูมิสูงเกิน Setpoint)
- ระบบไม่เสถียร เกิดการแกว่งขึ้นลง
- ไม่เหมาะกับระบบที่มี Thermal Mass สูง
ทฤษฎี PID Control
การคำนวณ Error
สิ่งแรกที่ต้องคำนวณคือค่า Error:
Error = SV - PV
เช่น: SV = 50°C, PV = 45°C → Error = 5°C
P-Control (Proportional)
สูตร: P = KP × Error
SUBD D10 D12 D20 // Error = SV - PV (32-bit subtract)
DTOF D20 D22 // แปลง Error เป็น Float
MULF D22 D6200 D24 // P = Error × KP
คุณสมบัติ:
- ง่ายต่อการเข้าใจ
- มี Steady State Error (ไม่สามารถลู่เข้าสู่ Setpoint ได้)
- KP สูงเกินไป จะทำให้ระบบไม่เสถียร
I-Control (Integral)
สูตร Continuous: I = KI × ∫Error dt
สูตร Discrete: I(k) = I(k-1) + (KP/TI) × Error
// คำนวณ Integral Term
MULF D22 D6200 D26 // Error × KP
DIVF D26 D6400 D26 // หารด้วย TI
ADDF D26 D28 D26 // บวกกับ I ตอนก่อน
MOVF D26 D28 // เก็บค่าสำหรับรอบต่อไป
คุณสมบัติ:
- แก้ปัญหา Steady State Error
- ทำให้ระบบลู่เข้าสู่ Setpoint ได้
- อาจทำให้เกิด Overshoot
D-Control (Derivative)
สูตร Continuous: D = KD × dError/dt
สูตร Discrete: D = KP × TD × (Error(k) - Error(k-1))
// คำนวณ Derivative Term
SUBF D22 D32 D34 // Error ปัจจุบัน - Error ก่อน
MULF D34 D6200 D34 // คูณ KP
MULF D34 D6600 D34 // คูณ TD
MOVF D22 D32 // เก็บ Error ปัจจุบันไว้ใช้รอบต่อไป
คุณสมบัติ:
- ลดการ Overshoot
- ปรับปรุงการตอบสนองของระบบ
- ทำให้ระบบเสถียรขึ้น
การเขียน PID แบบครบถ้วน
โครงสร้าง Main Program
Subroutine Self PID: Initialization
Subroutine Self PID: Cycle Timing
Subroutine Self PID: Error + P Term
Subroutine Self PID: I Term (gated by M7501)
Subroutine Self PID: D Term (gated by M7502)
Subroutine Self PID: Sum + Clamp + Output
การตั้งค่าพารามิเตอร์
ค่าพารามิเตอร์สำคัญ
- D6000: Sampling Time (ms) - แนะนำ 1000 (1 วินาที)
- D6200: KP - ค่าความแรงของ Proportional
- D6400: TI - Integral Time (วินาที)
- D6600: TD - Derivative Time (วินาที)
เทคนิค Auto-Tuning
ใช้วิธี Ziegler-Nichols หรือ Auto-Tuning:
- เซ็ต I และ D เป็น 0
- เพิ่ม KP จนระบบเริ่มแกว่ง
- บันทึกค่า KP critical และ Period การแกว่ง
- คำนวณพารามิเตอร์ตามสูตร Ziegler-Nichols
การแก้ปัญหาที่พบบ่อย
ระบบไม่เสถียร (Oscillation)
สาเหตุ:
- KP สูงเกินไป
- TI น้อยเกินไป (KI สูงเกินไป)
วิธีแก้:
- ลด KP ลง 20-30%
- เพิ่ม TI (ลด KI)
- เพิ่ม TD เล็กน้อย
มี Steady State Error
สาเหตุ:
- ไม่ได้ใช้ I-Control
- TI สูงเกินไป (KI ต่ำเกินไป)
วิธีแก้:
- เปิดใช้ I-Control (ปิด M7501)
- ลดค่า TI
เกิด Overshoot มาก
สาเหตุ:
- KP หรือ KI สูงเกินไป
- ไม่ได้ใช้ D-Control
วิธีแก้:
- เปิดใช้ D-Control (ปิด M7502)
- เพิ่มค่า TD
- ลด KP หรือเพิ่ม TI
ระบบตอบสนองช้า
สาเหตุ:
- KP ต่ำเกินไป
- TI สูงเกินไป
วิธีแก้:
- เพิ่ม KP
- ลด TI (เพิ่ม KI)
เคล็ดลับการปรับแต่ง
- เริ่มต้นด้วย P-Control: ตั้ง I และ D เป็น 0 ก่อน
- ปรับทีละตัว: อย่าปรับหลายพารามิเตอร์พร้อมกัน
- บันทึกค่า: เก็บค่าที่ได้ผลดีไว้เป็นอ้างอิง
- ทดสอบ Disturbance: ลองเปลี่ยนภาระหรือสภาวะแวดล้อม
- ใช้ Data Logging: เก็บข้อมูลเพื่อวิเคราะห์ผลการควบคุม
สรุป
การเขียน PID Control เองใน PLC ช่วยให้เข้าใจหลักการทำงานของระบบควบคุมอย่างลึกซึ้ง แม้จะซับซ้อนกว่าการใช้ Function Block สำเร็จรูป แต่ให้ความยืดหยุ่นในการปรับแต่งและแก้ไขปัญหา
ข้อดีของการเขียนเอง:
- เข้าใจหลักการทำงานอย่างถ้วนถี่
- สามารถปรับแต่งได้ตามความต้องการ
- แก้ปัญหาได้อย่างตรงจุด
- ไม่ต้องพึ่งพา Function Block ของผู้ผลิต
ข้อควรระวัง:
- ต้องทำความเข้าใจทฤษฎีก่อน
- การ Debug ใช้เวลามากกว่า
- ต้องระวังการ Overflow ของตัวแปร
- จำเป็นต้องมีการป้องกันค่าผิดปกติ
การฝึกฝนด้วยตัวอย่างการต้มน้ำเป็นจุดเริ่มต้นที่ดี เพราะสามารถทำได้ง่ายและเข้าใจผลการทำงานได้ชัดเจน
มีคำถาม? ติดต่อทีมงาน




