ถ้าต้องการเก็บผลรวมของสัญญาณตัวเดียวเดี่ยว ๆ ไว้ในฐานข้อมูล เช่น ผลรวมแบบ Totalizer เป็นต้น เพื่อให้สามารถดึงสัญญาณมาแสดงแบบรายงานใน Excel หรือแอพลิเคชั่นต่าง ๆ ในภายหลังได้ วันนี้มีทิปเพื่อสร้าง Totalizer โดยตรงบน MS SQL มาฝากครับ
เมื่อเรารับสัญญาณเข้ามาเช่นจาก PLC และต้องการเอาค่ามารวมกับค่าก่อนหน้านี้ที่อ่านได้เช่น
10:00:00 AM อ่านได้ 5 ได้ผลรวม Totalizer = 5 10:00:01 AM อ่านได้ 30 ได้ผลรวม Totalizer = 35
ถ้ามีความต้องการแบบนี้เราสามารถทำได้บน TrendWorX32 Configurator อยู่แล้ว โดยสามารถเก็บค่าไว้ในฐานข้อมูลเช่น MS SQL, MySQL, MS Access เป็นต้น เพื่อนำมาแสดงย้อนหลังหรือนำไปทำรายงานด้วย Trend Report โดยมีการกำหนดให้เก็บแบบ Totalizer ดังรูปที่ 1
รูปที่ 1
แต่ถ้าหากเราต้องการเก็บในรูปแบบตารางง่าย ๆ แถวเดียว ในฐานข้อูมูล ไม่ใช่ข้อมูลหลายแถวที่มีการแสดงเวลาของข้อมูลในแต่ละแถว แต่มีแถวเดียวและบวกเพิ่มค่าในฟิลด์นั้นไปเรื่อย ๆ (เพื่อเอามาแสดงผลแบบง่าย ๆ ใน แอพต่าง ๆ) ก็มีอีกวิธีหนึ่งดังนี้
1. สร้างตาราง totaliz ในฐานข้อมูลให้มีฟิลด์ที่แสดงค่าปัจจุบันของสัญญาณ PLC (CurrentV) และฟิลด์ที่เก็บค่า Totalizer (TotalV) โดยสร้างฟิลด์ชื่อ ID เพื่อใช้เป็น Key ในการค้นข้อมูล แล้วใส่ข้อมูลเบื้องต้นตามรูป
2. สร้างจุดเชื่อมโยงฐานข้อมูลเพื่อชี้ไปยังฟิลด์ข้อมูลที่เก็บค่าในฐานข้อมูล MS SQL ตามปกติ โดยชี้ไปที่ฟิลด์ CurrentV ที่ใช้แสดงค่าปัจจุบันที่รับค่าจาก PLC 3. สร้าง Register ใน DataWorX โดยกำหนดให้ Input เป็นสัญญาณจาก PLC ตัวที่เราต้องการ และให้ Output เป็นสัญญาณ DataMining ที่เราสร้างขึ้นในข้อ 1 คือ CurrentV 4. สร้าง Trigger ใน MS SQL ให้มีการบวกค่า CurrentV กับ TotalV แล้วเก็บไว้ใน TotalV ดังนี้
CREATE TRIGGER [dbo].[totalizTrigger] ON [dbo].[totaliz] FOR INSERT, UPDATE AS IF UPDATE (CurrentV) UPDATE [totaliz] set [TotalV] = [TotalV] + [CurrentV]
จากข้อ 4 เราสร้าง Trigger ชื่อ totalizTrigger ขึ้นมาเพื่อตรวจสอบตารางชื่อ totaliz เมื่อมีการอัพเดทข้อมูลใหม่เข้ามาให้ CurrentV โดย DataWorX เช่นเปลี่ยนจากจากเดิม 0 ไปเป็น 5 ก็จะมีการบวกค่าเดิมคือ 0 (TotalV) กับค่าใหม่(CurrentV) คือ 5 แล้วเก็บไว้ใน TotalV
เพียงเท่านี้เราก็จะได้ Totalizer เก็บค่าไว้ในตารางข้อมูลให้เราแล้วครับ
รูปที่ 2
และถ้าจะเอาค่า TotalV มาแสดงใน GENESIS32 ก็ทำได้ผ่าน DataMining เช่นกันครับ
ดู VDO ขั้นตอนการทำทั้งหมด
VIDEO