บัญชี

PLC
ปานกลาง
21 นาที

คำสั่ง Modbus RTU/RS485

เรียนรู้การใช้ Modbus RS485 เชื่อมต่อ PLC 2 ตัว Samkoon PLC แบบ Master-Slave พร้อมตัวอย่างคำสั่ง Function Code และการแก้ไขปัญหา

อัพเดทล่าสุด: 1/2/2569

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

฿3,690

บทนำ Modbus Commands สำหรับ PLC

บทความนี้จะแสดงวิธีการใช้งาน Modbus RS485 เพื่อให้ PLC 2 ตัวสามารถสื่อสารกันได้ โดยใช้ Samkoon PLC โดยจะครอบคลุมการตั้งค่า Master-Slave, การสร้างคำสั่ง Modbus และการจัดการข้อผิดพลาด

การเตรียมฮาร์ดแวร์

พอร์ตสื่อสาร RS485

PLC Samkoon มีพอร์ต RS485 อยู่ 2 พอร์ต:
  • COM 0: หัวกลม (มักใช้เชื่อมต่อ HMI)
  • COM 1: Terminal (ใช้สำหรับการสื่อสาร Modbus)

การเชื่อมต่อสายเคเบิล

  1. ใช้สายไฟ 2 เส้น เชื่อมต่อ A ไป A, B ไป B
  2. หากมีหลายอุปกรณ์ ต้องต่อแบบ Daisy Chain (Multi-Drop)
  3. สำหรับระยะทางไกล ควรใช้ Twisted Pair Shielded Cable
  4. ติดตั้งตัวต้านทาน 120 โอห์ม ที่ Master และ Slave ตัวสุดท้าย (หากสายไม่ยาวและ Slave จำนวนน้อยไม่จำเป็น)

การกำหนดค่า Master

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

  1. เปิด SamSoar2022
  2. ไปที่ Config > Project Settings > Communication
  3. เลือก COM1 เป็น Modbus Master
  4. กำหนดค่าพารามิเตอร์:
    • Frame Interval: ช่วงเวลารอระหว่างการส่งข้อมูล (ms)
    • Re-Transmission: จำนวนครั้งที่ลองส่งใหม่เมื่อเกิดข้อผิดพลาด

การกำหนดค่า Slave

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

  1. สร้างโปรเจกต์ใหม่สำหรับ Slave
  2. ไปที่ Config > Project Settings > Communication
  3. เลือก COM1 เป็น Modbus Slave (ค่า Default)
  4. กำหนด Station Number (Slave ID) ตามต้องการ

การสร้าง Modbus Commands

วิธีการสร้างคำสั่ง

  1. คลิกขวาที่ Modbus Table > Add Modbus Table
  2. กำหนดพารามิเตอร์:
    • Station: Slave ID (เช่น K1)
    • Function Code: เลือกตามต้องการ
    • Slave Register: ตำแหน่งข้อมูลใน Slave
    • Slave Count: จำนวนข้อมูล
    • Master Register: ตำแหน่งอ้างอิงใน Master

Function Codes ที่ใช้บ่อย

Function Code 01: Read Coil
Function Code 02: Read Input
Function Code 03: Read Holding Register
Function Code 04: Read Input Register
Function Code 05: Write Single Coil
Function Code 06: Write Single Register
Function Code 0F: Write Multiple Coils
Function Code 10: Write Multiple Registers

ตัวอย่างคำสั่ง Write Single Coil

Station: K1
Function Code: 05
Slave Register: K10000 (Y0 ของ Slave)
Slave Count: K1
Master Register: M1000 (อ้างอิงจาก Master)

ตัวอย่างคำสั่ง Write Single Register

Station: K1
Function Code: 06
Slave Register: K40000 (D0 ของ Slave)
Slave Count: K1
Master Register: D1000 (อ้างอิงจาก Master)

การใช้คำสั่ง MBUS ใน Ladder

Syntax และพารามิเตอร์


MBUS(K1, "ชื่อ Modbus Table", D700, D701)

พารามิเตอร์:

  1. Comport: K1 (ใช้ Comm1)
  2. Table Name: ชื่อ Modbus Table ที่สร้างไว้
  3. Error Code: D register เก็บรหัสข้อผิดพลาด
  4. Command Index: D register เก็บลำดับคำสั่งที่กำลังทำงาน

ตัวอย่างการใช้งานเต็มรูปแบบ

// Modbus RS485 Communication
LD M700
MBUS(K1, "commands", D700, D701)

ตาราง Address สำหรับ Samkoon PLC

ประเภทFunction CodeAddress Rangeตัวอย่าง
Y (Output)01, 05, 0F10000-10127Y0 = 10000
M (Auxiliary Relay)01, 05, 0F30000-38191M0 = 30000
D (Data Register)03, 06, 1040000-48191D0 = 40000

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

Error Code และความหมาย

Error Code 16 (0x10): Communication Timeout

  • สาเหตุ: Slave ไม่ตอบสนอง, สายเคเบิลหลุด, หรือ Slave ไม่ทำงาน
  • การแก้ไข: ตรวจสอบการเชื่อมต่อและสถานะ Slave

Error Code 24 (0x18): Receive Information Frame Error

  • สาเหตุ: อ่านข้อมูลจากตำแหน่งที่ไม่มีจริง
  • การแก้ไข: ตรวจสอบ Address และ Function Code

การเขียน Error Handling

// ตรวจสอบ Communication Timeout
LDW= D700 K16
OUT M750  // Communication Error Flag

// ตรวจสอบ Read Error
LDW= D700 K24
OUT M751  // Read Error Flag

// ตรวจสอบข้อผิดพลาดทั่วไป
LDW= D700 K0
OUT M752  // General Error Flag

เคล็ดลับการใช้งาน

  1. ใช้ Frame Interval ที่เหมาะสม: หลีกเลี่ยงการส่งข้อมูลบ่อยเกินไป
  2. ตั้งค่า Re-Transmission: กำหนดจำนวนครั้งที่เหมาะสมกับสภาพแวดล้อม
  3. ตรวจสอบ Error Code เสมอ: ใช้สำหรับการแจ้งเตือนและบำรุงรักษา
  4. ใช้ Comment: เพิ่มความเข้าใจในโค้ด

ข้อจำกัดของ Modbus RS485

  • ระยะทางสูงสุด: ประมาณ 1.2 กิโลเมตร
  • จำนวน Slave สูงสุด: 32 ตัว
  • ความเร็วการสื่อสาร: ขึ้นอยู่กับ Baud Rate ที่ตั้งค่า

สรุป

การใช้งาน Modbus RS485 กับ PLC Samkoon ต้องมีการตั้งค่าที่ถูกต้องทั้งฝั่ง Master และ Slave การสร้าง Modbus Commands ต้องระบุ Function Code, Address และพารามิเตอร์ให้ครบถ้วน การจัดการ Error Code เป็นสิ่งสำคัญสำหรับการใช้งานจริง โดยเฉพาะการตรวจสอบ Communication Timeout และ Address Error ในตอนถัดไปจะเรียนรู้เรื่อง Modbus TCP ซึ่งใช้สายแลนในการสื่อสาร