หน้าแรกคู่มือVFDสอนใช้ HMI ควบคุม VFD Inverter ผ่าน Modbus RS485
VFDเริ่มต้น · Beginner21 นาที

สอนใช้ HMI ควบคุม VFD Inverter ผ่าน Modbus RS485

ใช้หน้าจอ Samkoon SK-070QS-G ตัวเดียวสั่งเดินหน้า ถอยหลัง หยุด และปรับความถี่อินเวอร์เตอร์ SK300 1.5kW ผ่าน Modbus RS485 ตั้งแต่การต่อสาย ตั้งค่า F00.01 / F00.02 ตำแหน่งข้อมูล 4000H / 5000H / 4100H จนถึง Script บนหน้าจอ

ตั้ง F00.01 = 2 และ F00.02 = 9 ให้อินเวอร์เตอร์ SK300 รับทั้งคำสั่งและความถี่จาก Modbus RS485 แล้วให้หน้าจอ HMI เขียนคำสั่งที่ 4x16384 (4000H: 1 เดินหน้า 2 ถอยหลัง 5 หยุด) เขียนความถี่ที่ 4x20480 (5000H) และอ่านสถานะที่ 4x16640 (4100H)

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

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

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

฿10,980

เป้าหมายของคลิป

ใช้หน้าจอ HMI เพียงอย่างเดียว ไม่มี PLC ควบคุมอินเวอร์เตอร์ (1.5 kW ไฟ 1 เฟสเข้า 3 เฟสออก) ที่ขับ AC Motor 3 เฟส

  • ปรับความถี่จาก Slider บนหน้าจอได้ทันที แม้มอเตอร์กำลังหมุนอยู่
  • ปุ่มเดินหน้า ถอยหลัง หยุด
  • แสดงสถานะของมอเตอร์บนหน้าจอ

เมื่อทำแบบนี้เป็น ก็เขียน Logic อะไรก็ได้ในหน้าจอเพื่อคุมมอเตอร์ตามเงื่อนไขที่ต้องการ

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

  • หน้าจอ HMI: SK-070QS-G + WiFi Module มีทั้งพอร์ตหัว DB9 และพอร์ต Terminal RS485 ใช้อันไหนก็ได้ ในคลิปใช้ Terminal เพราะสะดวกกว่า
  • อินเวอร์เตอร์: Samkoon SK300 รหัส SK300-2S-1R5G (1.5 kW รับไฟเข้า 1 เฟส ออก 3 เฟส)

การต่อสายไฟ

สายไฟกำลัง

  • อินเวอร์เตอร์ที่รับไฟ 1 เฟส ต่อสาย L กับ N เข้าที่ช่อง R กับ T
  • อินเวอร์เตอร์ที่รับไฟ 3 เฟส ต่อเข้า R S T
  • U V W ต่อไปที่มอเตอร์
  • PE คือ Ground (ในคลิปไม่ได้ต่อ)
  • ขั้ว P กับ PB ตรงกลางเป็นของตัวต้านทานเบรก ในงานนี้ไม่ได้ใช้

สายสื่อสาร RS485

Terminal ควบคุมของอินเวอร์เตอร์มีทั้งขารับสัญญาณดิจิทัล (สั่งหมุนไปหมุนกลับ เปลี่ยนความเร็ว) และขารับสัญญาณ Analog แต่ในคลิปใช้สายไฟแค่ 2 เส้นที่ขั้ว RS+ และ RS- สื่อสารด้วย Modbus ผ่าน RS485

อินเวอร์เตอร์Terminal RS485 ของหน้าจอ (COM3)หัว DB9 ของหน้าจอ (COM2)
RS+ขั้ว +Pin 9
RS-ขั้ว -Pin 8

ตั้งค่าอินเวอร์เตอร์

ต้องบอกอินเวอร์เตอร์สองเรื่อง คือรับ คำสั่ง จากไหน (ปุ่มเขียว/แดงหน้าเครื่อง, ขา X ของ Terminal หรือ Modbus RS485) และรับ ความถี่ จากไหน (ปุ่มหมุนหน้าเครื่อง, Analog, Digital หรือ Modbus RS485) งานนี้ให้มาจาก Modbus RS485 ทั้งคู่

วิธีเข้าเมนู: กด ESC หนึ่งครั้งจะขึ้นเป็น F เลือกกลุ่ม F00 แล้วเลือกพารามิเตอร์ที่ต้องการ

Parameterชื่อค่าจากโรงงานตั้งเป็น
F00.01Command source selection0: Operation panel2: Com
F00.02Frequency source selection1: Digital setting (power failure memory)9: Communication given
  • พอ F00.01 = 2 ไฟ LED รูปคอมพิวเตอร์จะกระพริบ บอกว่ารับคำสั่งจาก Communication ถ้ายังเป็น 0 จะสั่งหมุนได้จากปุ่มเขียวแดงหน้าเครื่องเท่านั้น
  • พอ F00.02 = 9 ความถี่จะขึ้นกับ Modbus หมุนปุ่มหน้าเครื่องค่าก็ไม่เปลี่ยน

พารามิเตอร์การสื่อสาร (กลุ่ม F09)

หน้าจอเป็น Modbus Master อินเวอร์เตอร์เป็น Modbus Slave ค่าจากโรงงานใช้ได้เลย

Parameterชื่อค่าจากโรงงาน
F09.00Baud rate5: 9600 bps
F09.01MODBUS data format3: 8-N-1 (Data Bit 8, Stop Bit 1, ไม่มี Parity)
F09.02Local address (Slave ID)1
F09.07Master or slave0: slave

ถ้าใช้หน้าจอตัวเดียวคุมอินเวอร์เตอร์หลายตัว ต้องเปลี่ยน Slave ID ของตัวที่ 2, 3 ที่ F09.02 ไม่ให้ซ้ำกัน ถ้าต่อกับอุปกรณ์อื่นที่ต้องการ Config ต่างไป ก็เปลี่ยนได้ในกลุ่ม F09

ตำแหน่งข้อมูล Modbus

ตำแหน่งในคู่มือเป็นเลขฐาน 16 (H) ต้องแปลงเป็นเลขฐาน 10 ก่อนใช้ในหน้าจอ

ข้อมูลHexใช้ในหน้าจอ (4x)การเข้าถึงค่า
คำสั่ง (Control command)4000H16384Write-only1 = เดินหน้า, 2 = ถอยหลัง, 5 = หยุด
ความถี่ (Communication setting value)5000H20480ในคลิปเขียนและ Monitor ที่ตำแหน่งนี้ช่วง -10000 ถึง 10000 ตามคู่มือ
สถานะ (Operation Status)4100H16640Read-only0 = หยุด, 1 = Forward, 2 = Reverse

ตำแหน่งคำสั่งเป็น Write-only ถ้าพยายามอ่านค่ากลับมาจะเกิด Error ในการสื่อสาร จึงต้องใช้ 4100H ถ้าอยากรู้สถานะการหมุน

เรื่องการนับ Address (หลักทั่วไป)

Address นับจาก 0 — ส่วนนี้ไม่ได้พูดในคลิป แต่ 4x20480 คือ Register 5000H ของ SK300 (เลขฐาน 16 → 20480 ในเลขฐาน 10) SKTool นับ Address จาก 0 เหมือนคู่มือ SK300 จึงใส่ค่าที่แปลงแล้วได้ตรงๆ ไม่ต้องบวก 1

สร้างโปรเจกต์ใน SKTool

  1. เปิด SKTool → New ตั้งชื่อโปรเจกต์ เช่น Inverter Control แล้วเลือกรุ่นหน้าจอ (ในคลิป SK-070QS-G)
  2. Link Interface: ถ้าใช้หัว DB9 ส่วนมากเป็น COM2 (ดูที่ตัวหน้าจอจะเขียนว่า COM2 485) ถ้าใช้ Terminal คือ COM3 ในคลิปเลือก COM3
  3. Device Service: Modbus → Modbus RTU Master
  4. ตั้งชื่อ Screen เป็น Main

ทดสอบด้วย Numeric Input สองตัว

ก่อนทำปุ่มสวยๆ ลองคุมอินเวอร์เตอร์ด้วยช่องป้อนตัวเลขก่อน

ช่องคำสั่ง

  • Write Address: COM3 → 4x → 16384 (Data Type 16-Bit Unsigned Int)
  • ตำแหน่งนี้เขียนได้อย่างเดียว ให้เอาติ๊ก Monitor Address Identical to Write Address ออก แล้วใส่ Monitor Address เป็นที่อื่น เช่น LW0

ช่องความถี่

  • Write Address: 4x20480 ติ๊ก Monitor Address Identical to Write Address ได้
  • Fractional Digits: 2 (ความถี่มีทศนิยม 2 ตำแหน่ง) Total Digits ปล่อยตามค่า Default

ดาวน์โหลดลงหน้าจอด้วยสาย USB-C (หน้าจอที่ต่อ Wi-Fi หรืออินเทอร์เน็ตได้จะดาวน์โหลดผ่าน IP Address ก็ได้) แล้วทดสอบ

  • ป้อนความถี่ 40.00 หน้าอินเวอร์เตอร์แสดง 20.00 คือค่าถูกหาร 2 ไม่เป็นไร แก้ตอนแสดงผลทีหลังได้ ขึ้นกับการเทียบบัญญัติไตรยางศ์ของอินเวอร์เตอร์
  • ป้อนคำสั่ง 1 มอเตอร์เดินหน้า (ช่องคำสั่งยังแสดง 0 เพราะไม่ได้อ่านค่ากลับ)
  • ป้อน 5 หยุด
  • ป้อน 2 หน้าเครื่องขึ้น R และมอเตอร์หมุนกลับทาง แล้วหยุดด้วย 5

ถ้าเขียนค่าเหล่านี้เข้าอินเวอร์เตอร์ได้ ส่วนการควบคุมก็จบแล้ว ที่เหลือคือการแสดงผล

สร้างหน้าจอควบคุม

ปุ่ม 3 ปุ่ม (Bit Switch)

  • Function: Inching
  • Write Address: LB0 เดินหน้า, LB1 ถอยหลัง, LB2 หยุด (LB = Local Bit ข้อมูลภายในหน้าจอ)

Slider ปรับความถี่

  • Write Address: 4x20480
  • Min 0 Max 10000 (ค่าที่อินเวอร์เตอร์รับ)
  • Scale direction: Right และลบตัว Display ของ Slider ออก

Numeric Display แสดงความถี่จริง

  • Monitor Address: LW100 (Local Word ค่าจะถูกเขียนด้วย Script)
  • Total Digits 4, Fractional Digits 2
  • จะเปลี่ยนเป็นแสดงรอบมอเตอร์ที่คำนวณเองก็ได้

Multi-State Lamp แสดงสถานะ

  • Monitor Address: 4x16640 State type: Value
  • แท็บ Text แก้ข้อความ: 0 = Stop, 1 = Forward, 2 = Reverse

เขียน Script

เปิด Script Editor → New ตั้งชื่อ Inverter แล้วสร้างตัวแปรใน Variable Setting

NameData typeAddressR/W
frequency16-Bit Unsigned IntCOM3 4x20480R/W
control16-BitCOM3 4x16384Write อย่างเดียว (ตำแหน่งนี้เขียนได้อย่างเดียว)

โค้ดใน Script

LocalWord[100] = frequency / 2;

if (LocalBit[0] == 1)
{
    control = 1;
}
if (LocalBit[1] == 1)
{
    control = 2;
}
if (LocalBit[2] == 1)
{
    control = 5;
}
  • บรรทัดแรกเอาความถี่ที่อ่านกลับมาหาร 2 ไปแสดงที่ LW100 เพราะค่าที่ได้กลับมาเป็น 2 เท่าของความถี่ที่หน้าเครื่องแสดง
  • กด LB0 สั่ง 1 (เดินหน้า), LB1 สั่ง 2 (ถอยหลัง), LB2 สั่ง 5 (หยุด) ตามที่ทดสอบไปแล้ว

Compile แล้วปิดหน้าต่าง จากนั้นดับเบิลคลิก Global Script → New เลือก Script Inverter (Frequency 50 ms) เพื่อให้รันตลอด พอกดปุ่มก็จะดักจับแล้วสั่งอินเวอร์เตอร์ทันที

ผลลัพธ์

ดาวน์โหลดลงหน้าจอแล้วลองเลื่อน Slider ค่าบนหน้าอินเวอร์เตอร์กับบนหน้าจอเท่ากันเป๊ะ กด Forward มอเตอร์วิ่งไปข้างหน้า กด Stop หยุด กด Reverse วิ่งกลับทาง

ความรู้นี้ต่อยอดได้ เช่น ใช้หน้าจอตัวเดียวคุมอินเวอร์เตอร์หลายตัว หรือถ้าเป็น IoT HMI ก็ส่งข้อมูลอินเวอร์เตอร์ไปแสดงบน SCADA ผ่าน MQTT ได้

บทถัดไป

วิธีอ่านค่ากระแสจาก VFD Inverter มาโชว์บน HMI

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