Encoder และ High Speed Counter
ต่อ Rotary Encoder แบบ A/B Phase เข้า X0/X1 ของ PLC Samkoon อ่านค่าด้วยคำสั่ง HCNT (CV251) แล้วเขียน Ladder หาตำแหน่ง ทิศทางการหมุน และความเร็วรอบ (RPM) ใน SamSoar2022
Encoder แบบ A/B Phase ต่อขา A เข้า X0 และขา B เข้า X1 แล้วใช้คำสั่ง HCNT กับ CV251 นับ Pulse (หมุนไปค่าเพิ่ม หมุนกลับค่าลด) จากนั้นเก็บค่าทุก 100 ms ด้วย M8159 เพื่อเทียบหาทิศทาง และคำนวณ RPM จากผลต่าง Pulse (Encoder 200 PPR ที่ 100 ms → RPM = Pulse × 3)
อัพเดทล่าสุด: 26 ตุลาคม 2569
Encoder ให้ข้อมูลอะไร
เมื่อพูดถึง High Speed Input เซนเซอร์ที่ควรรู้จักคือ Encoder และแบบที่เห็นในโรงงานบ่อยที่สุดคือ Rotary Encoder (Encoder แบบหมุน) อะไรที่หมุนได้ เช่น เพลามอเตอร์ หรือสายพาน ติด Encoder ที่เพลาแล้วได้ข้อมูลกลับมา 3 อย่าง
- ตำแหน่ง — เพลาหมุนไปมากแค่ไหน
- ทิศทาง — กำลังหมุนไปหรือหมุนกลับ
- ความเร็วรอบ
หลักการของ Encoder แบบ A/B Phase
Encoder แบบ A/B Phase ที่นิยมใช้ในโรงงาน ข้างในมีแผ่น Disk ติดกับเพลา คอยตัดลำแสงเมื่อเพลาหมุน รูบน Disk วางเหลื่อมกัน 90 องศา สัญญาณ A และ B จึงเกิดเหลื่อมกัน 90 องศา
PLC จึงนับค่าขึ้นลงได้เองโดยดูว่าสัญญาณไหนมาก่อน
- หมุนไป: A มาก่อน B → ค่าเพิ่ม
- หมุนกลับ: B มาก่อน A → ค่าลด
การต่อสาย
Encoder แบบ A/B Phase มักมีสาย 5 เส้น
| สาย | ต่อที่ |
|---|---|
| A | X0 |
| B | X1 |
| 24V | ไฟเลี้ยง 24V |
| 0V | 0V |
| สายกราวด์ (Shield) | กราวด์ |
ตารางช่อง High Speed Counter ในคู่มือบอกว่า A/B Phase Counter ที่ใช้ X0 (A) และ X1 (B) คือ C251 ถ้าใช้ช่องอื่นให้ดูจากตารางนี้
ต้องรู้ความละเอียดของ Encoder ด้วย (PPR — Pulses Per Revolution) ว่าหมุน 1 รอบได้กี่ Pulse ตัวอย่างในคลิปใช้ 200 PPR
อ่านค่า Encoder ด้วย HCNT
สร้างคอนแทคช่วย M400 แล้วเขียนคำสั่ง HCNT (High Count) ระบุ Counter เป็น CV251 ตามด้วย Set Value คือจำนวน Pulse ที่ทำให้คอยล์ C251 ติด ถ้าไม่ได้ใช้คอยล์ C251 จะใส่ค่าอะไรก็ได้ ในคลิปใส่ 2000
- ถ้า HCNT ไม่ทำงาน หมุน Encoder ไปค่า CV251 ก็ไม่เปลี่ยน
- เมื่อ CV251 ถึง Set Value คอยล์ C251 จะติด และยังติดอยู่แม้หมุนกลับจนค่าลดลง ต้องใช้คำสั่ง Reset คืนค่า
ในคลิปใช้ M401 Reset ทั้งค่า CV251 (MOVD K0 ลงไป) และคอยล์ C251 พร้อมกัน
คำนวณระยะทาง (ตำแหน่ง)
คลิปใช้ค่า D302 จาก Function Block ใน EP.10 (CALLM RPCI รับรัศมีที่ D300 และให้เส้นรอบวง D300 × 2 × pi ออกมาที่ D302) มาคูณกับค่า Pulse
ครั้งแรกใช้ MULD CV251 D302 D400 แล้วค่าที่ได้แปลกๆ เพราะ D302 เป็นค่า Float แต่ CV251 เป็น Double Word การคูณให้ได้ Float ต้องคูณ Float กับ Float จึงแก้เป็น
DTOF CV251 D402— แปลง Double Word เป็น Float (อยู่ใน Rung ของ M400 ด้านบน)MULF D402 D302 D404— คูณแบบ Float ได้ตำแหน่งที่ D404
เมื่อหมุน Encoder ค่า D404 จะบอกว่าสายพานหรือการป้อนชิ้นงานอยู่ที่ตำแหน่งไหน
หมายเหตุ (ส่วนนี้ไม่ได้อยู่ในคลิป) — สูตรในคลิปคูณจำนวน Pulse กับเส้นรอบวงตรงๆ ถ้าต้องการระยะทางจริงของล้อหรือพูลเลย์ ให้หารจำนวน Pulse ด้วย PPR ก่อน (จำนวนรอบ × เส้นรอบวง)
หาทิศทางการหมุน
หลักการคือเก็บค่า Pulse ทุกช่วงเวลา แล้วเทียบค่าปัจจุบันกับค่าก่อนหน้า ถ้าค่าปัจจุบันมากกว่าคือหมุนไป ถ้าน้อยกว่าคือหมุนกลับ
ใช้ Special Relay M8159 ที่ติดดับเป็นคาบ 100 ms
- ขอบขาขึ้นของ M8159 →
MOVD CV251 D406(D406 = Current Pulse) - ขอบขาลงของ M8159 →
MOVD D406 D408(D408 = Previous Pulse) D406 > D408→ SET M404 (CW) และ RST M405D406 < D408→ SET M405 (CCW) และ RST M404
เมื่อ Monitor แล้วหมุนไป M404 จะติด หมุนกลับ M405 ติดแทน ถ้า Response Time ไม่พอ เปลี่ยนไปใช้สัญญาณคาบ 10 ms แทนได้ (ค่าสัมประสิทธิ์ใน RPM ด้านล่างต้องคำนวณใหม่ตามช่วงเวลา)
คำนวณความเร็วรอบ (RPM)
หลักการคือนับจำนวน Pulse ในช่วงเวลาที่กำหนด
RPM = (Pulse ในช่วงเวลา × 60) ÷ (PPR × ช่วงเวลา (วินาที))
ตัวอย่าง Encoder 200 PPR ภายใน 0.1 วินาที (100 ms) นับได้ 20 Pulse
RPM = (20 × 60) ÷ (200 × 0.1) = 60
เมื่อ PPR = 200 และช่วงเวลา = 0.1 วินาที สูตรย่อเหลือ RPM = Pulse × 3 ถ้าใช้ Encoder ค่า PPR อื่นหรือเวลา Sampling ต่างจากนี้ ให้แทนค่าหาสัมประสิทธิ์ของตัวเอง
ผลต่าง D406 − D408 ที่เก็บไว้ใน D410 (SUBD ใน Rung ของ M403) คือจำนวน Pulse ที่เกิดในช่วง 100 ms นำมาคูณ 3 ได้ RPM ที่ D412
ตอนแรกที่คำนวณตลอดเวลา ค่า RPM โผล่ขึ้นมาแล้วหายไปเร็วมากและกลับเป็น 0 จึงเพิ่มเงื่อนไขให้คำนวณเฉพาะตอนที่ D410 ไม่เท่ากับ 0 (D≠) เพื่อให้ D412 เก็บค่า RPM ล่าสุดไว้
ทดสอบด้วยการหมุนที่ความเร็วใกล้ๆ กัน ค่า RPM ก็จะใกล้กัน และถ้าหมุนกลับค่า RPM จะติดลบ
สรุป
ตอนนี้ใช้ Encoder หาตำแหน่ง ทิศทาง และความเร็วรอบได้แล้ว โดยใช้ความรู้จากตอนก่อนๆ ทั้ง Function Block คณิตศาสตร์ การ Compare และ Special Register มาประกอบกัน
ตอนถัดไป
12. ใช้งาน PLC ร่วมกับ Servo
ควรอ่านก่อน:
มีคำถาม? ติดต่อทีมงาน
