บัญชี

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

Encoder และ High Speed Counter

เรียนรู้การเชื่อมต่อและเขียนโปรแกรม Encoder กับ PLC ใช้ High Speed Counter อ่านตำแหน่ง ทิศทางการหมุน ความเร็วรอบ พร้อมตัวอย่างโค้ด Ladder

อัพเดทล่าสุด: 1/2/2569

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

฿3,690

การใช้งาน Encoder กับ High Speed Input ใน PLC

Encoder เป็นเซนเซอร์ที่มีความสำคัญมากในระบบอัตโนมัติอุตสาหกรรม โดยเฉพาะ Rotary Encoder ที่นิยมใช้กันอย่างแพร่หลายในโรงงาน สามารถติดตั้งกับอุปกรณ์ที่หมุนได้ เช่น มอเตอร์ พัลเลย์ สายพาน เพื่อให้ข้อมูลสำคัญ 3 อย่าง คือ ตำแหน่ง ทิศทางการหมุน และความเร็วรอบ

หิลลักการทำงานของ A-B Phase Encoder

โครงสร้างภายใน

  • มีแผ่น disk ที่ติดกับแกนหมุน
  • ระบบดักจับสัญญาณแสงที่ผ่านรูบนแผ่น disk
  • รูบนแผ่น disk เหลื่อมกันอยู่ 90 องศา

การสร้างสัญญาณ A-B Phase

เมื่อหมุน Encoder สัญญาณ A และ B จะเหลื่อมกัน 90 องศา ทำให้ PLC สามารถ:
  • นับค่าสัญญาณขึ้นลง ได้ด้วยตัวเอง
  • ระบุทิศทางการหมุน จากลำดับสัญญาณ:
    • หมุนไป: สัญญาณ A มาก่อน B
    • หมุนกลับ: สัญญาณ B มาก่อน A

การเชื่อมต่อ Encoder กับ PLC

การต่อสายไฟ

Encoder A-B Phase มีสายทั้งหมด 5 เส้น:

ขา A     → X0 (Input ของ PLC)
ขา B     → X1 (Input ของ PLC)
24V      → แหล่งจ่ายไฟ 24V
0V       → กราวด์
Shield   → สายกราวด์

การกำหนด Counter

  • ใช้ Counter C251 สำหรับ Channel X0-X1
  • อ้างอิงจากตารางการกำหนด Channel ของ PLC

การเขียนโปรแกรมพื้นฐาน

1. การตั้งค่า High Speed Counter

M400 ─── [HCNT C251 K2000]

คำอธิบาย:

  • HCNT: คำสั่ง High Speed Counter
  • C251: Counter ที่ใช้อ่านค่าจาก Encoder
  • K2000: Set Value (ตัวอย่าง)
  • M400: Contact เปิด/ปิดการทำงาน

2. การคำนวณตำแหน่ง (Position)

M400 ─── [DTOF C251 D402]      // แปลง Double Word เป็น Float
     ─── [MULD D402 D302 D404] // คำนวณตำแหน่งจริง

ตัวแปรที่ใช้:

  • D302: ค่าความละเอียด (เช่น 0.1 มม./pulse)
  • D402: ค่า Pulse ในรูปแบบ Float
  • D404: ตำแหน่งจริง (มม.)

การหาทิศทางการหมุน

วิธีการตรวจสอบทิศทาง

M403────┬─ [M8159 PLF] ─── [MOVD C251 D406]     // เก็บค่าปัจจุบัน
        └─ [M8159 PLR] ─── [MOVD D406 D408]     // เก็บค่าก่อนหน้า

[LDD> D406 D408] ─── [SET M404 K1]       // หมุนไป (Clockwise)
                 ─── [RST M405 K1]

[LDD< D406 D408] ─── [SET M405 K1]       // หมุนกลับ (Counterclockwise)
                 ─── [RST M404 K1]

คำอธิบาย:

  • M8159: Special Register ที่ติด-ดับทุก 100ms
  • D406: Current Pulse
  • D408: Previous Pulse
  • M404: Flag หมุนไป
  • M405: Flag หมุนกลับ

การคำนวณความเร็ว (RPM)

สูตรคำนวณ RPM

RPM = (Pulse × 60) ÷ (PPR × Time)

ตัวอย่างการคำนวณ:

  • Pulse ใน 100ms = 20 pulse
  • PPR (Pulse Per Revolution) = 200
  • Time = 0.1 วินาที

RPM = (20 × 60) ÷ (200 × 0.1) = 60 RPM

การเขียนโปรแกรมคำนวณ RPM

M406 ─┬─ [SUBD D406 D408 D410]          // หาผลต่าง Pulse
      └─ [LDD<> D410 K0] ─── [MULD D410 K3 D412]  // คำนวณ RPM

ตัวแปรที่ใช้:

  • D410: ผลต่าง Pulse ใน 100ms
  • K3: Coefficient (จากสูตรที่คำนวณ)
  • D412: ค่า RPM

เคล็ดลับการใช้งาน

1. การปรับ Response Time

  • สามารถเปลี่ยนจาก 100ms เป็น 10ms เพื่อ response ที่เร็วขึ้น
  • ใช้ Special Register M8158 สำหรับ 10ms timing

2. การเก็บค่า RPM ล่าสุด

  • ใส่เงื่อนไข [LDD<> D410 K0] เพื่อคำนวณเฉพาะเมื่อมี pulse เปลี่ยนแปลง
  • ป้องกันการได้ค่า RPM = 0 เมื่อหยุดหมุน

3. การกำหนด PPR

  • ตรวจสอบ PPR (Pulse Per Revolution) ของ Encoder ที่ใช้
  • ปรับค่า coefficient ตามสูตรให้เหมาะสมกับ PPR และเวลา sampling

การแก้ปัญหาที่พบบ่อย

ปัญหาค่า Counter ไม่เปลี่ยน

สาเหตุ: คำสั่ง HCNT ไม่ได้เปิดใช้งาน วิธีแก้: ตรวจสอบ Contact ที่เปิด/ปิดคำสั่ง HCNT

ปัญหาทิศทางการหมุนผิด

สาเหตุ: สายสัญญาณ A-B สลับกัน วิธีแก้: สลับสาย A กับ B หรือแก้ logic ในโปรแกรม

ปัญหาค่า RPM กระตุก

สาเหตุ: Sampling time สั้นเกินไป วิธีแก้: เพิ่ม sampling time หรือใช้ moving average

สรุป

การใช้งาน Encoder กับ High Speed Input ใน PLC ช่วยให้สามารถควบคุมและตรวจสอบการเคลื่อนไหวของระบบได้อย่างแม่นยำ โดยสามารถหาค่าตำแหน่ง ทิศทางการหมุน และความเร็วได้ การเขียนโปรแกรมต้องใช้ความรู้เรื่อง Function Block การคำนวณ และ Logic การเปรียบเทียบมาประยุกต์ใช้ ซึ่งเป็นการฝึกฝนทักษะการเขียนโปรแกรม PLC ในระดับสูงขึ้น