พิมพ์คำที่ต้องการค้นหา ทั้งภาษาไทยและอังกฤษ

  1. หน้าแรก
  2. บทความ
  3. ระบบควบคุมและ PID
  4. คู่มือจูน PID

// คู่มือ · PID Academy · ระบบควบคุม

การจูน PID ฉบับสมบูรณ์: จาก Step Test ถึง Ziegler–Nichols, SIMC และ Anti-Windup

การจูนคือสิ่งที่ตัดสินว่าวงควบคุม PID จะเดินเรียบไปสิบปี หรือแกว่งทุกกะ บทความนี้คือคอร์สทั้งหลักสูตรในหน้าเดียว ตั้งแต่การอ่านสมการของตัวควบคุมที่ใช้อยู่ การวัดกระบวนการ กฎจูนเจ็ดแบบพร้อมสูตรและข้อจำกัด การเทียบผลบนพลานต์ตัวเดียวกันด้วยการจำลอง วิธีแก้ปัญหาที่วงควบคุมจริงต้องเจอ และตารางแก้ปัญหาที่พกไปหน้างานได้ ตัวเลขทุกตัวคำนวณและตรวจด้วยการจำลองแล้ว

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • ดูสมการของตัวควบคุมก่อน (ideal, series หรือ parallel; หน่วยเป็นวินาทีหรือนาที) ตัวเลขชุดเดียวกันให้ผลต่างกันในแต่ละรูปแบบ
  • step test วงเปิดครั้งเดียวได้ KK, LL, TT และอัตราส่วน L/TL/T บอกว่าวงนี้ควบคุมยากแค่ไหน
  • ค่าเริ่มต้นที่ดี: SIMC ที่ τc=L\tau_c=L: Kp=TK(τc+L)K_p=\dfrac{T}{K(\tau_c+L)}, Ti=min⁡(T, 4(τc+L))T_i=\min\big(T,\,4(\tau_c+L)\big) ส่วน Ziegler–Nichols และ Cohen–Coon เร็วแต่ margin บาง
  • วงควบคุมจริงต้องมีเทอม D ที่กรองแล้ว anti-windup เวลาสุ่มตัวอย่างที่เหมาะ และตรวจ stiction ของวาล์ว

1. กำหนดก่อนว่า “จูนดี” หมายถึงอะไร

การจูนคือการเลือก KpK_p, TiT_i และ TdT_d ให้วงปิดได้ตามข้อกำหนด ก่อนแตะตัวเลขใด ๆ ให้เขียนข้อกำหนดออกมาก่อน เพราะวงควบคุมเก่งทุกอย่างพร้อมกันไม่ได้ มีสี่เรื่องที่ต้องแลกกัน:

  • การตามค่าเป้าหมาย (setpoint tracking): เวลาขึ้น การเกินเป้า และเวลาเข้าที่หลังค่าเป้าหมายเปลี่ยน
  • การต้านสิ่งรบกวน (disturbance rejection): โหลดเปลี่ยนแล้วค่าที่วัดถูกดันไปไกลแค่ไหน และกลับมาเร็วเพียงใด
  • ความทนทาน (robustness): วงยังนิ่งอยู่ไหมเมื่อเกน ค่าคงเวลา หรือเวลาหน่วงของกระบวนการเปลี่ยนไป 30–50%
  • แรงที่ใช้ควบคุม (control effort): วาล์ว มอเตอร์ หรือฮีตเตอร์ขยับมากแค่ไหน รวมถึงที่ขยับตามสัญญาณรบกวน ขยับมากทำให้ตัวขับสึกหรอ

การจูนแบบดุดันช่วยสองข้อแรกและเสียสองข้อหลัง วงควบคุมในโรงงานส่วนใหญ่เป็นแบบ regulatory คือค่าเป้าหมายแทบไม่เปลี่ยนและสิ่งรบกวนเป็นตัวหลัก จึงให้ความสำคัญกับเทอมปริพันธ์และการต้านสิ่งรบกวน ส่วนวงควบคุมการเคลื่อนที่เป็นแบบ servo ค่าเป้าหมายเปลี่ยนตลอดและ overshoot เป็นศัตรูหลัก ถ้าต้องการทั้งสองอย่างให้ใช้ setpoint weighting (หัวข้อ 13) เพื่อปรับสองพฤติกรรมแยกกัน

หลักคิด เริ่มจากการจูนที่นุ่มและทนทานก่อน แล้วค่อยเร่งเมื่อกระบวนการต้องการ อธิบายวงที่ช้าไปนิดเดียวได้ง่ายกว่าวงที่แกว่งมาก

2. รู้ก่อนว่าตัวควบคุมของคุณใช้สมการแบบไหน

ความผิดพลาดที่พบบ่อยที่สุดในการจูนคือใส่ตัวเลขถูกต้องลงในสมการผิดรูปแบบ รูปแบบที่พบมีสามแบบ

รูปแบบฟังก์ชันถ่ายโอนพบที่ไหน
Ideal (ISA, มาตรฐาน)C(s)=Kc(1+1Tis+Tds)C(s)=K_c\left(1+\dfrac{1}{T_is}+T_ds\right)ตำรา DCS และฟังก์ชันบล็อก PLC ส่วนใหญ่
ParallelC(s)=Kp+Kis+KdsC(s)=K_p+\dfrac{K_i}{s}+K_dsไลบรารี MATLAB/Python หลายตัว ไดรฟ์และโค้ดไมโครคอนโทรลเลอร์บางชนิด
Series (interacting)C(s)=Kc′(1+1Ti′s)(1+Td′s)C(s)=K_c'\left(1+\dfrac{1}{T_i's}\right)(1+T_d's)ตัวควบคุมนิวเมติกและอิเล็กทรอนิกส์รุ่นเก่า บางผู้ผลิต

Ideal กับ parallel แปลงกันตรง ๆ: Kp=KcK_p=K_c, Ki=Kc/TiK_i=K_c/T_i, Kd=KcTdK_d=K_cT_d ส่วนแบบ series เมื่อคูณออกมาจะได้รูป ideal ที่ตัวเลขต่างไป

Kc=Kc′(1+Td′Ti′),Ti=Ti′+Td′,Td=Ti′Td′Ti′+Td′K_c=K_c'\left(1+\frac{T_d'}{T_i'}\right),\qquad T_i=T_i'+T_d',\qquad T_d=\frac{T_i'T_d'}{T_i'+T_d'}

เมื่อ TdT_d น้อยมากเมื่อเทียบกับ TiT_i ทั้งสองรูปแบบแทบไม่ต่างกัน แต่ถ้าใช้เทอมอนุพันธ์แรงจะต่างชัดเจน มีรายละเอียดอีกสามอย่างที่เปลี่ยนความหมายของตัวเลข:

  • Proportional band: ตัวควบคุมบางรุ่นให้ใส่ PB (%) แทนเกน: PB=100/KcPB=100/K_c เมื่ออินพุตและเอาต์พุตเป็นเปอร์เซ็นต์ของช่วงวัดทั้งคู่
  • หน่วยของเทอมปริพันธ์: TiT_i อาจเป็นวินาทีหรือนาที และบางผู้ผลิตใช้ repeats per minute =1/Ti=1/T_i ซึ่งเลขมากหมายถึงปริพันธ์ แรงขึ้น ตรงข้ามกับ TiT_i
  • หน่วยวิศวกรรมเทียบกับเปอร์เซ็นต์: ถ้าตัวควบคุมทำงานบนเปอร์เซ็นต์ของช่วงวัด เกนกระบวนการ KK ต้องแปลงเป็นเปอร์เซ็นต์เหมือนกัน เช่น เกนที่วัดเป็น °C ต่อ % ต้องหารด้วยช่วงวัดก่อนนำไปใช้กับกฎจูน
ตรวจก่อนใส่ค่า อ่านสมการในคู่มือ ยืนยันหน่วยเวลา และยืนยันว่าเอาต์พุตเป็นแบบ direct หรือ reverse acting ตัวควบคุมแบบ reverse ที่ต่อกับกระบวนการแบบ direct เปลี่ยนฟีดแบ็กเชิงลบเป็นเชิงบวกภายในไม่กี่วินาที

3. P, I และ D ทำอะไรกับการตอบสนอง

สรุปสั้น ๆ ก่อน ส่วนเรื่องเต็มอยู่ในบทความ “PID Controller คืออะไร” กำหนดค่าผิดพลาด e=r−ye=r-y

u(t)=Kp[e(t)+1Ti∫0te dτ+Tddedt]u(t)=K_p\left[e(t)+\frac{1}{T_i}\int_0^t e\,d\tau+T_d\frac{de}{dt}\right]
  • P ตอบสนองต่อค่าผิดพลาดปัจจุบัน กระบวนการที่มีเกน KK และไม่มีตัวอินทิเกรต เมื่อใช้ P อย่างเดียวจะนิ่งที่ค่าผิดพลาดค้าง ess=11+KKpe_{ss}=\dfrac{1}{1+KK_p} สำหรับค่าเป้าหมายขั้นบันไดหนึ่งหน่วย
  • I ตอบสนองต่อค่าผิดพลาดสะสม จึงกำจัดค่าค้างนั้นได้ ราคาที่จ่ายคือเฟสล้าหลัง ปริพันธ์แรง (TiT_i น้อย) ทำให้วงช้าลงและแกว่งง่ายขึ้น
  • D ตอบสนองต่อแนวโน้ม เพิ่มเฟสนำและการหน่วง แต่เกนของมันโตตามความถี่ จึงขยายสัญญาณรบกวนความถี่สูง
เพิ่มเวลาขึ้นOvershootเวลาเข้าที่ค่าผิดพลาดค้างเสถียรภาพ
KpK_pสั้นลงมากขึ้นเปลี่ยนเล็กน้อยลดลงแย่ลง
ปริพันธ์ (TiT_i น้อยลง)สั้นลงมากขึ้นนานขึ้นหมดไปแย่ลง
TdT_dเปลี่ยนเล็กน้อยลดลงสั้นลงไม่เปลี่ยนดีขึ้นถึงจุดหนึ่ง
010203040506000.51.01.52.0t (s)y/rKp = 0.5Kp = 1.5Kp = 3Kp = 4.25 = Ku
รูปที่ 1 ควบคุมแบบ P อย่างเดียวกับพลานต์ตัวอย่าง G(s)=2e−2s/(10s+1)G(s)=2e^{-2s}/(10s+1) ค่าสุดท้ายคือ KKp/(1+KKp)KK_p/(1+KK_p) ได้ 0.50, 0.75 และ 0.857 เมื่อ Kp=0.5, 1.5, 3K_p=0.5,\,1.5,\,3 ตรงกับสูตรทุกค่า และที่ Kp=Ku=4.25K_p=K_u=4.25 วงแกว่งต่อเนื่อง ซึ่งเป็นการทดลองที่อยู่เบื้องหลังวิธี Ziegler–Nichols แบบวงปิด

4. จำแนกกระบวนการก่อนจูน

กฎจูนทุกข้อสมมุติแบบจำลองของกระบวนการไว้ กระบวนการในโรงงานเกือบทั้งหมดอธิบายได้ดีพอด้วยสองรูปแบบ:

  • Self-regulating (FOPDT): “อันดับหนึ่งบวกเวลาหน่วง” G(s)=Ke−LsTs+1G(s)=\dfrac{Ke^{-Ls}}{Ts+1} ป้อนขั้นบันไดที่เอาต์พุตแล้วค่าวัดจะไปนิ่งที่ค่าใหม่ เช่น อุณหภูมิ การไหล ความดันในปริมาตรที่มีทางระบาย ความเร็ว
  • Integrating: G(s)=K′e−LssG(s)=\dfrac{K'e^{-Ls}}{s} ค่าวัดไต่เป็นทางลาดตราบใดที่อินพุตไม่เป็นศูนย์ เช่น ระดับน้ำในถังที่มีปั๊ม ตำแหน่งของมอเตอร์ที่ขับด้วยความเร็ว

ตัวเลขสามตัวของ FOPDT คือเกนกระบวนการ KK (ค่าวัดที่เปลี่ยนต่อเอาต์พุตที่เปลี่ยนหนึ่งหน่วย) เวลาหน่วง LL (dead time, delay หรือ θ\theta) และค่าคงเวลา TT (หรือ τ\tau) เวลาหน่วงคือศัตรู เพราะตัวควบคุมไม่มีทางตอบสนองก่อนที่ค่าวัดจะขยับ และทุกวินาทีที่หน่วงเพิ่มจะลดเกนที่ใช้ได้อย่างปลอดภัย อัตราส่วน L/TL/T สรุปว่าวงนี้ยากแค่ไหน

L/TL/Tลักษณะความหมายต่อการจูน
น้อยกว่า 0.1Lag-dominantใช้เกนสูงได้ ปริพันธ์ควรเร็ว เทอม D ช่วยได้ SIMC จำกัด TiT_i ที่ 4(τc+L)4(\tau_c+L)
0.1 ถึง 0.5สมดุลกรณีตามตำรา PI มักพอ PID ได้เพิ่มไม่มาก
0.5 ถึง 1เวลาหน่วงเริ่มสำคัญลดเกน เทอม D ช่วยได้น้อย วงช้าลง
มากกว่า 1Delay-dominantใช้เกนต่ำและปริพันธ์เป็นหลัก พิจารณาชดเชยเวลาหน่วง (Smith predictor) หรือ feedforward

พลานต์ตัวอย่างที่ใช้ตลอดบทความนี้คือ K=2K=2 (°C ต่อ % ของเอาต์พุตฮีตเตอร์) L=2L=2 วินาที T=10T=10 วินาที ได้ L/T=0.2L/T=0.2 ตัวเลขถูกย่อส่วนให้ตามง่าย วิธีทำเหมือนกันกับเตาที่วัดเป็นนาที

5. วัดกระบวนการด้วย step test

step test (หรือ bump test) คือครึ่งชั่วโมงที่คุ้มที่สุดที่ใช้กับวงควบคุม มันเปลี่ยนการเดาให้เป็นตัวเลขสามตัว

ขั้นตอน

  1. เตรียม ใส่วงเป็นโหมดแมนนวลและรอให้ค่าวัดนิ่ง ตรวจว่าวงอื่นและผู้ปฏิบัติงานไม่ได้เปลี่ยนกระบวนการอยู่
  2. ป้อนขั้นบันไดที่เอาต์พุต 5–10% ของช่วง ค่าวัดควรเปลี่ยนอย่างน้อย 5–10 เท่าของแถบสัญญาณรบกวน แต่ไม่ใหญ่จนออกนอกช่วงเชิงเส้นหรือเกินขีดจำกัดความปลอดภัย
  3. บันทึก ค่าวัดและเอาต์พุตที่เวลาสุ่มราวหนึ่งในยี่สิบของ TT ที่คาดไว้หรือเร็วกว่า จนค่าวัดนิ่งอีกครั้ง (ราว 4–5 TT หลังเวลาหน่วง)
  4. คืนค่าเอาต์พุต และถ้าทำได้ให้ทดสอบซ้ำในทิศตรงข้ามและที่จุดทำงานอื่น ถ้าผลต่างกันมากแปลว่ากระบวนการไม่เป็นเชิงเส้น

อ่าน K, L และ T

เกนกระบวนการคือ K=Δy/ΔuK=\Delta y/\Delta u ในหน่วยเดียวกับที่ตัวควบคุมใช้ ส่วน LL กับ TT มีวิธีอ่านมาตรฐานสองแบบ

051015202530354005101520t (s)yLT28.3%63.2%Δy = K·Δu
รูปที่ 2 step test จำลองของพลานต์ตัวอย่างที่ Δu=10%\Delta u=10\% เส้นสัมผัสที่จุดชันที่สุดตัดค่าเริ่มต้นที่ t=Lt=L และตัดค่าสุดท้ายที่ t=L+Tt=L+T วงกลมสองจุดคือ 28.3% และ 63.2% ของการเปลี่ยนแปลงทั้งหมด
  • วิธีเส้นสัมผัส (reaction curve): ลากเส้นสัมผัสที่จุดชันที่สุด LL คือจุดที่เส้นตัดค่าเริ่มต้น TT คือเวลาที่เส้นใช้ไต่จากจุดนั้นถึงค่าสุดท้าย ทำได้เร็วแต่ไวต่อวิธีลากเส้นโดยเฉพาะเมื่อมีสัญญาณรบกวน
  • วิธีสองจุด (28.3% และ 63.2%): สำหรับการตอบสนองอันดับหนึ่งที่มีเวลาหน่วง yy ถึง 28.3% ของการเปลี่ยนแปลงที่ t28=L+0.333Tt_{28}=L+0.333T และถึง 63.2% ที่ t63=L+Tt_{63}=L+T ลบกันได้ T=1.5 (t63−t28)T=1.5\,(t_{63}-t_{28}) และ L=t63−TL=t_{63}-T วิธีนี้ทำซ้ำได้ดีกว่าการลากเส้นสัมผัสด้วยมือ
ตัวอย่างที่ 1

อ่านค่าจาก step test ในรูปที่ 2

ป้อนขั้นบันไดที่เอาต์พุตฮีตเตอร์ Δu=10%\Delta u=10\% อุณหภูมิเพิ่มขึ้น Δy=20 ∘C\Delta y=20\,^\circ\text{C} ถึง 28.3% ของการเปลี่ยนแปลง (5.7 °C) ที่ t28=5.3t_{28}=5.3 วินาที และถึง 63.2% (12.6 °C) ที่ t63=12.0t_{63}=12.0 วินาที

  1. K=ΔyΔu=2010=2 ∘C/%K=\frac{\Delta y}{\Delta u}=\frac{20}{10}=2\ ^\circ\text{C}/\%
  2. T=1.5 (t63−t28)=1.5 (12.0−5.3)=10.05≈10 sT=1.5\,(t_{63}-t_{28})=1.5\,(12.0-5.3)=10.05\approx 10\ \text{s}
  3. L=t63−T=12.0−10.05=1.95≈2 sL=t_{63}-T=12.0-10.05=1.95\approx 2\ \text{s}

K=2K=2, L=2L=2 วินาที, T=10T=10 วินาที ได้ L/T=0.2L/T=0.2 การสร้างเส้นสัมผัสในรูปที่ 2 ให้ค่าเดียวกัน

กระบวนการแบบ integrating

ถ้าค่าวัดไต่เป็นทางลาดแทนที่จะนิ่ง (เช่นระดับน้ำในถัง) ให้ป้อนขั้นบันไดที่เอาต์พุตแล้ววัดความชันหลังเวลาหน่วง จะได้ K′=ความชัน/ΔuK'=\text{ความชัน}/\Delta u และ LL คือเวลาตั้งแต่ป้อนขั้นบันไดจนถึงจุดที่ทางลาดเริ่มคงที่ กฎจูนของกรณีนี้อยู่ในหัวข้อ 10

6. จูนด้วยมือ: ขั้นตอนที่ใช้ได้เสมอ

เมื่อทำ step test ที่สะอาดไม่ได้ หรือแค่ต้องปรับละเอียดวงที่ทำงานอยู่ ให้จูนแบบลองผิดลองถูก แต่ต้องทำตามลำดับ

  1. ตรวจวงก่อน เซนเซอร์อ่านค่าสมเหตุสมผลไหม วาล์วขยับถูกทิศไหม ตัวควบคุมเป็น direct หรือ reverse acting ตรงกับที่ต้องการไหม เอาต์พุตไม่ได้ติดขีดจำกัดอยู่ใช่ไหม
  2. ปิด I และ D ตั้งปริพันธ์เป็นปิด (TiT_i สูงสุด) และ Td=0T_d=0 เริ่มจากเกนต่ำ
  3. หาเกนสัดส่วน เปลี่ยนค่าเป้าหมายครั้งละ 5–10% เพิ่ม KpK_p ครั้งละประมาณ 1.5–2 เท่าจนการตอบสนองเริ่มสั่น แล้วถอยกลับประมาณครึ่งหนึ่ง ในทางปฏิบัติจะอยู่ใกล้ 0.5Ku0.5K_u
  4. เพิ่มปริพันธ์ เริ่มที่ Ti≈TT_i\approx T (หรือเวลาที่ค่าวัดไต่ถึง 63% ของการเปลี่ยนแปลง) แล้วลดลงทีละขั้นจนค่าผิดพลาดค้างหายในเวลาที่ยอมรับได้ หยุดทันทีที่เริ่มเกินเป้าแบบช้า ๆ เป็นลูกคลื่น
  5. เพิ่มอนุพันธ์เมื่อจำเป็น ลอง Td≈0.25T_d\approx 0.25–0.5 L0.5\,L โดยเปิดตัวกรองไว้ ค่อย ๆ เพิ่มจน overshoot ยอมรับได้และเอาต์พุตไม่กระตุก
  6. ทดสอบให้ครบ ทดสอบทั้งการเปลี่ยนค่าเป้าหมายและสิ่งรบกวน (โหลดเปลี่ยนหรือกระแทกเอาต์พุต) ที่จุดทำงานมากกว่าหนึ่งจุด และดูเอาต์พุตของตัวควบคุมควบคู่ไปกับค่าวัด
อาการที่เห็นสาเหตุที่น่าจะเป็นสิ่งที่ปรับ
สั่นถี่ คาบสั้น โตขึ้นหรือค้างKpK_p สูงเกิน (หรือ D สูงเมื่อมีสัญญาณรบกวน)ลด KpK_p 30–50%
แกว่งช้าเป็นลูกคลื่น คาบนานหลายเท่าของ TTปริพันธ์แรงเกินเพิ่ม TiT_i (หรือลด KiK_i)
ค่อย ๆ เข้าหาเป้าหมายช้ามากและหยุดก่อนถึงเกนต่ำเกิน ปริพันธ์น้อยเพิ่ม KpK_p ลด TiT_i
เกินเป้ามากหลังเปลี่ยนค่าเป้าหมายใหญ่ เอาต์พุตติดขีดจำกัดIntegral windupเปิด anti-windup (หัวข้อ 13)
เอาต์พุตกระโดดแรง แต่ค่าวัดดูปกติD ตอบสนองต่อสัญญาณรบกวนกรอง D ลด TdT_d หรือเลิกใช้ D
ค่าวัดเป็นฟันเลื่อย เอาต์พุตเป็นคลื่นสี่เหลี่ยมวาล์วติด (stiction) หรือคลอน (backlash)แก้ที่วาล์ว (ใส่ positioner) ไม่ใช่จูนใหม่

การจูนด้วยมือช้าสำหรับกระบวนการที่ค่าคงเวลายาว เพราะการลองแต่ละครั้งใช้เวลาเป็นนาทีหรือชั่วโมง ตรงนั้นคือจุดที่กฎจูนแบบใช้แบบจำลองคุ้มค่า

7. Ziegler–Nichols แบบวงปิด (เกนวิกฤต)

วิธีนี้เผยแพร่ในปี 1942 ไม่ต้องใช้แบบจำลอง ให้ตั้ง TiT_i สูงสุดและ Td=0T_d=0 แล้วเพิ่ม KpK_p จนวงแกว่งด้วยแอมพลิจูดคงที่ เกนตรงจุดนั้นคือเกนวิกฤต (ultimate gain) KuK_u และคาบการแกว่งคือคาบวิกฤต (ultimate period) PuP_u จากนั้นอ่านค่าจากตาราง

ตัวควบคุมKpK_pTiT_iTdT_d
P0.5Ku0.5K_u––
PI0.45Ku0.45K_uPu/1.2P_u/1.2–
PID0.6Ku0.6K_uPu/2P_u/2Pu/8P_u/8
PI, Tyreus–LuybenKu/3.2K_u/3.22.2Pu2.2P_u–
PID, Tyreus–LuybenKu/2.2K_u/2.22.2Pu2.2P_uPu/6.3P_u/6.3

กฎแบบคลาสสิกตั้งเป้าให้ลดทอนหนึ่งในสี่ต่อรอบ (quarter-amplitude decay) คือยอดแต่ละรอบเป็นหนึ่งในสี่ของยอดก่อนหน้า ซึ่งเร็วแต่แกว่งมาก ส่วนกฎ Tyreus–Luyben (1992) ใช้ KuK_u และ PuP_u เท่าเดิมแต่นุ่มนวลกว่ามาก และเหมาะเป็นค่าเริ่มต้นสำหรับกระบวนการเคมี

ตัวอย่างที่ 2

ZN วงปิดกับพลานต์ตัวอย่าง

สำหรับ G(s)=2e−2s/(10s+1)G(s)=2e^{-2s}/(10s+1) เฟสถึง −180∘-180^\circ ที่ ωu=0.844\omega_u=0.844 rad/s ซึ่ง ∣G∣=0.2352|G|=0.2352 จึงได้ Ku=1/0.2352=4.25K_u=1/0.2352=4.25 และ Pu=2π/ωu=7.44P_u=2\pi/\omega_u=7.44 วินาที (กับพลานต์จริงคุณจะหาค่าเหล่านี้ด้วยการทดลองเหมือนรูปที่ 1)

  1. Kp=0.6Ku=0.6×4.25=2.55K_p=0.6K_u=0.6\times4.25=2.55
  2. Ti=Pu2=3.72 s,Td=Pu8=0.93 sT_i=\frac{P_u}{2}=3.72\ \text{s},\qquad T_d=\frac{P_u}{8}=0.93\ \text{s}
  3. Ki=KpTi=0.686 s−1,Kd=KpTd=2.37K_i=\frac{K_p}{T_i}=0.686\ \text{s}^{-1},\qquad K_d=K_pT_d=2.37

PID: Kp=2.55K_p=2.55, Ti=3.72T_i=3.72 วินาที, Td=0.93T_d=0.93 วินาที หัวข้อ 12 จะแสดงว่าค่านี้ให้การตอบสนองจริงอย่างไร: overshoot 56%

ความปลอดภัยและข้อจำกัด การทดลองนี้ดันกระบวนการไปที่ขอบเสถียรภาพ ห้ามทำกับหม้อไอน้ำ เครื่องปฏิกรณ์ หรืออะไรก็ตามที่รับการแกว่งต่อเนื่องไม่ได้ และต้องมีเฟสล้าหลังมากพอ กระบวนการอันดับหนึ่งล้วนที่ไม่มีเวลาหน่วงไม่มีวันถึง −180∘-180^\circ จึงไม่มี KuK_u ในกระบวนการที่ช้าการทดลองอาจกินเวลาหลายชั่วโมง วิธี relay ในหัวข้อ 11 ปลอดภัยกว่าสำหรับการหา KuK_u และ PuP_u

8. Ziegler–Nichols แบบวงเปิด (reaction curve)

วิธี ZN แบบที่สองใช้ step test ของหัวข้อ 5 แทนการทดลองที่ขอบเสถียรภาพ จึงปลอดภัยกว่า เมื่อได้ KK, LL และ TT จากกราฟแล้ว:

ตัวควบคุมKpK_pTiT_iTdT_d
PTKL\dfrac{T}{KL}––
PI0.9 TKL\dfrac{0.9\,T}{KL}3.33 L3.33\,L–
PID1.2 TKL\dfrac{1.2\,T}{KL}2L2L0.5L0.5L
ตัวอย่างที่ 3

ZN วงเปิดแบบ PID เมื่อ K=2, L=2 s, T=10 sK=2,\ L=2\ \text{s},\ T=10\ \text{s}

  1. Kp=1.2 TKL=1.2×102×2=3.0K_p=\frac{1.2\,T}{KL}=\frac{1.2\times10}{2\times2}=3.0
  2. Ti=2L=4 s,Td=0.5L=1 sT_i=2L=4\ \text{s},\qquad T_d=0.5L=1\ \text{s}

Kp=3.0K_p=3.0, Ti=4T_i=4 วินาที, Td=1T_d=1 วินาที สังเกตสูตร: เกนแปรผกผันกับ KLKL เวลาหน่วงหรือเกนกระบวนการที่มากขึ้นจึงลดเกนของตัวควบคุม ซึ่งถูกต้องตามหลักการ

กฎนี้มุ่งให้ลดทอนหนึ่งในสี่ต่อรอบกับกระบวนการที่เวลาหน่วงปานกลาง และจะแย่เมื่อเวลาหน่วงน้อยมากเมื่อเทียบกับ TT (เกน T/(KL)T/(KL) โตไม่จำกัด) หรือมากเกินไป (วงจะดุดันเกิน)

9. Cohen–Coon

Cohen และ Coon (1953) ปรับกฎแบบ step test โดยเพิ่มเทอมที่ขึ้นกับอัตราส่วน τ=L/T\tau=L/T ทำให้รับมือเวลาหน่วงที่มากขึ้นได้ดีกว่าตาราง ZN วงเปิด แต่ยังตั้งเป้าลดทอนหนึ่งในสี่ต่อรอบ กำหนด τ=L/T\tau=L/T:

ตัวควบคุมKpK_pTiT_iTdT_d
PI1KTL(0.9+τ12)\dfrac{1}{K}\dfrac{T}{L}\left(0.9+\dfrac{\tau}{12}\right)L 30+3τ9+20τL\,\dfrac{30+3\tau}{9+20\tau}–
PID1KTL(43+τ4)\dfrac{1}{K}\dfrac{T}{L}\left(\dfrac43+\dfrac{\tau}{4}\right)L 32+6τ13+8τL\,\dfrac{32+6\tau}{13+8\tau}4L11+2τ\dfrac{4L}{11+2\tau}
ตัวอย่างที่ 4

Cohen–Coon แบบ PID กับพลานต์เดิม

ที่นี่ τ=L/T=0.2\tau=L/T=0.2 และ T/(KL)=2.5T/(KL)=2.5

  1. Kp=2.5(43+0.24)=2.5×1.3833=3.46K_p=2.5\left(\tfrac43+\tfrac{0.2}{4}\right)=2.5\times1.3833=3.46
  2. Ti=2 32+1.213+1.6=4.55 s,Td=811+0.4=0.70 sT_i=2\,\frac{32+1.2}{13+1.6}=4.55\ \text{s},\qquad T_d=\frac{8}{11+0.4}=0.70\ \text{s}

Kp=3.46K_p=3.46, Ti=4.55T_i=4.55 วินาที, Td=0.70T_d=0.70 วินาที เป็นกฎที่ดุดันที่สุดในบทความนี้ (overshoot 85% ในหัวข้อ 12) จึงควรถือเป็นจุดเริ่มต้นที่ต้องลดเกนต่อ

10. IMC, Lambda และ SIMC: จูนด้วยการเลือกความเร็ว

กฎก่อนหน้านี้ถูกปรับให้เข้ากับเกณฑ์สมรรถนะ แนวคิด internal model control (IMC) กลับด้าน: เลือกก่อนว่าต้องการให้วงปิดเร็วแค่ไหน แล้วคำนวณตัวควบคุมที่ให้ผลนั้นพอดี ขอการตอบสนอง yr=e−Lsτcs+1\dfrac{y}{r}=\dfrac{e^{-Ls}}{\tau_cs+1} คืออันดับหนึ่งที่มีเวลาหน่วงซึ่งเลี่ยงไม่ได้ เมื่อประมาณเวลาหน่วงเป็น e−Ls≈1−Lse^{-Ls}\approx1-Ls ตัวควบคุมสำหรับกระบวนการ FOPDT จะออกมาเป็นตัวควบคุม PI:

Kp=TK(τc+L),Ti=T(IMC / lambda โดย λ=τc)K_p=\frac{T}{K(\tau_c+L)},\qquad T_i=T \qquad\text{(IMC / lambda โดย }\lambda=\tau_c\text{)}

กฎ SIMC ของ Skogestad (2003) แก้เพียงตัวเลขเดียว สำหรับกระบวนการ lag-dominant การใช้ Ti=TT_i=T ทำให้วงฟื้นจากโหลดรบกวนช้า SIMC จึงจำกัดไว้ว่า

Ti=min⁡(T, 4(τc+L))T_i=\min\big(T,\ 4(\tau_c+L)\big)

ปุ่มปรับตัวเดียวคือ τc\tau_c ซึ่งเป็นค่าคงเวลาวงปิดที่ต้องการ ข้อแนะนำในทางปฏิบัติคือ τc=L\tau_c=L เร็วเท่าที่เวลาหน่วงยอมให้ ค่าที่มากกว่านั้นให้วงที่นุ่มและทนทานกว่า ส่วนค่าที่น้อยกว่า LL ได้ความเร็วเพิ่มนิดเดียวแต่เสียความทนทานมาก

ตัวอย่างที่ 5

SIMC แบบ PI เมื่อ K=2, L=2 s, T=10 sK=2,\ L=2\ \text{s},\ T=10\ \text{s}

  1. เมื่อ τc=L=2\tau_c=L=2 วินาที: Kp=102 (2+2)=1.25,Ti=min⁡(10, 4×4)=10 sK_p=\frac{10}{2\,(2+2)}=1.25,\qquad T_i=\min(10,\ 4\times4)=10\ \text{s}
  2. เมื่อ τc=2L=4\tau_c=2L=4 วินาที (นุ่มกว่า): Kp=102 (4+2)=0.833,Ti=min⁡(10, 24)=10 sK_p=\frac{10}{2\,(4+2)}=0.833,\qquad T_i=\min(10,\ 24)=10\ \text{s}

Kp=1.25K_p=1.25, Ti=10T_i=10 วินาที สำหรับการตั้งแบบเร็ว และ Kp=0.83K_p=0.83, Ti=10T_i=10 วินาที สำหรับแบบนุ่ม คำนวณแบบแม่นยำ แบบแรกมี gain margin 3.14 และ phase margin 61°

กระบวนการรูปแบบอื่น

  • กระบวนการ integrating K′e−Ls/sK'e^{-Ls}/s (ระดับน้ำในถัง): Kp=1K′(τc+L)K_p=\dfrac{1}{K'(\tau_c+L)}, Ti=4(τc+L)T_i=4(\tau_c+L)
  • อันดับสองบวกเวลาหน่วง Ke−Ls(T1s+1)(T2s+1)\dfrac{Ke^{-Ls}}{(T_1s+1)(T_2s+1)}: ใช้รูป series Kc=T1K(τc+L)K_c=\dfrac{T_1}{K(\tau_c+L)}, Ti=min⁡(T1,4(τc+L))T_i=\min\big(T_1,4(\tau_c+L)\big), Td=T2T_d=T_2 (แปลงเป็นรูป ideal ด้วยสูตรในหัวข้อ 2)
  • Lambda tuning คือกฎ PI ตัวเดียวกันโดยใช้ Ti=TT_i=T เสมอ เป็นที่นิยมในอุตสาหกรรมกระดาษและเคมี เพราะ λ\lambda ที่มากให้วงนุ่มและไม่รบกวนกันเอง

เพราะการตอบสนองถูกกำหนดไว้ล่วงหน้าแทนที่จะเป็นสิ่งที่ค้นพบทีหลัง SIMC และ lambda จึงเข้ากับขั้นตอนทำงานได้ดี: มีแบบจำลอง เลือกความเร็ว ได้ตัวควบคุม ซึ่งเป็นเหตุผลที่เหมาะเป็นค่าเริ่มต้น

11. Relay auto-tune

การทดลองรีเลย์ของ Åström และ Hägglund (1984) หา KuK_u และ PuP_u โดยไม่ต้องพาวงไปที่ขอบเสถียรภาพ ให้แทนตัวควบคุมด้วยรีเลย์ที่สลับเอาต์พุตระหว่าง u0+du_0+d กับ u0−du_0-d กระบวนการส่วนใหญ่จะแกว่งคงที่โดยแอมพลิจูดถูกจำกัดด้วย dd ถ้าค่าวัดแกว่งด้วยแอมพลิจูด aa การประมาณด้วย describing function ให้

Ku≈4dπa,Pu=คาบของการแกว่งที่วัดได้K_u\approx\frac{4d}{\pi a},\qquad P_u=\text{คาบของการแกว่งที่วัดได้}

จากนั้นนำไปใช้กับตาราง Ziegler–Nichols หรือ Tyreus–Luyben ในหัวข้อ 7 ปุ่ม “auto-tune” ในเชิงพาณิชย์ส่วนใหญ่ทำงานแบบนี้

ตัวอย่างที่ 6

ออโต้จูนเตาอบ

รีเลย์ d=5%d=5\% ทำให้อุณหภูมิเตาอบแกว่งด้วยแอมพลิจูด a=1.2 ∘Ca=1.2\,^\circ\text{C} คาบ Pu=7.5P_u=7.5 วินาที

  1. Ku=4dπa=4×5π×1.2=5.31 %/∘CK_u=\frac{4d}{\pi a}=\frac{4\times5}{\pi\times1.2}=5.31\ \%/^\circ\text{C}
  2. Tyreus–Luyben แบบ PI: Kp=Ku3.2=1.66,Ti=2.2Pu=16.5 sK_p=\frac{K_u}{3.2}=1.66,\qquad T_i=2.2P_u=16.5\ \text{s}

PI: Kp=1.66 %/∘CK_p=1.66\ \%/^\circ\text{C}, Ti=16.5T_i=16.5 วินาที

ข้อควรระวัง: ใส่ hysteresis ที่รีเลย์เล็กน้อยเพื่อไม่ให้สัญญาณรบกวนทำให้สลับผิด เลือก dd ให้เล็กพอที่การแกว่งไม่เป็นอันตรายแต่ใหญ่พอที่พ้นสัญญาณรบกวน และจำไว้ว่าการประมาณสมมุติว่ากระบวนการกรองฮาร์มอนิกของคลื่นสี่เหลี่ยมออกได้ ซึ่งจริงสำหรับกระบวนการแบบ lag ส่วนใหญ่

12. เทียบกันตรง ๆ: พลานต์เดียว หลายกฎ

แต่ละกฎถูกนำไปใช้กับพลานต์ 2e−2s/(10s+1)2e^{-2s}/(10s+1) แล้วจำลอง: ค่าเป้าหมายขั้นบันไดหนึ่งหน่วยที่ t=0t=0 จากนั้นโหลดขั้นบันได −0.5-0.5 ที่อินพุตของกระบวนการที่ t=70t=70 วินาที เทอม D ทำงานกับค่าวัดผ่านตัวกรอง Td/10T_d/10 “เวลาเข้าที่” คือเวลาหลังจากนั้นการตอบสนองอยู่ในช่วง 2% ตลอด IAE คือปริพันธ์ของค่าผิดพลาดสัมบูรณ์ (ยิ่งน้อยยิ่งดี) วัดแยกสำหรับขั้นของค่าเป้าหมายและขั้นของโหลด

กฎKpK_pTiT_i (s)TdT_d (s)Overshootเวลาเข้าที่ (s)IAE ค่าเป้าหมายIAE โหลดGain marginPhase margin
ZN วงปิด PID2.553.720.9356%19.15.500.901.6340°
ZN วงปิด PI1.916.20–44%20.85.401.621.9236°
ZN วงเปิด PID3.004.001.0064%19.65.330.791.3339°
Cohen–Coon PID3.464.550.7085%24.26.080.791.3127°
Tyreus–Luyben PI1.3316.4–0%40.26.086.053.0669°
Tyreus–Luyben PID1.9316.41.180%13.74.224.161.7675°
SIMC PI, τc=L\tau_c=L1.2510.0–4%12.14.343.993.1461°
SIMC PI, τc=2L\tau_c=2L0.8310.0–0%15.75.995.994.7171°
02040608010012014000.51.01.52.0t (s)y/rloadZN PIDCohen–Coon PIDSIMC τc = LSIMC τc = 2L
รูปที่ 3 การตอบสนองวงปิดของกฎสี่ข้อบนพลานต์เดียวกัน ค่าเป้าหมายเปลี่ยนที่ t=0t=0 โหลดรบกวนที่ t=70t=70 วินาที เส้นสีส้มและม่วง (ZN และ Cohen–Coon) เร็วแต่เกินเป้ามาก ส่วนเส้นสีน้ำเงินและเขียว (SIMC) นุ่มนวล

ตัวเลขบอกอะไร

  • กฎ PID ของ ZN และ Cohen–Coon ต้านโหลดได้ดีกว่าสี่ถึงห้าเท่า (IAE 0.8–0.9 เทียบกับ 4.0 ของ SIMC) แต่เกินเป้า 56–85% และ gain margin เพียง 1.3–1.6 หากเกนกระบวนการเพิ่มขึ้น 30–60% ก็เข้าใกล้ความไม่เสถียร
  • ความต่างของการต้านโหลดอธิบายได้ด้วยตัวเลขเดียวคือ Ki=Kp/TiK_i=K_p/T_i สำหรับการตอบสนองที่เกินเป้าน้อย พื้นที่ใต้ค่าผิดพลาดหลังโหลดขั้นบันไดขนาด Δd\Delta d มีค่า IAE≈Δd/Ki\text{IAE}\approx\Delta d/K_i กับ SIMC: Ki=1.25/10=0.125K_i=1.25/10=0.125 ได้ 0.5/0.125=4.00.5/0.125=4.0 ตรงกับผลจำลอง 3.99 กับ ZN PID Ki=0.686K_i=0.686 ทำนายได้ 0.73 (ผลจำลอง 0.90 สูงกว่าเพราะการตอบสนองนั้นแกว่ง)
  • SIMC ที่ τc=L\tau_c=L เป็นตัวเลือกที่สมดุลที่สุดในตารางนี้: เวลาเข้าที่เร็วที่สุดของทุกแถว (12.1 วินาที) พื้นที่ความผิดพลาดของค่าเป้าหมาย (4.34) ใกล้ค่าที่ดีที่สุด (4.22 ของ Tyreus–Luyben PID) เกินเป้าเพียง 4% และ gain margin เกิน 3 ราคาที่ต้องจ่ายคือฟื้นจากโหลดช้ากว่า ซึ่งซื้อคืนได้ด้วยการลด TiT_i ถ้า margin ยอมให้
  • Tyreus–Luyben PI ช้ามาก บนพลานต์นี้ เพราะ Ti=16.4T_i=16.4 วินาทีมากกว่าค่าคงเวลาของกระบวนการ การเพิ่ม D (แถว PID) ช่วยให้ตามค่าเป้าหมายได้ดีขึ้นแต่ทำให้ gain margin ลดเหลือ 1.76
สถานการณ์ตัวเลือกที่สมเหตุสมผล
มี step test และต้องการวงที่นุ่มและปลอดภัยSIMC ที่ τc=L\tau_c=L (หรือ 2L2L ถ้ากระบวนการเปลี่ยนแปลงมาก)
ทดลองได้เฉพาะวงปิดทดสอบ relay แล้วใช้ Tyreus–Luyben (หรือ ZN ที่ลดเกนแล้ว)
โหลดรบกวนเป็นตัวหลักและยอมรับ overshoot ได้บ้างZN วงเปิด แล้วลด KpK_p 20–30%
ระดับน้ำในถังพัก (buffer tank)SIMC สำหรับ integrating ที่ τc\tau_c มาก หรือ P อย่างเดียว/PI เกนต่ำ
เวลาหน่วงยาวมาก (L/T>1L/T>1)PI เกนต่ำ แล้วพิจารณา Smith predictor หรือ feedforward
กระบวนการไม่เป็นเชิงเส้นหรือเปลี่ยนตามเวลาจูนที่จุดทำงานที่ยากที่สุด และใช้ gain scheduling กับจุดอื่น

ผลนี้เป็นของพลานต์ตัวเดียว ค่า L/TL/T ที่ต่างกันจะเปลี่ยนภาพ จึงควรตรวจค่าจูนใหม่ด้วยการจำลองหรือการทดสอบหน้างานอย่างระมัดระวังเสมอ

13. วิธีแก้ปัญหาที่วงควบคุมจริงต้องมี

กรองเทอมอนุพันธ์ และไม่ให้ D ตามค่าเป้าหมาย

อนุพันธ์บริสุทธิ์มีเกนไม่จำกัดที่ความถี่สูง จึงใช้ตัวกรองอันดับหนึ่ง:

D(s)=KpTds1+TdNs,N≈5 ถึง 20D(s)=\frac{K_pT_ds}{1+\dfrac{T_d}{N}s},\qquad N\approx 5\text{ ถึง }20

ทำให้เกนความถี่สูงถูกจำกัดที่ KpNK_pN และให้ใช้อนุพันธ์กับ ค่าวัด yy ไม่ใช่ค่าผิดพลาด ee เมื่อค่าเป้าหมายเปลี่ยนขั้นบันไดเอาต์พุตจะไม่กระโดดแรงจาก “derivative kick” ตัวควบคุมเชิงพาณิชย์ส่วนใหญ่ทำแบบนี้เป็นค่าเริ่มต้น ควรตรวจตัวที่คุณใช้ ถ้าสัญญาณมีสัญญาณรบกวน การใส่ตัวกรองความถี่ต่ำอันดับหนึ่งที่ค่าวัดแก้ได้ดีกว่าการลด NN

Setpoint weighting (สององศาอิสระ)

KpK_p ตัวเดียวกันที่ต้านโหลดได้ดีทำให้การตอบสนองต่อค่าเป้าหมายเกินเป้า ถ้าถ่วงน้ำหนักเทอมสัดส่วนของค่าเป้าหมาย u=Kp(b r−y)+…u=K_p(b\,r-y)+\dots เมื่อ 0<b<10<b<1 จะลด overshoot ต่อขั้นของค่าเป้าหมายโดยไม่กระทบการต้านโหลด ตัวควบคุมหลายรุ่นเรียกพารามิเตอร์นี้ว่า “setpoint weight” หรือ “beta”

Integral windup และ anti-windup

ถ้าตัวขับอิ่มตัว (วาล์วเปิดสุด ฮีตเตอร์ 100%) ขณะที่ยังมีค่าผิดพลาด ปริพันธ์จะโตต่อไป เมื่อค่าผิดพลาดกลับเครื่องหมาย ปริพันธ์ต้องใช้เวลานานกว่าจะคลายและค่าวัดเกินเป้า มีวิธีแก้ที่พบบ่อยสองแบบ:

  • Clamping (หยุดสะสมตามเงื่อนไข): หยุดอินทิเกรตเมื่อเอาต์พุตอิ่มตัวและค่าผิดพลาดจะดันให้อิ่มตัวหนักขึ้น
  • Back-calculation: ป้อนผลต่างจากการอิ่มตัวกลับเข้าตัวอินทิเกรต I˙=Kie+usat−uTt\dot I=K_ie+\dfrac{u_{sat}-u}{T_t} ค่าที่นิยมคือ Tt≈TiT_t\approx T_i สำหรับ PI และ Tt=TiTdT_t=\sqrt{T_iT_d} สำหรับ PID
0102030405060708000.51.01.52.0t (s)yno anti-windupback-calculation0102030405060708000.20.40.60.81.01.21.4t (s)uu_max
รูปที่ 4 ตัวควบคุม PI แบบ SIMC ตัวเดิม (Kp=1.25K_p=1.25, Ti=10T_i=10 วินาที) เมื่อตัวขับถูกจำกัดที่ 0≤u≤10\le u\le1 และค่าเป้าหมายกระโดดเป็น 1.6 ถ้าไม่มี anti-windup ค่าวัดเกินเป้า 19% และใช้เวลา 57 วินาทีกว่าจะเข้าที่ แต่เมื่อมี back-calculation (Tt=TiT_t=T_i) เกินเป้า 0.5% และเข้าที่ใน 17.5 วินาที

Bumpless transfer

เมื่อสลับจากแมนนวลเป็นออโต้ (หรือเปลี่ยนแหล่งค่าเป้าหมาย) ให้กำหนดค่าเริ่มต้นของตัวอินทิเกรตเพื่อให้เอาต์พุตเริ่มจากค่าปัจจุบัน ไม่เช่นนั้นเอาต์พุตจะกระโดดและกระตุ้นกระบวนการ

เวลาสุ่มตัวอย่าง

ตัวควบคุมดิจิทัลสุ่มค่าวัดทุก TsT_s หลักคร่าว ๆ คือให้ TsT_s ไม่เกินหนึ่งในสิบของค่าคงเวลา TT และไม่เกินราวครึ่งหนึ่งของเวลาหน่วงเมื่อ LL มีค่าน้อย zero-order hold ยังเพิ่มเวลาหน่วงอีกราว Ts/2T_s/2 จึงควรจูนด้วย Leff=L+Ts/2L_{eff}=L+T_s/2 บทเรียนเรื่องการควบคุมดิจิทัลอธิบายละเอียดกว่านี้

เมื่อฮาร์ดแวร์คือปัญหา

  • Stiction และ backlash: วาล์วที่ติดจะค้างแล้วกระโดด ผลคือ limit cycle (ค่าวัดเป็นฟันเลื่อย เอาต์พุตเป็นคลื่นสี่เหลี่ยม) ที่แย่ลงเมื่อเพิ่มปริพันธ์ ให้ซ่อมวาล์วหรือเพิ่ม positioner อย่าจูนหนีปัญหา
  • Dead band และความละเอียด: เอาต์พุตที่หยาบ (ขั้นละหลายเปอร์เซ็นต์) หรืออินพุตความละเอียดต่ำทำให้วงเดินส่ายไปมา ลดปริพันธ์หรือใส่ dead band ในตัวควบคุม
  • ความไม่เป็นเชิงเส้น: ลักษณะของวาล์ว เส้นโค้ง pH และเกนของเตาเปลี่ยนตามจุดทำงาน ให้จูนที่จุดที่ยากที่สุด หรือปรับเกนตามจุดทำงาน (gain scheduling)
  • ช่วงของคุณเองอิ่มตัว: ถ้าเอาต์พุตอิ่มตัวเกือบตลอดเวลา การจูนช่วยอะไรไม่ได้ วงนี้เลือกขนาดผิด

14. วงควบคุมชนิดทั่วไป และจะเริ่มจากตรงไหน

ใช้เป็นจุดเริ่มต้นเชิงคุณภาพ แล้วปรับละเอียดด้วย step test เพราะพลานต์แต่ละตัวต่างกันมาก

วงควบคุมลักษณะทั่วไปตัวควบคุมที่มักใช้หมายเหตุ
อัตราการไหลเร็ว เวลาหน่วงน้อย สัญญาณมีสัญญาณรบกวนPI เกนต่ำ ไม่ใช้ Dกรองค่าวัด และวาล์วมักเป็นส่วนที่ช้าที่สุด
ความดัน (ก๊าซ)เร็ว มักเกือบเป็น integratingPI บางครั้ง PIDวงเร็วต้องสุ่มตัวอย่างเร็ว
ระดับ (ถังพัก)IntegratingP หรือ PI เกนต่ำการควบคุมระดับแบบ averaging ส่งต่อการเปลี่ยนของอัตราไหลไปหน่วยถัดไปอย่างนุ่มนวล อย่าจูนแน่น
อุณหภูมิช้า เวลาหน่วงมีนัยสำคัญPI หรือ PIDTT มากคุ้มกับ D, LL มากต้องใจเย็น
ความเร็ว (มอเตอร์)Lag-dominant และเร็วPIมักอยู่ในวงกระแส ให้จูนวงในก่อน
ตำแหน่งIntegratingP, PD หรือ PIDแรงเสียดทานอาจต้องการปริพันธ์เล็กน้อยกับ anti-windup
pH, องค์ประกอบไม่เป็นเชิงเส้นมาก เวลาหน่วงนานPI ร่วมกับ gain schedulingจูนที่จุดที่ความชันสูงสุด แล้วปรับเกนตามจุดทำงาน

สำหรับวงแบบ cascade (อุณหภูมิเป็นวงนอก การไหลหรือตำแหน่งวาล์วเป็นวงใน) ให้จูน วงใน ก่อนเสมอ และทำให้เร็วกว่าวงนอกหลายเท่า

15. ตัดสินค่าจูนอย่างไร

ตัดสินวงควบคุมด้วยตัวเลข ไม่ใช่จากความรู้สึกเวลาดูเทรนด์

  • ในโดเมนเวลา: overshoot, เวลาเข้าที่ (±2% หรือ ±5%), ค่าเบี่ยงสูงสุดหลังโหลดขั้นบันได และเวลาฟื้นตัว
  • ปริพันธ์ของค่าผิดพลาด: IAE =∫∣e∣ dt=\int|e|\,dt, ISE =∫e2dt=\int e^2dt, ITAE =∫t∣e∣ dt=\int t|e|\,dt เทียบค่าจูนบนการทดสอบเดียวกัน ยิ่งน้อยยิ่งดี IAE ของโหลดขั้นบันไดมีค่าประมาณ Δd/Ki\Delta d/K_i
  • ความทนทาน: gain margin อย่างน้อย 2 (6 dB) phase margin 45–60° และ peak sensitivity MsM_s 1.4–2 ในตารางเปรียบเทียบข้างต้น มีเพียงสองแถวของ SIMC และ Tyreus–Luyben PI ที่ gain margin เกิน 2 และ phase margin เกิน 45° ทั้งคู่
  • แรงที่ใช้ควบคุม: ดูส่วนเบี่ยงเบนมาตรฐานหรือ total variation ของเอาต์พุต สัญญาณรบกวนที่ D ขยายจะเห็นที่นี่ก่อน
เช็กความทนทานเร็วหน้างาน เพิ่ม KpK_p อีก 50% แล้วเปลี่ยนค่าเป้าหมายหนึ่งขั้น ถ้าวงยังนิ่งและหน่วงดีพอสมควรแสดงว่ามี margin จริง ถ้าสั่นแรงให้ลดเกนกลับ (กับพลานต์ตัวอย่าง ZN PID มี gain margin เพียง 1.63 การเพิ่มเกน 50% จึงพาไปอยู่ที่ขอบความไม่เสถียร)

16. คู่มือแก้ปัญหา

อาการสิ่งที่ต้องตรวจการแก้
วงวิ่งหนีทันทีหลังสลับเป็นออโต้Direct/reverse acting, สเกลของเซนเซอร์, แหล่งค่าเป้าหมายแก้ทิศและสเกล ตั้งค่าเริ่มต้นให้ bumpless
แกว่งคงที่ คาบใกล้ PuP_uKpK_p ใกล้ KuK_u หรือไม่ลด KpK_p ครึ่งหนึ่ง แล้วยืนยันด้วยการเพิ่มเกน 50%
แกว่งช้า คาบหลายเท่าของ TTTiT_i สั้นเกินสำหรับเวลาหน่วงเพิ่ม TiT_i เป็นสองเท่า (หรือลด KpK_p และ TiT_i ไปพร้อมกัน)
ไม่ถึงค่าเป้าหมาย หยุดก่อนถึงไม่มีปริพันธ์ หรือเอาต์พุตถูกหนีบเปิด I ตรวจขีดจำกัดเอาต์พุตและโหมด
ถึงค่าเป้าหมายแต่คืบคลานช่วงไม่กี่เปอร์เซ็นต์สุดท้ายTiT_i ยาวเกินมากลด TiT_i เข้าใกล้ TT
เกินเป้าเฉพาะเมื่อเปลี่ยนค่าเป้าหมายมาก ๆWindupใช้ anti-windup และจำกัดอัตราการเปลี่ยนค่าเป้าหมาย
เอาต์พุตมีสัญญาณรบกวน วาล์วสั่นD ตามสัญญาณรบกวน ค่าวัดไม่ได้กรองกรองค่าวัดและ D ลด KpNK_pN
ดีที่โหลดหนึ่ง แย่ที่อีกโหลดกระบวนการไม่เป็นเชิงเส้นจูนที่จุดที่ยากที่สุด หรือปรับเกนตามจุดทำงาน
Limit cycle ที่แย่ลงเมื่อเพิ่ม Iวาล์ว stictionซ่อมหรือติด positioner

17. ขั้นตอนจูนที่ทำซ้ำได้

  1. เขียนข้อกำหนด: ตามค่าเป้าหมายหรือต้านสิ่งรบกวน overshoot ที่ยอมรับได้ การขยับของตัวขับที่ยอมรับได้
  2. ตรวจฮาร์ดแวร์และสมการ: เซนเซอร์ วาล์ว direct/reverse รูปแบบของบล็อก PID หน่วยเวลา
  3. ทำ step test (หัวข้อ 5) อ่าน KK, LL, TT และคำนวณ L/TL/T
  4. เลือกกฎ: SIMC τc=L\tau_c=L เป็นค่าเริ่มต้น ใช้ relay test ถ้าเปิดวงไม่ได้ และใช้ Ziegler–Nichols เป็นค่าเดาครั้งแรกเท่านั้น
  5. แปลงเป็นรูปแบบและหน่วยของตัวควบคุม (หัวข้อ 2)
  6. ใส่ส่วนที่ใช้งานจริงต้องมี: ตัวกรอง D, anti-windup, ขีดจำกัดเอาต์พุต, เวลาสุ่มตัวอย่าง
  7. ทดสอบ ค่าเป้าหมายขั้นบันได สิ่งรบกวน และเพิ่มเกน 50% ที่จุดทำงานที่เกี่ยวข้อง
  8. ปรับละเอียดและบันทึก ค่าสุดท้าย วันที่ และผลทดสอบ เพื่อให้วิศวกรคนถัดไปไม่ต้องเริ่มจากศูนย์

18. โจทย์ฝึกทำ

ลองทำบนกระดาษก่อน แล้วค่อยเปิดเฉลย

โจทย์ที่ 1

แปลงรูปแบบ

ตัวควบคุมแบบ series มี Kc′=2K_c'=2, Ti′=10T_i'=10 วินาที, Td′=2T_d'=2 วินาที จงหาค่าในรูป ideal

ดูเฉลย Kc=2(1+210)=2.4,Ti=10+2=12 s,Td=10×212=1.67 sK_c=2\left(1+\frac{2}{10}\right)=2.4,\qquad T_i=10+2=12\ \text{s},\qquad T_d=\frac{10\times2}{12}=1.67\ \text{s}
โจทย์ที่ 2

Ziegler–Nichols จากการทดลอง

การทดลองวงปิดได้ Ku=6K_u=6 และ Pu=4P_u=4 วินาที จงหาค่า ZN แบบ PID และเกน KiK_i, KdK_d ในรูป parallel

ดูเฉลย Kp=0.6×6=3.6,Ti=42=2 s,Td=48=0.5 s,Ki=3.62=1.8 s−1,Kd=3.6×0.5=1.8 sK_p=0.6\times6=3.6,\quad T_i=\frac{4}{2}=2\ \text{s},\quad T_d=\frac{4}{8}=0.5\ \text{s},\quad K_i=\frac{3.6}{2}=1.8\ \text{s}^{-1},\quad K_d=3.6\times0.5=1.8\ \text{s}
โจทย์ที่ 3

SIMC กับกระบวนการที่เวลาหน่วงมาก

step test ได้ K=0.5K=0.5, L=3L=3 วินาที, T=12T=12 วินาที จงหาค่า SIMC แบบ PI เมื่อ τc=L\tau_c=L และหา L/TL/T

ดูเฉลย Kp=120.5 (3+3)=4,Ti=min⁡(12, 4×6)=12 s,LT=0.25K_p=\frac{12}{0.5\,(3+3)}=4,\qquad T_i=\min(12,\ 4\times6)=12\ \text{s},\qquad \frac{L}{T}=0.25
โจทย์ที่ 4

ประมาณการต้านสิ่งรบกวน

วง PI มี Kp=2K_p=2 และ Ti=8T_i=8 วินาที เกินเป้าน้อย เกิดโหลดรบกวน 0.4 (ในหน่วยของเอาต์พุตตัวควบคุม) จงประมาณ IAE และดูว่าเปลี่ยนไปอย่างไรถ้าลด TiT_i ลงครึ่งหนึ่ง

ดูเฉลย Ki=28=0.25,IAE≈0.40.25=1.6;Ti=4⇒Ki=0.5, IAE≈0.8K_i=\frac{2}{8}=0.25,\qquad \text{IAE}\approx\frac{0.4}{0.25}=1.6;\qquad T_i=4\Rightarrow K_i=0.5,\ \text{IAE}\approx0.8 ลด TiT_i ลงครึ่งหนึ่งทำให้พื้นที่ความผิดพลาดลดลงครึ่งหนึ่ง แต่ margin ก็ลดลงด้วย จึงต้องตรวจการตอบสนองอีกครั้ง

เรียนต่อในคลังความรู้

บทเรียนเต็มและแล็บโต้ตอบที่รันในเบราว์เซอร์อยู่ในคลังความรู้ ใช้สูตรและรหัสอ้างอิงชุดเดียวกับบทความนี้

คำถามที่พบบ่อย

วิธีจูน PID ที่เร็วและเชื่อถือได้ที่สุดคืออะไร?

ทำ step test วงเปิดหนึ่งครั้ง อ่านเกน K เวลาหน่วง L และค่าคงเวลา T จากกราฟ แล้วใช้กฎ SIMC Kp=T/(K(τc+L))K_p=T/(K(\tau_c+L)), Ti=min⁡(T,4(τc+L))T_i=\min(T,4(\tau_c+L)) โดยตั้ง τc=L\tau_c=L ใช้การทดลองครั้งเดียว มีปุ่มปรับตัวเดียว ได้การตอบสนองนุ่มนวลและเกน margin ราว 3

ควรใช้ Ziegler–Nichols ไหม?

ใช้เป็นค่าเริ่มต้นเมื่อไม่มีข้อมูลอื่นได้ แต่ต้องรู้ว่า overshoot มักอยู่ที่ 40–80% และ margin บาง เพราะออกแบบให้ลดทอนหนึ่งในสี่ต่อรอบ วิศวกรส่วนใหญ่จึงลดเกน (ลด KpK_p เพิ่ม TiT_i) หรือใช้ SIMC หรือ Tyreus–Luyben แทน

จำเป็นต้องใช้เทอม D เสมอไหม?

ไม่จำเป็น วงควบคุมในโรงงานส่วนใหญ่ใช้ PI เทอม D ช่วยได้กับกระบวนการที่ตอบสนองช้าแบบ lag-dominant และสัญญาณวัดสะอาด (เช่นอุณหภูมิ บางวงตำแหน่งและความเร็ว) แต่แทบไม่ช่วยเมื่อเวลาหน่วงมากหรือสัญญาณมีสัญญาณรบกวน และถ้าใช้ต้องมีตัวกรองเสมอ

เลือกเวลาปริพันธ์ TiT_i อย่างไร?

กระบวนการแบบ self-regulating ค่าเริ่มต้นที่ดีคือ Ti≈TT_i\approx T (ค่าคงเวลาของกระบวนการ) และไม่เกิน 4(τc+L)4(\tau_c+L) เมื่อค่านั้นน้อยกว่า ถ้า TiT_i สั้นเกินจะแกว่งช้า ๆ เป็นลูกคลื่น ถ้ายาวเกินค่าผิดพลาดจะค้างนาน พื้นที่ความผิดพลาดหลังโหลดรบกวนมีค่าประมาณ Δd/Ki\Delta d/K_i เมื่อ Ki=Kp/TiK_i=K_p/T_i

ควรตั้งเวลาสุ่มตัวอย่าง (sample time) เท่าไร?

ประมาณหนึ่งในสิบของค่าคงเวลาของกระบวนการหรือเล็กกว่า และไม่เกินราวครึ่งหนึ่งของเวลาหน่วงเมื่อเวลาหน่วงมีค่าน้อย การสุ่มตัวอย่างเพิ่มเวลาหน่วงเทียบเท่าอีกราว Ts/2T_s/2 จึงต้องลดเกนลงถ้าสุ่มช้า

ทำไมวงควบคุมยังแกว่งทั้งที่ตั้งเกนต่ำแล้ว?

ให้สงสัยฮาร์ดแวร์ก่อน วาล์วที่ติด (stiction) เฟืองคลอน (backlash) หรือ dead band ทำให้เกิด limit cycle ที่ไม่มีค่าเกนใดแก้ได้ และสัญญาณวัดที่มีสัญญาณรบกวนหรือกรองไม่ดีก็เป็นสาเหตุได้ ดูที่เอาต์พุตของตัวควบคุม ถ้าค่าวัดเป็นฟันเลื่อยและเอาต์พุตเป็นคลื่นสี่เหลี่ยมคือสัญญาณคลาสสิกของ stiction

Integral windup คืออะไร และป้องกันอย่างไร?

windup คือเทอมปริพันธ์สะสมค่าขณะที่ตัวขับอิ่มตัว ทำให้เกินเป้ามากหลังจากนั้น ป้องกันด้วย anti-windup เช่นหยุดสะสม (clamping) หรือ back-calculation I˙=Kie+(usat−u)/Tt\dot I=K_ie+(u_{sat}-u)/T_t ในผลจำลองของบทความนี้ back-calculation ลด overshoot จาก 19% เหลือ 0.5%

รู้ได้อย่างไรว่าค่าจูนทนทานพอ?

เป้าหมายคือ gain margin อย่างน้อย 2 phase margin 45–60° และ peak sensitivity MsM_s 1.4–2 วิธีเช็กเร็วหน้างานคือเพิ่ม KpK_p อีก 50% (หรือให้เกนของกระบวนการเพิ่มเป็นสองเท่า) แล้วดูว่าการตอบสนองยังนิ่งอยู่

ระบบควบคุม PID Controller คืออะไร: Kp Ki Kd ทำงานอย่างไร และจูนอย่างไร ตัวควบคุม PID รวมสามเทอมคือสัดส่วน ปริพันธ์ และอนุพันธ์ของค่าผิดพลาด อธิบายผลของ Kp Ki Kd ตารางผลต่อการตอบสนอง ตัวอย่างจูนด้วย Ziegler–Nichols… อ่านบทความ → Python · AI เริ่มต้นเข้าใจการเขียนโปรแกรมในยุค AI: ทำไมควรเริ่มที่ Python ยุค AI เขียนโค้ดได้ทุกภาษา แต่คนที่อ่านโค้ดไม่ออกจะตรวจไม่ได้ว่าถูกหรือผิด บทความนี้อธิบายว่าทำไม Python เหมาะเป็นภาษาแรก 6 แนวคิดที่ต้องเข้าใจ… อ่านบทความ → พีชคณิตเชิงเส้น กฎของคราเมอร์ (Cramer's Rule) ใช้อย่างไร ทำไมถึงได้ และเมื่อไรไม่ควรใช้ สอนกฎของคราเมอร์แบบเห็นภาพ แทนหลักด้วยค่าคงที่แล้วหารดีเทอร์มิแนนต์ ตัวอย่าง 2×2 และ 3×3 หาตัวแปรเดียว ที่มาของสูตร กรณี Δ = 0 โจทย์พารามิเตอร์ k… อ่านบทความ →

ดูบทความทั้งหมดในหมวดระบบควบคุมและ PID (2 เรื่อง) → · บทความทั้งหมด