Posted on

DeviceXPlorer OPC : Lua Script : หาค่าเวลาแบบมีmsec

บางครั้งเราจำเป็นต้องLogข้อมูลโดยเก็บเวลาที่มีหน่วยมิลลิวินาที(msec)ควบคู่ไปกับค่าของOPC tagลงในDatabase ตามข้อกำหนดของบางหน่วยงาน เราสามารถใช้Lua Scriptเพื่อสร้างเวลาที่อยู่ในรูปแบบ yyyy-MM-dd hh:mm:ss.fff ได้ดังนี้


@t("Device2.DT").Value = @t("SYSTEM.$Year").Value .. "-" .. 
@t("SYSTEM.$Month").Value .. "-" .. @t("SYSTEM.$Day").Value .. " " ..
@t("SYSTEM.$Hour").Value .. ":" .. @t("SYSTEM.$Min").Value .. ":" .. @t("SYSTEM.$Sec").Value .. "." ..
string.format("%03d",@t("SYSTEM.$Msec").Value);

โดย @t(“SYSTEM.$Year”).Value เป็นค่าปีปัจจุบัน เช่นเดียวกับ @t(“SYSTEM.$Hour”).Value เป็นค่าชั่วโมงปัจจุบัน เป็นต้น เราเอาค่าปี เดือน วัน ชม. นาที วินาที และ msec มาต่อกันเพื่อส่งให้ OPC tag Device2.DT

ส่วน string.format(“%03d”,@t(“SYSTEM.$Msec”).Value); เป็นการแสดงmsecในแบบเลขสามหลัก ซึ่ง %03d คือเลข3หลักมี0เป็นตัวเติมนั่นเองเช่น 056 เป็นต้น เราทำที่มิลลิวินาทีเท่านั้น ส่วนหน่วยเวลาอื่นไม่จำเป็นต้องจัดFormat

ตัวอย่างข้อมูลในpostgreSQL ที่เก็บค่าเวลาที่มีรูปแบบmsecที่สร้างจากScriptข้างต้น จากตัวอย่างมีสามคอลัมน์คือ Time_Date, v1 และ v2

“2023-11-04 20:06:45.154” 22 46
“2023-11-04 20:06:30.125” 44 39
“2023-11-04 20:06:15.128” 47 26
“2023-11-04 19:40:30.527” 42 98