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

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

PLCเริ่มต้น · Beginner8 นาที

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

ใช้ Modbus RS485 และ Modbus TCP/IP พร้อมกันใน PLC Samkoon FAs-32MT-AC-E ตัวเดียว ตั้งค่า COM 1 เป็น Modbus Master ตั้งแท็บ Net เป็น TCP/IP Master สร้าง Modbus Table สองตาราง แล้วเขียน Ladder ด้วย MBUS, DESTIP และ MBUSTCP ให้ PLC สองตัวสั่งงานกันข้ามโปรโตคอล

PLC Samkoon FAs-32MT-AC-E ใช้ Modbus RS485 และ Modbus TCP/IP พร้อมกันได้ ในคลิป PLC ตัวหลักเป็น Master ฝั่ง RS485 (COM 1 คำสั่ง MBUS) และเป็น Client ฝั่ง TCP/IP (DESTIP + MBUSTCP) แล้วส่งต่อ Input ของ PLC ตัวหนึ่งไปสั่ง Output ของอีกตัวข้ามโปรโตคอล

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

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

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

฿3,690

RS485 กับ TCP/IP ในเครือข่ายเดียวกันได้ไหม

ปกติเวลาทำเครือข่าย Modbus เรามักคุ้นว่าถ้าใช้ RS485 ก็ต้องเป็น RS485 ทั้งเครือข่าย หรือถ้าใช้ TCP/IP ผ่านสาย LAN ก็เป็นสาย LAN ทั้งเครือข่าย คำตอบคือ PLC Samkoon ใช้ทั้งสองแบบพร้อมกันได้

ประโยชน์คือ เซ็นเซอร์หรืออุปกรณ์ไฟฟ้าบางตัวรองรับแค่ Modbus RS485 แต่ PLC ของเราอาจต้องสื่อสารกับอุปกรณ์อื่นผ่านสาย LAN แบบ Modbus TCP/IP การใช้สองแบบพร้อมกันจึงช่วยให้สร้างเครื่องหรือระบบได้หลาย Use Case

คลิปนี้ต่อยอดจากคลิปพื้นฐาน Modbus RS485 และ Modbus TCP/IP ของ PLC Samkoon ถ้ายังไม่เคยใช้ ควรดูคลิปพื้นฐานก่อน

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

บนโต๊ะมี PLC 3 ตัว

ตัวบทบาทการต่อ
Device 1PLC ตัวหลัก เป็นทั้ง Master (RS485) และ Client (TCP/IP)–
Device 2Modbus Slaveต่อกับ Device 1 ด้วยสาย RS485 สองเส้น
Device 3Modbus TCP/IP Serverต่อกับ Device 1 ด้วยสาย LAN

Device 2 และ Device 3 มีปุ่ม Input และหลอด Output ต่อไว้ โปรแกรมใน Device 1 ทำให้

  • กด Input ของ Device 2 → Output ของ Device 3 ติด
  • กด Input ของ Device 3 → Output ของ Device 2 ติด

แปลว่า Device 1 ทั้งอ่านและเขียนข้อมูลผ่านทั้ง RS485 และ TCP/IP

อุปกรณ์ที่ใช้

PLC ตัวหลักคือ Samkoon FAs-32MT-AC-E

  • ไฟเลี้ยง 220V AC, 32 I/O (16 In, 16 Out) แบบ Transistor Output
  • RS485 2 พอร์ต: COM 0 คือพอร์ตกลม และ COM 1 คือขั้ว Terminal (485A/485B)
  • Ethernet Port รองรับ Modbus TCP/IP

ในคลิปใช้ COM 1 เพราะต่อสาย RS485 เข้าขั้ว Terminal

ขั้นที่ 1 — ตั้งค่า RS485

เปิด SamSoar2022 ไปที่ Project Setting > Communication แท็บ COM 1(485)

ค่าDevice 1Device 2
ProtocolModbus masterModbus slave
Station number01
Baudrate / Databits / Stopbits / Checkcode9600 / 8 / 1 / NONE9600 / 8 / 1 / NONE

ขั้นที่ 2 — ตั้งค่า TCP/IP

ในหน้าเดียวกัน แท็บ Net

ค่าDevice 1Device 3
ProtocolTCP/IP masterTCP/IP slave
Network ConfigTCP ClientTCP Server
Local IP169.254.1.100169.254.1.102
Subnet mask255.255.255.0255.255.255.0
Local port2000 (ค่า Default)2000

IP ของสองตัวต้องต่างกัน ส่วน Port ต้องตรงกัน

ขั้นที่ 3 — สร้าง Modbus Table สองตาราง

ใน Project Tree ทางซ้าย หัวข้อ Modbus table สร้างตารางแยกของแต่ละโปรโตคอล

ตาราง 485-slave (ใช้กับคำสั่ง MBUS คุยกับ Device 2)

PortHandle codeSlave registerSlave countMaster registerComment
10x01 Read coil100001M1000Read Y0
10x02 Read disperse input01M1100Read X0
10x05 Write single coil100001M11Write Y0

ตาราง tcp-server (ใช้กับคำสั่ง MBUSTCP คุยกับ Device 3) หน้าตาเหมือนกัน ต่างกันแค่ Master register

PortHandle codeSlave registerSlave countMaster registerComment
10x01 Read coil100001M2000Read Y0
10x02 Read disperse input01M2100Read X0
10x05 Write single coil100001M10Write Y0

สรุปคือ อ่าน Y0 ของปลายทางมาเก็บที่ M1000 / M2000 อ่าน X0 มาเก็บที่ M1100 / M2100 และเขียนค่าของ M11 / M10 ลงไปที่ Y0 ของปลายทาง ตำแหน่ง Slave register ดูได้จากตาราง Modbus Address ของ Samkoon (X0 = 0, Y0 = 10000)

หมายเหตุเรื่องการนับ Address

ส่วนนี้ไม่ได้พูดในคลิป แต่เป็นแนวทางทั่วไปของ PLC Samkoon

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

ขั้นที่ 4 — เขียน Ladder

โปรแกรมในคลิปมี 3 ส่วน

  1. การสื่อสาร — M8151 (ON ตลอดเวลาที่ PLC รัน) แยกเป็นสองสาย
    • M0 (RS485 Read) → MBUS ผ่าน COM 1 (K1) ใช้ตาราง 485-slave เก็บ Error Code ที่ D0 และ Index ที่ D1
    • M1 (TCP/IP Read) → DESTIP ระบุปลายทางจาก IP ที่เริ่มต้นที่ D100 (Client ID K0, Retry K3, Return D106) และ MBUSTCP (Client ID K0) ใช้ตาราง tcp-server เก็บ Error Code ที่ D2 และ Index ที่ D3
    • M8151 อีกสายเขียน IP ปลายทาง 169.254.1.102 และ Port 2000 ลง D100–D104 ด้วย MOV
  2. ส่งต่อข้อมูลข้ามโปรโตคอล — M1100 (X0 ของ Device 2) → M10 (Write Y0 ของ Device 3) และ M2100 (X0 ของ Device 3) → M11 (Write Y0 ของ Device 2)
  3. แสดงสถานะ — M1000 (Y0 ของ Device 2) → Y000 และ M2000 (Y0 ของ Device 3) → Y001 ของ Device 1
Device 1 — RS485 + TCP/IP พร้อมกัน
M8151 แยกไป MBUS (M0) และ DESTIP + MBUSTCP (M1) เขียน IP 169.254.1.102:2000 ลง D100–D104 แล้วส่งต่อ Input ข้ามสองโปรโตคอล
N0Modbus Communication
M0 สั่ง MBUS ฝั่ง RS485 ส่วน M1 สั่ง DESTIP และ MBUSTCP ฝั่ง TCP/IP
M8151M0MBUSK1, 485-slave, D0, D1M1DESTIPD100, K0, K3, D106M1MBUSTCPK0, tcp-server, D2, D3
IP ปลายทาง 169.254.1.102 ใน D100–D103 และ Port 2000 ใน D104
M8151MOVK169, D100MOVK254, D101MOVK1, D102MOVK102, D103MOVK2000, D104
N1Cross-Protocol Link
X0 ของ Device 2 (M1100) สั่ง M10 ไป Write Y0 ของ Device 3
M1100M10
X0 ของ Device 3 (M2100) สั่ง M11 ไป Write Y0 ของ Device 2
M2100M11
N2Status Lamps
Y0 ของ Device 2 (M1000) แสดงที่ Y000
M1000Y000
Y0 ของ Device 3 (M2000) แสดงที่ Y001
M2000Y001
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

ในคลิป ส่วนการสื่อสารวาด M1 เป็นหน้าสัมผัสเดียวที่แตกไปทั้ง DESTIP และ MBUSTCP ส่วนตัวอย่างด้านบนเขียน M1 ซ้ำในสองสาย ซึ่งทำงานเหมือนกัน

ลำดับการทำงาน

  1. กด Input X0 ของ Device 2 → Device 1 อ่านผ่าน RS485 มาเก็บที่ M1100
  2. M1100 สั่ง M10 ติด → แถว Write single coil ในตาราง tcp-server เขียนค่าไปที่ Y0 ของ Device 3 ผ่าน TCP/IP
  3. ทางกลับกัน X0 ของ Device 3 อ่านมาที่ M2100 → สั่ง M11 → เขียนไปที่ Y0 ของ Device 2 ผ่าน RS485
  4. สถานะ Y0 ของสองตัวที่อ่านกลับมา (M1000, M2000) แสดงที่ Y000 และ Y001 ของ Device 1

สรุป

PLC Samkoon FAs-32MT-AC-E ใช้ Modbus RS485 และ Modbus TCP/IP พร้อมกันได้ โดยตั้ง COM 1 เป็น Modbus Master ตั้งแท็บ Net เป็น TCP/IP Master สร้าง Modbus Table แยกของแต่ละฝั่งที่ใช้ M คนละชุด แล้วใช้ M เป็นตัวกลางส่งข้อมูลข้ามโปรโตคอล

บทถัดไป

แก้ปัญหาข้อมูล Modbus แสดงผลแปลกๆ

2 นาทีขั้นสูง · Advanced

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

ทำไมต้องใช้ RS485 กับ TCP/IP พร้อมกันใน PLC ตัวเดียว?
เพราะเซ็นเซอร์หรืออุปกรณ์ไฟฟ้าบางตัวรองรับแค่ Modbus RS485 ขณะที่ PLC ของเราอาจต้องคุยกับอุปกรณ์อื่นผ่านสาย LAN แบบ TCP/IP การใช้ทั้งสองแบบพร้อมกันจึงทำให้ออกแบบระบบได้หลาย Use Case
ต้องตั้งค่า Communication อย่างไร?
ใน Project Setting > Communication ของ PLC ตัวหลัก แท็บ COM 1(485) เลือก Modbus master และแท็บ Net เลือก TCP/IP master + TCP Client ส่วน PLC ฝั่ง RS485 ตั้งเป็น Modbus slave (Station number 1) และ PLC ฝั่ง LAN ตั้งเป็น TCP/IP slave + TCP Server โดยใช้ Local port 2000 ตรงกันและ IP คนละเบอร์
โครงสร้างโปรแกรมเป็นอย่างไร?
M8151 (ON ตลอดเวลาที่ PLC รัน) แยกเป็นสองสาย M0 สั่ง MBUS ใช้ตาราง 485-slave ผ่าน COM 1 และ M1 สั่ง DESTIP กับ MBUSTCP ใช้ตาราง tcp-server ส่วน IP ปลายทาง 169.254.1.102 และ Port 2000 เขียนลง D100–D104 ด้วยคำสั่ง MOV
เชื่อมข้อมูลระหว่างสองโปรโตคอลอย่างไร?
ใช้ M เป็นตัวกลาง X0 ของ PLC ฝั่ง RS485 ที่อ่านมาเก็บใน M1100 ไปสั่ง M10 ซึ่งเป็นค่าที่ Write Single Coil ไป Y0 ของ PLC ฝั่ง TCP/IP และ X0 ของ PLC ฝั่ง TCP/IP ที่อ่านมาเก็บใน M2100 ไปสั่ง M11 ซึ่ง Write ไป Y0 ของ PLC ฝั่ง RS485