Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts

1.03.2026

ขั้นตอนการเขียนโค้ด OPC UA Server สำหรับเครื่องจักร Legacy

ในยุค Industry 4.0 การดึงข้อมูลจากเครื่องจักรรุ่นเก่า (Legacy Machines) มาวิเคราะห์เป็นเรื่องสำคัญ แต่ปัญหาคือเครื่องเหล่านี้มักไม่รองรับโปรโตคอลสมัยใหม่ บทความนี้จะสอน ขั้นตอนการเขียนโค้ด OPC UA Server เพื่อเปลี่ยนเครื่องจักรดั้งเดิมให้สื่อสารผ่านโครงข่ายอัจฉริยะได้

ทำไมต้องใช้ OPC UA กับเครื่องจักร Legacy?

เครื่องจักรเก่ามักสื่อสารผ่าน Modbus RTU หรือ Serial Port การสร้าง OPC UA Server ทำหน้าที่เป็นตัวกลาง (Gateway) ช่วยให้เราส่งข้อมูลเข้าสู่ระบบ ERP, MES หรือ Cloud ได้อย่างปลอดภัยและเป็นมาตรฐานเดียวกัน

ขั้นตอนการพัฒนา OPC UA Server

1. การติดตั้ง Library ที่จำเป็น

เราจะใช้ภาษา Python และ Library python-opcua หรือ opcua-asyncio ซึ่งเป็นที่นิยมที่สุดในการทำ Industrial IoT (IIoT)

pip install asyncua

2. โครงสร้างโค้ด Python สำหรับ OPC UA Server

นี่คือตัวอย่างโค้ดเบื้องต้นในการประกาศ Node และส่งค่าจากเครื่องจักร:

import asyncio
from asyncua import Server

async def main():
    # สร้าง Server Object
    server = Server()
    await server.init()
    server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

    # ตั้งค่า Namespace
    uri = "http://examples.freeopcua.github.io"
    idx = await server.register_namespace(uri)

    # สร้าง Object สำหรับเครื่องจักร
    myobj = await server.nodes.objects.add_object(idx, "LegacyMachine01")
    
    # เพิ่มตัวแปร (เช่น อุณหภูมิ หรือ สถานะเครื่อง)
    temp_var = await myobj.add_variable(idx, "Temperature", 0.0)
    await temp_var.set_writable() # อนุญาตให้เขียนค่าได้

    async with server:
        print("OPC UA Server เริ่มทำงานที่: opc.tcp://localhost:4840/")
        while True:
            # จำลองการอ่านค่าจาก Legacy (เช่น Read Modbus)
            new_temp = 25.5 
            await temp_var.set_value(new_temp)
            await asyncio.sleep(1)

if __name__ == "__main__":
    asyncio.run(main())
  

3. การทำ Data Mapping

หัวใจสำคัญของ Legacy Integration คือการ Map ข้อมูลจาก Register ของเครื่องจักร (เช่น Modbus Address 40001) เข้าสู่ OPC UA Node ID เพื่อให้ระบบ IT ภายนอกอ่านค่าได้โดยตรง

สรุป

การเขียนโค้ด OPC UA Server ไม่ได้ยากอย่างที่คิด และเป็นกุญแจสำคัญในการทำ Digital Transformation สำหรับโรงงานที่มีเครื่องจักรเก่า การใช้โปรโตคอลนี้ช่วยเรื่องความปลอดภัย (Security) และความสามารถในการขยายระบบในอนาคต

OPC UA, Legacy Machine, Industrial IoT, Python, Smart Factory, Automation, IIoT, PLC, System Integration

1.02.2026

การสร้าง API สำหรับเชื่อมต่อ OPC UA: เปลี่ยนข้อมูลเครื่องจักรให้เป็นระบบดิจิทัล

ในยุค Industry 4.0 การดึงข้อมูลจากเครื่องจักรผ่านโปรโตคอล OPC UA (Open Platform Communications Unified Architecture) เพื่อนำไปใช้งานใน Web Application หรือระบบ ERP เป็นสิ่งสำคัญมาก บทความนี้จะสอนวิธีการสร้าง API Gateway ง่ายๆ ด้วย Python เพื่อเป็นตัวกลางในการเชื่อมต่อข้อมูล

ทำไมต้องสร้าง API สำหรับ OPC UA?

โดยปกติแล้ว OPC UA ทำงานบนระบบ Binary หรือ TCP ซึ่งยากต่อการเรียกใช้จากหน้าเว็บโดยตรง การสร้าง RESTful API จะช่วยให้:

  • เชื่อมต่อกับ Dashboard (React, Vue, Angular) ได้ง่าย
  • รองรับการส่งข้อมูลไปยังระบบ Cloud และ Database
  • เพิ่มความปลอดภัยในการเข้าถึงข้อมูล Real-time

ตัวอย่าง Code: Python API สำหรับดึงข้อมูล OPC UA

เราจะใช้ Library asyncua สำหรับเชื่อมต่อ OPC UA และ FastAPI สำหรับสร้าง API ชุดข้อมูลนี้จะแสดงวิธีการอ่านค่า Temperature จาก Sensor:


from fastapi import FastAPI
from asyncua import Client
import asyncio

app = FastAPI()
OPC_UA_SERVER_URL = "opc.tcp://localhost:4840"

async def get_opc_data(node_id):
    async with Client(url=OPC_UA_SERVER_URL) as client:
        # เชื่อมต่อกับ Server
        node = client.get_node(node_id)
        value = await node.read_value()
        return value

@app.get("/api/sensor/temperature")
async def read_temperature():
    # ระบุ Node ID ของ Sensor ที่ต้องการ
    node_id = "ns=2;i=2" 
    temp_value = await get_opc_data(node_id)
    return {"sensor": "Temperature", "value": temp_value, "unit": "Celsius"}

วิธีนำไปใช้งาน (Best Practices)

การสร้าง OPC UA API Integration ที่ดีควรคำนึงถึงเรื่อง Security เช่นการใช้ Username/Password และการทำ Caching เพื่อไม่ให้ Query ไปที่ PLC บ่อยเกินไปจนกระทบต่อประสิทธิภาพของเครื่องจักร

สรุปการสร้าง API เชื่อมต่อ OPC UA คือกุญแจสำคัญในการทำ Digital Transformation ในโรงงานอุตสาหกรรม หากคุณสนใจเรื่อง IIoT และ Smart Factory อย่าลืมติดตามบทความต่อไป!

OPC UA, API Development, Python, IIoT, Industry 4.0, Smart Factory, REST API, Automation

12.29.2025

การพัฒนา OPC UA Server สำหรับเครื่องจักรรุ่นเก่า: เปลี่ยนเครื่องจักร Legacy ให้เป็น Smart Factory

ในยุค Industry 4.0 ปัญหาใหญ่ที่หลายโรงงานเจอคือเครื่องจักรรุ่นเก่า (Legacy Machines) ที่ยังทำงานได้ดีอยู่ แต่ไม่รองรับการเชื่อมต่อเครือข่ายสมัยใหม่ บทความนี้จะเจาะลึกการพัฒนา OPC UA Server เพื่อทำหน้าที่เป็นตัวกลางในการดึงข้อมูลจากเครื่องจักรเก่าส่งไปยังระบบ Cloud หรือ ERP

ทำไมต้องใช้ OPC UA กับเครื่องจักรรุ่นเก่า?

เครื่องจักรรุ่นเก่าส่วนใหญ่มักสื่อสารผ่านโปรโตคอลเฉพาะตัว เช่น Modbus RTU, Serial Port หรือรุ่นที่เก่ากว่านั้น การสร้าง OPC UA Server ครอบทับช่วยให้:

  • Data Standardization: เปลี่ยนข้อมูลดิบให้เป็นมาตรฐานสากล
  • Security: เพิ่มความปลอดภัยด้วยการเข้ารหัสข้อมูล (Encryption)
  • Interoperability: เชื่อมต่อกับซอฟต์แวร์ SCADA หรือ Power BI ได้ทันที

ขั้นตอนการพัฒนา (Implementation Steps)

เราสามารถใช้ Python ร่วมกับไลบรารี asyncua เพื่อสร้าง Gateway สำหรับอ่านค่าจาก PLC รุ่นเก่าผ่าน Modbus และส่งออกเป็น OPC UA

# ตัวอย่างโค้ด Python เบื้องต้น
import asyncio
from asyncua import Server

async def main():
    # สร้าง OPC UA Server
    server = Server()
    await server.init()
    server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

    # ตั้งค่า Namespace
    uri = "http://smartfactory.example.org"
    idx = await server.register_namespace(uri)

    # สร้าง Object สำหรับเครื่องจักรเก่า (Legacy Machine)
    myobj = await server.nodes.objects.add_object(idx, "Legacy_Machine_01")
    temp_sensor = await myobj.add_variable(idx, "Temperature", 0.0)
    await temp_sensor.set_writable()

    print("OPC UA Server started at opc.tcp://0.0.0.0:4840/")
    async with server:
        while True:
            await asyncio.sleep(1)
            # ตัวอย่างการจำลองการอ่านค่าจาก Modbus
            new_val = 25.5 
            await temp_sensor.write_value(new_val)

if __name__ == "__main__":
    asyncio.run(main())
    

สรุป

การพัฒนา OPC UA Server สำหรับเครื่องจักรรุ่นเก่า ไม่เพียงแต่ช่วยลดต้นทุนในการซื้อเครื่องจักรใหม่ แต่ยังเป็นการเปิดประตูสู่การทำ Digital Transformation ในภาคอุตสาหกรรมอย่างยั่งยืน

OPC UA, IIoT, Smart Factory, Industry 4.0, PLC, Python, Automation, Digital Transformation, Legacy System

เทคนิคการใช้เครื่องมือและเครื่องจักร

การรีไซเคิล (10) การทำเฟือง (8) การกัดเฟือง (7) การกลึงไม้ (6) การประกอบ (6) การผลิตรถยนต์ (6) การสร้างฟีดสกรู (6) การกลึงโลหะ (5) การสร้างรถยนต์ (5) การติดตั้ง (4) การผ่าไม้ฟืน (4) การทดลอง (3) การปรับตั้ง (3) การสร้างเครื่องกลึง (3) การกลึงใน (2) การกัดอลูมิเนียม (2) การทำเกลียวไม้ (2) การทำเฟอร์นิเจอร์ (2) การผลิตโซ่ (2) การล็อกมีดกลึง (2) การสาธิต (2) การกลึง (1) การกลึงทองแดง (1) การกลึงเงา (1) การควบคับหุ่นยนต์ (1) การดัดโค้ง (1) การตัดมุม45 (1) การตัดแผ่นเหล็ก (1) การต่อมุมฉาก (1) การทำแผ่นคลัชท์ (1) การทำโช๊คอัพ (1) การทำโต๊ะงาน (1) การทำไม้กระดาน (1) การปูพื้นคอนกรีต (1) การผลิตเชือก (1) การผลิตแผ่นคลัช (1) การผลิตโช๊กอัพ (1) การพับโค้ง (1) การพิมพ์ลายโลหะ (1) การวัดค่าการกลึง (1)

ประเภทของงานที่ใช้เครื่องมือและเครื่องจักร

งานไม้ (31) เครื่องคัดเหรียญ (25) เครื่องขัด (24) เครื่องขัดกระดาษทราย (21) เครื่องจักรทำขนม (19) เครื่องเชื่อม (16) งานโลหะแผ่น (15) เครื่องจักรบดย่อย (14) งานประดิษฐ์ (10) งานกลึงโลหะ (9) งานกัดโฟม (9) งานก่อสร้าง (7) งานกลึง (6) งานหล่อโลหะ (6) งานช่างไม้ (5) งานประปา (5) งานพับโลหะแผ่น (5) งานโลหะ (5) เครื่องคัดไข่ (5) เครื่องงอท่อโค้ง (5) เครื่องขัดไม้ (4) งานปูน (3) งานวายคัท (3) งานเชื่อม (3) งานกลึงไม้ (2) งานเครื่องกล (2) งานเชื่อมเ็หล็ก (2) งานกลึงท่อนไม้ (1) งานช่างก่อสร้าง (1) งานดัด (1) งานผนัง (1) งานแสดงหุ่นยนต์ (1) เครื่องขัดกระดาษทราย makita (1) เครื่องคว้านท่อ (1) เครื่องงอท่อพีวีซี (1) เครื่องงอเหล็กH-Beam (1) เครื่องงอเหล็กแบบมือโยก (1) เครื่องซ่อมล้อแม็ก (1) เครื่องดัดกลมแผ่นอลู (1)

เกี่ยวกับอุปกรณ์ต่างๆ

3D printer DC มอเตอร์ Feed screw Gears Jig Jigจับเจาะ Jigเซาะร่องไม้ Motor Prints3D Robot Arm Table Saw Tool ของเครื่องCNC X-ลิฟท์ กบไสไม้ กระจกรถยนต์ กระจกใส กระดาษทราย กลไกมือหุ่นยนต์ กาวซิลิโคน ก้อนอิฐ คอนเวเยอร์ ฉนวนกันความร้อน ชั้นวางของ ชั้นวางสินค้า ชุดฝึก ชุดเฟือง บอลโลหะ ผ้าทราย มอเตอร์ มอเตอร์ไฟฟ้า อุปกรณ์ก่อสร้าง อุปกรณ์งานไม้ อุปกรณ์จับยึด อุปกรณ์ช่างไม้ อุปกรณ์ซ่อมเกลียว อุปกรณ์ดัดท่อ อุปกรณ์ดัดเหล็ก อุปกรณ์ตัดโฟม อุปกรณ์ต๊าปเกลียวกรู อุปกรณ์ม้วนเหล็ก อุปกรณ์ยกรถมอเตอร์ไซค์ อุปกรณ์ห้องครัว อุปกรณ์ห้องน้ำ อุปกรณ์เครื่องกลึง อุปกรณ์เครื่องมิลลิ่ง อุปกรณ์เครื่องเชื่อม แขนกลCNC