DeviceXPlorer OPC Server อ่านค่าจากอุปกรณ์Serialเช่นเครื่องชั่งได้ไหม?
DeviceXPlorer OPC Server อ่านค่าจากอุปกรณ์Serialเช่นเครื่องชั่งได้ไหม?
A: ปกติแล้วอุปกรณ์Serial เช่น เครื่องชั่ง สามารถติดต่อผ่านHMI/PLCมาก่อนได้ แต่หากต้องการติดต่อโดยตรงกับ DeviceXPlorer ก็มีช่องทางดังนี้
ในDeviceXPlorerมีLua Script สามารถใช้เป็นช่องทางติดต่อกับ Serial COM Port ได้ แต่เนื่องจากLuaไม่มีLibraryในการอ่านCOM Portมาให้ เราต้องติดต่อLibraryนี้เช่น ขั้นแรกต้องติดตั้งไลบรารี luaserialดาวน์โหลดได้จากLuaRocks หรือจากGitHub: https://github.com/hleuwer/luaserial
นี่คือตัวอย่างLua Scriptเพื่ออ่านค่าจากCOM Port
-- Load luaserial library
local serial = require("luaserial");
-- Open COM1 (adjust the port name and settings as needed)
local portname = "COM1";
local baudrate = 9600;
local databits = 8;
local parity = "none";
local stopbits = 1;
local timeout = 1000; -- milliseconds
local port, err = serial.open(portname, baudrate, databits, parity, stopbits, timeout);
if not port then
@t("SYSTEM.str").Value = err;
return;
end;
print("Port opened successfully");
local all_data = ""; -- Initialize an empty string to accumulate the data
-- Read data from the serial port
while true do
local data, err = port:read(1); -- Read 1 byte
if not data then
if err then
all_data = err;
end;
break;
end;
all_data = all_data .. data; -- Concatenate the received byte to all_data
end;
-- Close the serial port
port:close();
@t("SYSTEM.str").Value = all_data;
จากตัวอย่าง ค่าที่อ่านได้จะเก็บไว้ในTagชื่อ str ใน SYSTEM (สร้างtag ชื่อ str ไว้ในDeviceชื่อSYSTEMก่อน โดยเป็นแบบString)