หน้าแรกคู่มือIoTรับส่งข้อมูล PLC HMI Dashboard ด้วย Node-RED MQTT IoT
IOT
เริ่มต้น
18 นาที

รับส่งข้อมูล PLC HMI Dashboard ด้วย Node-RED MQTT IoT

เรียนรู้การสร้างระบบ IoT เชื่อมต่อ PLC, HMI กับ Dashboard ผ่าน Node-RED ใช้ MQTT Protocol สำหรับการสื่อสาร Real-time ควบคุมและแสดงผลข้อมูล

อัพเดทล่าสุด: 7/3/2569

ราคาชุดอุปกรณ์

฿16,220

การรับส่งข้อมูลระหว่าง PLC, HMI และ Dashboard ด้วย Node-RED

ในบทความนี้เราจะเรียนรู้วิธีการสร้างระบบ IoT ที่เชื่อมต่อ PLC และ HMI เข้ากับ Dashboard บนคอมพิวเตอร์ผ่าน Node-RED โดยใช้ MQTT Protocol เพื่อการสื่อสารแบบ Real-time

ภาพรวมของระบบ

ระบบนี้ประกอบด้วยส่วนต่างๆ ดังนี้:

  • PLC (FAS-2NT-AC10E) ควบคุม Digital Output (หลอดไฟ)
  • HMI (SK070QS-G + Wi-Fi Module) อ่านข้อมูลจาก PLC และ Sensor
  • Temperature & Humidity Sensor เชื่อมต่อผ่าน RS485
  • Node-RED Dashboard แสดงผลและควบคุมระบบผ่าน Web Browser

การเตรียม Hardware

อุปกรณ์ที่ใช้

  • PLC รุ่น FAS-2NT-AC10E
  • HMI รุ่น SK070QS-G พร้อม Wi-Fi Module
  • Temperature & Humidity Sensor รองรับ RS485
  • หลอดไฟสำหรับทดสอบ Output

การต่อสายเชื่อมต่อ

  1. PLC เชื่อมต่อกับ HMI ผ่านสาย COM (COM2)
  2. Sensor เชื่อมต่อกับ HMI ผ่าน RS485 Port (Terminal A และ B)
  3. HMI เชื่อมต่อ Internet ผ่าน Wi-Fi
  4. PLC ควบคุมหลอดไฟ ผ่าน Digital Output Y0

การกำหนดค่า HMI

การตั้งค่า Wi-Fi Connection

  1. สร้าง Function Button สำหรับการตั้งค่า Wi-Fi
  2. เข้าไปที่ System Link กำหนด:
    • เลือกประเภทการเชื่อมต่อ: Wi-Fi
    • ทำการ Test Connection ให้แสดง "Test Work Successful"
    • กำหนด IP Address (Dynamic หรือ Static)

การสร้างตัวแปรสำหรับ Sensor

เข้าไปที่ Variable Settings และสร้างตัวแปรดังนี้:

ตัวแปรที่ 1:
- ชื่อ: Temp
- Address: 3X1
- Slave ID: 1

ตัวแปรที่ 2:
- ชื่อ: Humidity  
- Address: 3X2
- Slave ID: 1

การเขียน Script สำหรับอ่านข้อมูล

ใน Script Editor สร้าง Script ใหม่:

LW10 = Temp
LW11 = Humidity

ตั้งค่า Global Script:

  • เลือก Script: Prepare Data
  • Execution Period: 500ms (อ่านข้อมูลทุกครึ่งวินาที)

การกำหนดค่า Modbus RTU

ในส่วน COM3 Settings:

  • Mode: RTU Master
  • Baud Rate, Data Bit, Stop Bit: ให้ตรงกับ Sensor
  • Address Mode: Extended Mode

การสร้าง Display Controls

  1. Numeric Display สำหรับอุณหภูมิ

    • Address: LW10
    • แสดงค่า Temperature
  2. Numeric Display สำหรับความชื้น

    • Address: LW11
    • แสดงค่า Humidity
  3. Bit Lamp สำหรับสถานะ Motor

    • Address: LB0
    • แสดงสถานะจาก Dashboard
  4. Numeric Display สำหรับ Slider Value

    • Address: LW100
    • แสดงค่าจาก Slider

การกำหนดค่า MQTT

MQTT Broker Settings

Broker: broker.hivemq.com (Public Broker)
Port: 1883
Client ID: %0
MQTT State Address: RW0 (ค่า 2 = เชื่อมต่อสำเร็จ)
Error Address: RW1

MQTT Publish Settings (การส่งข้อมูล)

Topic: "your_unique_topic/data"
Format: JSON Advanced
Send Mode: Automatic (ทุก 3 วินาที)

JSON Payload:
{
  "Motor": Y0,      // Boolean - สถานะ Motor
  "Temp": LW10,     // 16-bit - อุณหภูมิ
  "Humidity": LW11  // 16-bit - ความชื้น
}

MQTT Subscribe Settings (การรับข้อมูล)

Topic: "your_unique_topic/dashboard"
Format: JSON Advanced
Operation Mode: Automatic

JSON Payload:
{
  "Button": LB0,    // Boolean - สถานะปุ่ม
  "Value": LW100    // 16-bit - ค่า Slider
}

การตั้งค่า Node-RED

การติดตั้ง Node-RED

ดาวน์โหลดและติดตั้ง Node-RED จาก: https://nodered.org/

ติดตั้ง Library เพิ่มเติม:

node-red-dashboard
node-red-contrib-ui-led

การสร้าง Flow สำหรับรับข้อมูล (Subscribe)

  1. MQTT In Node

    • Server: broker.hivemq.com
    • Topic: your_unique_topic/data
  2. Function Node สำหรับแปลงข้อมูล

// สำหรับ Motor Status
msg.payload = msg.payload.Motor ? "On" : "Off";
return msg;
  1. Dashboard UI Nodes
    • Text/LED: แสดงสถานะ Motor
    • Gauge: แสดงอุณหภูมิ
    • Chart: แสดงความชื้น

การสร้าง Flow สำหรับส่งข้อมูล (Publish)

  1. Dashboard Input Nodes

    • Switch: สำหรับควบคุม Button
    • Slider: สำหรับส่งค่า Value
  2. Function Node สำหรับสร้าง JSON

msg.payload = {
    "Button": msg.payload.Button || false,
    "Value": msg.payload.Value || 0
};
return msg;
  1. MQTT Out Node
    • Topic: your_unique_topic/dashboard

การทดสอบระบบ

ขั้นตอนการทดสอบ

  1. ตรวจสอบการเชื่อมต่อ

    • HMI แสดง Wi-Fi Signal Strength ที่ LW61250
    • MQTT State ที่ LW0 ควรเป็น 2 (Connected)
  2. ทดสอบการส่งข้อมูล

    • เปลี่ยนสถานะ Motor บน HMI
    • ดูการเปลี่ยนแปลงบน Dashboard
  3. ทดสอบการรับข้อมูล

    • กดปุ่มหรือเลื่อน Slider บน Dashboard
    • ตรวจสอบค่าที่เปลี่ยนบน HMI

การแก้ปัญหาที่พบบ่อย

ปัญหาการเชื่อมต่อ Wi-Fi

  • ตรวจสอบ Wi-Fi Signal Strength (ค่าควรมากกว่า 50)
  • ทำการ Test Connection ใหม่
  • ตรวจสอบ IP Address Setting

ปัญหา MQTT Connection

  • MQTT State ≠ 2: ตรวจสอบ Broker Address และ Port
  • ใช้ Topic Name ที่ Unique เพื่อหลีกเลี่ยงการชนกัน
  • ตรวจสอบ Internet Connection ของ HMI

ปัญหาการอ่านข้อมูล Sensor

  • ตรวจสอบการต่อสาย RS485 (A, B)
  • ยืนยัน Slave ID และ Address ของ Sensor
  • ตรวจสอบ Baud Rate และ Communication Parameters

เคล็ดลับการใช้งาน

  • ใช้ Local Word (LW) เป็นตัวกลางเพื่อง่ายต่อการจัดการข้อมูล
  • ตั้งชื่อ Topic ที่ไม่ซ้ำ เมื่อใช้ Public Broker
  • ตรวจสอบ JSON Format ให้ตรงกันทั้งฝั่งส่งและรับ
  • ใช้ Period ที่เหมาะสม เพื่อไม่ให้เกิด Network Overload

การประยุกต์ใช้งาน

ความรู้จากบทความนี้สามารถนำไปใช้กับ:

  • ระบบ IoT สำหรับโรงงานอุตสาหกรรม
  • Smart Home Automation
  • Remote Monitoring System
  • Data Logging และ Analytics

สรุป

การเชื่อมต่อ PLC, HMI และ Dashboard ด้วย Node-RED ผ่าน MQTT Protocol เป็นวิธีที่มีประสิทธิภาพในการสร้างระบบ IoT แบบ Real-time ด้วยการใช้ HMI เป็นตัวกลางในการรวบรวมข้อมูลจาก PLC และ Sensor แล้วส่งต่อไปยัง Cloud ผ่าน MQTT เราสามารถสร้าง Dashboard ที่สามารถทั้งแสดงผลและควบคุมระบบจากระยะไกลได้ วิธีการนี้เหมาะสำหรับงานที่ต้องการความยืดหยุ่นสูงและสามารถขยายระบบได้ง่ายในอนาคต