Intermediate
6 rungs
4 I/O

สั่ง VFD ผ่าน Modbus — Soft-start + ปรับความเร็วได้

VFD Soft-Start with Speed Setpoint

ส่ง Run/Stop bit + ค่าความถี่เป้าหมายให้ VFD ผ่าน Modbus RTU — soft-start ใช้ accel time ของ VFD เอง

หลักการ

แทนที่จะใช้คอนแทคเตอร์สลับเฟส (DOL/Star-Delta) วิธีที่นุ่มนวลและฉลาดกว่าคือ ใช้ VFD (Variable Frequency Drive) ซึ่งเริ่มจากความถี่ 0 Hz แล้วค่อยๆ เพิ่มขึ้นไปตามค่าที่ตั้งไว้ (Soft Start) — ลดกระแสกระชาก, ลด stress ทางกลของระบบ, และปรับความเร็วได้

สถาปัตยกรรม

PLC ─── Modbus RTU (RS485) ───→ VFD ───→ Motor
 ↑
 │
HMI (ปุ่ม Start/Stop, ช่องกรอกความถี่)

PLC เขียนค่า:

  • D200 = Run/Stop bit (1 = Run, 0 = Stop) → ส่งไปที่ Control Word ของ VFD
  • D201 = Frequency setpoint (×0.01 Hz, เช่น 5000 = 50.00 Hz) → ส่งไปที่ Frequency Reference

PLC อ่านค่า:

  • D300 = VFD status (running, fault, ready)
  • D301 = Actual frequency
  • D302 = Motor current

Soft-start ทำใน PLC หรือ VFD?

ใน VFD ดีกว่า — ทุก VFD มี parameter Acceleration Time (เช่น 5–30 วินาที) ที่คุมความชันของ ramp ใน hardware ตั้งไว้ที่ VFD แล้วใช้ได้เลย ถ้าทำใน PLC ต้อง MOV ค่าเปลี่ยน D201 ทีละ step + Timer = ยุ่งยากและช้ากว่า

ตั้งค่าที่ VFD:

  • F0.10 (Accel Time 1) = 10s — ramp up จาก 0 ไป 50 Hz ใน 10 วินาที
  • F0.11 (Decel Time 1) = 10s — ramp down ใน 10 วินาที

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

First scan (M8150)
  ↓
D201 = 3000 (ความเร็ว default 30 Hz) — ป้องกันค่า 0
  ↓
HMI กรอก setpoint ใน D201 (เช่น 5000 = 50 Hz)
  ↓
กด Start (X0) → M0 ติด (self-hold)
  ↓
D200 = 1 (Run command)
  ↓
MBUS ส่ง D200, D201 ไป VFD ตามรอบของ Modbus Table
  ↓
VFD เห็น D200 = 1 → เริ่ม ramp up ตาม Accel Time
  ↓
Motor หมุนถึง 50 Hz หลัง ~10s

กด Stop (X1) → M0 ดับ → D200 = 0 → VFD ramp down

ทำไมต้องตั้งค่า default ใน first-scan?

ถ้า D201 เป็น 0 ตอนเริ่ม PLC แล้วผู้ใช้กด Start เลย → VFD จะ run ที่ 0 Hz (motor stall) — ไม่ดีต่อระบบ

LD M8150 / MOV K3000 D201 ตั้งค่าตอน first scan ให้เป็น 30.00 Hz อย่างน้อยจะมีความเร็วเริ่มต้นที่ปลอดภัย

Modbus Table Setup (SamSoar2022)

ก่อน import โปรแกรมนี้ ต้องสร้าง Modbus Table ใน SamSoar2022 ก่อน:

IndexSlaveFCSlave RegPLC RegLengthMode
0106 (Write)0x2000 (Control)D2001Loop
1106 (Write)0x2001 (Freq)D2011Loop
2103 (Read)0x3000 (Status)D3003Loop

(0x2000/0x2001 และ 0x3000 เป็น Hex address ของ VFD ทั่วไป — ดูคู่มือ VFD ของคุณ)

ตั้งชื่อตารางเป็น "VFD" แล้ว trigger mode = Loop (PLC จะส่งทุก ~50ms อัตโนมัติ)

โปรแกรม PLC

สั่ง VFD ผ่าน Modbus — Soft-start + ปรับความเร็วได้ — VFD Soft-Start with Speed Setpoint
ส่ง Run/Stop bit + ค่าความถี่เป้าหมายให้ VFD ผ่าน Modbus RTU — soft-start ใช้ accel time ของ VFD เอง
N0ตั้งค่าเริ่มต้นตอนเปิดเครื่อง
First scan — ตั้ง default frequency setpoint = 30.00 Hz (3000 × 0.01)
M8150MOVK3000, D201
N1Start/Stop + คำสั่ง Run
Start (X0) + self-hold พร้อม interlock ของ Stop (NC X1) และ VFD Fault (NC X2)
X0M0X1X2M0
Run command (D200=1) เมื่อ M0 ติด, ส่งไป VFD ผ่าน Modbus
M0MOVK1, D200
Stop command (D200=0) เมื่อ M0 ดับ — VFD จะ ramp down
M0MOVK0, D200
N2การสื่อสาร Modbus
Modbus polling — ตั้ง Trigger Mode = Loop ที่ตาราง 'VFD'
M8151MBUSK1, VFD, D100, D101
N3ไฟแสดงสถานะ Run
ไฟ Indicator (Y3) — แสดงว่ามอเตอร์กำลังวิ่ง (อ่านจาก D300 bit 0 ที่ MBUS อ่านจาก VFD)
M0Y3
Network count: 4, gap: 12
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

I/O Assignment

AddressRoleNote
X0ปุ่ม Start (NO)
X1ปุ่ม Stop (NC)
X2VFD Fault input (NC)ต่อจาก VFD relay output ที่ตั้งให้ ON เมื่อปกติ
Y3ไฟ Run (สีเขียว)

Parameters ที่ปรับได้

D200default: 0

คำสั่ง Run/Stop — เขียน 1 = Run, 0 = Stop ส่งไป VFD ทุกรอบ Modbus

D201default: 3000 (30.00 Hz)

ค่า Frequency setpoint × 0.01 Hz เช่น 5000 = 50.00 Hz, 6000 = 60.00 Hz — HMI เขียนค่านี้ได้

D100 / D101default: Modbus error / index

ใช้ตรวจสอบสถานะการสื่อสาร Modbus (D100 = error code, D101 = current poll index)

อุปกรณ์ที่แนะนำ

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

ทำไมไม่ใช้ Soft Starter อย่างเดียว แทนที่จะใช้ VFD?

Soft Starter ลดกระแสกระชากตอนสตาร์ทอย่างเดียว ไม่ปรับความเร็วระหว่างทำงาน VFD ทำได้ทั้งคู่ — soft start + ปรับความเร็ว + ประหยัดไฟ (ปั๊ม/พัดลมที่หรี่ความเร็วได้ประหยัดกำลังตามกฎ cube law) ปัจจุบัน VFD ราคาถูกลงมาก จึงนิยมใช้แทน Soft Starter ในงานใหม่

ค่า D201 มาจากไหน HMI เขียนได้ไหม?

HMI เขียน D201 ได้โดยตรง (เช่น Numeric Display element ที่ HMI ลิงก์ไป D201) ผู้ใช้กรอกตัวเลขเช่น 5000 ก็จะกลายเป็น 50.00 Hz ใส่ Min=0, Max=6000 ที่ HMI เพื่อจำกัดไม่ให้กรอกเกินช่วง

ถ้า Modbus communication ขาด VFD จะทำอะไร?

VFD ส่วนใหญ่มี Communication Timeout setting (เช่น F8.30) ตั้งให้ VFD หยุดเองเมื่อไม่ได้รับคำสั่งภายใน 1–2 วินาที — fail-safe สำคัญเพราะถ้า PLC แฮงค์ VFD ที่กำลัง run อาจวิ่งต่อเรื่อยๆ

Address 0x2000, 0x2001, 0x3000 ใช่ของ VFD ทุกยี่ห้อไหม?

ไม่ใช่ — แต่ละยี่ห้อมี Modbus map ของตัวเอง ดูคู่มือ VFD ของคุณ ตัวอย่าง: ABB ACS580 ใช้ 0x07D6, INVT GD200A ใช้ 0x2000, Schneider ATV320 ใช้ 0x2135 ตัวอย่างนี้ใช้ค่าที่ใกล้เคียงกับ VFD จีนทั่วไป

วิธีนำเข้าไฟล์ใน SamSoar2022

  1. ดาวน์โหลดไฟล์ vfd-soft-start.csv จากแท็บ CSV ด้านบน
  2. เปิด SamSoar2022 → สร้างโปรเจกต์ใหม่ (หรือเปิดโปรเจกต์ที่มีอยู่)
  3. เมนู File → Import → เลือกไฟล์ .csv ที่เพิ่งดาวน์โหลด
  4. กด F4 เพื่อ Compile — ตรวจสอบว่าไม่มี error
  5. ตรวจการต่อสายตามตาราง I/O ด้านบน แล้ว Download โปรแกรมเข้า PLC