← All articles

PLC5 min read

ทดสอบบน Digital Twin ก่อนลงหน้างาน · ให้ PLC กับ PID ผ่าน Test ตั้งแต่ยังไม่แตะเครื่องจริง

ตอนที่ 2 ของซีรีส์ Build. Test. Commission. Share. เค้กพาดูวิธีใช้ Simulink กับ OPC UA ของ S7-1500 ทำ Digital Twin ให้คอนโทรลเลอร์ตัวเดียวสลับได้ระหว่างโมเดลกับเครื่องจริง พร้อม Test case ที่ควรลองใน Twin ก่อน และตัวจำลองถังให้ลองจูน PID เอง

Watch on YouTube ↗

ในบทความ Soft Skills คือ Firmware ของวิศวกร เราพูดถึงหลัก “ไม่แน่ใจ = หยุด” แต่ในงาน Commissioning จริง มีสิ่งที่เราไม่แน่ใจเยอะมาก จูนแรงไปไหม ถ้าเซนเซอร์เสียจะเกิดอะไร ถ้าเน็ตเวิร์กหลุดวาล์วจะค้างที่เท่าไหร่

คำตอบที่ดีที่สุดคือ ทดสอบให้รู้ก่อน แต่จะทดสอบเรื่องอันตรายกับเครื่องจริงก็ไม่ได้ นี่คือจุดที่ Digital Twin เข้ามาช่วยครับ

Digital Twin ในมุมคนทำ PLC

ไม่ต้องคิดถึงโรงงานเสมือนสามมิติราคาแพงครับ สำหรับคนทำ Control Digital Twin คือ โมเดลของกระบวนการ ที่ตอบสนองเหมือนของจริงมากพอ จนเอาคอนโทรลเลอร์ตัวเดิมมาทดสอบด้วยได้

หัวใจของมันมีแค่ 3 อย่าง

  1. โมเดลที่วัดมาจริง ค่า gain, time constant และ dead time ต้องได้จาก step test บนเครื่องจริง ไม่ใช่เดาเอา
  2. คอนโทรลเลอร์ตัวเดียวกัน ห้ามมีเวอร์ชันสำหรับ simulation กับเวอร์ชันหน้างานแยกกัน
  3. การเชื่อมต่อที่สลับได้ ไปที่โมเดลหรือไปที่เครื่องจริงด้วยสวิตช์ตัวเดียว

ชุดฝึกนี้เป็นงานสอนวิชา Process Control ร่วมกับอาจารย์มหาวิทยาลัย เค้กรับผิดชอบฝั่ง Simulink กับการเชื่อม OPC UA ส่วนโปรแกรม PLC บนเครื่องมีอีกคนดูแล

ตัวเครื่องมีลูปปั๊ม 1 ลูป ประกอบด้วย Level transmitter, Flow transmitter, Control valve และปั๊มที่ขับด้วยอินเวอร์เตอร์ ควบคุมด้วย S7-1500 ที่เขียนใน TIA Portal V17

ลองกดสวิตช์ดูครับ นี่คือหัวใจของทั้งระบบ

🔀 สวิตช์เดียว สลับจาก Twin ไปเครื่องจริง

SimulinkLevel PI → Flow PIsame controllerboth modesPlant modellevel K/s · flow FOPDTMVPVS7-1500OPC UA :4840Real rigLT-101 · FT-101 · FCV-101

🧪 USE_OPC = 0 คอนโทรลเลอร์คุยกับโมเดลใน Simulink เล่นแรงแค่ไหนก็ไม่มีถังล้นจริง จึงเหมาะกับการลอง test case ที่อันตราย

ทำไมเลือก OPC UA

S7-1500 มี OPC UA Server ในตัว ฝั่ง MATLAB ใช้ Industrial Communication Toolbox ต่อเข้าไป browse หา tag แล้วอ่านเขียนด้วยชื่อ tag ได้เลย

  • ไม่ต้องซื้อฮาร์ดแวร์หรือ license เพิ่ม
  • ไม่ต้องเขียนโปรแกรม PLC ชุดที่สองไว้คุยกับ Simulink
  • ชื่อ tag เดียวกันใช้ได้ในทุกโมเดล เพราะทำ Tag contract ไว้ชัดเจนว่าแต่ละลูปมี SP, PV และ Output อะไรบ้าง
Watch on YouTube ↗

Model ก่อน Tune

ลูปสองตัวบนเครื่องนี้พฤติกรรมต่างกันมาก

ลูป โมเดล พฤติกรรม
Level Integrating · G(s) = K/s ไม่มีจุดนิ่งในตัวเอง ถ้าเข้ามากกว่าออก ถังก็จะเต็มไปเรื่อย ๆ
Flow FOPDT · G(s) = K·e^(−θs)/(τs + 1) ตอบสนองเร็ว แต่มี dead time

ค่าพารามิเตอร์ทั้งหมดมาจาก step test บนเครื่องจริง นี่คือเหตุผลที่ค่าจูนที่หาได้ใน Simulink เอาไปใช้กับเครื่องจริงได้ ถ้าโมเดลมาจากการเดา Twin ก็จะกลายเป็นแค่เกมที่ทำให้เรามั่นใจผิด ๆ

ลองเอง: จูน PID บน Twin

ตัวจำลองด้านล่างเป็นถังแบบ Integrating ที่มี dead time แบบเดียวกับลูป Level Setpoint จะกระโดดจาก 50 % ไป 75 % ที่วินาทีที่ 10 และห้ามชน HH 85 % ค่าเริ่มต้นจูนแรงเกินไปเจตนาให้ถังล้น ลองหาค่าที่ผ่านทุกเกณฑ์ดูครับ

🧪 Step test บน Digital Twin · Tank level

ลองปรับ Kp กับ Ti ให้ผ่านทุกเกณฑ์ โดยไม่ทำให้ถังล้น

0255075100HH 85 %time 0 → 400 s

Level PV Setpoint Valve output

  • ไม่ชน High-High alarm (85 %)
  • Overshoot ≤ 15 %
  • Settling time ≤ 150 s

สิ่งที่เห็นในตัวจำลองนี้คือเรื่องจริงของ Integrating process ครับ Kp สูงกับ Ti สั้น ทำให้ตอบสนองไว แต่ Overshoot พุ่ง ส่วนจูนอ่อนเกินไปก็ปลอดภัย แต่นิ่งช้าจนตกเกณฑ์ Settling time การหาจุดสมดุลแบบนี้ใน Twin ใช้เวลาไม่กี่นาที ถ้าไปลองบนเครื่องจริง อาจต้องเสียน้ำไปหนึ่งถัง

Cascade: จูนลูปในก่อนเสมอ

บนเครื่องจริงใช้ Level–Flow cascade ลูป Level ข้างนอกไม่ได้สั่งวาล์วเอง แต่ตั้ง Setpoint ให้ลูป Flow แล้วลูป Flow ถึงจะขับ Control valve

ลำดับที่ใช้เสมอคือ

  1. จูน Flow (ลูปใน) ก่อน ให้เร็วและนิ่ง
  2. ค่อยจูน Level (ลูปนอก) ให้ช้ากว่าลูปในชัดเจน
  3. ใส่ disturbance เดียวกันกับทั้ง single-loop และ cascade แล้วเทียบผลบนกราฟ

Test case ที่ควรลองใน Twin ก่อน

ส่วนนี้แหละที่ Twin คุ้มที่สุด เพราะมีบางเคสที่ไม่ควรลองกับเครื่องจริงเลย เราเขียน Test case ก่อนเขียนโค้ด แล้วไล่ทีละข้อแบบนี้

#Test caseใส่อะไรเข้าไปPLC ต้องทำอะไรทดสอบที่ไหน
01Setpoint stepเปลี่ยน SP ขึ้น-ลง 25 %ไม่ชน HH/LL, overshoot และ settling อยู่ในเกณฑ์Twin → เครื่องจริง
02Disturbanceเปลี่ยน outflow หรือความเร็วปั๊มกะทันหันกลับเข้า SP ได้โดยไม่แกว่งTwin → เครื่องจริง
03Sensor failPV ค้างค่าเดิม หรือหลุดช่วง 4–20 mAขึ้น Alarm แล้วเปลี่ยนเป็น Manual หรือ Safe output ไม่ไล่ตามค่าผิดTwin ก่อนเท่านั้น
04Valve stuckMV เปลี่ยนแต่โมเดลไม่ตอบสนองตรวจเจอ deviation นานเกินกำหนด แล้วแจ้ง OperatorTwin ก่อนเท่านั้น
05Comms lossตัดการเชื่อม OPC UA กลางทางPLC ไม่ค้างค่า MV สุดท้าย มี watchdog และ fallback ที่ปลอดภัยTwin ก่อนเท่านั้น
06Saturationสั่ง SP ที่ทำให้วาล์วเปิดสุดAnti-windup ทำงาน ไม่ overshoot หนักตอนกลับมาTwin → เครื่องจริง
07Interlock / E-stopกด Stop ระหว่างลูปกำลังทำงานทุกอย่างเข้า Safe state ตาม Sequence of Operationเครื่องจริง

แถว Interlock / E-stop ต้องทดสอบกับฮาร์ดแวร์จริงเสมอ เพราะความปลอดภัยของคนต้องพิสูจน์บนวงจรจริง Twin ช่วยให้มั่นใจเรื่อง logic ได้ แต่ไม่ได้แทน Safety test

สิ่งที่ Twin มักจับได้ก่อนลงหน้างาน

ปัญหาเหล่านี้เจอบ่อยในงาน Commissioning ทั่วไป และเป็นประเภทที่ Twin ช่วยให้เจอได้เร็วมาก

  • Scaling ผิดหน่วย PV เป็น 0–100 % แต่ฝั่งหนึ่งคิดเป็น 0–27648 คอนโทรลเลอร์จะเพี้ยนทันทีตั้งแต่วินาทีแรก
  • ทิศทาง Action กลับด้าน Direct กับ Reverse สลับกัน วาล์วจะเปิดสวนทางกับที่ควรเป็น
  • ลืม Anti-windup หลังวาล์วตันสุดแล้วกลับมา ลูปจะ overshoot แรงผิดปกติ
  • Tag ไม่ตรง Contract ชื่อหรือ data type ฝั่ง PLC กับ Simulink ไม่ตรงกัน ซึ่งเจอใน Twin ได้ภายในไม่กี่วินาที

ทุกข้อนี้ถ้าไปเจอตอนเครื่องหมุนจริงต่อหน้าฝ่ายผลิต จะกลายเป็นทั้งความเสี่ยงและความเครียด แต่ถ้าเจอใน Twin มันก็เป็นแค่บรรทัดหนึ่งใน Test log ครับ

เครื่องมือแบบไหนก็เริ่มได้

ไม่จำเป็นต้องมี MATLAB เสมอไป เลือกตามงานได้เลย

  • Simulink + OPC UA เหมาะกับงาน Process control ที่ต้องการโมเดลแม่น ๆ แบบชุดฝึกนี้
  • Factory I/O + PLCSIM เหมาะกับงาน Sequence และ Discrete เห็นภาพเครื่องจักรเคลื่อนไหวจริง
  • PLCSIM Advanced ทดสอบโปรแกรม S7-1500 ได้โดยไม่ต้องมีฮาร์ดแวร์

ตัวอย่างการใช้ Factory I/O เป็น Twin ของลูป Level กับ TIA Portal:

Watch on YouTube ↗

Checklist ก่อนบอกว่า “พร้อม FAT”

✅ Twin test พร้อมหรือยัง?

0 / 7

สรุป

  1. Twin ที่ดีมาจากข้อมูลจริง step test ก่อนแล้วค่อยสร้างโมเดล
  2. คอนโทรลเลอร์ตัวเดียว สวิตช์เดียว ไม่ต้องเขียนโค้ดสองชุด
  3. เคสอันตรายเล่นใน Twin เคส Safety พิสูจน์บนเครื่องจริง
  4. เขียน Test case ก่อนเขียนโค้ด แล้วไล่ทีละข้อ นี่คือการคิดเป็นระบบที่จับต้องได้

ทั้งหมดนี้ทำให้วัน Commissioning เหลือแค่การยืนยัน ไม่ใช่การลุ้นครับ ตอนต่อไปของซีรีส์คือฝั่ง Commission จะพาจูน PID บนเครื่องจริงแบบมีหลักฐาน จาก step test ไปถึง IMC λ

  • #Digital Twin
  • #Simulink
  • #OPC UA
  • #S7-1500
  • #PID
  • #Testing