แก้ไขปัญหา Error 0x71 เวลา HMI อ่าน Modbus RTU RS485
HMI Samkoon เป็น Modbus RTU Master แล้วเจอ Error 0x71 เพราะหน้าจอรวบหลาย Address ไว้ในคำสั่งเดียว แต่อุปกรณ์ Slave รับได้ทีละตำแหน่ง แก้โดยตั้ง PLC address interval ใน SKTool จาก 32 เป็น 1 แล้วพิสูจน์ด้วย Modbus Simulator
Error 0x71 เกิดจาก PLC address interval หน้าจอ Samkoon รวบ Address ที่ติดกัน (เช่น 4x0 กับ 4x1) ไว้ในคำสั่งเดียว แต่อุปกรณ์ Slave บางตัวรับได้ทีละตำแหน่ง แก้โดยเข้า SKTool แท็บ Parameter ของพอร์ตที่ใช้ แล้วเปลี่ยน PLC address interval จาก 32 เป็น 1
อัพเดทล่าสุด: 26 ตุลาคม 2569
อาการ
ใช้หน้าจอ HMI Samkoon สื่อสารผ่าน Modbus RS485 โดยหน้าจอเป็น Master และอุปกรณ์อื่นเป็น Slave เช่น Microcontroller หรือ Temperature Controller บางครั้งการสื่อสารขึ้น Error 0x71
สาเหตุ — PLC Address Interval
0x71 เกิดจากค่าที่เรียกว่า PLC Address Interval
ตัวอย่างในคลิป หน้าจอมีช่องตัวเลข 4x0 และ 4x1 ใส่ค่า 4x0 = 1 และ 4x1 = 2 เวลาหน้าจอสื่อสารกับอุปกรณ์ Modbus จะเป็นรอบ Request–Response คือ Master (หน้าจอ) ส่ง Request ไป แล้วรอ Response กลับมา ถ้า Address อยู่ติดกัน หน้าจอจะรวบข้อมูลสองชุดนี้ไว้ใน Request เดียว
ปัญหาคือ อุปกรณ์ Slave บางตัวถูกตั้งไว้ให้รับ Request ได้ทีละ 1 ตำแหน่งเท่านั้น ส่งแบบรวบไม่ได้ จึงตอบกลับเป็น Error
ดู Data Frame ด้วย Modbus Simulator
ในคลิปต่อคอมพิวเตอร์เข้ากับหน้าจอผ่าน RS485 to USB Converter คอมพิวเตอร์จึงทำหน้าที่เป็น Slave
- เปิด Modbus Simulator ของ Factonation (
factonation.com/tools/modbus-simulator) - เลือก Serial Connection (USB-RS485) แล้วเลือกโหมด Slave
- เปิด Port เพื่อรับข้อมูลจากหน้าจอ (ในคลิป Baud 9600, Data 8, Stop 1, Parity none, Slave Address 1)
- เลื่อนลงไปดู Transaction Log
ก่อนแก้ Log ขึ้นแบบนี้ทุกบรรทัด
FC03 — Read Holding Registers (4x) → Slave 1, Addr 0, Qty 2
คืออ่านเริ่มที่ตำแหน่ง 0 จำนวน (Qty) 2 ตำแหน่ง เพราะหน้าจอพยายามอ่าน 4x0 กับ 4x1 ในคำสั่งเดียว
Address นับจาก 0 —
4x0ใน SKTool คือ Holding Register ตัวแรก ซึ่งใน Frame คือ Addr 0 ส่วน4x1คือ Addr 1 ตามที่เห็นใน Log
วิธีแก้ — ตั้ง PLC address interval เป็น 1
- เปิดโปรเจกต์ใน SKTool ไปที่ Communication ที่หน้าจอใช้ (บางงานใช้ COM3 หรือ COM2 ในคลิปใช้ COM2 ที่ตั้งเป็น Modbus RTU Master)
- เปิด Communication Port Properties แล้วไปที่แท็บ Parameter
- หาช่อง PLC address interval ค่าเริ่มต้นคือ 32 หมายถึงรวบ Address ได้ไม่เกิน 32 ตัวใน 1 คำสั่ง
- เปลี่ยนเป็น 1 เพื่อให้ส่งคำสั่งแยกทีละตัว แล้วกด OK
- ต่อสาย USB A to C เข้าหน้าจอ แล้วดาวน์โหลดโปรแกรมที่แก้ PLC address interval แล้วเข้าไปใหม่ เสร็จแล้วถอดสายออก
หลังแก้ การอ่าน 4x0 กับ 4x1 จะแยกเป็นคนละคำสั่ง
ผลหลังแก้
ใส่ค่า 4x0 = 1 และ 4x1 = 2 เหมือนเดิม แล้วดู Log ฝั่งคอมพิวเตอร์ (Slave)
FC03 — Read Holding Registers (4x) → Slave 1, Addr 0, Qty 1
FC03 — Read Holding Registers (4x) → Slave 1, Addr 1, Qty 1
Address สลับกันระหว่าง 0 กับ 1 และที่สำคัญที่สุดคือ Qty เป็น 1 ไม่ใช่ 2 กด Pause แล้วเปิดดูรายละเอียดใน Log จะเห็นว่า
- Request อ่านแค่ 1 ตำแหน่ง:
01 03 00 00 00 01 84 0A(Slave 1, FC03, Addr 0, Qty 1, CRC-16) - Response ส่งข้อมูลกลับแค่ตัวเดียว:
01 03 02 00 01 79 84(2 bytes) - คำสั่งถัดไปจึงเป็น Addr 1
ถ้าอุปกรณ์ฝั่ง Slave ถูกกำหนดเงื่อนไขให้รับทีละตำแหน่งไว้ ปัญหา 0x71 ก็จะหายไป
บทถัดไป
วิธี Recovery หน้าจอ HMI ค้าง
มีคำถาม? ติดต่อทีมงาน
