สอน 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
จาก 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 Address | Station number |
|---|---|---|
| Client | 169.254.1.100 | 0 |
| Server 1 | 169.254.1.101 | 1 |
| Server 2 | 169.254.1.102 | 2 |
ขั้นตอนทั้งหมด
- ต่ออุปกรณ์และสาย LAN
- ตั้ง Communication Parameters ใน Client และ Server
- สร้าง Modbus Table และกำหนดคำสั่งที่จะใช้
- ใช้คำสั่ง MOV กำหนด IP ของ Modbus Server ปลายทาง
- ใช้คำสั่ง DESTIP ระบุ IP Address + Port ของปลายทาง + Client ID
- ใช้คำสั่ง 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 ตัว
- เปลี่ยนภาษาเป็นภาษาอังกฤษที่แท็บ Config
- ไปที่ 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 code | Slave register | Slave count | Master register | Comment |
|---|---|---|---|---|---|
| 0 | 0x01 Read coil | 10000 | 10 | M1000 | Read Y0~ |
| 1 | 0x01 Read coil | 30000 | 10 | M1100 | Read M0~ |
| 2 | 0x02 Read disperse input | 0 | 10 | M1200 | Read X0~ |
| 3 | 0x03 Read holding register | 40000 | 10 | D1000 | Read 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 เพราะจำง่าย
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
ทดสอบระบบ
- เปิด 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
- เปิด Monitor ของ Client แล้วสั่ง M10 (เก็บ IP และ Port) ตามด้วย M11 (ส่ง DESTIP และ MBUSTCP)
- ผลใน 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 ครบถ้วน
คำถามที่พบบ่อย
- 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 ของตัวเอง
มีคำถาม? ติดต่อทีมงาน
