ระบบติดตามเครื่องกลึง CNC 7 เครื่องผ่าน OPC UA และบันทึกค่าวัดลูกรีดบน Grafana สำหรับโรงงานผลิตในไทย
ลูกค้า: กลุ่มอุตสาหกรรมการผลิตขนาดใหญ่ในไทย
เคสนี้คือระบบที่รวมสถานะเครื่องกลึง CNC 7 เครื่องและค่าวัดลูกรีดไว้บนแดชบอร์ด Grafana บนเซิร์ฟเวอร์ภายในโรงงาน Node-RED อ่านค่าเครื่องผ่าน OPC UA ทุก 5 วินาที และเขียนค่าวัดจากแท็บเล็ตกลับเข้าฐานข้อมูล Roller เดิมของโรงงาน เราส่งมอบระบบพร้อมเอกสารปิดโครงการให้โรงงานผลิตในไทยในเดือนกันยายน 2569
- อุตสาหกรรม
- การผลิตทั่วไป
- ปี
- 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
โจทย์หน้างาน
สถานะของเครื่องกลึง CNC 7 เครื่องในไลน์กลึงลูกรีด (Roller) อยู่ในซอฟต์แวร์ I-Link ที่ต่อกับเครื่อง ส่วนขนาดลูกรีดที่วัดหลังกลึงต้องบันทึกในฐานข้อมูล Roller เดิมของโรงงานบน MS SQL Server ทีมงานของลูกค้าต้องการเห็นสถานะเครื่อง ขนาดลูกรีด และเวลาในการผลิตจากที่เดียว และให้ค่าในฐานข้อมูลตรงกับขนาดที่วัดได้จริง
สิ่งที่เราทำ
เราติดตั้ง Node-RED (เครื่องมือเชื่อมต่อและประมวลผลข้อมูล) บนเซิร์ฟเวอร์ภายในโรงงาน ให้อ่านค่าเครื่อง CNC ผ่าน OPC UA (มาตรฐานกลางสำหรับรับส่งข้อมูลเครื่องจักร) ทุก 5 วินาที แล้วเก็บลง InfluxDB (ฐานข้อมูลสำหรับข้อมูลตามเวลา) Grafana (โปรแกรมทำแดชบอร์ด) มี 2 หน้า คือหน้า Overview สำหรับดูสถานะเครื่อง และหน้า Input บนแท็บเล็ตสำหรับบันทึกค่าวัดจากเวอร์เนียร์ดิจิทัล ค่าวัดถูกเขียนกลับเข้าฐานข้อมูล Roller เดิมผ่าน API (ช่องทางให้โปรแกรมรับส่งข้อมูลกัน) ที่เราสร้างบน Node-RED
ผลลัพธ์
เราส่งมอบระบบพร้อมเอกสารปิดโครงการในเดือนกันยายน 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
อ่านสถานะเครื่องผ่าน OPC UA
Node-RED ดึงค่าจากเครื่อง CNC ทั้ง 7 เครื่องผ่าน OPC UA ทุก 5 วินาที เช่น สถานะโปรแกรม Alarm ความเร็วรอบ และ Cycle Time แล้วเก็บลง InfluxDB
- 2
แสดงภาพรวมบนหน้า Overview
แต่ละเครื่องมีไฟสถานะมอเตอร์หลัก (เขียวคือทำงาน) สถานะโปรแกรม Run/Stop ไฟ Alarm (แดงคือเครื่องมีปัญหา) และ Cycle Time ที่แปลงจากวินาทีเป็นนาทีก่อนแสดงผล
- 3
QC บันทึกค่าวัดลูกรีดผ่านหน้า Input
หลังกลึงเสร็จ ฝ่าย QC (ตรวจคุณภาพ) เลือกเครื่อง ลูกรีด และตำแหน่งของลูกรีด ค่าเส้นผ่านศูนย์กลางและความกว้างรับจากเวอร์เนียร์ดิจิทัล ส่วนค่าเยื้องศูนย์สองฝั่งกรอกบนแท็บเล็ต ระบบคำนวณผลต่างของค่าเยื้องศูนย์ให้ทันที
- 4
เขียนกลับฐานข้อมูลเดิม
เมื่อกดบันทึก API บน Node-RED จะบันทึกค่าใหม่หรืออัปเดตค่าเดิมในฐานข้อมูล Roller บน MS SQL Server
- 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
เทคโนโลยีที่ใช้
คำถามที่พบบ่อย
ระบบนี้ใช้กับเครื่อง 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 เดิมของลูกค้า
ราคาและระยะเวลาเท่าไร
ไม่มีราคาตายตัว ขึ้นกับจำนวนเครื่อง ข้อมูลที่ต้องการอ่าน และระบบเดิมที่ต้องเชื่อม ติดต่อเราเพื่อขอใบเสนอราคาหลังสำรวจหน้างาน




