หน้าแรกคู่มือHMIการเชื่อมต่อการอ่านค่าเซนเซอร์ผ่าน HMI ด้วย Modbus RTU/RS485
HMI
ปานกลาง
10 นาที

การอ่านค่าเซนเซอร์ผ่าน HMI ด้วย Modbus RTU/RS485

เรียนรู้วิธีการ Config HMI ให้อ่านค่าเซนเซอร์โดยตรงผ่าน Modbus RTU/RS485 ไม่ต้องใช้ PLC เป็นตัวกลาง พร้อมการตั้งค่า Slave ID และการต่อสาย RS485

บทความนี้สอนวิธี config HMI Samkoon ให้อ่านค่าเซนเซอร์หลายตัวผ่าน Modbus RTU/RS485 ได้โดยตรงโดยไม่ต้องใช้ PLC เป็นตัวกลาง ครอบคลุมการตั้ง Slave ID ที่ไม่ซ้ำกัน การต่อสาย RS485 แบบ Multi-Drop และการอ่านค่าจาก Input Register (FC04) มาแสดงบน Numeric Display

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

SK-070QEV3

฿2,490

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

฿2,490

การอ่านค่าเซนเซอร์ผ่าน HMI โดยตรงด้วย Modbus RTU/RS485

การอ่านค่าเซนเซอร์ผ่าน HMI โดยตรงเป็นวิธีที่มีประสิทธิภาพเมื่อต้องการแสดงผลค่าข้อมูลเพียงอย่างเดียว โดยไม่จำเป็นต้องใช้ PLC เป็นตัวกลาง บทความนี้จะสอนวิธีการ Config HMI ให้สามารถอ่านค่าจากเซนเซอร์หลายตัวผ่าน Modbus RTU/RS485

ความเข้าใจพื้นฐานเกี่ยวกับ Modbus Communication

บทบาทของอุปกรณ์

  • HMI: ทำหน้าที่เป็น Modbus Master
  • เซนเซอร์: ทำหน้าที่เป็น Slave แต่ละตัว

กฎสำคัญสำหรับ Slave ID

  • เซนเซอร์แต่ละตัวต้องมี Slave ID ที่ไม่ซ้ำกัน
  • ค่า Default มักจะเป็น 1
  • สามารถเปลี่ยน Slave ID ได้ตามคู่มือของผู้ผลิต

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

วิธีการต่อสายที่ถูกต้อง

การต่อสายต้องเป็นแบบ Multi-Drop ดังนี้:

  1. ต่อขั้วให้ตรงกัน: A+ ต่อเข้ากับ A+ และ B- ต่อเข้ากับ B- ของทุกอุปกรณ์บนบัสเดียวกัน
  2. เชื่อมต่อเป็นลูกโซ่: Master → Slave 1 → Slave 2 → Slave 3...

สิ่งที่ควรหลีกเลี่ยง

  • ห้าม ต่อข้าม: Master → Slave 2 โดยข้าม Slave 1
  • ในงานจริงควรใช้สายแบบ Twisted Pair และทำ Shield

การอ่านคู่มือเซนเซอร์

ตัวอย่างการอ่าน Register Map

สำหรับเซนเซอร์วัดอุณหภูมิและความชื้น:

Temperature:

  • Function Code: 04 (Input Register)
  • Address: 3X0001 (Register 1)
  • Data Type: 16-bit

Humidity:

  • Function Code: 04 (Input Register)
  • Address: 3X0002 (Register 2)
  • Data Type: 16-bit

Holding Register:

  • Function Code: 03
  • Address: ขึ้นต้นด้วย 4X

สรุปสั้นๆ Input Register อ่านด้วย Function Code 04 (Address 3X) ส่วน Holding Register ใช้ Function Code 03 (Address 4X)

การเปลี่ยน Slave ID และการแปลงเลขฐาน

การเปลี่ยน Slave ID (Device Address) ของเซนเซอร์ ทำได้โดยการเขียนค่าไปที่ Register Address 0X0101 ซึ่งเป็นเลขฐาน 16 หากโปรแกรมต้องใส่เป็นเลขฐาน 10 ต้องแปลงก่อน:

0X0101 (เลขฐาน 16) = 257 (เลขฐาน 10)

เคล็ดลับ: ใช้ Calculator โหมด Programmer ในการแปลง

การตั้งค่า HMI Connection Service

ขั้นตอนการ Config

  1. เลือกโปรโตคอล: Modbus RTU
  2. กำหนดบทบาท: HMI เป็น Master
  3. ตั้ง Communication Parameters:
    Baud Rate: 9600
    Data Bits: 8
    Parity: None
    Stop Bits: 1

การตั้งค่า Advanced Mode

  • เปลี่ยนจาก Standard Mode เป็น Extended Mode
  • จำเป็นเมื่อต้องอ่านค่าจาก Slave มากกว่า 1 ตัว เพราะทำให้สามารถกำหนด Slave ID แยกในแต่ละ Address ได้

การสร้าง Numeric Display

ขั้นตอนการตั้งค่า

  1. เลือก Data Type:

    • 16-bit Signed Integer (สำหรับค่าทั่วไป)
    • 32-bit หรือ Float (สำหรับข้อมูลที่ซับซ้อน)
  2. กำหนด Address:

    Temperature Slave 1: 3X0001
    Humidity Slave 1: 3X0002
    Temperature Slave 2: 3X0001
    Humidity Slave 2: 3X0002
  3. ตั้งค่า Decimal Places: ปรับตาม Scaling ของเซนเซอร์

ตัวอย่างการตั้งค่า Address

  • Slave 1 Temperature: Slave ID = 1, Address = 3X0001
  • Slave 1 Humidity: Slave ID = 1, Address = 3X0002
  • Slave 2 Temperature: Slave ID = 2, Address = 3X0001
  • Slave 2 Humidity: Slave ID = 2, Address = 3X0002

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

ปัญหาการสื่อสาร

  • ตรวจสอบ Communication Parameters ให้ตรงกันทุกอุปกรณ์
  • ยืนยัน Slave ID ไม่ซ้ำกัน
  • ตรวจสอบการต่อสาย ต้องเป็น Multi-Drop ที่ถูกต้อง

ปัญหาข้อมูลไม่ถูกต้อง

  • ตรวจสอบ Data Type ให้ตรงกับคู่มือ
  • ปรับ Scaling/Decimal Places ให้เหมาะสม
  • ยืนยัน Register Address ตามเอกสาร

สรุป

การอ่านค่าเซนเซอร์ผ่าน HMI โดยตรงด้วย Modbus RTU/RS485 เป็นวิธีที่ง่ายและมีประสิทธิภาพสำหรับการแสดงผลข้อมูล โดยไม่ต้องใช้ PLC เป็นตัวกลาง จุดสำคัญคือการทำความเข้าใจคู่มือของเซนเซอร์ การตั้งค่า Communication Parameters ที่ถูกต้อง และการเชื่อมต่อสายแบบ Multi-Drop ที่เหมาะสม เมื่อทำตามขั้นตอนเหล่านี้แล้ว จะสามารถอ่านค่าจากเซนเซอร์หลายตัวได้อย่างมีประสิทธิภาพ

คำถามที่พบบ่อย

อ่านค่าเซนเซอร์ผ่าน HMI ต้องใช้ PLC เป็นตัวกลางไหม?
ไม่ต้อง ถ้าเซนเซอร์รองรับ Modbus RTU ให้ HMI ทำหน้าที่เป็น Modbus Master อ่านค่าจากเซนเซอร์ที่เป็น Slave ได้โดยตรงผ่าน RS485 เหมาะกับงานที่ต้องการแค่แสดงผลค่า ไม่ต้องประมวลผลลอจิกเพิ่ม
อ่านค่าจากเซนเซอร์ควรใช้ Function Code อะไร?
ค่าที่วัดได้ เช่น อุณหภูมิและความชื้น ปกติอยู่ใน Input Register อ่านด้วย Function Code 04 (3X) ส่วน Holding Register (FC03, 4X) มักใช้สำหรับตั้งค่า เช่น เปลี่ยน Slave ID ของเซนเซอร์ ต้องเทียบกับ Register Map ในคู่มือของเซนเซอร์รุ่นนั้น
ต่อเซนเซอร์หลายตัวบนสาย RS485 เส้นเดียวได้ไหม?
ได้ ต่อแบบ Multi-Drop เป็นลูกโซ่จาก Master ไป Slave ทีละตัว โดยจับ A+ กับ B- ขนานกันทุกตัว และเซนเซอร์แต่ละตัวต้องตั้ง Slave ID ไม่ให้ซ้ำกัน