Posted on

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)

รายละเอียด DeviceXPlorer OPC Server