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

sql
คัดลอกแก้ไข
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 ใหม่ทุกชั่วโมง แยกช่วงเวลาให้วิเคราะห์ได้แม่นยำมาก