GENESIS32 และ GENESIS64 สามารถเก็บข้อมูลจากOPC Serverด้วยTrendWorX แต่ถ้าต้องการเก็บข้อมูลในรูปแบบที่เราต้องการเช่นสามารถออกแบบคอลัมน์และการจัดเรียงคอลัมน์ตามต้องการได้เองก็สามารถใช้ScriptWorXซึ่งมีความยืดหยุ่นในก่ารเก็บข้อมูลจากOPC Serverไว้ในDatabaseได้ บทความนี้จะแสดงตัวอย่างการเก็บในMS SQLครับ
สร้างตารางเก็บข้อมูล
ก่อนอื่นสร้างตารางเก็บข้อมูลในMS SQL Server เสียก่อน เช่นในตัวอย่างนี้สร้างตารางชื่อswxที่มีคอลัมน์time_date, v1, v2 เพื่อเก็บค่าวันเวลาและค่าOPC tagสองตัวตามลำดับ โดยเก็บในDtabaseชื่อtestในMS SQL Server (เราสามารถออกแบบคอลัมน์ได้ตามที่ต้องการ)
สร้างScriptในScriptWorX
เปิดโปรแกรมScriptWorX 2010หรือใหม่กว่าขึ้นมา(โมดูลหนึ่งของGENESIS32/GENESIS64)แล้ว คลิ้กขวาที่โปรเจ็คที่สร้างขึ้นมาแล้ว > เลือก New > Designer/Threadเพื่อสร้างDesignerขึ้นมาใหม่
ตั้งชื่อDesignerเช่น dbrec แล้วคลิ้กApply
สร้าง New > Script
ตั้งชื่อScriptเช่นrec1 จากนั้นคลิ้กปุ่ม…เพื่อเลือกTriggerมาสั่งงานScriptให้ทำงาน
ในที่นี้จะให้Scriptทำงานทุก 15 วินาทีก็เลือกTime TriggerคือEvery 15 sec แล้วคลิ้กOK
คลิ้กApply แล้วคลิ้กEdit VBA Codeเพื่อเข้าไปเขียนโค้ด
โปรแกรมScriptWorXจะเปิดโค้ดดังรูป จะพบSubชื่อเดียวกับScriptที่ตั้งชื่อไว้ และจะให้เราเขียนโค้ดใต้ตัวอักษรสีเขียว
โค้ดดังต่อไปนี้ใช้ในการสั่งบันทึกข้อมูลลงใน MS SQL Serever
Shell "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -S (local)\sqlexpress2 -d test -Q ""insert into swx (v1,v2,time_date) values (" & v1 & "," & v2 & ",getdate())"""
ซึ่งจะอยู่ในรูปแบบ
Shell “พาธโปรแกรมsqlcmd –S ชื่อคอมพิวเตอร์\ชื่อInstance –d ชื่อDatabase –Q ""คำสั่งQueryที่ต้องการ””
ซึ่ง –S ใช้ระบุชื่อคอมพิวเตอร์และInstance
-d ใช้ระบุชื่อDatabase
-Q ใช้ระบุQuery String ซึ่งในที่นี้ใช้คำสั่งInsert
พาธของโปรแกรม MS SQL Management Studio (sqlcmd.exe) ของผมอยู่ใน C:\Program Files\Microsoft SQL Server\100\Tools\Binn\ (ค้นหาไฟล์ sqlcmd.exe ก็จะรู้พาธที่แท้จริง)
ส่วนชื่อคอมพิวเตอร์และInstanceในที่นี้คือ (local)\sqlexpress2 (ดูจากโปรแกรมMS SQL Management Studio)
ชื่อของDatabaseคือ test และตารางข้อมูลชื่อswxโดยจะInserข้อมูลในคอลัมน์v1, v2 และ time_date
ทดสอบเก็บค่า Random
ทดสอบเก็บค่าRandomโดยใช้โค้ดดังต่อไปนี้
Public Sub rec1(td As TriggerData)
On Error GoTo ErrHandler
' TODO: Add your code here
Dim v1 As Variant, v2 As Variant
Randomize (DateTime.Second(DateTime.Now))
v1 = Rnd(1) * 100
v2 = Rnd(2) * 100
Shell "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -S (local)\sqlexpress2 -d test -Q ""insert into swx (v1,v2,time_date) values (" & v1 & "," & v2 & ",getdate())"""
Exit Sub
ErrHandler:
g.ConsoleMsg MSG_SEVERE_ERROR, "Script", "'rec1' failed"
End Sub
จากโค้ดจะเป็นการนำค่าRandomมาเก็บในตัวแปร v1 และ v2 ก่อนที่จะเอา v1, v2 ไปInserในMS sQLด้วยคำสั่งShell
ทำการบันทึกไฟล์โดยคลิ้กไอคอนSave
สร้างไฟล์ DLL ดังรูป
กลัมาที่หน้าScriptWorxปกติ แล้วเลือก Make All VBA DLLs
แล้วคลิ้กไฟจราจรให้เป็นสีเขียวเพื่อทดสอบ
ข้อมูลจากค่าRandomจะถูกเก็บในคอลัมน์ v1, v2 ทุก 15 วินาที พร้อมวันที่เวลา
ทดสอบเก็บค่าOPC tag
เปลี่ยนจากค่าRandomเป็นค่าจากOPC Severได้ โดย
ก่อนอื่นเลือกเมนู Tools > References แล้วเลือกGenClientWrapper 1.0 Type Library เพื่อให้สามารถใช้ไลบรารี่เกี่ยวกับการติดต่อOPC Serverจากนั้นคลิ้กOK
เปลี่ยนโค้ดจากที่ให้ v1, v2 รับค่าจาก Random มาเป็นรับค่าจากOPC tag
Public Sub rec1(td As TriggerData)
On Error GoTo ErrHandler
' TODO: Add your code here
Dim v1 As Variant, v2 As Variant
Dim gc(1 To 2) As New OpcHelper
v1 = gc(1).Read("ICONICS.Simulator.1\SimulatePLC.Sine")
v2 = gc(2).Read("ICONICS.Simulator.1\SimulatePLC.Random")
Shell "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -S (local)\sqlexpress2 -d test -Q ""insert into swx (v1,v2,time_date) values (" & v1 & "," & v2 & ",getdate())"""
Exit Sub
ErrHandler:
g.ConsoleMsg MSG_SEVERE_ERROR, "Script", "'rec1' failed"
End Sub
จากโค้ด ให้v1รับค่าจากOPC tagชื่อSine และv2รับค่าจากRandom (เราสามารถCopyพาธของOPC tagมาจากProcessPoint.นGrahWorXได้)
จากนั้น Save และเลือก File > Make … DLL
กลับไปที่หน้า ScriptWorXปกติแล้วเลือก File > Make All VBA DLLs
รันScriptWorXเพื่อทดสอบค่าจากOPC tagก็จะถูกเก็บในตารางที่เราออกแบบไว้
ประโยชน์ของการทำDataLoggerวิธีนี้คือความยืดหยุ่น ออกแบบตารางตามต้องการและจัดดเรียงคอลัมน์ได้ตามที่เรากำหนดครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น