คำสั่งคุม Servo
เรียนรู้การควบคุม Servo Motor ด้วยคำสั่ง PLSF และ PLSY ของ PLC ตั้งแต่การหมุนต่อเนื่อง การกำหนดจำนวนรอบ การคำนวณ Pulse ไปจนถึงการสร้าง Sequence
อัพเดทล่าสุด: 1/2/2569
ราคาชุดอุปกรณ์
การควบคุม Servo Motor ด้วยคำสั่ง Position Commands
บทเรียนนี้จะสอนการใช้คำสั่ง High Speed Output ของ PLC เพื่อควบคุมตัว Servo Motor ในแบบต่างๆ ตั้งแต่การหมุนแบบต่อเนื่อง การกำหนดจำนวนรอบ ไปจนถึงการสร้าง Sequence การเคลื่อนที่แบบอัตโนมัติ
ความเข้าใจเบื้องต้นเกี่ยวกับ Servo Control
หลักการทำงานของ Servo Drive
ค่า Pulse per revolution เริ่มต้นของ Drive คือ 10,000 Pulse = 1 รอบการหมุน
การคำนวณความเร็วรอบ:
- ความถี่ 10,000 Hz = หมุน 1 รอบต่อวินาที
- ความถี่ 5,000 Hz = หมุน 1 รอบต่อ 2 วินาที
- ความถี่ 20,000 Hz = หมุน 2 รอบต่อวินาที
ขีดจำกัด PLC:
- ความถี่สูงสุด: 200 kHz (เพียงพอสำหรับงานส่วนใหญ่)
คำสั่ง PLSF - การหมุนแบบต่อเนื่อง
คำสั่ง PLSF ใช้สำหรับสั่งให้ Servo หมุนแบบต่อเนื่องด้วยความถี่ที่กำหนด
การใช้งาน PLSF
PLSF K5000 Y0
Parameter:
- K5000: ความถี่ 5,000 Hz
- Y0: ขา Output สำหรับส่ง Pulse
ขั้นตอนการทำงาน
- Enable Servo ด้วย M501
- เรียกคำสั่ง PLSF เพื่อเริ่มการหมุน
- ปรับความเร็ว โดยเปลี่ยนค่าความถี่
- หยุดการทำงาน โดย Reset M501
คำสั่ง PLSY - การหมุนจำนวนรอบที่กำหนด
คำสั่ง PLSY ให้ความสามารถในการกำหนดจำนวน Pulse ที่ต้องการออก
การใช้งาน PLSY
PLSY K5000 K20000 Y0
Parameter:
- K5000: ความถี่ 5,000 Hz
- K20000: จำนวน Pulse (20,000 = 2 รอบ)
- Y0: ขา Output
ตัวอย่างการคำนวณ
- 1 รอบ = 10,000 Pulse
- 2 รอบ = 20,000 Pulse
- 0.5 รอบ = 5,000 Pulse
Special Registers สำหรับ Servo Control
Pulse Output Status Register
| แกน | Status Register | ความหมาย |
|---|---|---|
| Y0 | M8134 | สถานะการออก Pulse |
| Y1 | M8135 | สถานะการออก Pulse |
| Y2 | M8136 | สถานะการออก Pulse |
การใช้งาน:
- Register เป็น ON เมื่อกำลังออก Pulse
- Register เป็น OFF เมื่อหยุดการทำงาน
- เป็น Read Only ไม่สามารถแก้ไขได้
Pulse Accumulation Counter
| แกน | Counter Register | ความหมาย |
|---|---|---|
| Y0 | D8140 | นับจำนวน Pulse ที่ออกแล้ว |
| Y1 | D8142 | นับจำนวน Pulse ที่ออกแล้ว |
| Y2 | D8144 | นับจำนวน Pulse ที่ออกแล้ว |
คุณสมบัติ:
- เป็นแบบ Double Word
- ใช้ Monitor ตำแหน่ง ปัจจุบันของ Servo
- เก็บค่าสะสมการออก Pulse
คำสั่ง DRVI - การเคลื่อนที่แบบ Increment
คำสั่ง DRVI ใช้สำหรับการเคลื่อนที่แบบเพิ่มทีละขั้น พร้อมการควบคุม Acceleration และ Deceleration
การใช้งาน DRVI
DRVI K5000 K20000 K1000 K1000 Y0 Y4
Parameter:
- K5000: ความถี่เป้าหมาย (Hz)
- K20000: จำนวน Pulse (2 รอบ)
- K1000: ค่า Acceleration (ms)
- K1000: ค่า Deceleration (ms)
- Y0: ขา Pulse Output
- Y4: ขา Direction Output
การกำหนดทิศทาง
หมุนทางเดิม:
DRVI K5000 K20000 K1000 K1000 Y0 Y4
หมุนทางกลับ:
DRVI K5000 K-20000 K1000 K1000 Y0 Y4
คำสั่ง DRVA - การเคลื่อนที่แบบ Absolute
คำสั่ง DRVA ใช้สำหรับการเคลื่อนที่ไปยังตำแหน่งที่กำหนดแบบสัมบูรณ์
การใช้งาน DRVA
DRVA K10000 K100000 K1000 K1000 Y0 Y4
การทำงาน:
- เคลื่อนที่ไปยังตำแหน่งสัมบูรณ์ 100,000 Pulse
- ไม่ขึ้นกับตำแหน่งปัจจุบัน
- เหมาะสำหรับกลับสู่จุดเริ่มต้น
การ Reset ตำแหน่ง
DMOV K0 D8140 // Reset position counter เป็น 0
คำสั่ง ZRN - Homing Operation
คำสั่ง ZRN ใช้สำหรับการกลับสู่จุดเริ่มต้นโดยอ้างอิงจาก Hardware Sensor
การใช้งาน ZRN
ZRN K-1000 K-1000 K1000 K1000 X0 Y0 Y4
Parameter:
- K-1000: ความเร็วในการหา Home
- K-1000: ความเร็ว Creep (หลังเจอ Sensor)
- K1000: Acceleration
- K1000: Deceleration
- X0: Home Sensor Input
- Y0: Pulse Output
- Y4: Direction Output
ขั้นตอนการทำงาน Homing
- หมุนหาจุด Home ด้วยความเร็วปกติ
- เจอ Sensor แล้วเปลี่ยนเป็นความเร็ว Creep
- หมุนต่อ จนกว่าจะออกจาก Sensor
- หยุดที่ขอบ Sensor เป็นจุด Home
การสร้าง Servo Sequence
ตัวอย่าง Multi-Step Sequence
// Stage 0: เริ่มต้น Sequence
LD M600
LDD= D600 K0
LDI M601 (NC)
MOV K1 D600
// State 1: เคลื่อนที่ 2 รอบ
LDD= D600 K1
DRVA K10000 K20000 K1000 K1000 Y0 Y4
// เช็ค Complete
LDD= D8140 K20000
LD M8134 (Falling Edge)
MOV K2 D600
// Stage 2: เคลื่อนที่อีก 1 รอบ (ช้า)
LDD= D600 K2
DRVA K5000 K30000 K1000 K1000 Y0 Y4
// เช็ค Complete
LDD= D8140 K30000
LD M8134 (Falling Edge)
MOV K3 D600
// Stage 3: กลับจุดเริ่มต้น
LDD= D600 K3
DRVA K10000 K0 K1000 K1000 Y0 Y4
// เช็ค Complete
LDD= D8140 K0
LD M8134 (Falling Edge)
MOV K1 D600
การจัดการ Sequence Control
ข้อควรระวัง:
- ตรวจสอบ Complete Status ก่อนขั้นตอนถัดไป
- ใช้ขอบขาลงของ M8134 เพื่อเช็คว่าการเคลื่อนที่เสร็จสิ้น
- เช็ค D8140 เพื่อยืนยันตำแหน่ง
การตั้งค่า Drive Parameter
การเปลี่ยนโหมด Drive
เข้า Drive Parameter:
P05.17 = 2 // เปลี่ยนเป็นโหมด Position Control
หมายเหตุ: ต้องปิด-เปิด Drive ใหม่หลังเปลี่ยนค่า
การปรับแต่งค่าต่างๆ
ค่าที่สามารถปรับได้:
- Pulse per revolution
- Inertia compensation
- Acceleration/Deceleration curves
การแก้ปัญหาที่พบบ่อย
ปัญหา: Servo ไม่หมุนตามที่กำหนด
สาเหตุและแนวแก้:
- ตรวจสอบการ Enable - ให้แน่ใจว่า M501 ทำงาน
- เช็ค Drive Parameter - ยืนยันค่า P05.17 = 2
- ตรวจสอบ Pulse per revolution - อาจต้องปรับค่าให้เหมาะสม
ปัญหา: Homing ไม่แม่นยำ
แนวแก้:
- ลดความเร็ว Creep ให้น้อยลง
- เช็ค Sensor Response - ให้แน่ใจว่า Sensor ทำงานปกติ
- ปรับ Acceleration/Deceleration ให้เหมาะสม
เคล็ดลับการใช้งาน
การออกแบบ Motion Profile
- เริ่มด้วยความเร็วต่ำ เพื่อทดสอบระบบ
- ใช้ Acceleration ที่เหมาะสม ป้องกันการสั่นสะเทือน
- เพิ่ม Safety Margin สำหรับ Position Accuracy
การ Monitor และ Debug
- ใช้ D8140 เพื่อ Monitor ตำแหน่งแบบ Real-time
- ใช้ M8134 เพื่อเช็ค Motion Status
- เก็บ Log การเคลื่อนที่เพื่อวิเคราะห์ปัญหา
สรุป
การควบคุม Servo Motor ด้วย PLC ต้องเข้าใจหลักการทำงานของคำสั่งแต่ละประเภท:
- PLSF/PLSY สำหรับการหมุนพื้นฐาน
- DRVI หรือ EDRVI สำหรับการเคลื่อนที่แบบ Increment
- DRVA หรือ EDRVA สำหรับการเคลื่อนที่แบบ Absolute
- ZRN สำหรับ Homing Operation
การใช้ Special Registers เช่น M8134 และ D8140 จะช่วยในการ Monitor และควบคุม Sequence ได้อย่างมีประสิทธิภาพ ทำให้สามารถสร้างระบบอัตโนมัติที่มีความแม่นยำและเชื่อถือได้
ควรอ่านก่อน:
มีคำถาม? ติดต่อทีมงาน

