การพัฒนาโปรแกรมบันทึกข้อมูล DataLogger ด้วย Node-NED
โปรแกรมควบคุมระบบอัตโนมัติ หรือโปรแกรมแสดงสถาะของระบบการผลิต (Realtime Monitoring) ส่วนใหญ่จะมีการเก็บข้อมูลต่างๆ ของระบบไว้ด้วย เพื่อนำข้อมูลมาวิเคราะห์ เพื่อแก้ไขปัญหา หรือปรับปรุงกระบวนการผลิตในอนาคต ซึ่งมีการเก็บข้อมูลแบบไฟล์ txt, csv หรือใช้ฐานข้อมูล SQL ในตัวอย่างนี้จะเป็นการเก็บข้อมูลแบบใช้ไฟล์ .csv และ .txt โดยมีรูปแบบการพัฒนาโปรแกรม จะใช้เครื่องมือในส่วนของ ตามภาพด้านล่าง
เชื่อมต่อฟังก์ชันทั้ง 3 และตั้งค่าต่างๆ ในฟังก์ชัน inject กำหนด path และชื่อไฟล์ในฟังก์ชัน write file และป้อนโค้ด javascript ในฟังก์ ตามภาพด้านล่าง
โค้ดคำสั่งใน function TimeStamp
var d = new Date();
var val1 = flow.get("val1")
var val2 = flow.get("val2")
var date = d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate()+"-"+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
msg.payload = date + "," + val1.toFixed(2) + "," + val2.toFixed(2)
return msg;
ทำการ Deploy โปรแกรม และคลิกกระตุ้นที่ฟังก์ชัน Inject (timestamp) และตรวจสอบไฟล์ .csv ตามที่ตั้งค่าไว้ หากบันทึกสำเร็จจากมีไฟล์ข้อมูล .csv เกิดขึ้น และปรากฏรูปแบบข้อมูลในไฟล์ตามภาพด้าล่าง
หากต้องการตั้งชื่อไฟล์เป็นรูปแบบ วัน เดือน ปี หรืออื่นๆ สามารถป้อนโค้ด javascript ในฟังก์ ตามภาพด้านล่าง
โค้ดคำสั่งใน function TimeStamp2
var d = new Date();
var value_1 = global.get('output1');
var value_2 = global.get('output2');
var date = d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate() + "-" + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
msg.payload = date + "," + value_1.toFixed(2) + "," + value_2.toFixed(2)
// Generate out file name pattern
msg.fname = "maplin_" + d.getFullYear() + "." + (d.getMonth() + 1) + "." + d.getDate() + ".csv";
// Full filename with path for the file node later
msg.filename = "C:/Users/user/Desktop/" + msg.fname;
msg.filecontent = msg.payload;
return msg;