วิธีแก้ปัญหาการสื่อสาร 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
ตอบสั้นๆ: ดูจาก Code ของคำสั่ง Modbus
เวลา PLC สื่อสารด้วย Modbus ไม่ว่าจะผ่านสาย LAN หรือ RS485 คำสั่ง Modbus จะมี Code บอกสถานะการสื่อสารตอนนั้น ถ้าการสื่อสาร หลุด จะได้ Code หมายเลข 16
ตัวอย่างในคลิป
ในคลิปใช้ PLC 2 ตัวต่อผ่าน Switch ด้วยสาย LAN โดย PLC ตัวที่ 1 อ่านและส่งข้อมูลให้ PLC ตัวที่ 2
| ส่วนของโปรแกรม | ค่าในคลิป |
|---|---|
DESTIP | Client Id K1, IP เริ่มที่ D800, Return Code ที่ D850 |
MBUSTCP | Client Id K1, ตาราง commands |
| Register เก็บ Code | D860 (MBUSTCP Code) |
| Register เก็บ Index | D861 |
- ตอนสื่อสารปกติ D860 = 0
- พอดึงสาย LAN ออก D860 เปลี่ยนเป็น 16
ทำ Alarm เมื่อการสื่อสารหลุด
เอา Code นี้มาเป็นเงื่อนไข ถ้า Code มีค่าเท่ากับ 16 ให้สั่ง Output ตัวหนึ่งทำงานเพื่อแจ้ง Alarm ให้ผู้ใช้งาน ในคลิปใช้ Y010 เป็น Alarm
ในคลิปใช้ 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
คำถามที่พบบ่อย
- 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 ให้ผู้ใช้งาน
มีคำถาม? ติดต่อทีมงาน
