จะใช้ COPC32 บันทึกค่าสัญญาณจาก PLC, Controller ลงใน SQL Server อย่างไร?

การบันทึกข้อมูลจาก PLC ผ่าน OPC Server ด้วย COPC32 นั้นไม่ยากครับ ในที่นี้จะยกตัวอย่างโดยใช้ VB.Net 2008 Express ซึ่งดาวน์โหลดได้ฟรีที่ www.msdn.com หรือ ที่นี่ นะครับ

ในที่นี้จะสมมุติว่าเราเข้าใจการใช้งาน COPC32 มาแล้วนะครับ ถ้ายังไม่รู้โปรดดูได้ที่ www.eda.co.th

ดาวน์โหลดโค้ด | ชมการใช้แบบVDO

เมื่อเราติดตั้ง VB.Net 2005 Express, COPC32 และมี OPC Server ที่เชื่อมต่อ PLC, RTU, Controller, ฯลฯ เรียบร้อยแล้ว ให้สร้าง Project ใหม่ใน VB.Net ขึ้นมา แล้วใช้งาน COPC32 ตามปกติ (ระบุ OPC Server, OPC tag และ Update rate ให้เรียบร้อย) เราจะเขียนโค้ดลงไปดังนี้

 

Private Sub Insert()

Dim sql As String = ” INSERT INTO table3([Time_Date], [val1], [val2], [val3]) VALUES (@Time_Date, @val1, @val2, @val3)”

          Dim param(3) As SqlParameter

        param(0) = New SqlParameter(“@Time_Date”, SqlDbType.DateTime)
param(0).Value = DateTime.Now

        param(1) = New SqlParameter(“@val1”, SqlDbType.Float)
param(1).Value = Axcopc1.GetVl(0)

        param(2) = New SqlParameter(“@val2”, SqlDbType.Float)
param(2).Value = Axcopc1.GetVl(1)

        param(3) = New SqlParameter(“@val3”, SqlDbType.Float)
param(3).Value = Axcopc1.GetVl(2)


Dim sConnection As New SqlConnection(“server=(local)\sqlexpress;uid=user;pwd=12345;database=TWXLog”)
sConnection.Open()


Dim command As SqlCommand = sConnection.CreateCommand()
command.CommandText = sql

        command.Parameters.AddRange(param)
        Dim nResult As Integer = command.ExecuteNonQuery()

        sConnection.Close()
command.Dispose()

End Sub

 

โค้ดดังกล่าวเป็นการสร้าง Sub ที่ชื่อ Insert ซึ่งจะนำค่าจาก COPC32 ไปเก็บใน SQL Server โดยมีข้อที่เป็นจุดสนใจดังนี้

1. การกำหนดชื่อ SQL Server, Database รวมทั้ง user, password

Dim sConnection As New SqlConnection(“server=(local)\sqlexpress;uid=user;pwd=12345;database=TWXLog”)

 

ในที่นี้ชื่อ Server คือ (loacl)\sqlexpress และ Database คือ TWXLog

 

2. มีการเก็บข้อมููลในตารางชื่อ table3 ในคอลัมน์ Time_Date, val1, val2, val3 ผ่านพารามิเตอร์@Time_Date, @val1, @val2, @val3 ตามลำดับ

Dim sql As String = ” INSERT INTO table3([Time_Date], [val1], [val2], [val3]) VALUES (@Time_Date, @val1, @val2, @val3)”

image

รูปที่ 1 แสดงประเภทตัวแปรข้อมูลของตาราง table3

ดังนั้นในโค้ดเราจึงต้องประกาศพารามิเตอร์ให้เป็นข้อมูลประเภทเดียวกับในตารางด้วยดังนี้

param(0) = New SqlParameter(“@Time_Date”, SqlDbType.DateTime)
param(0).Value = DateTime.Now

param(1) = New SqlParameter(“@val1”, SqlDbType.Float)
param(1).Value = Axcopc1.GetVl(0)

param(2) = New SqlParameter(“@val2”, SqlDbType.Float)
param(2).Value = Axcopc1.GetVl(1)

param(3) = New SqlParameter(“@val3”, SqlDbType.Float)
param(3).Value = Axcopc1.GetVl(2)

เพราะพารามิเตอร์เหล่านี้จะรับค่าจาก COPC32 ไปให้ SQL Server

 

การใช้งาน Sub ที่เราสร้างขึ้นมานี้ สามารถเรียกใช้บน Timer หรือ Dat_Change ของ COPC32 ก็ได้ เช่น

ดาวน์โหลดโค้ด

This entry was posted in Uncategorized. Bookmark the permalink.

1 Response to จะใช้ COPC32 บันทึกค่าสัญญาณจาก PLC, Controller ลงใน SQL Server อย่างไร?

  1. Theerapon Wonglek says:

    ขอบคุณสำหรับบทความดีๆและมีประโยชน์มากครับ อยากให้มีการนำเสนอตัวอย่าง HMI บนแอนดรอยบ้างนะครับ เพราะเป็นระบบปฏิบัติการที่น่าศึกษามากในขณะนี้ อีกทั้งยังนำมาใช้ร่วมกับแท็ปเพล็ทได้ดีอีกด้วยครับ (กล่าวหมายถึงตัวฮาร์ดแวร์น่ะครับ หาซื้อง่าย ราคาถูก แถมนำมาทำ Mobile HMI ได้ด้วย อีกทั้งได้หน้าจอสัมผัสด้วยนะครับ…

Leave a comment