Encoder และ High Speed Counter
เรียนรู้การเชื่อมต่อและเขียนโปรแกรม Encoder กับ PLC ใช้ High Speed Counter อ่านตำแหน่ง ทิศทางการหมุน ความเร็วรอบ พร้อมตัวอย่างโค้ด Ladder
อัพเดทล่าสุด: 1/2/2569
ราคาชุดอุปกรณ์
การใช้งาน 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 ในระดับสูงขึ้น
ควรอ่านก่อน:
อ่านต่อ:
มีคำถาม? ติดต่อทีมงาน
