ข้ามไปยังเนื้อหาหลัก

ระบบติดตามเครื่องกลึง CNC 7 เครื่องผ่าน OPC UA และบันทึกค่าวัดลูกรีดบน Grafana สำหรับโรงงานผลิตในไทย

ลูกค้า: กลุ่มอุตสาหกรรมการผลิตขนาดใหญ่ในไทย

เคสนี้คือระบบที่รวมสถานะเครื่องกลึง CNC 7 เครื่องและค่าวัดลูกรีดไว้บนแดชบอร์ด Grafana บนเซิร์ฟเวอร์ภายในโรงงาน Node-RED อ่านค่าเครื่องผ่าน OPC UA ทุก 5 วินาที และเขียนค่าวัดจากแท็บเล็ตกลับเข้าฐานข้อมูล Roller เดิมของโรงงาน เราส่งมอบระบบพร้อมเอกสารปิดโครงการให้โรงงานผลิตในไทยในเดือนกันยายน 2569

ภาพประกอบแนวคิด: เชื่อมข้อมูลเครื่อง CNC ผ่าน OPC UA ขึ้นแดชบอร์ด Grafana เห็นสถานะเครื่องแบบเรียลไทม์ขยายภาพ
ภาพประกอบแนวคิดที่สร้างด้วย AI เพื่ออธิบายงานในเคสนี้
อุตสาหกรรม
การผลิตทั่วไป
ปี
2568–2569
ขอบเขตงาน
หน้า Grafana 2 หน้า (Overview และ Input) พร้อม Custom Plugin สำหรับส่งข้อมูล, API บน Node-RED เชื่อม Grafana กับฐานข้อมูล MS SQL Server, อ่านข้อมูลเครื่อง CNC 7 เครื่องผ่าน OPC UA ทุก 5 วินาทีลง InfluxDB, ทดสอบระบบ และจัดทำเอกสารโครงการ รวมงานเพิ่มในปี 2569: วิเคราะห์และเขียนคำสั่งดึงข้อมูล (Query) จากฐานข้อมูลเดิมของโรงงาน

สรุปสั้น

  • เราเชื่อมเครื่องกลึง CNC 7 เครื่องในไลน์กลึงลูกรีดผ่าน OPC UA ให้ Node-RED อ่านค่าทุก 5 วินาทีและเก็บลง InfluxDB บนเซิร์ฟเวอร์ภายในโรงงาน
  • หน้า Overview บน Grafana แสดงไฟสถานะมอเตอร์หลัก สถานะโปรแกรม Alarm และ Cycle Time (เวลาต่อรอบงาน) เป็นนาทีของแต่ละเครื่องในจอเดียว
  • ฝ่าย QC (ตรวจคุณภาพ) บันทึกเส้นผ่านศูนย์กลาง ความกว้าง และค่าเยื้องศูนย์ของลูกรีดผ่านหน้า Input บนแท็บเล็ต และ API บน Node-RED เขียนค่ากลับเข้าฐานข้อมูล Roller เดิมบน MS SQL Server
  • ระหว่างโครงการ ลูกค้าเห็นชอบให้แสดง Cycle Time แทนเวลาที่งานจะเสร็จ เพราะ OPC UA ส่งข้อมูลที่ใช้คำนวณจาก G-code (ชุดคำสั่งที่เครื่อง CNC ใช้กลึงชิ้นงาน) ไม่ได้
  • งานหลักเริ่มในปี 2568 ลูกค้าสั่งงานวิเคราะห์ฐานข้อมูลเดิมเพิ่มในปี 2569 และเราส่งมอบระบบพร้อมเอกสารปิดโครงการในเดือนกันยายน 2569
01

โจทย์หน้างาน

สถานะของเครื่องกลึง CNC 7 เครื่องในไลน์กลึงลูกรีด (Roller) อยู่ในซอฟต์แวร์ I-Link ที่ต่อกับเครื่อง ส่วนขนาดลูกรีดที่วัดหลังกลึงต้องบันทึกในฐานข้อมูล Roller เดิมของโรงงานบน MS SQL Server ทีมงานของลูกค้าต้องการเห็นสถานะเครื่อง ขนาดลูกรีด และเวลาในการผลิตจากที่เดียว และให้ค่าในฐานข้อมูลตรงกับขนาดที่วัดได้จริง

02

สิ่งที่เราทำ

เราติดตั้ง Node-RED (เครื่องมือเชื่อมต่อและประมวลผลข้อมูล) บนเซิร์ฟเวอร์ภายในโรงงาน ให้อ่านค่าเครื่อง CNC ผ่าน OPC UA (มาตรฐานกลางสำหรับรับส่งข้อมูลเครื่องจักร) ทุก 5 วินาที แล้วเก็บลง InfluxDB (ฐานข้อมูลสำหรับข้อมูลตามเวลา) Grafana (โปรแกรมทำแดชบอร์ด) มี 2 หน้า คือหน้า Overview สำหรับดูสถานะเครื่อง และหน้า Input บนแท็บเล็ตสำหรับบันทึกค่าวัดจากเวอร์เนียร์ดิจิทัล ค่าวัดถูกเขียนกลับเข้าฐานข้อมูล Roller เดิมผ่าน API (ช่องทางให้โปรแกรมรับส่งข้อมูลกัน) ที่เราสร้างบน Node-RED

03

ผลลัพธ์

เราส่งมอบระบบพร้อมเอกสารปิดโครงการในเดือนกันยายน 2569 หน้า Overview แสดงสถานะ Alarm และ Cycle Time (เวลาต่อรอบงาน) ของเครื่อง CNC ทั้ง 7 เครื่องในจอเดียว และค่าวัดลูกรีดจากหน้า Input ถูกเขียนกลับเข้าฐานข้อมูล Roller เดิม

ที่มาของโจทย์

โจทย์ของเคสนี้คือการเห็นสถานะเครื่องกลึง CNC (เครื่องกลึงที่ควบคุมด้วยคอมพิวเตอร์) 7 เครื่องและค่าวัดลูกรีดจากที่เดียว ข้อมูลทั้งสองส่วนมีอยู่แล้ว แต่อยู่คนละระบบ สถานะเครื่องอยู่ในซอฟต์แวร์ I-Link ที่ต่อกับเครื่อง ส่วนขนาดลูกรีดที่วัดหลังกลึงต้องบันทึกในฐานข้อมูล Roller เดิมของโรงงานบน MS SQL Server

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

OPC UA คืออะไร

OPC UA เป็นมาตรฐานกลางสำหรับรับส่งข้อมูลระหว่างเครื่องจักรอุตสาหกรรมกับซอฟต์แวร์ ถ้าเครื่องหรือซอฟต์แวร์ควบคุมเครื่องเปิดข้อมูลผ่าน OPC UA ไว้ ระบบภายนอกก็อ่านสถานะ Alarm และตัวนับต่าง ๆ ได้ โดยไม่ต้องเขียนตัวเชื่อมเฉพาะยี่ห้อ

ข้อกำหนดและข้อจำกัด

ระบบต้องทำงานกับซอฟต์แวร์และฐานข้อมูลที่โรงงานใช้อยู่ และต้องทำตามนโยบายของฝ่าย IT ของลูกค้า ข้อกำหนดและข้อจำกัดหลักมีดังนี้

  • ติดตั้งบนเซิร์ฟเวอร์ภายในโรงงาน และทำงานในเครือข่ายของลูกค้า
  • อ่านข้อมูลเครื่องผ่าน OPC UA จากซอฟต์แวร์ I-Link ที่ต่อกับเครื่อง CNC อยู่แล้ว
  • นโยบายของลูกค้าไม่ให้ดึงข้อมูลจากฐานข้อมูลเดิมโดยตรง การอ่านและเขียนฐานข้อมูล Roller ต้องผ่าน API
  • ค่าวัดต้องบันทึกในฐานข้อมูล Roller เดิม เพื่อให้ค่าในฐานข้อมูลตรงกับขนาดที่วัดได้จริง
  • Grafana ไม่ใช่เว็บแอปที่สั่งทำทั้งหน้า หน้าตาและการกรอกข้อมูลทำได้ตามข้อจำกัดของ Grafana

ระบบอ่านสถานะเครื่อง CNC และรับค่าวัดลูกรีดอย่างไร

ระบบอ่านสถานะเครื่องผ่าน OPC UA และรับค่าวัดลูกรีดผ่านหน้า Input บน Grafana ที่เปิดจากแท็บเล็ต ข้อมูลทั้งสองทางแสดงบนแดชบอร์ดเดียว เราอ่านข้อมูลเครื่องผ่าน OPC UA จากซอฟต์แวร์ I-Link ที่ต่อกับเครื่องอยู่แล้ว และเขียนค่าวัดผ่าน API บน Node-RED เพราะนโยบายของลูกค้าไม่ให้ดึงฐานข้อมูลโดยตรง

  1. 1

    อ่านสถานะเครื่องผ่าน OPC UA

    Node-RED ดึงค่าจากเครื่อง CNC ทั้ง 7 เครื่องผ่าน OPC UA ทุก 5 วินาที เช่น สถานะโปรแกรม Alarm ความเร็วรอบ และ Cycle Time แล้วเก็บลง InfluxDB

  2. 2

    แสดงภาพรวมบนหน้า Overview

    แต่ละเครื่องมีไฟสถานะมอเตอร์หลัก (เขียวคือทำงาน) สถานะโปรแกรม Run/Stop ไฟ Alarm (แดงคือเครื่องมีปัญหา) และ Cycle Time ที่แปลงจากวินาทีเป็นนาทีก่อนแสดงผล

  3. 3

    QC บันทึกค่าวัดลูกรีดผ่านหน้า Input

    หลังกลึงเสร็จ ฝ่าย QC (ตรวจคุณภาพ) เลือกเครื่อง ลูกรีด และตำแหน่งของลูกรีด ค่าเส้นผ่านศูนย์กลางและความกว้างรับจากเวอร์เนียร์ดิจิทัล ส่วนค่าเยื้องศูนย์สองฝั่งกรอกบนแท็บเล็ต ระบบคำนวณผลต่างของค่าเยื้องศูนย์ให้ทันที

  4. 4

    เขียนกลับฐานข้อมูลเดิม

    เมื่อกดบันทึก API บน Node-RED จะบันทึกค่าใหม่หรืออัปเดตค่าเดิมในฐานข้อมูล Roller บน MS SQL Server

  5. 5

    ดูตารางค่าวัดล่าสุด

    ตารางบน Grafana แสดงค่าล่าสุดของแต่ละตำแหน่งลูกรีด ทั้งขนาดปัจจุบัน ปริมาณที่กลึงออก (Cutdown) เส้นผ่านศูนย์กลาง และความกว้างล่าสุด

สิ่งที่ส่งมอบ

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

  • หน้า Overview บน Grafana: สถานะมอเตอร์หลัก สถานะโปรแกรม Alarm และ Cycle Time ของเครื่อง CNC ทั้ง 7 เครื่อง
  • หน้า Input บน Grafana พร้อม Custom Plugin (ส่วนเสริมที่เราเขียนเพิ่ม) สำหรับส่งค่าวัดลูกรีด
  • ตารางค่าวัดล่าสุดของแต่ละตำแหน่งลูกรีด
  • การอ่านข้อมูลเครื่องผ่าน OPC UA ด้วย Node-RED และเก็บลง InfluxDB
  • API บน Node-RED ที่เชื่อม Grafana กับฐานข้อมูล Roller เดิมบน MS SQL Server
  • งานเพิ่มในปี 2569: วิเคราะห์ฐานข้อมูลเดิมของโรงงานและเขียนคำสั่งดึงข้อมูล (Query)

ระหว่างโครงการ ขอบเขตงานเปลี่ยนไปอย่างไร

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

  • Cycle Time แทนเวลาที่งานจะเสร็จ: แผนเดิมจะคำนวณเวลาที่งานจะเสร็จจาก G-code (ชุดคำสั่งที่เครื่อง CNC ใช้กลึงชิ้นงาน) แต่ OPC UA ส่งข้อมูลส่วนนั้นไม่ได้ หน้า Overview จึงแสดง Cycle Time ของแต่ละเครื่องแทน
  • ตัดบางคอลัมน์ในตารางค่าวัด: คอลัมน์ที่ต้องอ้างอิงย้อนกลับไปหาขนาดลูกรีดในฐานข้อมูลเดิมถูกตัดออก เพราะโครงสร้างฐานข้อมูลเดิมอ้างอิงแบบนั้นไม่ได้
  • รวมช่องกรอกไว้ในแผงเดียว: Plugin มาตรฐานของ Grafana ส่งข้อมูลแบบข้อความไม่ได้ เราจึงรวมช่องกรอกไว้ในแผงเดียวและเขียน Custom Plugin เพื่อส่งข้อมูล

งานหลักเริ่มในปี 2568 ต่อมาในปี 2569 ลูกค้าสั่งงานเพิ่มเพื่อวิเคราะห์ฐานข้อมูลเดิมของโรงงานและเขียนคำสั่งดึงข้อมูล (Query)

ผลที่ยืนยันได้จากการส่งมอบ

หลักฐานของผลงานนี้คือเอกสารปิดโครงการ (Product Document) ที่บันทึกหน้าจอที่ส่งมอบและการเปลี่ยนขอบเขตหน้าจอระหว่างโครงการ นอกจากหน้า Overview และหน้า Input เอกสารนี้ยังแสดงตารางค่าวัดล่าสุดของแต่ละตำแหน่งลูกรีด ตารางนี้แสดงขนาดปัจจุบัน ปริมาณที่กลึงออก เส้นผ่านศูนย์กลาง และความกว้างล่าสุด

เคสนี้ไม่มีตัวเลขวัดผลทางธุรกิจ เช่น เวลาหยุดเครื่องที่ลดลง เราจึงรายงานเฉพาะสิ่งที่ส่งมอบและมีเอกสารยืนยัน

สิ่งที่เราเรียนรู้

งานนี้ให้หลักการต่อไปนี้สำหรับงานเชื่อมข้อมูลเครื่องจักรเข้ากับระบบเดิมของโรงงาน

  • ตรวจรายการ Tag (รายการข้อมูล) ที่เครื่องส่งผ่าน OPC UA ได้จริงก่อนออกแบบหน้าจอ ค่าที่ต้องคำนวณจากข้อมูลที่เครื่องไม่ได้ส่งออกมาจะแสดงไม่ได้ ในเคสนี้เวลาที่งานจะเสร็จจึงต้องเปลี่ยนเป็น Cycle Time
  • ตกลงวิธีเข้าถึงฐานข้อมูลเดิมกับฝ่าย IT ก่อนเริ่มพัฒนา ในเคสนี้นโยบายไม่ให้ดึงฐานข้อมูลโดยตรง งานเชื่อมจึงต้องรอ API และการประชุมเรื่องการเชื่อมต่อระหว่างทีม IT กับหน้างานเลื่อนออกไป
  • ออกแบบหน้าจอตามข้อจำกัดของเครื่องมือและโครงสร้างฐานข้อมูลเดิม และเขียนขอบเขตหน้าจอให้ชัดเป็นลายลักษณ์อักษร Grafana ไม่ใช่เว็บแอปที่สั่งทำทั้งหน้า และฐานข้อมูลเดิมกำหนดว่าคอลัมน์ไหนแสดงได้จริง

นำแนวทางนี้ไปใช้กับโรงงานของคุณได้อย่างไร

ถ้าเครื่อง CNC หรือซอฟต์แวร์ควบคุมเครื่องของคุณเปิดข้อมูลผ่าน OPC UA คุณใช้แนวทางเดียวกับเคสนี้ได้ คืออ่านสถานะเครื่องเข้า Node-RED เก็บใน InfluxDB แสดงบน Grafana และเขียนค่าวัดกลับเข้าฐานข้อมูลที่โรงงานมีอยู่ ส่วนที่ต้องปรับคือรายการ Tag ของเครื่อง และวิธีเข้าถึงฐานข้อมูลเดิมของคุณ

ส่วนที่ใช้ซ้ำได้ และส่วนที่ต้องปรับ

ส่วนของระบบใช้ซ้ำได้ต้องปรับเมื่อ
การอ่านข้อมูลเครื่องการอ่านค่าผ่าน OPC UA ด้วย Node-RED และเก็บลง InfluxDBเครื่องหรือซอฟต์แวร์ควบคุมเครื่องไม่เปิดข้อมูลผ่าน OPC UA หรือเปิด Tag คนละชุด ต้องสำรวจหน้างานก่อน
หน้า Overviewไฟสถานะมอเตอร์หลัก สถานะโปรแกรม Alarm และ Cycle Time ต่อเครื่องคุณต้องการค่าที่เครื่องไม่ได้ส่งออกมา เช่น เวลาที่งานจะเสร็จ ต้องตรวจว่ามีข้อมูลรองรับหรือไม่
หน้า Inputการรับค่าจากเวอร์เนียร์ดิจิทัลบนแท็บเล็ตผ่าน Custom Pluginชิ้นงานหรือค่าที่ต้องวัดต่างจากลูกรีด ต้องกำหนดช่องกรอกและการคำนวณใหม่
การเขียนกลับฐานข้อมูลAPI บน Node-RED ที่บันทึกหรืออัปเดตค่าในฐานข้อมูลเดิมฐานข้อมูลของคุณเป็นระบบอื่น หรือฝ่าย IT กำหนดสิทธิ์ต่างจากเคสนี้ ต้องตกลงตารางและวิธีเชื่อมใหม่
  • ขอรายการ Tag ที่เครื่องส่งผ่าน OPC UA ได้จริงก่อนสรุปหน้าจอ
  • ตกลงกับฝ่าย IT เรื่องสิทธิ์ ตาราง และวิธีเชื่อมฐานข้อมูลเดิมให้เสร็จก่อนเริ่มพัฒนา
  • สรุปหน้าจอและข้อมูลที่ต้องการบนแดชบอร์ดเป็นลายลักษณ์อักษร โดยเทียบกับข้อจำกัดของ Grafana

เทคโนโลยีที่ใช้

OPC UANode-REDInfluxDBGrafana + Custom PluginMS SQL Server (ฐานข้อมูล Roller เดิม)แท็บเล็ต + เวอร์เนียร์ดิจิทัล

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

ระบบนี้ใช้กับเครื่อง CNC แบบไหนได้

ใช้ได้เมื่อเครื่องหรือซอฟต์แวร์ควบคุมเครื่องเปิดข้อมูลผ่าน OPC UA ในเคสนี้ระบบอ่านจาก OPC UA ของซอฟต์แวร์ I-Link ที่ต่อกับเครื่องอยู่แล้ว สำหรับเครื่องอื่น ต้องสำรวจหน้างานและรายการ Tag ก่อนจึงยืนยันได้

ต้องเปลี่ยนฐานข้อมูลหรือโปรแกรมเดิมของโรงงานไหม

ในเคสนี้ไม่ได้เปลี่ยนฐานข้อมูลเดิม ระบบเขียนค่าวัดกลับเข้าฐานข้อมูล Roller เดิมบน MS SQL Server ผ่าน API บน Node-RED เฉพาะตารางและคอลัมน์ที่ตกลงกัน และทำงานตามนโยบายเครือข่ายของลูกค้า การเชื่อมต่อของคุณจะขึ้นกับโครงสร้างและสิทธิ์ที่ตกลงกับฝ่าย IT

ทำไมแสดง Cycle Time แทนเวลาที่งานจะเสร็จ

เพราะ OPC UA ส่งข้อมูลที่ใช้คำนวณเวลาที่งานจะเสร็จจาก G-code ไม่ได้ แผนเดิมจะคำนวณค่านี้ แต่ระหว่างโครงการ ลูกค้าเห็นชอบให้แสดง Cycle Time ของแต่ละเครื่องเป็นนาทีแทน

ข้อมูลเก็บไว้ที่ไหน

ข้อมูลเก็บบนเซิร์ฟเวอร์ภายในโรงงาน ข้อมูลเครื่องจักรอยู่ใน InfluxDB ส่วนค่าวัดลูกรีดอยู่ในฐานข้อมูล Roller เดิมของลูกค้า

ราคาและระยะเวลาเท่าไร

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

อยากได้ระบบแบบนี้ในงานของคุณ?