หน้าแรกคู่มือPLCModbus Protocolวิธีแก้ปัญหาการสื่อสาร Modbus บน PLC | ตรวจสอบสถานะเชื่อมต่อ

บทที่ 5 จาก 9 ใน Modbus Protocol

PLCปานกลาง · Intermediate1 นาที

วิธีแก้ปัญหาการสื่อสาร Modbus บน PLC | ตรวจสอบสถานะเชื่อมต่อ

เช็คว่าการสื่อสาร Modbus ของ PLC Samkoon หลุดหรือไม่ จาก Code ในคำสั่ง MBUSTCP/MBUS — Code 16 คือสื่อสารหลุด (Timeout) แล้วใช้เงื่อนไขเปรียบเทียบสั่ง Output แจ้ง Alarm

PLC Samkoon รายงานสถานะการสื่อสาร Modbus เป็น Code ใน Register ที่กำหนดในคำสั่ง MBUSTCP/MBUS ถ้าสื่อสารหลุดจะได้ Code 16 ใช้เงื่อนไข Code = 16 สั่ง Output แจ้ง Alarm ได้ทั้งแบบสาย LAN และ RS485

อัพเดทล่าสุด: 26 ตุลาคม 2569

ชุดอุปกรณ์สำหรับบทความนี้

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

฿3,690

ตอบสั้นๆ: ดูจาก Code ของคำสั่ง Modbus

เวลา PLC สื่อสารด้วย Modbus ไม่ว่าจะผ่านสาย LAN หรือ RS485 คำสั่ง Modbus จะมี Code บอกสถานะการสื่อสารตอนนั้น ถ้าการสื่อสาร หลุด จะได้ Code หมายเลข 16

ตัวอย่างในคลิป

ในคลิปใช้ PLC 2 ตัวต่อผ่าน Switch ด้วยสาย LAN โดย PLC ตัวที่ 1 อ่านและส่งข้อมูลให้ PLC ตัวที่ 2

ส่วนของโปรแกรมค่าในคลิป
DESTIPClient Id K1, IP เริ่มที่ D800, Return Code ที่ D850
MBUSTCPClient Id K1, ตาราง commands
Register เก็บ CodeD860 (MBUSTCP Code)
Register เก็บ IndexD861
  1. ตอนสื่อสารปกติ D860 = 0
  2. พอดึงสาย LAN ออก D860 เปลี่ยนเป็น 16

ทำ Alarm เมื่อการสื่อสารหลุด

เอา Code นี้มาเป็นเงื่อนไข ถ้า Code มีค่าเท่ากับ 16 ให้สั่ง Output ตัวหนึ่งทำงานเพื่อแจ้ง Alarm ให้ผู้ใช้งาน ในคลิปใช้ Y010 เป็น Alarm

แจ้ง Alarm เมื่อ MBUSTCP Code = 16
เปรียบเทียบ D860 กับ K16 แล้ว SET Y010
N0
D860 (MBUSTCP Code) = 16 → สื่อสารหลุด → SET Y010 (Alarm)
D860 = K16SETY010, K1
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

ในคลิปใช้ SET ไฟ Alarm จึงค้างไว้แม้เสียบสายกลับแล้ว ต้อง RST Y010 เองเมื่อต้องการดับ

ด้วยวิธีนี้จะเช็คได้ตลอดว่าการสื่อสาร Modbus หลุดอยู่หรือเปล่า

ถ้า Code เป็น 0 แต่ค่าที่อ่านได้เลื่อนไปหนึ่งตำแหน่ง

ส่วนนี้ไม่ได้อยู่ในคลิป แต่เป็นปัญหาที่เจอบ่อยหลังสื่อสารได้แล้ว: ขอ D0 แต่ได้ค่าของ D1 แปลว่าสองฝั่งนับ Address คนละแบบ

Address นับจาก 0 — Slave Register ใน Modbus Table ของ SamSoar2022 นับจาก 0 ใส่ตามตาราง Modbus Address ของ Samkoon ได้ตรงๆ (D0 = 40000) ถ้าโปรแกรม Master นับจาก 1 (Base 1) ให้บวก 1 เช่น D0 = 40001

บทถัดไป

วิธีใช้ Modbus Poll จำลอง Modbus Master ทดสอบ PLC

15 นาทีปานกลาง · Intermediate

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

Code 16 ของคำสั่ง Modbus ใน PLC Samkoon หมายถึงอะไร?
หมายถึงการสื่อสารหลุด (Communication Timeout, 16 = 0x10) คือ PLC ส่งคำสั่งไปแล้วอีกฝั่งไม่ตอบกลับ เช่น สาย LAN หลุด ใช้ได้ทั้ง Modbus TCP (MBUSTCP) และ Modbus RS485 (MBUS)
จะสร้างสัญญาณเตือนเมื่อสื่อสารหลุดได้อย่างไร?
ใช้คอนแทคเปรียบเทียบ Register ที่เก็บ Code กับ K16 เช่น LDW= D860 K16 แล้วสั่ง Output ตัวหนึ่ง (ในคลิปคือ SET Y010) เพื่อแจ้ง Alarm ให้ผู้ใช้งาน