การควบคุม VFD ด้วย PLC ผ่าน Modbus RS485
สอนใช้ PLC Samkoon FAs-32MT-AC-E สั่ง VFD SK300 เดินหน้า ถอยหลัง หยุด และปรับความถี่ผ่าน Modbus RTU RS485 ด้วยสาย 2 เส้น ตั้งแต่ Wiring การตั้งค่า COM1 พารามิเตอร์ F00/F09 ของ VFD ไปจนถึง Modbus Table และคำสั่ง MBUS
ต่อสาย RS485 แค่ 2 เส้นจาก PLC ไปที่ RS+ / RS- ของ VFD ตั้ง F00.01 = 2 และ F00.02 = 9 ให้ VFD รับคำสั่งจาก Communication แล้วให้ PLC เขียนค่าความถี่ไปที่ 5000H และคำสั่งเดินหน้า/ถอยหลัง/หยุดไปที่ 4000H ผ่าน Modbus Table กับคำสั่ง MBUS
อัพเดทล่าสุด: 26 ตุลาคม 2569
การควบคุม VFD ด้วย PLC ผ่าน Modbus RS485
ปกติเวลาใช้อินเวอร์เตอร์กับมอเตอร์ เรามักปรับสปีดหรือสั่งหมุนไปหมุนกลับจากหน้าแป้นของ VFD หรือใช้ Digital Input / Analog Input ของ VFD คลิปนี้สอนอีกวิธีหนึ่ง คือให้ PLC สั่ง VFD ผ่าน Modbus RTU RS485 ด้วยสายเพียง 2 เส้น แล้วใช้ Data Register ใน PLC กำหนดทั้งความถี่และทิศทางการหมุนของมอเตอร์
ผลลัพธ์ที่คลิปโชว์ใน Monitor ของ SamSoar2022:
- D0 = ค่าความถี่ เช่น D0 = 2,000 มอเตอร์หมุนที่ 10Hz, D0 = 5,000 ได้ 25Hz และ D0 = 10,000 ได้ 50Hz ซึ่งเป็นความถี่สูงสุดที่ตั้งไว้ใน VFD
- D2 = คำสั่ง (1 = เดินหน้า, 2 = ถอยหลัง, 5 = หยุด)
อุปกรณ์ที่ใช้
VFD Inverter
- รุ่น SK300-2S1.5GB
- ไฟเข้า 1 Phase ออก 3 Phase
- กำลังสูงสุด 1.5kW (2 แรงม้า)
PLC
- รุ่น Samkoon FAs-32MT-AC-E (ใช้ PLC Samkoon รุ่นอื่นได้เช่นกัน เพราะสื่อสารผ่าน RS485 ได้อยู่แล้ว)
- มีพอร์ต RS485 2 พอร์ต
- ระหว่างทดสอบโปรแกรม ใช้สาย LAN Monitor ได้ ซึ่งคลิปแนะนำให้ใช้แทนสาย USB เพราะสาย USB อาจโดนสัญญาณรบกวนได้
การต่อสาย (Wiring)
ใช้สายไฟแค่ 2 เส้น จาก Terminal RS485 A / B ของ PLC ไปที่ Terminal ของ VFD:
- RS+ ของ VFD (แถวบน) → A ของ PLC
- RS- ของ VFD (แถวล่าง) → B ของ PLC
การตั้งค่า PLC
- เปิด Project Setting → Communication → แท็บ COM 1(485) (COM1 คือ Terminal RS485 ที่ต่อสายไว้)
- ตั้งค่าตามคลิป:
Baudrate: 9600 (ค่า Default)
Databits: 8
Stopbits: 1
Checkcode: NONE
Protocol: Modbus master
Station number: 0
สำคัญ: โดย Default PLC ถูกตั้งเป็น Modbus slave ต้องเปลี่ยนเป็น Modbus master เอง ส่วน Station number ใส่ 0 เพราะ Master ไม่ต้องมี ID
การตั้งค่า VFD
แหล่งคำสั่งและแหล่งความถี่
กดปุ่ม ESC ที่หน้า VFD แล้วเลือกพารามิเตอร์:
- F00.01 (Command source selection) = 2 (Com) ไอคอนรูปคอมพิวเตอร์บนหน้าจอ VFD จะกะพริบ แปลว่าคำสั่งเดินหน้า ถอยหลัง หยุด จะมาจากการสื่อสารผ่านสาย 2 เส้นนี้
- F00.02 (Frequency source selection) = 9 (Communication given) ให้ค่าความถี่มาจากการสื่อสารเช่นกัน ถ้าอยากให้ความถี่มาจากแหล่งอื่น เช่น AI1 ก็เลือกตามตารางในคู่มือ
ค่าสื่อสาร RS485 ของ VFD
ค่า Default ของ SK300 ใช้กับ PLC ได้เลย ถ้าใช้ PLC รุ่นอื่นหรือต่อกับอุปกรณ์อื่นที่ต้องใช้ค่าต่างออกไปก็เปลี่ยนเองได้:
F09.00 Baud rate = 5 (9600bps)
F09.01 MODBUS data format = 3 (No verification 8-N-1)
F09.02 Local address = 1 (Slave ID)
F09.07 Master or slave = 0 (slave)
ถ้าใช้ PLC 1 ตัวคุมหลาย Inverter ต้องไปตั้ง F09.02 ของ Inverter ตัวที่ 2, 3, 4 ให้มี Slave ID ไม่ซ้ำกัน
ตำแหน่งข้อมูล Modbus ของ VFD
ดูได้จากคู่มือ Inverter:
4000H — Control command
- 01H = Forward rotation (เดินหน้า)
- 02H = Reverse (ถอยหลัง)
- 05H = Stop (หยุด)
- คลิประบุเป็นเลขฐาน 10 ว่า 16384 (4x) Write-only
5000H — Communication setting value
- ป้อนค่าได้ตั้งแต่ -10000 ถึง 10000 เพื่อเปลี่ยนความถี่
- 10000 = 100% ของความถี่สูงสุดที่ตั้งไว้ใน VFD ส่วนค่าติดลบคือหมุนสวนทาง
- เลขฐาน 10 คือ 20480 (4x)
จำแค่ 4000H กับ 5000H ก็พอ PLC บางยี่ห้อต้องป้อน Modbus Address เป็นเลขฐาน 10 ส่วน SamSoar2022 ป้อนเป็นฐาน 10 หรือฐาน 16 ก็ได้
Address นับจาก 0 (แนวทางทั่วไป ไม่ได้พูดในคลิป) — 4000H และ 5000H ในคู่มือ SK300 คือ Address จริงในเฟรม Modbus ซึ่งนับจาก 0 เหมือนช่อง Slave Register ของ SamSoar2022 จึงใส่ H4000 / H5000 ได้ตรงๆ ไม่ต้องบวก 1 ถ้าโปรแกรม Master นับจาก 1 (Base 1) ให้บวก 1
การเขียนโปรแกรม
1. สร้าง Modbus Table
คลิกขวาที่ Modbus Table → Add Modbus Table จะได้ตารางเปล่า (ในคลิปตั้งชื่อตารางว่า vfd) แล้วกรอก 2 แถว:
| ช่อง | แถว 1 (ความถี่) | แถว 2 (คำสั่ง) |
|---|---|---|
| Port (Slave ID ที่จะคุยด้วย) | K1 | K1 |
| Handle code | 0x06 (Write single register) | 0x06 (Write single register) |
| Slave register | H5000 | H4000 |
| Slave count | K1 (1 Word) | K1 |
| Master register | D0 | D2 |
| TriggerMode | ModbusMode_Loop | ModbusMode_Loop |
| Comment | Frequency | Command |
- 0x06 คือฟังก์ชันเขียนค่าลง Register ตัวเดียว (Write single register)
- Master register คือ Data Register ใน PLC ที่เก็บค่าที่จะส่ง อยากใช้ตัวอื่น เช่น D5000 ก็ได้
- Loop ทำให้ส่งค่าไปที่ VFD ซ้ำไปเรื่อยๆ เวลาเปลี่ยนค่าระหว่าง PLC ทำงาน VFD ก็ได้ค่าใหม่ทันที
2. เขียน Ladder
3. พารามิเตอร์ของคำสั่ง MBUS
- COM: K1 — ใช้พอร์ต COM1 ของ PLC (Terminal RS485 ที่ต่อสายไว้)
- TBL: vfd — ชื่อ Modbus Table ที่เพิ่งสร้าง ถ้าตั้งชื่อตารางอื่นก็ใส่ชื่อนั้น
- WR: D100 — รหัส Error ถ้าการสื่อสารมีปัญหา จะได้รู้ว่าต้องไป Debug ตรงไหน เช่น ต่อสายไม่ดี หรือส่งข้อมูลไปผิดตำแหน่ง
- WR_ID: D102 — Index บอกว่าตอนนี้ MBUS กำลังรันแถวไหนใน Modbus Table
ค่า 1, 2, 5 ที่ MOV ลง D2 มาจากตาราง 4000H ของ VFD (1 = Forward, 2 = Reverse, 5 = Stop)
การ Download และ Monitor
Download ครั้งแรก
PLC ที่เพิ่งแกะกล่องต้อง Download ผ่านสาย USB-C ก่อน
Monitor ผ่านสาย LAN
- ไปที่ Project Setting → Communication → แท็บ Net ดู Local IP ของ PLC (Default 192.168.1.200) เปลี่ยนได้ตรงนี้
- ตั้ง IP ของคอมพิวเตอร์ใน Control Panel ให้อยู่วง LAN เดียวกับ PLC
- เปิด CMD แล้ว
ping 192.168.1.200ถ้ามี Reply แปลว่าคอมพิวเตอร์คุยกับ PLC ได้ - ใน Communication Setting เปลี่ยนจาก USB เป็น Network ใส่ IP ของ PLC แล้วกดทดสอบ
- ทดสอบผ่านแล้วกด Monitor หรือ Download โปรแกรมผ่าน LAN ได้เลย
จุดที่ต้องเช็คเมื่อสั่ง VFD ไม่ได้
- สาย A ต่อ RS+ และ B ต่อ RS- ถูกขั้วหรือไม่
- COM1 ของ PLC เป็น Modbus master แล้วหรือยัง (Default เป็น Slave)
- F00.01 = 2 และ F00.02 = 9 แล้วหรือยัง
- Baud rate / Data format ของ PLC กับ VFD ตรงกัน และ Slave ID ในตาราง (ช่อง Port) ตรงกับ F09.02
- ดูรหัส Error ใน D100
สรุป
PLC สั่ง VFD ได้ทั้งความเร็วและทิศทางด้วยสาย RS485 เพียง 2 เส้น ตั้ง VFD ให้รับคำสั่งและความถี่จาก Communication (F00.01 = 2, F00.02 = 9) ตั้ง COM1 ของ PLC เป็น Modbus master แล้วใช้ Modbus Table เขียน D0 ไปที่ 5000H (ความถี่) และ D2 ไปที่ 4000H (คำสั่ง) โดยมี MBUS เป็นตัวรันตาราง
บทถัดไป
สอนใช้ HMI ควบคุม VFD Inverter ผ่าน Modbus RS485
มีคำถาม? ติดต่อทีมงาน

