Intermediate
19 rungs
8 I/O

ไลน์บรรจุขวด 5 จังหวะ

Bottle Filling Line (5-stage)

สายพานขวด + เซ็นเซอร์จัดตำแหน่ง + บรรจุของเหลว + ปิดฝา + ติดสติ๊กเกอร์ — D200 เก็บ stage 1-5, ใช้ photoeye + timer ข้าม stage

หลักการ

ไลน์บรรจุน้ำดื่มทั่วไปประกอบด้วย 5 stage ตามลำดับ:

  1. Conveyor In — ดึงขวดเปล่าเข้าสถานี
  2. Stop & Position — เซ็นเซอร์เห็นขวด → หยุดสายพาน + ดัน stop
  3. Fill — เปิดวาล์วน้ำ 3 วินาที
  4. Cap — ดัน mechanism ปิดฝา 1.5 วินาที
  5. Eject — ปลด stop, สายพานเดินหน้าออก

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

First scan → D200 = 0 (Idle)
  ↓
กด Start (X0) → M0 ติด, D200 = 1
  ↓
┌──────────────────────────────────────────┐
│ Stage 1 (D200=1): Conveyor In           │
│   Y1 (motor) ติด                         │
│   ↓ X1 (bottle sensor) ON → D200 = 2    │
├──────────────────────────────────────────┤
│ Stage 2 (D200=2): Stop & Position       │
│   Y1 ดับ, Y2 (stop pin) ติด             │
│   ↓ Timer T0 (0.3s settle) → D200 = 3   │
├──────────────────────────────────────────┤
│ Stage 3 (D200=3): Fill                  │
│   Y3 (water valve) ติด, Timer T1 = 3s   │
│   ↓ T1 ครบ → Y3 ดับ → D200 = 4          │
├──────────────────────────────────────────┤
│ Stage 4 (D200=4): Cap                   │
│   Y4 (cap actuator) ติด, Timer T2 = 1.5s│
│   ↓ T2 ครบ → Y4 ดับ → D200 = 5          │
├──────────────────────────────────────────┤
│ Stage 5 (D200=5): Eject                 │
│   Y2 ดับ (stop pin retract)             │
│   Y1 (motor) ติด                         │
│   ↓ X2 (exit sensor) ON → D200 = 1      │
└──────────────────────────────────────────┘
   ↓
นับขวด (CV0 += 1) เมื่อจบ Stage 5

เคล็ดลับการออกแบบ

Settle delay (Stage 2)

หลังหยุดสายพานควรรอ ~0.3 วินาทีให้ขวดนิ่ง ก่อนเริ่ม fill — กันน้ำกระเด็น

Fill time

ใช้ time-based filling ง่ายและถูกที่สุด แต่:

  • ระดับน้ำในถังเปลี่ยน → ปริมาณเปลี่ยน
  • แม่นยำกว่า: ใช้ flow meter + counter (FC0 += pulse)
  • หรือ load cell ใต้ขวด + analog input → MOV ค่ามากกว่าจะหยุด

Stop pin (Y2)

ใช้กระบอกลม solenoid ดันแกนเหล็กบล็อกขวด เมื่อ retract ขวดจะไหลตามสายพานไปต่อ

ขยายเพิ่ม

  • Bottle counter (CV0) — นับชิ้นต่อชิฟต์, แสดงบน HMI
  • Reject station — ถ้า cap ไม่แน่น (sensor X3) → divert ออกขวดไม่ดี
  • Recipe selector — D205 = recipe number, MOV จาก HMI เปลี่ยน fill time/cap pressure

โปรแกรม PLC

ไลน์บรรจุขวด 5 จังหวะ — Bottle Filling Line (5-stage)
สายพานขวด + เซ็นเซอร์จัดตำแหน่ง + บรรจุของเหลว + ปิดฝา + ติดสติ๊กเกอร์ — D200 เก็บ stage 1-5, ใช้ photoeye + timer ข้าม stage
N0Start/Stop + ตั้งค่า Stage เริ่มต้น
Latch Start/Stop — Start (X0) + self-hold พร้อม Stop (NC X5)
X0M0X5M0
ขอบขาขึ้นปุ่ม Start — เริ่มที่ D200 = 1
X0MOVK1, D200
รีเซ็ต Stage เมื่อระบบหยุด
M0MOVK0, D200
N1Stage 1: ขวดเข้าสายพาน
Stage 1 (Conveyor In): มอเตอร์ Y1 ติดขณะ D200 = 1
D200 = K1M0Y1
Stage 1 → 2: เซ็นเซอร์ขวด (X1) ตรวจเจอ → D200 = 2
X1D200 = K1MOVK2, D200
N2Stage 2: จัดตำแหน่ง + รอนิ่ง
Stage 2 (Position): สั่ง stop pin (Y2), เริ่ม Timer T0 = 0.3s รอขวดนิ่ง
D200 = K2M0Y2
Timer T0 ของ Stage 2 — รอ 0.3s หลังหยุดขวด
D200 = K2TONTV0, K3
Stage 2 → 3: T0 ครบ → D200 = 3
T0MOVK3, D200
N3Stage 3: บรรจุน้ำ
Stage 3 (Fill): stop pin (Y2) ยังติด, เปิดวาล์วน้ำ (Y3)
D200 = K3M0Y2
Stage 3 fill — วาล์วน้ำ Y3 เปิดขณะ D200 = 3
D200 = K3M0Y3
Timer T1 ของ Stage 3 — บรรจุ 3 วินาที
D200 = K3TONTV1, K30
Stage 3 → 4: T1 ครบ → D200 = 4
T1MOVK4, D200
N4Stage 4: ปิดฝา
Stage 4 (Cap): stop pin (Y2) ยังติด, สั่งกลไกปิดฝา (Y4)
D200 = K4M0Y2
Stage 4 cap — Y4 ติดขณะ D200 = 4
D200 = K4M0Y4
Timer T2 ของ Stage 4 — ปิดฝา 1.5 วินาที
D200 = K4TONTV2, K15
Stage 4 → 5: T2 ครบ → D200 = 5
T2MOVK5, D200
N5Stage 5: ส่งออก + นับชิ้น
Stage 5 (Eject): ปลด stop pin (Y2 OFF), เปิดมอเตอร์สายพาน (Y1)
D200 = K5M0Y1
Stage 5 → 1: เซ็นเซอร์ปลายทาง (X2) ตรวจเจอ → วนกลับ + นับชิ้น
X2D200 = K5MOVK1, D200
เคาน์เตอร์ขวด — เพิ่มขึ้นทุกครั้งที่ข้าม Stage 5 → 1
X2D200 = K5INCD400, D400
Network count: 6, gap: 12
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

I/O Assignment

AddressRoleNote
X0ปุ่ม Start (NO)
X1เซ็นเซอร์ตำแหน่งขวด (NO)Photoeye ที่จุดบรรจุ
X2เซ็นเซอร์ปลายทาง (NO)Photoeye หลังจุดปิดฝา
X5ปุ่ม Stop (NC)
Y1คอนแทคเตอร์มอเตอร์สายพาน
Y2Solenoid Stop pin
Y3Solenoid วาล์วน้ำ
Y4Solenoid กลไกปิดฝา

Parameters ที่ปรับได้

D200default: 0

Stage ปัจจุบัน (0=Idle, 1-5=Running) — แสดงบน HMI

D400default: 0

จำนวนขวดในกะนี้ — รีเซ็ตผ่านปุ่ม HMI แยก

TV1 / K30default: 3.0s

ระยะเวลาบรรจุ — ปรับตาม flow rate × ปริมาตรขวด

TV2 / K15default: 1.5s

ระยะเวลาปิดฝา — เพิ่มเวลาเพื่อปิดให้แน่นขึ้น

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

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

ทำไมใช้ time-based filling ไม่ใช้ flow meter?

Time-based ง่ายและถูกที่สุด เหมาะกับงานที่ tolerance ±2-3% ยอมรับได้ ถ้าต้องการแม่นยำกว่านี้ใช้ flow meter (pulse output) ต่อกับ X input + counter — แต่ละ pulse = volume คงที่

ถ้าขวดเล็กกว่าปกติ น้ำจะล้น?

ถ้าใช้ time-based — ใช่ จะล้น ทางแก้: (1) ใช้ recipe (D205 = ขนาดขวด, MOV เปลี่ยน TV1) (2) ใช้ load cell (analog) วัดน้ำหนัก, MOV เกิน setpoint → MOV K3 D200 หยุด fill (3) ใช้ level sensor ในขวด

Y2 stop pin ติดต่อเนื่อง 3 stages ไม่เปลี่ยน — ทำไมต้อง OUT 3 ครั้ง?

OUT เป็น non-latching coil — ถ้าไม่มี LD เป็นเงื่อนไขมัน OFF ตอน scan ถัดไป สามารถ refactor เป็น 1 rung โดยใช้ "D200 ระหว่าง 2 ถึง 4" — แต่ SamSoar ไม่มี LDW>= แบบ 'between' ตรงๆ ใช้ OR ของ LDW= K2/K3/K4 หรือใช้ SET/RST ก็ได้ — ตัวอย่างนี้เลือก OUT ซ้ำเพื่ออ่านง่าย

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

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