หน้าแรกคู่มือPLCModbus Protocolสอน Modbus TCP/IP กับ Samkoon PLC ผ่านสาย LAN

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

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

สอน Modbus TCP/IP กับ Samkoon PLC ผ่านสาย LAN

ให้ Samkoon PLC FAs-32MT-AC-E เป็น Modbus TCP Client อ่าน Y, M, X, D จาก PLC Server 2 ตัวผ่าน Switch ตั้งค่า Net ใน SamSoar2022 สร้าง Modbus Table แล้วใช้ MOV, DESTIP และ MBUSTCP

Samkoon PLC เป็น Modbus TCP Client ได้โดยตั้ง Net เป็น TCP/IP master สร้าง Modbus Table ต่อ Server หนึ่งตัว แล้วใน Ladder ใช้ MOV เก็บ IP และ Port ปลายทางลง D Register, DESTIP ผูก IP นั้นกับ Client ID และ MBUSTCP ส่งคำสั่งตาม Table ผ่าน Client ID เดียวกัน ในคลิปตั้ง Client 169.254.1.100 อ่านข้อมูลจาก Server 169.254.1.101 และ .102 ที่ Port 2000

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

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

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

฿3,690

จาก RS485 สู่ Modbus TCP/IP

คลิปก่อนหน้าทำ Modbus RS485 ซึ่งต่อ Master เข้ากับ Slave หลายตัวแบบ Daisy Chain ด้วยสาย 2 เส้น คลิปนี้เปลี่ยนสื่อกลางเป็น สาย LAN PLC แต่ละตัวต่อเข้า Network Switch เพียงเส้นเดียว และเรียกบทบาทใหม่ว่า

  • Client — ตัวที่ส่งคำขอ (เทียบได้กับ Master) ในคลิปคือ PLC ตัวซ้ายสุด
  • Server — ตัวที่ให้ข้อมูล (เทียบได้กับ Slave) ในคลิปมี 2 ตัว

PLC ที่ใช้ในคลิปคือ Samkoon FAs-32MT-AC-E (Transistor) หรือรุ่น Relay FAs-32MR-AC-E ก็ทำได้เหมือนกัน ใช้ไฟ 220V AC มี RS485 และพอร์ต Ethernet ในตัว

อุปกรณ์IP AddressStation number
Client169.254.1.1000
Server 1169.254.1.1011
Server 2169.254.1.1022

ขั้นตอนทั้งหมด

  1. ต่ออุปกรณ์และสาย LAN
  2. ตั้ง Communication Parameters ใน Client และ Server
  3. สร้าง Modbus Table และกำหนดคำสั่งที่จะใช้
  4. ใช้คำสั่ง MOV กำหนด IP ของ Modbus Server ปลายทาง
  5. ใช้คำสั่ง DESTIP ระบุ IP Address + Port ของปลายทาง + Client ID
  6. ใช้คำสั่ง MBUSTCP ระบุ Client ID และ Modbus Table เพื่อส่งคำสั่ง

1. ต่ออุปกรณ์และสาย LAN

  • จ่ายไฟ 220V AC ให้ PLC ทุกตัว
  • ต่อสาย LAN จาก PLC แต่ละตัวเข้า Network Switch
  • ต่อสาย LAN อีกเส้นจาก Switch เข้าคอมพิวเตอร์ เพื่อเขียนโปรแกรมและทดสอบระบบ

2. ตั้งค่า Net ใน SamSoar2022

โปรแกรมเขียน Ladder ของ Samkoon คือ SamSoar2022 ดาวน์โหลดได้ที่ samkoon.com.cn/download ในคลิปเปิดโปรแกรม 3 หน้าต่าง สำหรับ Client 1 ตัวและ Server 2 ตัว

  1. เปลี่ยนภาษาเป็นภาษาอังกฤษที่แท็บ Config
  2. ไปที่ Project Setting → Communication แล้วเลือกแท็บ Net

Client

Station number: 0
Protocol: TCP/IP master
Network Config: TCP Client
Local IP: 169.254.1.100
Subnet mask: 255.255.255.0
Local port: 2000 (ค่า Default)

Port สำคัญ เพราะเวลาส่งคำสั่งต้องระบุ Port ของปลายทางด้วย

Server 1 และ Server 2

Protocol: TCP/IP slave
Network Config: TCP Server
Station number: 1 (Server 1) / 2 (Server 2)
Local IP: 169.254.1.101 (Server 1) / 169.254.1.102 (Server 2)
Subnet mask: 255.255.255.0
Local port: 2000

ดาวน์โหลด Config ลง PLC

  • ครั้งแรกต้องดาวน์โหลดผ่านสาย USB-C ก่อน PLC จึงจะได้ IP ตามที่ตั้งไว้
  • หลังจากนั้นดาวน์โหลดผ่านสาย LAN ได้: กด Communication Setting เปลี่ยน Connect mode จาก USB เป็น Network กด Setting ใส่ IP ของ PLC (เช่น 169.254.1.100) แล้วกด Test ถ้าผ่านก็ Upload/Download ผ่านสาย LAN ได้เลย

ทดสอบด้วย ping

ตั้ง IP ของคอมพิวเตอร์ให้อยู่ใน Network ID เดียวกัน (ในคลิปพอร์ต Ethernet ของคอมพิวเตอร์เป็น 169.254.1.1, Subnet 255.255.255.0) เปิด Command Prompt พิมพ์ ipconfig เพื่อตรวจ แล้ว ping 169.254.1.100, .101 และ .102 ถ้าตอบกลับครบแปลว่าคอมพิวเตอร์มองเห็น PLC ทั้ง 3 ตัวแล้ว

3. สร้าง Modbus Table (ฝั่ง Client)

ในแผง Project Tree คลิกขวาที่ Modbus table → Add → Add Modbus Table แล้วตั้งชื่อ ในคลิปแยก 1 Table ต่อ 1 Server ชื่อ slave1 และ slave2

ช่อง Port ใช้ตอนทำ RS485 สำหรับ TCP/IP ไม่ต้องสนใจ

Address นับจาก 0 (ส่วนนี้ไม่ได้อธิบายในคลิป แต่ควรรู้ไว้) — Slave register ใน Modbus Table ของ SamSoar2022 นับจาก 0 ใส่ตามตาราง Modbus Address ของ Samkoon ได้ตรงๆ (Y0 = 10000, M0 = 30000, X0 = 0, D0 = 40000 ไม่ต้องบวก 1) ตารางครบทุกประเภทอยู่ในรูปตาราง Modbus Address ของหน้าสินค้า PLC เช่น FAs-32MT-AC-E

ตาราง slave1 ในคลิป

#Handle codeSlave registerSlave countMaster registerComment
00x01 Read coil1000010M1000Read Y0~
10x01 Read coil3000010M1100Read M0~
20x02 Read disperse input010M1200Read X0~
30x03 Read holding register4000010D1000Read D0~
  • Handle code คือ Function Code ของ Modbus (0x01 อ่าน Coil ซึ่งอาจเป็น Y หรือ M ก็ได้ แล้วแต่ Slave register)
  • Slave register คือตำแหน่งข้อมูลในตัว Server อ้างอิงจากตาราง Modbus ในคู่มือ Samkoon
  • Slave count คือจำนวนที่อ่าน
  • Master register คือตำแหน่งใน Client ที่เก็บค่าที่อ่านมา

ตาราง slave2 ทำแบบเดียวกัน ในคลิปผลจาก Server 2 เก็บที่ M2000 (Y), M2100 (M) และ D2000 (D)

4–6. เขียน Ladder ฝั่ง Client

ในคลิป M10 สั่ง MOV เก็บ IP และ Port ของปลายทาง ส่วน M11 สั่ง DESTIP และ MBUSTCP ของ Server ทั้งสองตัว เก็บ IP ไว้ที่ D ตัวไหนก็ได้ ในคลิปเลือก D100 และ D200 เพราะจำง่าย

Modbus TCP Client อ่านข้อมูลจาก Server 2 ตัว
M10 เก็บ IP + Port ของ Server 1 ที่ D100–D104 และ Server 2 ที่ D200–D204 แล้ว M11 สั่ง DESTIP + MBUSTCP ของแต่ละ Server
N0MODBUS TCP/IP
Server 1 = 169.254.1.101 Port 2000 ที่ D100–D104 และ Server 2 = 169.254.1.102 Port 2000 ที่ D200–D204
M10MOVK169, D100MOVK254, D101MOVK1, D102MOVK101, D103MOVK2000, D104MOVK169, D200MOVK254, D201MOVK1, D202MOVK102, D203MOVK2000, D204
DESTIP ผูก IP ที่ D100 กับ Client ID 0 และ D200 กับ Client ID 1 แล้ว MBUSTCP ส่ง Table slave1 / slave2 ผ่าน Client ID เดียวกัน
M11DESTIPD100, K0, K0, D106MBUSTCPK0, slave1, D8, D9DESTIPD200, K1, K0, D206MBUSTCPK1, slave2, D10, D11
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

DESTIP (Destination IP) กำหนด IP ปลายทางที่จะส่งข้อมูลไป

  • Address — D ตัวแรกที่เก็บ IP (D100 = Server 1) ตามด้วย Port ใน D ตัวที่ห้า (D104)
  • Client ID — ผูกชุด IP นี้เข้ากับช่องการสื่อสารหมายเลขใด ในคลิป Server 1 = K0, Server 2 = K1
  • Retry — ถ้าเกิดปัญหาให้ลองส่งคำสั่งซ้ำกี่ครั้ง ในคลิปตั้ง K0
  • Return — Register รับ Code ที่เกี่ยวกับการสื่อสาร Modbus TCP/IP (D106, D206)

MBUSTCP ส่งคำสั่ง Modbus จาก Table ที่สร้างไว้ คล้าย MBUS ของ RS485 ต่างกันที่ต้องระบุ Client ID ซึ่งต้องเท่ากับ Client ID ที่ผูกกับ IP ใน DESTIP

  • Table — ชื่อ Modbus Table (slave1)
  • Code — Register รับ Code ของการสื่อสาร (D8)
  • Index — Register บอกคำสั่งที่กำลังทำ (D9) คำสั่งใน Table หมายเลข 0, 1, 2, 3 จะวนเป็น Loop ไปเรื่อยๆ

ดาวน์โหลดโปรแกรมลง Client

ทดสอบระบบ

  1. เปิด Monitor ในโปรแกรมของ Server แล้วตั้งค่าทดสอบ
    • Server 1: M0 = ON, Y0 = OFF, Y1 = ON, D0 = 111, D1 = 222
    • Server 2: M0 = ON, M2 = ON, Y0 = ON, Y2 = ON, D0 = 333
  2. เปิด Monitor ของ Client แล้วสั่ง M10 (เก็บ IP และ Port) ตามด้วย M11 (ส่ง DESTIP และ MBUSTCP)
  3. ผลใน Client
    • Server 1: M1001 = ON (Y1), M1100 = ON (M0), D1000 = 111, D1001 = 222
    • Server 2: M2000 และ M2002 = ON (Y0, Y2), M2100 และ M2102 = ON (M0, M2), D2000 = 333

ค่าที่อ่านได้ตรงกับฝั่ง Server แปลว่า PLC ตัวนี้ทำหน้าที่ Modbus TCP Client ได้แล้ว

สรุป

Samkoon FAs-32MT-AC-E ทำได้ทั้งเครือข่าย Modbus RS485 และ Modbus TCP/IP เป็นได้ทั้ง Master, Slave, Client และ Server สำหรับ TCP/IP ขั้นตอนคือ ตั้ง IP และ Protocol ในแท็บ Net, สร้าง Modbus Table ต่อ Server หนึ่งตัว, ใช้ MOV เก็บ IP และ Port, ใช้ DESTIP ผูก IP กับ Client ID แล้วใช้ MBUSTCP ส่งคำสั่งด้วย Client ID เดียวกัน

บทถัดไป

ใช้งาน Modbus RS485 และ TCP/IP พร้อมกันใน PLC ครบถ้วน

8 นาทีเริ่มต้น · Beginner

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

Modbus TCP/IP ต่างจาก Modbus RS485 อย่างไร
RS485 ใช้สาย 2 เส้นต่อแบบ Daisy Chain และเรียก Master-Slave ส่วน TCP/IP ใช้สาย LAN ต่อเข้า Network Switch และเรียก Client-Server (Client = ผู้ขอข้อมูล, Server = ผู้ให้ข้อมูล) ต้องตั้ง IP Address ให้ทุกตัว ส่วนการสร้าง Modbus Table ยังเหมือนเดิม
DESTIP กับ MBUSTCP ทำหน้าที่อะไร
DESTIP บอกว่า IP และ Port ปลายทางเก็บอยู่ที่ D Register ตัวไหน (ในคลิปเริ่มที่ D100) และผูกกับ Client ID ใด พร้อมจำนวน Retry และ Register รับ Return code ส่วน MBUSTCP ส่งคำสั่งใน Modbus Table ผ่าน Client ID นั้น โดย Client ID ของสองคำสั่งต้องเท่ากัน
มี Server หลายตัวต้องทำอย่างไร
แยก Modbus Table และ Client ID ต่อ Server ในคลิป Server 1 เก็บ IP ที่ D100–D104 ใช้ Client ID 0 กับ Table slave1 ส่วน Server 2 เก็บ IP ที่ D200–D204 ใช้ Client ID 1 กับ Table slave2 แต่ละชุดมี DESTIP และ MBUSTCP ของตัวเอง