Production Run
📌 แนวคิดหลัก
แทนที่จะเก็บ Production Run เดียวแบบยาว 8–24 ชม. → แบ่งย่อยช่วงเวลา (Time-Sliced Run) เช่น
ทุก 1 ชม. = 1 Production Segment
มีเลขที่อ้างอิงเดิม เช่น WO2025-001, และรัน Segment เช่น WO2025-001-01, WO2025-001-02, ...
🎯 ประโยชน์ที่จะได้รับ
ปัญหาเดิม | ผลลัพธ์หลังปรับ |
---|---|
Production Run ยาวข้ามวัน | แบ่งชัดเจนเป็นช่วงเวลา |
OEE/Count/Yield คำนวณยาก | คำนวณง่ายต่อช่วง |
Dashboard โหลดช้า | โหลดเร็วขึ้น |
ย้อนข้อมูลเฉพาะช่วงไม่ได้ | Query ได้ทันทีตามช่วง |
🧱 โครงสร้างตารางที่รองรับการแบ่ง Segment
คัดลอกแก้ไขCREATE TABLE production_run ( id SERIAL PRIMARY KEY, run_code VARCHAR(50), -- เช่น WO2025-001-01 work_order_code VARCHAR(50), -- เช่น WO2025-001 machine_code VARCHAR(50), product_code VARCHAR(50), start_time TIMESTAMP, end_time TIMESTAMP, created_at TIMESTAMP DEFAULT NOW() );
🔁 แนวทางการสร้าง Production Run ใหม่ทุก X ชั่วโมง
✅ วิธีที่ 1: ใช้ Ignition Gateway Timer Script
# รันทุก 1 ชม. from datetime import timedelta now = system.date.now() start_time = system.date.addHours(now, -1) # สมมุติคุณมี run อยู่แล้ว active_work_order = "WO2025-001" machine = "M001" segment_code = active_work_order + "-" + now.toString("HH") system.db.runPrepUpdate( "INSERT INTO production_run (run_code, work_order_code, machine_code, product_code, start_time, end_time) VALUES (?, ?, ?, ?, ?, ?)", [segment_code, active_work_order, machine, "ABC123", start_time, now], database="mssqldb" )
จะได้ record ใหม่ทุกชั่วโมง แยกช่วงเวลาให้วิเคราะห์ได้แม่นยำมาก