ไลน์บรรจุขวด 5 จังหวะ
สายพานขวด + เซ็นเซอร์จัดตำแหน่ง + บรรจุของเหลว + ปิดฝา + ติดสติ๊กเกอร์ — D200 เก็บ stage 1-5, ใช้ photoeye + timer ข้าม stage
หลักการ
ไลน์บรรจุน้ำดื่มทั่วไปประกอบด้วย 5 stage ตามลำดับ:
- Conveyor In — ดึงขวดเปล่าเข้าสถานี
- Stop & Position — เซ็นเซอร์เห็นขวด → หยุดสายพาน + ดัน stop
- Fill — เปิดวาล์วน้ำ 3 วินาที
- Cap — ดัน mechanism ปิดฝา 1.5 วินาที
- Eject — ปลด stop, สายพานเดินหน้าออก
เคล็ดลับการออกแบบ
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
ลำดับการทำงาน
- รีเซ็ตFirst scan → D200 = 0 (Idle)ตั้ง stage เริ่มต้นเป็น Idle เมื่อ PLC เพิ่งจ่ายไฟกด Start (X0) → M0 ติด
- อินพุตกด Start (X0) → M0 ติด, D200 = 1Latch เริ่มทำงาน (self-hold พร้อม Stop NC X5) แล้วเข้าสู่ Stage 1
- ประมวลผลStage 1 (D200=1): Conveyor In — Y1 (motor) ติดดึงขวดเปล่าเข้าสถานีด้วยมอเตอร์สายพานX1 (bottle sensor) ON →
- ประมวลผลStage 2 (D200=2): Stop & Position — Y1 ดับ, Y2 (stop pin) ติดเซ็นเซอร์เห็นขวด → หยุดสายพาน + ดัน stop pin บล็อกขวดรอ ~0.3 วินาทีให้ขวดนิ่งก่อนเริ่ม fill — กันน้ำกระเด็นTimer T0 (0.3s settle) →
- ประมวลผลStage 3 (D200=3): Fill — Y3 (water valve) ติด, Timer T1 = 3sเปิดวาล์วน้ำตามเวลา (time-based filling)T1 ครบ → Y3 ดับ →
- ประมวลผลStage 4 (D200=4): Cap — Y4 (cap actuator) ติด, Timer T2 = 1.5sดัน mechanism ปิดฝาT2 ครบ → Y4 ดับ →
- เอาต์พุตStage 5 (D200=5): Eject — Y2 ดับ (stop pin retract), Y1 (motor) ติดปลด stop pin แล้วเดินสายพานส่งขวดออกX2 (exit sensor) ON →
- ประมวลผลนับขวด (CV0 += 1) เมื่อจบ Stage 5 → D200 = 1นับชิ้นต่อกะแล้ววนกลับเข้า Stage 1 รับขวดถัดไปFlow วนเป็นลูป: จบ Stage 5 → กลับ Stage 1 ตลอดจนกว่าจะกด Stop (X5) ซึ่งรีเซ็ต D200 = 0
โปรแกรม PLC
I/O Assignment
| Address | Role | Note |
|---|---|---|
| X0 | ปุ่ม Start (NO) | |
| X1 | เซ็นเซอร์ตำแหน่งขวด (NO) | Photoeye ที่จุดบรรจุ |
| X2 | เซ็นเซอร์ปลายทาง (NO) | Photoeye หลังจุดปิดฝา |
| X5 | ปุ่ม Stop (NC) | |
| Y1 | คอนแทคเตอร์มอเตอร์สายพาน | |
| Y2 | Solenoid Stop pin | |
| Y3 | Solenoid วาล์วน้ำ | |
| Y4 | Solenoid กลไกปิดฝา |
Parameters ที่ปรับได้
D200default: 0Stage ปัจจุบัน (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
- ดาวน์โหลดไฟล์
bottle-filling-line.csvจากแท็บ CSV ด้านบน - เปิด SamSoar2022 → สร้างโปรเจกต์ใหม่ (หรือเปิดโปรเจกต์ที่มีอยู่)
- เมนู File → Import → เลือกไฟล์
.csvที่เพิ่งดาวน์โหลด - กด F4 เพื่อ Compile — ตรวจสอบว่าไม่มี error
- ตรวจการต่อสายตามตาราง I/O ด้านบน แล้ว Download โปรแกรมเข้า PLC
