ตัวอย่างการคำนวนTargetเพื่อให้พนักงานรู้ว่าขณะนี้ควรผลิตได้จำนวนเท่าใด ทำให้รู้ว่าผลิตได้เร็วหรือช้ากว่าเป้าหมายไปเท่าใด เพื่อประโยชน์ในการปรับปรุงศักยภาพการผลิต
ตัวอย่างนี้มีเป้าหมายในการผลติคือ 60 ตันต่อชั่วโมง(1ตันต่อนาที) มีเวลาพักกระบวนการที่เวลา 12:00 – 12:50 ไม่ต้องนับTarget และเริ่มนับ12:50 ไปเรื่อยๆ การนับจะเริ่ม8:00 ถึง8:00 ของอีกวันที่จะเริ่มนับใหม่

/** Target Calculation Example by Sutthipong Senathee **/
/** คำนวนTagetอัตโนมัติตามระยะเวลา **/
/** ต.ย. การคำนวนโดยหยุดนับตอนพักเที่ยง 12:00 - 12:50 **/
DECLARE
@now = {{:ServerLocalTime}};
@nowTS = @now - bday(@now);
@tpm = 1; /** เป้าหมายต่อนาที **/
BEGIN
/** ------ คำนวนเวลาที่ทำงานตามระยะเวลาที่ดำเนินไป ------- **/
/** 8โมงถึงเที่ยง**/
IF @nowTS >= totimespan("8:00:00") && @nowTS < totimespan("12:00:00")
THEN SET @@= totalminutes(@nowTS - totimespan("8:00:00"));
/** พักเที่ยง **/
ELSEIF @nowTS >= totimespan("12:00:00") && @nowTS < totimespan("12:50:00")
THEN SET @@= 240;
/** หลังพักเที่ยงถึงเที่ยงคืน **/
ELSEIF @nowTS >= totimespan("12:50:00") && @nowTS <= totimespan("23:59:59")
THEN SET @@= 240 + totalminutes(@now - (bday(@now) +totimespan("12:50:00")));
/** เที่ยงคืนถึงก่อนแปดโมง **/
ELSEIF @nowTS >= totimespan("0:00:00") && @nowTS < totimespan("8:00:00")
THEN SET @@= 910 + totalminutes(@nowTS);
/** ผลลัพธ์ TARGET ที่คำนวนได้ ณ ขณะนี้ **/
SET @@ = @@ * @tpm;
END
สามารถคัดลอกโค้ดข้างต้นไปใส่ในProcessPointหรือนำไปสร้างGlobal Expressionเพื่อให้สามารถเรียกใช้ซ้ำจากโมดูลต่างๆก็ได้
ตัวอย่างที่สอง เพิ่มเวลาพักที่15:00 – 15:15 น. ไม่มีการนับเพิ่มTarget (ถ้านับก็ตัดเงื่อนไขนี้ออกไป)
/** Target Calculation Example by Sutthipong Senathee **/
/** คำนวนTagetอัตโนมัติตามระยะเวลา **/
/** ต.ย. การคำนวนโดยหยุดนับตอนพักเที่ยง 12:00 - 12:50 และ 15:00-15:15 **/
DECLARE
@now = {{:ServerLocalTime}};
@nowTS = @now - bday(@now);
@tpm = 1; /** เป้าหมายต่อนาที **/
BEGIN
/** ------ คำนวนเวลาที่ทำงานตามระยะเวลาที่ดำเนินไป ------- **/
/** 8โมงถึงเที่ยง**/
IF @nowTS >= totimespan("8:00:00") && @nowTS < totimespan("12:00:00")
THEN SET @@= totalminutes(@nowTS - totimespan("8:00:00"));
/** พักเที่ยง **/
ELSEIF @nowTS >= totimespan("12:00:00") && @nowTS < totimespan("12:50:00")
THEN SET @@= 240;
/** 12:50 - 15:00 **/
ELSEIF @nowTS >= totimespan("12:50:00") && @nowTS < totimespan("15:00:00")
THEN SET @@= 240 + totalminutes(@now - (bday(@now) +totimespan("12:50:00")));
/**พัก 15:00 - 15:15 **/
ELSEIF @nowTS >= totimespan("15:00:00") && @nowTS < totimespan("15:15:00")
THEN SET @@= 370 ;
/**พัก 15:15 - เที่ยงคืน **/
ELSEIF @nowTS >= totimespan("15:15:00") && @nowTS < totimespan("24:00:00")
THEN SET @@= 370 + totalminutes(@now - (bday(@now) +totimespan("15:15:00")));
/** เที่ยงคืนถึงก่อนแปดโมง **/
ELSEIF @nowTS >= totimespan("0:00:00") && @nowTS < totimespan("8:00:00")
THEN SET @@= 895 + totalminutes(@nowTS);
/** ผลลัพธ์ TARGET ที่คำนวนได้ ณ ขณะนี้ **/
SET @@ = @@ * @tpm;
END
กรณีมี OT หลากหลายแบบที่จำเป็นต้องรอการวางแผนแล้วกำหนดว่าจะมีOTกี่ชมกี่นาทีซึ่งแต่ละวันอาจจะไม่เหมือนกันเราจะคำนวนTargetอย่างไร?
ในกรณีที่มีOTจะทำให้เวลาการหยุดทำงานในวันที่มี OTแตกต่างจากปกติและยิ่งมีOTที่แตกต่างกันบางวัน3ชั่วโมง บางวัน2ชัวโมง บางวันเป็นOTในวันหยุด เป็นต้น เราสามารถใช้ฟีเจอร์Value SetsของGENESIS64จัดการได้ด้วยการสร้างการคำนวนTargetหลายแบบตามจำนวนOTรวมทั้งวันปกติที่มีอยู่ แล้วใช้Value SetsเลือกGlobal Expressionที่เราสร้างไว้หลายแบบ ว่าจะใช้การคำนวนแบบไหนก็จะได้Real-Time Targetตามที่ต้องการนั่นเอง และถ้าต้องการเซตค่าอัตโนมัติไว้ล่วงหน้าว่าช่วงเวลาไหนใช้Target Expressionแบบไหนก็สามารถใช้ValueSetsใน ScheduleWorXกำหนดค่าแทนValue Setsปกติได้

ซื้อ OPC / SCADA ที่ www.eda.co.th และ www.edagroups.com