รับส่งข้อมูล PLC HMI Dashboard ด้วย Node-RED MQTT IoT
เรียนรู้การสร้างระบบ IoT เชื่อมต่อ PLC, HMI กับ Dashboard ผ่าน Node-RED ใช้ MQTT Protocol สำหรับการสื่อสาร Real-time ควบคุมและแสดงผลข้อมูล
อัพเดทล่าสุด: 7/3/2569
ราคาชุดอุปกรณ์
การรับส่งข้อมูลระหว่าง 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
การต่อสายเชื่อมต่อ
- PLC เชื่อมต่อกับ HMI ผ่านสาย COM (COM2)
- Sensor เชื่อมต่อกับ HMI ผ่าน RS485 Port (Terminal A และ B)
- HMI เชื่อมต่อ Internet ผ่าน Wi-Fi
- PLC ควบคุมหลอดไฟ ผ่าน Digital Output Y0
การกำหนดค่า HMI
การตั้งค่า Wi-Fi Connection
- สร้าง Function Button สำหรับการตั้งค่า Wi-Fi
- เข้าไปที่ 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
-
Numeric Display สำหรับอุณหภูมิ
- Address: LW10
- แสดงค่า Temperature
-
Numeric Display สำหรับความชื้น
- Address: LW11
- แสดงค่า Humidity
-
Bit Lamp สำหรับสถานะ Motor
- Address: LB0
- แสดงสถานะจาก Dashboard
-
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)
-
MQTT In Node
- Server: broker.hivemq.com
- Topic: your_unique_topic/data
-
Function Node สำหรับแปลงข้อมูล
// สำหรับ Motor Status
msg.payload = msg.payload.Motor ? "On" : "Off";
return msg;
- Dashboard UI Nodes
- Text/LED: แสดงสถานะ Motor
- Gauge: แสดงอุณหภูมิ
- Chart: แสดงความชื้น
การสร้าง Flow สำหรับส่งข้อมูล (Publish)
-
Dashboard Input Nodes
- Switch: สำหรับควบคุม Button
- Slider: สำหรับส่งค่า Value
-
Function Node สำหรับสร้าง JSON
msg.payload = {
"Button": msg.payload.Button || false,
"Value": msg.payload.Value || 0
};
return msg;
- MQTT Out Node
- Topic: your_unique_topic/dashboard
การทดสอบระบบ
ขั้นตอนการทดสอบ
-
ตรวจสอบการเชื่อมต่อ
- HMI แสดง Wi-Fi Signal Strength ที่ LW61250
- MQTT State ที่ LW0 ควรเป็น 2 (Connected)
-
ทดสอบการส่งข้อมูล
- เปลี่ยนสถานะ Motor บน HMI
- ดูการเปลี่ยนแปลงบน Dashboard
-
ทดสอบการรับข้อมูล
- กดปุ่มหรือเลื่อน 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 ที่สามารถทั้งแสดงผลและควบคุมระบบจากระยะไกลได้ วิธีการนี้เหมาะสำหรับงานที่ต้องการความยืดหยุ่นสูงและสามารถขยายระบบได้ง่ายในอนาคต
มีคำถาม? ติดต่อทีมงาน




