Intermediate
7 rungs
7 I/O

สายพานพร้อมจัดเก็บกล่อง (Accumulator)

Conveyor with Box Accumulator

สายพานวิ่งเข้าเมื่อมีที่ว่าง, หยุดเมื่อกล่องสะสมครบ 5 ใบ, วิ่งต่อเมื่อกล่องถูกหยิบออก — ใช้ counter ขึ้น/ลง

หลักการ

ในสายการผลิต ปลายสายพานหนึ่งมักต่อเข้ากับสถานีถัดไปที่ทำงานช้ากว่า (เช่น คนหยิบ packing) จึงต้องมี Accumulator (พื้นที่จอดกล่อง) ระหว่างทางเพื่อให้ระบบไม่ค้าง

PLC ต้อง:

  1. นับกล่องเข้า (sensor X0) → CV0 += 1
  2. นับกล่องออก (sensor X1) → CV0 −= 1
  3. หยุดสายพาน เมื่อ CV0 ≥ 5 (เต็ม)
  4. เริ่มสายพาน เมื่อ CV0 ≤ 4 (มีที่ว่าง)

Logic Flow

First scan
  ↓
CV0 = 0 (นับเริ่มที่ 0)
  ↓
กด Start (X2) → M0 ติด
  ↓
┌─────────────────────────────┐
│ Sensor IN (X0) ขอบขึ้น      │
│   ↓ INC CV0                 │
│ Sensor OUT (X1) ขอบขึ้น     │
│   ↓ DEC CV0                 │
│                             │
│ ถ้า CV0 ≥ 5: หยุด conveyor  │
│ ถ้า CV0 < 5: วิ่ง conveyor  │
└─────────────────────────────┘

ใช้ INC / DEC ไม่ใช่ CTU

CTU (Counter Up) เพิ่มอย่างเดียว ไม่เหมาะกับ accumulator ที่ต้องลด ใช้ INC / DEC ที่เพิ่ม/ลด D register ทีละ 1 ดีกว่า

INC D300 D300   // D300 = D300 + 1
DEC D300 D300   // D300 = D300 − 1

⚠ หมายเหตุ — INC ใน SamSoar2022 ต้องการ 2 operands (source + dest) ปกติเขียน INC D300 D300 (in-place)

ป้องกันการนับซ้ำ

ถ้าใช้ LD X0 / INC D300 D300 ตรงๆ — ถ้ากล่องค้างใต้เซ็นเซอร์ จะนับขึ้นทุก scan (เพิ่ม 100+ ใน 1 วินาที!)

ใช้ LDP (rising edge) แทน — นับเฉพาะตอนกล่องผ่านเข้า/ออก

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

First scan → D300 = 0
  ↓
กด Start (X2) → M0 ติด
  ↓
Sensor IN (X0)↑ → D300 += 1
Sensor OUT (X1)↑ → D300 −= 1 (ถ้ายังไม่เป็น 0)
  ↓
LDW>= D300 K5 → Conveyor หยุด (ป้องกันกล่องเข้าเพิ่ม)
LDW< D300 K5 → Conveyor วิ่งต่อ
  ↓
ไฟ Indicator:
  Y1 (ติด) = สายพานวิ่ง
  Y2 (ติด) = full (≥5 กล่อง)

ขยายเพิ่ม

  • Reset count ปุ่ม X3 → MOV K0 D300 (รีเซ็ตเมื่อต้องการ)
  • Min spacing เพิ่ม timer 0.3s ระหว่าง LDP เพื่อกัน spurious trigger
  • Two accumulators ใช้ D301, D302 + 2 conveyor independent
  • HMI display โชว์ "กล่องในระบบ: D300/5"

โปรแกรม PLC

สายพานพร้อมจัดเก็บกล่อง (Accumulator) — Conveyor with Box Accumulator
สายพานวิ่งเข้าเมื่อมีที่ว่าง, หยุดเมื่อกล่องสะสมครบ 5 ใบ, วิ่งต่อเมื่อกล่องถูกหยิบออก — ใช้ counter ขึ้น/ลง
N0Start/Stop + ค่าเริ่มต้น
Latch Start/Stop — Start (X2) + self-hold พร้อม Stop (NC X4)
X2M0X4M0
First scan — ตั้งจำนวนกล่องเริ่มต้น = 0
M8150MOVK0, D300
N1นับกล่องเข้า-ออก
Sensor กล่องเข้า (X0) ขอบขาขึ้น → เพิ่ม 1
X0INCD300, D300
Sensor กล่องออก (X1) ขอบขาขึ้น → ลด 1 (เฉพาะถ้า > 0)
X1D300 > K0DECD300, D300
N2Output (สายพาน + ไฟเต็ม)
มอเตอร์สายพาน (Y1) — ทำงานเมื่อ M0 ติด และจำนวน < 5
M0D300 < K5Y1
ไฟเต็ม (Y2) — ติดเมื่อจำนวน >= 5
D300 >= K5Y2
N3รีเซ็ตจำนวน
ปุ่ม Reset (X3) — เคลียร์ D300 = 0
X3MOVK0, D300
Network count: 4, gap: 12
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

I/O Assignment

AddressRoleNote
X0Sensor กล่องเข้า (NO)Photo sensor หัวสายพาน
X1Sensor กล่องออก (NO)Photo sensor ปลายสายพาน
X2ปุ่ม Start (NO)
X3ปุ่ม Reset (NO)
X4ปุ่ม Stop (NC)
Y1คอนแทคเตอร์มอเตอร์สายพาน
Y2ไฟเต็ม (สีแดง)

Parameters ที่ปรับได้

D300default: 0

จำนวนกล่องปัจจุบัน (0-5) — แสดงสถานะบน HMI

K5 (ใน LDW< / LDW>=)default: 5

จำนวนกล่องสูงสุดในระบบ — ปรับตามพื้นที่จริง

อุปกรณ์ที่แนะนำ

คำถามที่พบบ่อย

ทำไมใช้ INC/DEC แทน CTU/CTD?

CTU (Up Counter) จะ rest ที่ K (preset) ไม่ใช่ 0 และ CTU bit จะ ON เมื่อถึง preset — ออกแบบมาสำหรับ 'นับครบแล้วทำอะไร' INC/DEC เป็นการเพิ่ม/ลด D register ทีละ 1 ตรงไปตรงมากว่า สำหรับ accumulator ที่ต้องนับขึ้นและลง

ถ้ากล่องเข้าและออกพร้อมกัน count จะถูกไหม?

ถ้า X0 และ X1 ขึ้นใน scan เดียวกัน (rare) — D300 +1 แล้ว -1 = ถูก แต่ถ้าเป็นปัญหาจริงให้แยก scan ด้วย ANDF (falling edge ของ X0 ก่อน inc) หรือเพิ่ม debounce timer ที่เซ็นเซอร์

ทำไมต้อง AW> D300 K0 ก่อน DEC?

ป้องกัน underflow — ถ้า D300 = 0 แล้ว DEC จะเป็น -1 (ค่า unsigned overflow เป็น 65535) Sensor X1 อาจ trigger ผิด (เช่น คนเดินผ่าน) ถ้าไม่มีกล่องใน accumulator ก็ไม่ควรลด

วิธีนำเข้าไฟล์ใน SamSoar2022

  1. ดาวน์โหลดไฟล์ conveyor-accumulator.csv จากแท็บ CSV ด้านบน
  2. เปิด SamSoar2022 → สร้างโปรเจกต์ใหม่ (หรือเปิดโปรเจกต์ที่มีอยู่)
  3. เมนู File → Import → เลือกไฟล์ .csv ที่เพิ่งดาวน์โหลด
  4. กด F4 เพื่อ Compile — ตรวจสอบว่าไม่มี error
  5. ตรวจการต่อสายตามตาราง I/O ด้านบน แล้ว Download โปรแกรมเข้า PLC