หน้าแรกคู่มือHMIการเชื่อมต่อสอนใช้ HMI อ่านเขียนข้อมูลกับ Arduino ผ่าน Modbus RTU
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. การสร้างโปรเจ็กต์

  1. ดาวน์โหลด SK2 v7.1 Software จาก zampoon.com.cn
  2. เปิดโปรแกรมและสร้างโปรเจ็กต์ใหม่
  3. เลือก 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. การอัพโหลดโปรแกรม

  1. Compile และอัพโหลด Code ไปยัง Arduino
  2. เชื่อมต่อ HMI กับคอมพิวเตอร์ผ่าน USB-C
  3. Download โปรแกรมเข้า HMI

2. การทดสอบการทำงาน

  1. ทดสอบการอ่านค่า Analog: ปรับ Variable Resistor และสังเกตค่าบน HMI
  2. ทดสอบการอ่านค่า Digital: กดสวิตช์และดูสถานะ LED บน HMI
  3. ทดสอบการเขียนค่า 16-bit: ใส่ตัวเลขใน Numeric Input
  4. ทดสอบการเขียนค่า 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 จะช่วยให้ระบบทำงานได้อย่างเสถียร สามารถนำไปประยุกต์ใช้ในโครงงานอุตสาหกรรมและระบบอัตโนมัติต่างๆ ได้อย่างหลากหลาย