การควบคุมป้อนกลับเบื้องต้น
UAT 202 พื้นฐานเทคโนโลยีระบบอัตโนมัติ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- อธิบายการควบคุมแบบ ON/OFF พร้อม hysteresis และเหตุที่ทำให้ค่าแกว่ง
- อธิบายหน้าที่ของพจน์ P, I และ D ในตัวควบคุม PID
- จำลองวงควบคุมอุณหภูมิและเปรียบเทียบ ON/OFF, P และ PI จากค่าผิดพลาดคงค้างและการแกว่ง
- อธิบาย integral windup และวิธีป้องกันเบื้องต้น
ทำไมต้องรู้
แบตเตอรี่ลิเทียมที่ชาร์จในที่ร้อนเสื่อมเร็วและเสี่ยงเกิดอันตราย ตู้ชาร์จของสถานีเปลี่ยนแบตเตอรี่จึงต้องรักษาอุณหภูมิด้วยพัดลมระบายความร้อน วิธีสั่งพัดลมมีตั้งแต่ง่ายที่สุด คือเปิดเมื่อร้อนและปิดเมื่อเย็น ไปจนถึงตัวควบคุม PID ที่ปรับความแรงของพัดลมอย่างต่อเนื่อง หลักเดียวกันนี้ใช้ในตัวควบคุมการบินของโดรนที่รักษาท่าทางหลายร้อยครั้งต่อวินาที
ผังบล็อกของวงป้อนกลับ
แบบจำลองอย่างง่ายของตู้ชาร์จคือ ความร้อนจากการชาร์จ ทำให้ร้อนขึ้น พัดลมระบายได้สูงสุด และผนังตู้ถ่ายเทความร้อนกับอากาศรอบข้าง ตามค่า ถ้าไม่มีพัดลมเลย อุณหภูมิจะไปคงที่ที่ ในตัวอย่างนี้คือ °C ซึ่งร้อนเกินไป
ON/OFF, P, I และ D
- ON/OFF เปิดพัดลมเต็มที่เมื่อร้อนเกิน ปิดเมื่อเย็นพอ ต้องมี hysteresis (ช่วงเผื่อ) เช่น เปิดเมื่อเกิน 30.5 °C ปิดเมื่อต่ำกว่า 29.5 °C มิฉะนั้นพัดลมจะเปิดปิดถี่จนเสีย ค่าอุณหภูมิจึงแกว่งอยู่ในช่วงนั้นเสมอ
- P (proportional) สั่งตามขนาดค่าผิดพลาดปัจจุบัน ยิ่งร้อนยิ่งเปิดแรง แต่มักเหลือ ค่าผิดพลาดคงค้าง (steady-state error) เพราะต้องมีค่าผิดพลาดอยู่บ้างจึงจะมีคำสั่งให้พัดลมหมุน
- I (integral) สะสมค่าผิดพลาดตามเวลา ตราบใดที่ยังผิดอยู่ คำสั่งจะเพิ่มขึ้นเรื่อย ๆ จนค่าผิดพลาดคงค้างหายไป
- D (derivative) ดูอัตราการเปลี่ยนของค่าผิดพลาด ช่วยลดการพุ่งเกิน แต่ไวต่อสัญญาณรบกวน งานอุณหภูมิที่เปลี่ยนช้ามักไม่ใช้ D
ตัวอย่างที่ 1 เปรียบเทียบ ON/OFF, P และ PI
ตู้ชาร์จเริ่มที่ 32 °C ต้องการ 30 °C จำลอง 1 ชั่วโมง ทีละ 1 วินาที คำสั่งพัดลม อยู่ในช่วง 0–1
def cabinet(mode, kp=0.3, ki=0.002, t_end=3600, dt=1.0):
C, h, Ta, Q, Pmax, sp = 20000.0, 10.0, 32.0, 300.0, 600.0, 30.0 # J/K, W/K, °C, W, W, °C
temp, integ, on, switches, hist = 32.0, 0.0, False, 0, []
for _ in range(int(t_end / dt) + 1):
e = temp - sp # ร้อนเกินเป็นบวก
if mode == "ON/OFF":
new_on = True if temp > sp + 0.5 else False if temp < sp - 0.5 else on
switches += new_on != on
on = new_on
u = 1.0 if on else 0.0
elif mode == "P":
u = min(max(kp * e, 0.0), 1.0)
else: # PI พร้อมกันไม่ให้สะสมเมื่อคำสั่งอิ่มตัว
integ += e * dt
raw = kp * e + ki * integ
u = min(max(raw, 0.0), 1.0)
if u != raw:
integ -= e * dt
temp += dt * (Q - Pmax * u - h * (temp - Ta)) / C
hist.append(temp)
last = hist[-1200:] # 20 นาทีสุดท้าย
return min(last), max(last), switches
for mode in ("ON/OFF", "P", "PI"):
lo, hi, sw = cabinet(mode)
print(f"{mode:<6} last 20 min: {lo:.2f}–{hi:.2f} °C" + (f", fan switched {sw} times" if mode == "ON/OFF" else ""))
ON/OFF last 20 min: 29.50–30.51 °C, fan switched 52 times
P last 20 min: 31.68–31.68 °C
PI last 20 min: 30.00–30.00 °C
ON/OFF แกว่งอยู่รอบ 30 °C และพัดลมเปิดปิดหลายสิบครั้งในหนึ่งชั่วโมง P ไม่แกว่ง แต่ค้างอยู่สูงกว่าเป้าหมายราว 1.7 °C ส่วน PI เข้าที่ 30 °C พอดี เพราะพจน์ I ค่อย ๆ เพิ่มคำสั่งจนค่าผิดพลาดหายไป
Integral windup
ถ้าคำสั่งอิ่มตัว เช่น พัดลมเปิดเต็มที่แล้วแต่ยังร้อนอยู่ พจน์ I จะสะสมไปเรื่อย ๆ โดยไม่มีผล เมื่ออุณหภูมิลงถึงเป้าหมาย ค่าสะสมที่มากเกินจะทำให้พัดลมเปิดต่อจนเย็นเกิน อาการนี้เรียกว่า integral windup โค้ดในตัวอย่างป้องกันแบบง่ายที่สุด คือหยุดสะสมเมื่อคำสั่งอิ่มตัว ตัวควบคุมการบินของ PX4 ก็มีการจำกัดพจน์ I ในวงควบคุมอัตราหมุนเช่นกัน
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ปรับตัวควบคุมอุณหภูมิ
- รันโค้ดตัวอย่างที่ 1 เปลี่ยนช่วง hysteresis ของ ON/OFF เป็น ±0.2 และ ±1.0 °C บันทึกจำนวนครั้งที่พัดลมเปิดปิดและช่วงการแกว่ง
- เพิ่ม ของ P เป็น 0.6 และ 1.2 บันทึกค่าผิดพลาดคงค้าง แล้วอธิบายว่าทำไมไม่หายไปหมด
- ลบบรรทัดที่หยุดสะสมพจน์ I ออก แล้วเริ่มจากตู้ที่ร้อน 45 °C เปรียบเทียบกับแบบมีการป้องกัน windup
- ถ้ามีชุดฝึก ใช้เซนเซอร์อุณหภูมิกับพัดลมจริงผ่าน PLC หรือไมโครคอนโทรลเลอร์ เขียน ON/OFF พร้อม hysteresis แล้วบันทึกกราฟ
- สรุปว่าตู้ชาร์จของสถานีควรใช้ตัวควบคุมแบบใด พร้อมเหตุผล
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ใช้ ON/OFF โดยไม่มี hysteresis อุปกรณ์เปิดปิดถี่จนเสีย
- เพิ่ม เพื่อไล่ค่าผิดพลาดคงค้าง จนระบบแกว่ง
- ไม่ป้องกัน integral windup เมื่อคำสั่งอิ่มตัว
- ใส่พจน์ D กับสัญญาณที่มีสัญญาณรบกวนมาก
- ปรับตัวควบคุมกับระบบจริงโดยไม่มีขีดจำกัดความปลอดภัย เช่น ตัดการชาร์จเมื่อร้อนเกิน
สรุป
- ON/OFF ง่ายแต่แกว่งเสมอ ต้องมี hysteresis
- P ลดค่าผิดพลาดแต่มักเหลือค่าผิดพลาดคงค้าง I กำจัดค่าผิดพลาดคงค้าง D ลดการพุ่งเกินแต่ไวต่อสัญญาณรบกวน
- PI เหมาะกับกระบวนการที่เปลี่ยนช้าอย่างอุณหภูมิ
- ต้องป้องกัน integral windup เมื่อคำสั่งอิ่มตัว
แบบฝึกตรวจความเข้าใจ
- ตู้ที่ °C, W, W/K ถ้าไม่มีพัดลมจะคงที่ที่อุณหภูมิใด
- ตัวควบคุม P มี ค่าผิดพลาด 2 °C คำสั่งเท่าใด
- พจน์ใดของ PID ที่กำจัดค่าผิดพลาดคงค้าง
- ทำไม ON/OFF จึงต้องมี hysteresis
- Integral windup เกิดเมื่อใด
เฉลย
- °C
- พจน์ I
- เพื่อไม่ให้อุปกรณ์เปิดปิดถี่เกินไปเมื่อค่าอยู่ใกล้เป้าหมาย
- เมื่อคำสั่งอิ่มตัวแต่ยังมีค่าผิดพลาด พจน์ I จึงสะสมต่อโดยไม่มีผล
สรุปสูตรสำคัญ
| ตัวควบคุม PID | |
| แบบจำลองอุณหภูมิตู้ชาร์จ | |
| อุณหภูมิคงตัวเมื่อไม่มีการระบายความร้อน |
แหล่งอ้างอิงหลัก
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz