COPC32: นับชั่วโมงการทำงานของเครื่องจักร

ตัวอย่างการสร้างโปรเจ็คSCADAด้วยCOPC32เพื่อนับชั่วโมงการทำงานของเครื่องจักรในที่นี้จะใช้COPC32บนVisual Studio Express (ท่านสามารถชมVDOการใชงานCOPC32บนVisual Studio เบื้องต้นที่นี่)

 

หลักการ

  • ใช้OPC ServerของKepwareเป็นตัวเก็บชั่วโมงการทำงาน
  • ใช้COPC32บนVisual Studio Expressเป็นตัวบวกเวลาเพิ่ม โดยจะทำงานเมื่อสถานะของเครื่องจักรONเท่านั้น

สร้างOPC tagเพื่อเก็บเวลาการทำงาน

เปิดKEPServerEx 5 Configuraionแล้วสร้างChannelใหม่ขึ้นมา

image

ใช้DriverแบบSimulator (ฟรี)

image

คลิ้กNextต่อไปจนจบขั้นตอนสร้างChannel

สร้างDeviceขึ้นมา

image

ตั้งชื่อDeviceแล้วคลิ้กNextต่อไปจนจบขั้นตอนการสร้างDevice

image

สร้างOPC Tagเพื่อเก็บเวลาการทำงานเครื่องจักรโดยคลิ้กที่Click to add a static tag…

image

ตั้งชื่อOPC tagเช่นMachine1 (เพื่อเก็บเวลาการทำงานของเครื่องจักรที่1) กำหนดAddressเป็นk0000 (ใช้ได้ตั้งแต่k0000-k9996) แล้วคลิ้ก OK

image

กำหนดให้เก็บข้อมูลไว้ในดิสก์(เพื่อไม่ให้ข้อมูลหายเวลาRestart) โดยดับเบิ้ลคลิ้กที่Channelแล้วเลือกอ็อปชั่น “Enable item persistence”

image

 

สร้างแอพลิเคชั่นเก็บเวลาลงในOPC Tagด้วยCOPC32

สร้างโปรเจ็คใหม่แบบWindows Forms Applicationด้วยVisual Studio (Visual Basic)

image

แล้ววางCOPC32จากทูลบ็อกซ์ลงไปในฟอร์ม (ต้องติดตั้งCOPC32และเพิ่มลงในทูลบ็อกซ์เสียก่อนโดยดูได้จากVDOข้างต้น แล้วเปิดPropertyของCOPC32

image

กำหนดว่าจะติดต่อOPC Serverชื่อKepware.KEPServerEX.V5

image

เลือกOPC tagที่สร้างไว้แล้ว

image

ถ้าใช้Kepwareติดต่อกับเครื่องจักรอยู่ก็ให้เอาสัญญาณสถานะของเครื่องจักรเข้ามาใช้งานด้วย (ตัวอย่างนี้ใช้สัญญาณTag2ในDevice1ของChannel1เป็นสถานะของเครื่องจักร) แต่ถ้าใช้OPC Serverตัวอื่นที่นอกเหนือจากKepwareก็ให้เอาCOPC32มาวางบนฟอร์มอีกตัวหนึ่งเพื่อติดต่อOPC tagที่เป็นสถานะของเครื่องจักร

image

กำหนดScan rateของCOPC32เป็น50msec (0.05 วินาที) แล้วคลิ้กOK

image

นำTimerมาวางบนฟอร์ม เพื่อให้เป็นตัวตรวจสอบสถานะเครื่องจักรและนับเวลาเพิ่ม

image

เลือกบริเวณฟอร์มแล้วดับเบิ้ลคลิ้กที่อีเวนต์ชื่อLoadเพื่อสร้างโค้อการติดต่อOPC Serverขณะที่โปรแกรมถูกเปิดขึ้นมา

image

สั่งให้Axcop1(ชื่อของCOPC32ตัวแรก)ติดต่อOPC Serverที่ระบุในPropertyด้วยคำสั่งAxcopc1.cnnec()

image

กลับไปที่Form1แล้วดับเบิ้ลคลิ้กอีเวนต์ของฟอร์มชื่อFormClosingเพื่อสร้างโค้ดตัดการติดต่อOPC Serverเมื่อโปรแกรมกำลังจะปิด

image

สร้างโค้ดตัดการติดต่อOPC Sever โดยใช้Tryก่อนเพื่ออป้องกันการตัดการติดต่อซ้ำ

image

แล้วค่อยใส่คำสั่งDisconnect

image

สร้างโค้ดในTimer1โดยเลือกTimer1บนฟอร์มจากนั้นดับเบิ้ลคลิ้กที่อีเวนต์ของTimerชื่อTick

image

กำหนดPropertyของTimer1ให้ทำงานทุก 1000 msec และEnabled = Trueเพื่อให้ทำงาน

image

สร้างโค้ดการเก็บเวลา ซึ่งโค้ดจะตรวจสอบOPC tagที่เป็นสถานะของเครื่องจักรก่อนว่าONอยู่หรือไม่ ถ้าONอยู่ก็ให้บวกเวลาเข้าไปอีก1วินาทีเนื่องจากTimerทำงานทุก1วินาที

image

โดยเวลาระบุหมายเลขTagในโค้ดให้ดูจากลำดับTagที่เรากำหนดในPropertyของCOPC32 เช่นในตัวอย่างนี้tagลำดับ0คือเวลาการทำงาน และ1คือสถานะเครื่องจักร

image

แสดงค่าเวลาที่นับได้บนฟอร์ม

ให้นำLabelลงมาวางบนฟอร์มจากนั้น เลือกCOPC32บนฟอร์มแล้วดับเบิ้ลคลิ้กที่อีเวนต์datChangeเพื่อเข้าไปเขียนโค้ดแสดงค่าของOPC tagไว้บนLabel

image

เขียนคำสั่ง Label1.Text = Axcopc1.GetVl(0) เข้าไป (ในงานจริงควรเก็บค่าOPC tagไว้ในตัวแปรก่อนเพื่อไม่ให้อ่านค่าซ้ำๆหลายรอบแล้วค่อยเอาค่าจากตัวแปรมาใช้งาน อ่านรายละเอียดที่นี่)

image

ทำการSaveและรันโปรแกรม

image

ทดสอบเปลี่ยนสถานะเครื่องจักรในKEPServerEx (เนื่องจากในตัวอย่างนี้ใช้สัญญาณSimulate)

image

image

image

เวลาจะถูกนับเพิ่มเข้าไปในOPC tagที่ใช้เก็บระยะเวลาการทำงานของเครื่องจักร

image

เวลาที่แสดงทางLabel

image

ก้าวต่อไป

  • หากต้องการเปลี่ยนให้นับเวลาครั้งละนานขึ้นเช่นจากเดิมนับทีละ1วินาที เราอาจจะปรับเพิ่มเป็นทุกๆ1นาที ถ้าต้องการแบบนี้ก็ให้ปรับPropertyชื่อIntervalของTimerจาก1000msecเป็น60000msec(1นาที) ค่าของเวลาก็จะกลายเป็น1นาทีแทน1วินาที

ดาวน์โหลดCOPC32

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s