Profile อุณหภูมิแบบ Ramp / Soak
ปรับ setpoint อุณหภูมิแบบหลายช่วง — ขึ้นแบบ ramp (ช้าๆ) แล้วคงที่ (soak) — เหมาะกับเตาอบ, kiln, heat-treatment
หลักการ
ระบบเตาอบหรือ heat-treatment ต้องการ profile อุณหภูมิที่:
- ขึ้นช้าๆ เพื่อไม่ให้ผลิตภัณฑ์ shock ทางความร้อน (cracking)
- คงที่ ที่อุณหภูมิเป้าหมายตามเวลาที่ต้องการ (curing, sintering)
- ลงช้าๆ เพื่อไม่ให้ stress ทางความร้อน
Temperature
400│ ┌─────── Soak ──────┐
│ / \
200│ / Ramp Up \ Ramp Down
│ / \
25│ ─────/ \─────
│ 0 5min 65min 125min 185min Time
Profile Definition
ตัวอย่างนี้ใช้ 3 segment:
| Segment | Type | Target SP | Duration |
|---|---|---|---|
| 1 | Ramp Up | 25 → 400°C | 5 min |
| 2 | Soak | 400°C | 60 min |
| 3 | Ramp Down | 400 → 25°C | 60 min |
Ramp Calculation
ระหว่าง Ramp segment ต้องคำนวณ setpoint ปัจจุบันแบบ linear interpolation:
SP_current = SP_start + (SP_end - SP_start) × elapsed / duration
ตัวอย่าง: Ramp 25→400°C, 5 นาที, ผ่านไป 2 นาที (40%)
SP = 25 + (400 - 25) × 2/5 = 25 + 150 = 175°C
ใน PLC ใช้ MUL/DIV กับ 32-bit register เพื่อให้คำนวณไม่ overflow
Logic Flow
First scan
↓
D200 = 0 (Idle)
D201 = 0 (Segment timer ในวินาที)
↓
กด Start (X0) → M0 ติด, D200 = 1, D201 = 0
↓
Segment 1 (D200 = 1): Ramp 25 → 400 over 300s
Calc: D300 = 25 + (400-25) × D201 / 300
เมื่อ D201 ≥ 300 → D200 = 2, D201 = 0
↓
Segment 2 (D200 = 2): Soak ที่ 400°C
D300 = 400 (คงที่)
เมื่อ D201 ≥ 3600 (60 min) → D200 = 3, D201 = 0
↓
Segment 3 (D200 = 3): Ramp 400 → 25 over 3600s
Calc: D300 = 400 - (400-25) × D201 / 3600
เมื่อ D201 ≥ 3600 → D200 = 4 (Done)
D300 (computed setpoint) ส่งต่อให้ PID หรือ On/Off control logic ตัวอย่างนี้ output PWM (Y0) แบบ on/off ตาม SP_current vs PV_current
Time-base ใช้ M8013 (1Hz pulse)
PLC มี M8013 = 1-second clock (ขึ้น/ลงทุก 0.5s) ใช้ดึง edge เพิ่ม counter ทุก 1 วินาที
LDP M8013 // rising edge ทุก 1 วินาที
INC D201 D201 // เพิ่ม segment elapsed time
Logic ต่อจาก Setpoint Computed
D300 (computed SP) ใช้กับ:
- On/Off — เปิด heater เมื่อ PV < SP - 2°C, ปิดเมื่อ > SP + 2°C
- PID — ใช้เป็น input ของ EPID instruction
- PWM — DIV(D300, K100, D310) → DUTY% สำหรับ PWY output
ตัวอย่างนี้แสดง On/Off เพื่อความเรียบง่าย
ขยายเพิ่ม
- มากกว่า 3 segment — เพิ่ม D200=4, 5, 6 ตามต้องการ
- Recipe — เก็บ profile หลายแบบใน D1000-D1099 แล้ว MOV เลือก profile
- HMI Trend — โชว์ profile กับ PV จริงเทียบกัน
- Hold/Resume — ปุ่ม pause ที่หยุด D201 (ไม่ rest)
- Abort cooling — ถ้า PV เกิน SP+50°C → emergency cool
โปรแกรม PLC
I/O Assignment
| Address | Role | Note |
|---|---|---|
| X0 | ปุ่ม Start (NO) | |
| X1 | ปุ่ม Stop (NC) | |
| Y0 | คอนแทคเตอร์ฮีตเตอร์ (relay หรือ SSR) | |
| Y3 | ไฟแสดงจบ (lamp) |
Parameters ที่ปรับได้
D100default: —Process value (อุณหภูมิปัจจุบัน) — อ่านจาก analog / RTD module
D200default: 0Segment ปัจจุบัน (0=Idle, 1-3=Running, 4=Done)
D201default: 0เวลาที่ผ่านไปใน Segment ปัจจุบัน (วินาที — รีเซ็ตทุกครั้งที่ข้าม Segment)
D300default: คำนวณSetpoint ที่คำนวณ — อัปเดตอัตโนมัติทุก scan ตาม Segment + เวลาที่ผ่านไป
K375 (ใน MUL)default: 375ผลต่างอุณหภูมิ (400-25) — ปรับถ้าเปลี่ยน start/end temp
K300 (Segment 1)default: 300sระยะเวลา Ramp 1 — เพิ่มเพื่อ ramp ช้าลง (ลด thermal shock)
K3600 (Segments 2,3)default: 3600sระยะเวลา Soak / Ramp-down — ปรับตามสูตร (recipe)
อุปกรณ์ที่แนะนำ
คำถามที่พบบ่อย
ทำไมใช้ MUL ก่อน DIV ไม่ DIV ก่อน?
ป้องกัน integer overflow + truncation: ถ้า DIV ก่อน เช่น `DIV D201 K300 D311` ตอน D201=2, D311=0 (เพราะ 2/300 ปัดเป็น 0 ในจำนวนเต็ม) แล้ว MUL ก็เป็น 0 → SP ค้างที่ 25 ตลอด ลำดับ MUL ก่อนช่วยให้ค่ากลางใหญ่พอที่ DIV จะให้ผลที่มีความหมาย
M8013 คืออะไร?
Special bit ของ Samkoon (Mitsubishi compatible) = 1Hz clock — ON 0.5s/OFF 0.5s ตลอด LDP M8013 = ขอบขึ้นทุก 1 วินาที ใช้นับ elapsed time ใน timer แบบยืดหยุ่นได้นาน (TON ใหญ่สุด 32-bit ผ่าน TONS)
ใช้ EPID แทน On/Off ดีไหม?
EPID นิ่งกว่า, accurate กว่า — แต่ต้อง analog output (PWY หรือ analog module) + tuning ที่ปรับยาก ตัวอย่างนี้ใช้ On/Off เพื่อความเรียบง่าย — ในงานจริงเตาอบใหญ่ใช้ EPID + SSR/Phase-angle drive ฮีตเตอร์
Profile เปลี่ยนช่วง runtime ได้ไหม?
ใส่ K constant ใน MUL/DIV ทำให้ profile fixed ถ้าต้องการ recipe ให้แทน K ด้วย D registers (เช่น K300 → D500) แล้ว HMI เขียนค่าเข้า D500 = duration ของ segment 1 (วินาที), D501 = SP_END_1, ฯลฯ
เอกสารที่เกี่ยวข้อง
วิธีนำเข้าไฟล์ใน SamSoar2022
- ดาวน์โหลดไฟล์
ramp-soak-profile.csvจากแท็บ CSV ด้านบน - เปิด SamSoar2022 → สร้างโปรเจกต์ใหม่ (หรือเปิดโปรเจกต์ที่มีอยู่)
- เมนู File → Import → เลือกไฟล์
.csvที่เพิ่งดาวน์โหลด - กด F4 เพื่อ Compile — ตรวจสอบว่าไม่มี error
- ตรวจการต่อสายตามตาราง I/O ด้านบน แล้ว Download โปรแกรมเข้า PLC
