ลำดับการทำงาน 2 กระบอก 4 จังหวะ (A+ B+ A− B−)
Sequence แบบเครื่องปั๊มลม 2 กระบอก 4 ขั้น — D200 เก็บ stage ปัจจุบัน, ข้าม stage เมื่อ reed switch ถึง — วนลูปอัตโนมัติ
หลักการ
เครื่องปั๊มลม / pick-and-place ส่วนใหญ่ใช้กระบอกลม 2 ตัว (A และ B) ทำงาน ตามลำดับ 4 จังหวะ:
A+ : กระบอก A ออก (โซลินอยด์ Y0 ติด)
B+ : กระบอก B ออก (โซลินอยด์ Y2 ติด)
A− : กระบอก A กลับ (Y0 ดับ → spring return หรือ Y1 ติดถ้าเป็น double)
B− : กระบอก B กลับ (Y2 ดับ หรือ Y3 ติด)
State Machine ทำไมใช้ D-tag?
วงจรแบบนี้ครั้งเก่าใช้ S coil หรือ M coil หลายตัว แต่:
- มากกว่า 4-5 stage → S/M coil อ่านยาก, debug ลำบาก
- D-tag (D200) เก็บเลข stage = 1, 2, 3, 4 — กระชับและขยายต่อง่าย
- HMI แสดง stage ปัจจุบัน ได้ทันที (โชว์ค่า D200)
Logic การข้าม Stage
ใช้ reed switch (เซ็นเซอร์แม่เหล็กที่กระบอกลม) ตรวจตำแหน่ง:
- X1 = A extended (ออกสุด)
- X2 = A retracted (กลับสุด)
- X3 = B extended
- X4 = B retracted
Stage 1 (D200=1): สั่ง Y0 (A+) → รอ X1 (A สุด) → D200=2
Stage 2 (D200=2): สั่ง Y2 (B+) → รอ X3 (B สุด) → D200=3
Stage 3 (D200=3): ดับ Y0 (A−) → รอ X2 (A กลับ) → D200=4
Stage 4 (D200=4): ดับ Y2 (B−) → รอ X4 (B กลับ) → D200=1 (วนลูป)
ลำดับการทำงาน
First scan (M8150) → D200 = 0 (Idle)
↓
กด Start (X0) → M0 ติด, D200 = 1
↓
┌─ Stage 1: Y0 ติด (A+), รอ X1 ────┐
│ ↓ X1 ON → D200 = 2 │
├─ Stage 2: Y2 ติด (B+), รอ X3 ────┤
│ ↓ X3 ON → D200 = 3 │
├─ Stage 3: Y0 ดับ (A−), รอ X2 ────┤
│ ↓ X2 ON → D200 = 4 │
├─ Stage 4: Y2 ดับ (B−), รอ X4 ────┤
│ ↓ X4 ON → D200 = 1 (loop) │
└──────────────────────────────────┘
↓
กด Stop (X5) → M0 ดับ → D200 = 0 → กระบอกทุกตัวกลับเข้า home
ความปลอดภัย
ใส่ Cycle Timeout เผื่อกระบอกค้าง (เช่น ลมเบาเกินไป ระยะติด) ตัวอย่างนี้ตั้ง Timeout 10 วินาทีต่อ stage — ถ้าเกินจะตั้ง Fault flag M99 และหยุดทั้งหมดเพื่อให้ผู้ใช้ตรวจ
ขยายเพิ่ม
- เพิ่ม Cycle counter (CTU CV0) เพื่อนับชิ้นที่ผลิตได้
- เพิ่ม HMI Step display ดูแลกราฟิก stage 1-4
- เพิ่ม Pause บน X6 ที่หยุดในตำแหน่งปัจจุบัน (ไม่รีเซ็ต D200)
โปรแกรม PLC
I/O Assignment
| Address | Role | Note |
|---|---|---|
| X0 | ปุ่ม Start (NO) | |
| X1 | Reed switch กระบอก A ออกสุด | ติดเมื่อกระบอก A ออกสุด |
| X2 | Reed switch กระบอก A กลับสุด | |
| X3 | Reed switch กระบอก B ออกสุด | |
| X4 | Reed switch กระบอก B กลับสุด | |
| X5 | ปุ่ม Stop (NC) | |
| Y0 | Solenoid A+ (สั่งกระบอก A ออก) | |
| Y2 | Solenoid B+ (สั่งกระบอก B ออก) |
Parameters ที่ปรับได้
D200default: 0Stage ปัจจุบัน (0=Idle, 1-4=Running) — แสดงบน HMI
M99default: 0Fault flag — ติดเมื่อ Timeout ของ Stage เกิน 10 วินาที
CV0default: 0เคาน์เตอร์รอบ — เพิ่มขึ้นทุกรอบที่จบครบ
TV0 / K100default: 10sTimeout ของ Stage — ลดเป็น K50 (5s) สำหรับเครื่องเร็ว, เพิ่มเป็น K200 (20s) สำหรับ stroke ช้า
อุปกรณ์ที่แนะนำ
คำถามที่พบบ่อย
ทำไมใช้ LDW= D200 K1 แทน contact ปกติ?
LDW= คือ word-compare contact — เปรียบเทียบ D200 กับ K1 แล้ว ON ถ้าเท่ากัน ใช้แทน LD M1 ที่ตามหลักของ S coil (เช่น LD S0 = stage 0 active) ดีกว่าเพราะ D200 ค่าเดียวเก็บ 65,536 stage ได้ ในขณะ M coil ใช้ 1 bit/stage
ทำไม Stage 2 ต้อง 'OUT Y0' ซ้ำอีกครั้ง?
เพราะ Y0 เป็น output ปกติ (ไม่ใช่ SET/RST) ถ้าไม่มี LD ติด Y0 จะดับ ใน Stage 2 กระบอก A ยังอยู่ในตำแหน่ง extended — ต้องเก็บ Y0 ติดไว้จนกว่าจะถึง Stage 3 (A−)
ทำไม Stage 3 ไม่มี Y0?
Stage 3 = A− (กระบอก A กลับเข้า) — ดับ Y0 ทำให้กระบอกหดด้วย spring return ถ้าใช้ double-acting cylinder ต้องเพิ่ม Y1 (solenoid retract) ใน rung แยกต่างหากในเงื่อนไข D200=3
ถ้าเซ็นเซอร์เสีย เครื่องจะทำอย่างไร?
Stage timeout 10s จะเข้าทำงาน → set M99 = Fault, หยุดทุกอย่าง ผู้ใช้ต้องเช็คเซ็นเซอร์/ลม/กลไก แล้วกด Reset (เพิ่ม rung: LDP X6 / RST M99 / MOV K0 D200 ตามต้องการ)
เอกสารที่เกี่ยวข้อง
วิธีนำเข้าไฟล์ใน SamSoar2022
- ดาวน์โหลดไฟล์
cylinder-4-stage-sequence.csvจากแท็บ CSV ด้านบน - เปิด SamSoar2022 → สร้างโปรเจกต์ใหม่ (หรือเปิดโปรเจกต์ที่มีอยู่)
- เมนู File → Import → เลือกไฟล์
.csvที่เพิ่งดาวน์โหลด - กด F4 เพื่อ Compile — ตรวจสอบว่าไม่มี error
- ตรวจการต่อสายตามตาราง I/O ด้านบน แล้ว Download โปรแกรมเข้า PLC
