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

คำสั่งคุม Servo

ใช้คำสั่ง PLSF, PLSY, DRVI, DRVA และ ZRN ของ PLC Samkoon คุม Servo R8 ตั้งแต่หมุนต่อเนื่อง หมุนตามจำนวน Pulse เดินแบบ Increment และ Absolute กลับจุด Home ไปจนถึงเขียน Sequence 3 Step

PLSF สั่ง Servo หมุนต่อเนื่องตามความถี่ PLSY หมุนตามจำนวน Pulse ส่วน DRVI และ DRVA เดินแบบ Increment และ Absolute พร้อมช่วงเร่งและลดความเร็ว และ ZRN กลับจุด Home โดยอ่าน Sensor — เช็ค M8134 กับ D8140 เพื่อรู้ว่าเดินเสร็จหรือยังและอยู่ตำแหน่งไหน แล้วนำไปเขียน Sequence

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

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

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

฿3,690

คุม Servo ด้วยคำสั่ง High Speed Output

EP นี้ต่อจาก EP.12 ที่สั่ง Enable Servo ได้แล้ว คราวนี้มาใช้คำสั่ง High Speed Output ของ PLC สั่ง Servo ให้หมุนแบบต่างๆ ตั้งแต่หมุนต่อเนื่อง หมุนตามจำนวนรอบ เดินไปตำแหน่งที่กำหนด กลับจุด Home ไปจนถึงเขียน Sequence ให้ Servo เดินเองเป็นลูป

อุปกรณ์ในคลิปคือ PLC Samkoon FAs กับ Servo Drive Samkoon R8 (AC220V) โดย PLC ส่ง Pulse ที่ขา Y0 และสัญญาณทิศทางที่ขา Y4

Address ที่ใช้ในคลิป

Addressหน้าที่
M500 → Y001Enable Servo
Y000ขาส่ง Pulse
Y004ขา Direction
M501สั่ง PLSF
M502สั่ง PLSY
M503 / M504สั่ง DRVI หมุนไป / หมุนกลับ
M505 / M506สั่ง DRVA ไปตำแหน่ง A (0) / ตำแหน่ง B (100,000)
M507Reset Pulse (ล้าง D8140 เป็น 0)
M508Home (ZRN)
X000Proximity Sensor ที่จุด Home
M600 / M601Start Servo Sequence / Stop Servo
D600Stage ปัจจุบันของ Sequence

Pulse กับความเร็วรอบ

ความเร็วรอบของ Motor ขึ้นกับค่า Pulse per revolution ของ Drive ซึ่งค่าเริ่มต้นคือ 10,000 แปลว่าจ่าย 10,000 Pulse Motor จะหมุน 1 รอบ

  • ความถี่ 10,000 Hz = หมุน 1 รอบต่อวินาที
  • ความถี่ 5,000 Hz = หมุน 1 รอบต่อ 2 วินาที
  • ความถี่ 20,000 Hz = หมุน 2 รอบต่อวินาที

PLC ส่ง Pulse ได้สูงสุด 200 kHz (200,000 Hz) ซึ่งพอสำหรับหลาย Application ถ้าโหลดหนักก็ต้องทดเกียร์ ส่วนถ้าอยากเปลี่ยนค่า Pulse per revolution ให้ไปตั้ง Config ใน Drive เอง รายละเอียดการจูน ค่า Inertia และ Config อื่นๆ อยู่ในคู่มือ R8 series servo instruction detailed manual (ภาษาอังกฤษ) ดาวน์โหลดได้ที่ หน้าดาวน์โหลด

PLSF — หมุนต่อเนื่องตามความถี่

PLSF ส่ง Pulse ออกไปเรื่อยๆ ตามความถี่ที่กำหนด Servo จึงหมุนต่อเนื่อง

LD   M501
PLSF K5000 Y0
  • K5000 — ความถี่ 5,000 Hz
  • Y0 — ขาที่ส่ง Pulse

ขั้นตอนในคลิป

  1. Download โปรแกรมแล้วเข้า Monitor
  2. สั่ง M500 เพื่อ Enable Servo
  3. สั่ง M501 ให้ PLSF ทำงาน — Motor หมุน 1 รอบต่อ 2 วินาที (ลองนับดูได้ 2 วินาทีต่อรอบพอดี)
  4. อยากให้เร็วขึ้นก็เพิ่มค่า K เช่นเปลี่ยนเป็น K20000 แล้ว Download ใหม่ Motor จะหมุนเร็วขึ้นมาก

PLSY — หมุนตามจำนวน Pulse

PLSY เพิ่ม Parameter มาอีกตัวคือจำนวน Pulse จึงสั่งได้ว่าจะให้หมุนกี่รอบ

LD   M502
PLSY K5000 K20000 Y0
  • K5000 — ความถี่ 5,000 Hz
  • K20000 — จำนวน Pulse (20,000 Pulse = 2 รอบ)
  • Y0 — ขาที่ส่ง Pulse

สั่ง M502 แล้ว Motor หมุน 2 รอบแล้วหยุดเอง

กำหนดทิศทางเริ่มต้นใน Drive (P05.17)

ก่อนใช้คำสั่งที่มีขา Direction คลิปตั้งทิศทางการหมุนเริ่มต้นที่ Drive ให้ชัดเจนก่อน

  1. ที่ Drive กดปุ่ม MODE จนเจอเมนู Param
  2. เลือก P05.17 (Reverse the instruction pulse signal) ค่าเริ่มต้นคือ 0
  3. เปลี่ยนเป็น 2 แล้วยืนยันค่า
  4. Drive จะขึ้น AL113 เตือนว่าต้องปิดแล้วเปิดไฟ Drive ใหม่ ค่านี้จึงจะมีผล
ค่า P05.17ความหมาย
0Pulse และ Sign ไม่กลับ (ค่าเริ่มต้น)
1กลับ Pulse ไม่กลับ Sign
2ไม่กลับ Pulse กลับ Sign (ทิศทาง) — ค่าที่ใช้ในคลิป
3กลับทั้ง Pulse และ Sign

Special Register สำหรับ High Speed Output

ในตารางของคู่มือ PLC มี 2 คอลัมน์ที่สำคัญมากสำหรับงาน Sequence

Pulse Outputting Status Register (คอลัมน์ที่ 3)

ขา PulseRegisterความหมาย
Y000M8134ON ขณะกำลังส่ง Pulse
Y001M8135ON ขณะกำลังส่ง Pulse
Y002M8136ON ขณะกำลังส่ง Pulse
Y003M8137ON ขณะกำลังส่ง Pulse

เป็น Bit ที่ อ่านได้อย่างเดียว (Read Only) แก้ค่าเองไม่ได้ และเป็นตัวสำคัญที่ใช้เช็คว่า Servo เดินเสร็จแล้วหรือยัง

Pulse Accumulation Counter (คอลัมน์ที่ 4)

ขา PulseRegister
Y000D8140
Y001D8142
Y002D8144
Y003D8146

PLC จดไว้ว่าส่ง Pulse ออกไปแล้วกี่ Pulse จึงใช้ Monitor ได้ว่า Servo หมุนไปถึงตำแหน่งไหนแล้ว ค่านี้เป็น Double Word (32-bit signed) Address ของแต่ละขาจึงเพิ่มทีละ 2

ลองใส่ M8134 กับ D8140 ใน Monitor แล้วสั่ง PLSF จะเห็น M8134 เป็น ON และ D8140 นับขึ้นไปเรื่อยๆ พอสั่งหยุด M8134 กลับเป็น OFF และ D8140 หยุดนับ

DRVI — เดินแบบ Increment

DRVI (Drive Increment) สั่งให้หมุนเพิ่มจากตำแหน่งเดิมตามจำนวน Pulse ที่กำหนด และมีช่วงเร่งและลดความเร็วให้ด้วย คำสั่งรับ Parameter 6 ตัว

LD   M503
DRVI K5000 K20000 K1000 K1000 Y0 Y4
ลำดับParameterค่าในคลิป
1Freq — ความถี่เป้าหมายK5000
2Number — จำนวน PulseK20000 (2 รอบ)
3AC — AccelerateK1000
4DC — DecelerateK1000
5Pulse — ขาส่ง PulseY0
6Direct — ขา DirectionY4

ถ้าสั่ง Motor หมุนโดยไม่มี Acceleration/Deceleration ความถี่จะกระโดดขึ้นและหยุดทันที ค่า AC และ DC ทำให้ความถี่ค่อยๆ ไต่ขึ้นถึงความถี่เป้าหมาย แล้วค่อยๆ ลดลงก่อนหยุด ตามกราฟ Frequency Adjustment Curve ในคลิป

สั่ง M503 ทีหนึ่ง Motor หมุน 2 รอบ สั่งอีกทีก็หมุนต่ออีก 2 รอบ

หมุนกลับทาง

ใส่จำนวน Pulse เป็นค่าติดลบ Motor จะหมุนกลับทาง ในคลิปคัดลอก Rung เดิมมาแล้วแก้แค่จำนวน Pulse ใช้กับ M504

LD   M504
DRVI K5000 K-20000 K1000 K1000 Y0 Y4

DRVA — เดินแบบ Absolute

DRVA สั่งให้ไปที่ตำแหน่งที่ระบุ (นับจากตำแหน่ง 0) ไม่ใช่การบวกเพิ่ม จึงใช้สั่งกลับจุดเริ่มต้นได้ด้วย ในคลิปสร้างตำแหน่ง A กับ B

LD   M505
DRVA K100000 K0 K10000 K10000 Y0 Y4

LD   M506
DRVA K100000 K100000 K10000 K10000 Y0 Y4
  • ตำแหน่ง A — ความถี่ 100,000 Hz ไปตำแหน่ง 0
  • ตำแหน่ง B — ความถี่ 100,000 Hz ไปตำแหน่ง 100,000
  • AC และ DC เป็น K10000 ทั้งคู่

ล้างค่าตำแหน่งก่อนเริ่ม

ถ้า D8140 มีค่าค้างอยู่จากคำสั่งก่อนหน้า ควรล้างเป็น 0 ก่อน ในคลิปใช้ M507 (Reset Pulse) สั่ง MOVD (Move แบบ Double Word เพราะ D8140 เป็น 32-bit)

LD   M507
MOVD K0 D8140

ทดสอบ: กด Reset ให้ D8140 เป็น 0 แล้วสั่งไปตำแหน่ง B — Motor เร่งความเร็วไปถึงตำแหน่ง 100,000 แล้วหยุด สั่งตำแหน่ง A ก็หมุนกลับมาที่ตำแหน่ง 0

ZRN — กลับจุด Home ด้วย Sensor

DRVA สั่งกลับตำแหน่ง 0 ได้ก็จริง แต่ควรยึด Hardware เป็นหลัก คือติดตั้ง Limit Switch หรือ Sensor ไว้ที่จุดเริ่มต้น คำสั่ง Homing จะอ้างอิงจาก Sensor ตัวนั้นแทนการนับ Pulse

คำสั่ง Homing แบบง่ายคือ ZRN (Return Zero) ซึ่งรับ Parameter 7 ตัว

LD   M508
ZRN  K-10000 K-1000 K1000 K1000 X0 Y0 Y4
ลำดับParameterค่าในคลิป
1Back — ความเร็วตอนหมุนกลับหาจุดเริ่มต้นK-10000 (ค่าติดลบ และไม่เร็วมาก)
2Crew (Creep) — ความเร็วหลังเจอ SensorK-1000 (ช้ามากๆ จะได้ไม่เลยไปไกล)
3AC — AccelerateK1000
4DC — DecelerateK1000
5NearSignal — Input ของ SensorX0 (Proximity Sensor)
6PulseY0
7DirectY4

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

  1. หมุนกลับหาจุด Home ด้วยความเร็ว Back
  2. เมื่อ Sensor เจอวัตถุ เปลี่ยนเป็นความเร็ว Creep
  3. หมุนช้าๆ ต่อจนเลย Sensor ไปแล้วจึงหยุด

เขียน Servo Sequence

โจทย์ในคลิป: ให้ Motor หมุน 2 รอบแบบเร็ว จากนั้นหมุนต่ออีก 1 รอบแบบช้า แล้วหมุนกลับตำแหน่งเริ่มต้นด้วยความเร็วสูงสุด รวม 3 Step แล้ววนเป็นลูปไปเรื่อยๆ

ใช้ D600 เก็บ Stage ปัจจุบัน แต่ละ Stage สั่ง DRVA ไปตำแหน่งของตัวเอง และย้ายไป Stage ถัดไปเมื่อ D8140 เท่ากับตำแหน่งเป้าหมาย และ M8134 มีขอบขาลง (Pulse เพิ่งส่งจบ)

Servo Sequence — 3 Step วนลูป
M600 เริ่ม Sequence, M601 หยุด, D600 เก็บ Stage ปัจจุบัน แต่ละ Stage เช็ค D8140 กับขอบขาลงของ M8134 ก่อนไป Stage ถัดไป
N0
Stop Servo (M601) → D600 = 0 หยุดทันที
M601MOVK0, D600
Start (M600) + D600 = 0 + ไม่ได้กด Stop → เข้า Stage 1
M600D600 = K0M601MOVK1, D600
Stage 1: หมุนเร็วไปตำแหน่ง 20,000 (2 รอบ) เสร็จแล้วไป Stage 2
D600 = K1DRVAK10000, K20000, K1000, K1000, Y0, Y4D8140 = K20000M8134↓MOVK2, D600
Stage 2: หมุนช้าไปตำแหน่ง 30,000 (อีก 1 รอบ) เสร็จแล้วไป Stage 3
D600 = K2DRVAK5000, K30000, K1000, K1000, Y0, Y4D8140 = K30000M8134↓MOVK3, D600
Stage 3: กลับตำแหน่ง 0 ด้วยความเร็ว 100,000 Hz เสร็จแล้ววนกลับ Stage 1
D600 = K3DRVAK100000, K0, K10000, K10000, Y0, Y4D8140 = K0M8134↓MOVK1, D600
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

ทดสอบ Sequence

  1. Compile แล้ว Download ลง PLC เข้า Monitor
  2. Enable Servo (M500)
  3. ก่อนเริ่ม Sequence ให้ D8140 เป็น 0 ก่อน (คลิปแนะนำว่าเพิ่มเงื่อนไขเช็ค D8140 = 0 ไว้ใน Rung Start ด้วยก็ดี)
  4. สั่ง M600 — Motor หมุน 2 รอบ ต่ออีก 1 รอบ แล้วหมุนกลับ และวนเป็นลูป
  5. ปล่อย M600 แล้วลูปก็ยังทำงานต่อตาม Logic ที่เขียนไว้ จนกว่าจะกด Stop Servo (M601) ซึ่งหยุดทันที
  6. หลังหยุดอย่าลืมสั่ง Homing เพื่อให้ตำแหน่งกลับมาเริ่มที่ 0 ใหม่

สรุป

  • PLSF หมุนต่อเนื่องตามความถี่ ส่วน PLSY หมุนตามจำนวน Pulse
  • DRVI เดินเพิ่มจากตำแหน่งเดิม (ใส่ค่าติดลบเพื่อกลับทาง) ส่วน DRVA ไปตำแหน่งที่ระบุ ทั้งคู่มีช่วงเร่งและลดความเร็ว
  • ZRN กลับจุด Home โดยอ้างอิง Sensor
  • M8134 บอกว่ากำลังส่ง Pulse อยู่ และ D8140 บอกตำแหน่งปัจจุบัน ใช้สองตัวนี้คุมจังหวะของ Sequence

ตอนต่อไปจะเริ่มเรื่องการสื่อสารกับอุปกรณ์อื่นด้วย Modbus Protocol

ตอนถัดไป

14. พื้นฐาน Modbus Protocol สำหรับ PLC

11 นาทีปานกลาง · Intermediate