HMI
ปานกลาง
14 นาที
สอนใช้ HMI อ่านเขียนข้อมูลกับ Arduino ผ่าน Modbus RTU
เรียนรู้วิธีการเชื่อมต่อ HMI กับ Arduino ผ่าน Modbus RTU เพื่อสร้างระบบควบคุมที่มีประสิทธิภาพ พร้อมตัวอย่างโค้ดและการต่อวงจรแบบละเอียด
อัพเดทล่าสุด: 7/3/2569
ราคาชุดอุปกรณ์
฿16,220
การใช้ HMI อ่านและเขียนข้อมูลกับ Arduino ผ่าน Modbus RTU
การเชื่อมต่อ HMI กับ Arduino ผ่านโปรโตคอล Modbus RTU ช่วยให้เราสามารถสร้างระบบควบคุมที่มีหน้าจอแสดงผลและสั่งงานได้อย่างมีประสิทธิภาพ ในบทความนี้จะแนะนำวิธีการตั้งค่าและเขียนโปรแกรมทั้งฝั่ง Arduino และ HMI
อุปกรณ์ที่ต้องใช้
อุปกรณ์หลัก
- Arduino UNO
- HMI Screen (แนะนำ SK010-QS-Key-G + Wi-Fi Module)
- RS485-TTL Converter Board (สำหรับแปลงสัญญาณ)
- Variable Resistor (สำหรับทดสอบ Analog Input)
- สายไฟและ Jumper Wire
อุปกรณ์เสริม
- DB9 Connector หรือ Terminal Block
- สายเชื่อมต่อ USB
การต่อวงจรและเชื่อมต่อ
1. การต่อ RS485-TTL Converter
Arduino → RS485-TTL Converter
VCC (5V) → VCC
GND → GND
Pin 10 (RX) → TX
Pin 11 (TX) → RX
2. การต่อฝั่ง HMI
- ใช้ DB9 Port หรือ Terminal Block บน HMI
- เชื่อมต่อสาย A และ B ของ RS485 เข้ากับ Converter
3. การเลือก Communication Port
- ตรวจสอบหน้าจอ HMI ว่าใช้ COM2 (DB9) หรือ COM3 (Terminal)
- เลือก Port ให้ตรงกับฮาร์ดแวร์ที่ใช้
การเขียนโปรแกรม Arduino
1. การติดตั้ง Library
ดาวน์โหลดและติดตั้ง Library:
- Modbus Master Slave for Arduino
- SoftwareSerial (Built-in Library)
2. Code สำหรับ Arduino
#include <SoftwareSerial.h>
#include <ModbusMasterSlave.h>
// กำหนด Pin สำหรับ Software Serial
SoftwareSerial mySerial(10, 11); // RX=10, TX=11
// สร้าง Array เก็บข้อมูล 16 ตัว
int data[16] = {0};
// สร้าง Modbus Slave ID=1
ModbusMasterSlave slave(1, &mySerial);
void setup() {
Serial.begin(9600); // Serial Monitor
mySerial.begin(9600); // Modbus Communication
pinMode(2, INPUT_PULLUP); // Digital Input Pin
slave.begin();
}
void loop() {
// อ่านค่า Analog จาก Variable Resistor
data[0] = analogRead(A0);
// อ่านค่า Digital จาก Pin 2
data[2] = digitalRead(2);
// แสดงค่าบน Serial Monitor
Serial.print("Analog Value: ");
Serial.println(data[0]);
// ข้อมูลที่จะรับจาก HMI
// data[1] = ค่าที่เขียนมาจาก HMI (16-bit)
// data[3] = ค่าที่เขียนมาจาก HMI (1-bit)
// ประมวลผล Modbus Query
slave.process(data, 16);
delay(100);
}
การตั้งค่า HMI
1. การสร้างโปรเจ็กต์
- ดาวน์โหลด SK2 v7.1 Software จาก zampoon.com.cn
- เปิดโปรแกรมและสร้างโปรเจ็กต์ใหม่
- เลือก Communication Port ที่ถูกต้อง
2. การตั้งค่า Communication
Connection Service: Modbus
Mode: Modbus RTU Master
Baud Rate: 9600
Data Bits: 8
Parity: None
Stop Bits: 1
Address Mode: Extended Mode
3. การสร้าง Control สำหรับอ่านข้อมูล
Meter สำหรับแสดงค่า Analog
Monitor Address: 4X0
Slave ID: 1
Data Position: 0 (ค่าจาก Variable Resistor)
LED Indicator สำหรับสถานะ Digital
Monitor Address: 4X2.00
Slave ID: 1
Data Position: 2, Bit: 0
4. การสร้าง Control สำหรับเขียนข้อมูล
Numeric Input สำหรับส่งค่า 16-bit
Write Address: 4X1
Slave ID: 1
Data Position: 1
Bit Switch สำหรับส่งค่า 1-bit
Write Address: 1X3.00
Slave ID: 1
Data Position: 3, Bit: 0
ขั้นตอนการทดสอบ
1. การอัพโหลดโปรแกรม
- Compile และอัพโหลด Code ไปยัง Arduino
- เชื่อมต่อ HMI กับคอมพิวเตอร์ผ่าน USB-C
- Download โปรแกรมเข้า HMI
2. การทดสอบการทำงาน
- ทดสอบการอ่านค่า Analog: ปรับ Variable Resistor และสังเกตค่าบน HMI
- ทดสอบการอ่านค่า Digital: กดสวิตช์และดูสถานะ LED บน HMI
- ทดสอบการเขียนค่า 16-bit: ใส่ตัวเลขใน Numeric Input
- ทดสอบการเขียนค่า 1-bit: กดปุ่มบน HMI และดูผลลัพธ์
การแก้ปัญหาที่พบบ่อย
ปัญหาการสื่อสาร
- ตรวจสอบการต่อสาย A, B ของ RS485
- ยืนยัน Baud Rate ให้ตรงกันทั้งสองฝั่ง
- ตรวจสอบ Slave ID ให้ถูกต้อง
ปัญหา Timeout
- ลด Delay Time ในโค้ด Arduino
- ตรวจสอบคุณภาพสายสัญญาณ RS485
ปัญหาค่าไม่อัพเดต
- ตรวจสอบ Address Mapping ให้ถูกต้อง
- ยืนยันว่า Array Index ตรงกับ Register Address
เคล็ดลับการใช้งาน
การปรับปรุงประสิทธิภาพ
- ใช้ Hardware Serial (Pin 0,1) แทน Software Serial หากไม่ต้องการ Debug
- เพิ่ม Error Handling สำหรับการสื่อสารที่ล้มเหลว
- ปรับ Scan Rate ให้เหมาะสมกับการใช้งาน
การขยายระบบ
- เพิ่ม Multiple Slaves ด้วย Slave ID ที่แตกต่างกัน
- ใช้งานร่วมกับ SCADA System ผ่าน HMI
- ส่งข้อมูลผ่าน HTTP หรือ MQTT สำหรับ IoT Application
สรุป
การเชื่อมต่อ HMI กับ Arduino ผ่าน Modbus RTU เป็นวิธีที่มีประสิทธิภาพในการสร้างระบบควบคุมที่มีหน้าจอแสดงผล การตั้งค่าที่ถูกต้องทั้งด้าน Hardware และ Software จะช่วยให้ระบบทำงานได้อย่างเสถียร สามารถนำไปประยุกต์ใช้ในโครงงานอุตสาหกรรมและระบบอัตโนมัติต่างๆ ได้อย่างหลากหลาย
กลับ
มีคำถาม? ติดต่อทีมงาน




