เปลี่ยน IP ของ OPC tag ตาม IP ที่ใช้งานได้ (Advance)

GNESIS32 มีอ็อปชั่นเพื่อทำ Redundancy ระบบได้ แต่หากเราจะใช้ Script ง่าย ๆ เพื่อเปลี่ยน IP ของ OPC tag ก็สามารถทำได้ ยกตัวอย่างเช่นเราติดต่อกับ OPC Server ที่มีการ์ด Ethernet 2 ตัวในเครื่องเดียวกันเพื่อทำการสำรองช่องทางการสื่อสารกับ OPC Server หรือ SCADA Server เมื่อการ์ด Ethernet ตัวใดตัวหนึ่งไม่สามารถติดต่อได้ก็ให้เปลี่ยนไปติดต่ออีกการ์ดหนุึ่งโดยไม่ต้องรอ Windows ให้ทำการแปลชื่อ Host ซึ่งใช้เวลานาน

ในตัวอย่างนี้เขียน Script ทำงานบน GraphWorX32 อย่างเดียวเนื่องจากใช้งานง่ายและส่งไฟล์ให้ผู้ใช้งานเพื่อทำงานทดสอบได้สะดวกครับ

สภาพแวดล้อมในการทดสอบ

– PC1 มี Ethernet card 2 ชุดคือ IP = 192.168.1.11 และ 192.168.1.12 (Main)มี OPC Server อยู่และมี GenBroker ติดตั้งไว้และ Start GenBroker Service แบบอัตโนมัติ

– PC2 มี GENESIS32 ติดตั้งอยู่

เราจะเขียนโค้ดใน GraphWorX32 บน PC2

 

หลักการของ Script

– สร้าง Global Alias ขึ้นมาชื่อ Node เพื่อเอาไปใช้ใน OPC tag เช่น

\\<#Node#>\KEPware.KEPServerEx.V4\Channel_0_User_Defined.Random.Random1

– ตรวจสอบ Quality ของสัญญาณบน OPC Server ของ PC1 ถ้ามีค่า 192 (Good) ก็ให้เซต Node เป็น IP Address หลักคือ 192.168.1.12 ถ้า Quality ไม่ใช่ 192 ให้เปลี่ยน Node เป็น 192.168.1.11 โดยตรวจสอบทุก 5 วินาที เช่นนี้ จะทำให้ Node เปลี่ยนไปใช้ Ethernet Card ตัวสำรองหากตัว Main ไม่สามารถใช้งานได้ และกลับมาเป็นค่า IP ของตัว Main อัตโนมัติ หากกลับมาใช้ได้ตามปกติ

 

ก่อนอื่นสร้าง Global Theme ชื่อ Nodeในโปรแกรม Global Alias Configuratorตามรูปซึ่งมี Item สามตัวคือ NodeA, NodeB, NodeC (ถ้ามี) โดยให้ NodeA เป็น Default แล้วคลิ้ก Apply

image

จากนั้นสร้าง Alias ชื่อ Node ขึ้นมาแล้วลิงค์กับ Theme ชื่อเดียวกันที่สร้างก่อนหน้านี้

image

กำหนดค่าใน Alias Item เป็นค่า IP Address ที่ต้องการ เช่น NodeA เป็น IP Main คือ 192.168.1.12 จนครบแล้วคลิ้ก Apply

image

เปิด GraphWorX32 เอา ProcessPoint มาวาง 2 ตัว เป็นตัวตรวจ Quality และตัวทดสอบ และเอา Checkbox มาวางเพื่อทำงานเป็น Timer

image

สำหรับ ProcessPoint ที่ตรวจสอบ Quality ให้ลิงค์กับสัญญาณจาก OPC Server ใน PC1 และใช้ฟังก์ชั่น quality() เพื่อตรวจสอบ และตั้งชื่อเป็น ppt1

image

ใน CheckBox จะมีการเซตให้ทำงานเป็น Timer ดังรูป โดยใช้ Action แบบ RunScript และตั้ง Interval เป็น 5000 มิลลิวินาที (ทุก 5 วินาทีจะรันสคริปต์) จากนั้นคลิ้กปุ่ม Create เข้าไปตั้งชื่อ Script เช่นเป็น Timer

image

ใส่โค้ดเข้าไป

Sub Timer(o As GwxPick)
Dim txt As GwxPoint, qty As Integer

Set txt = ThisDisplay.GetPointObjectFromName(ThisDisplay.GetDynamicObjectFromName("ppt1").dataSource)
qty = txt.Value

If qty = 192 Then
    ThisDisplay.SetGASThemes "Node=NodeA;"
Else
    ThisDisplay.SetGASThemes "Node=NodeB;"
End If

End Sub

การทำงานของโค้ดคืออ่านค่าจาก ProcessPoint ชื่อ ppt1 ถ้ามีค่า 192 ก็ให้กำหนดค่า Global Alias Theme เป็น NodeA (ซึ่งมีค่าเป็น 192.168.1.12) ถ้าไม่ใช่ก็ให้เป็น NodeB นั่นเอง

เวลาเอา Global Alias ไปใช้งานก็เอาไปใส่แทนที่ตำแหน่ง IP ดังรูปใน OPC tag ตัวทดสอบ

image

ทดสอบรันก็จะพบว่าถ้าเราถอดสาย LAN ออกจาก Ethernet Card ตัวหลัก สักพักจะมีการเปลี่ยน Node เป็น NodeB ซึ่งจะได้ค่า IP = 192.168.1.11 ที่ใช้งานได้

image

ถ้าเสียบสาย LAN เข้าไว้เหมือนเดิม สักครู่จะทำให้ได้ IP กลับมาเป็น 192.168.1.12

image

เทคนิคเพิ่มเติม เวลาเอา GraphWorX ไฟล์ดังกล่าวไปใช้งานเราอาจตั้งให้ทำงานโดยย่อหน้าไปไว้บริเวร Task bar อัตโนมัติ และตั้ง Security ไว้ไม่ให้ใครที่ไม่เกี่ยวข้องปิดการทำงานได้ การสั่งให้ไฟล์ดังกล่าวทำงานสามารถตั้งใน GENESIS32 Tool Tray ได้ โดยกำหนดในรายการ Custom

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s