Design specification · v0.1 Draft · 2026-10-28
ระบบ AUTO ควบคุม Air Compressor
สลับเครื่องและลดพลังงาน สำหรับ 2 Fixed speed + 2 VSD (Atlas Copco Elektronikon Mk5) ผ่าน Delta AH500
1. หลักการและสถาปัตยกรรม
1.1 หลักการ
- PLC ทำอย่างเดียว: เลือก active pressure band ของ Fixed (PB1/PB2) และ active setpoint ของ VSD (SP1/SP2)
- PLC ไม่สั่ง start/stop, load/unload และไม่เขียนค่า pressure หรือ speed เพราะ Elektronikon คุม pressure, load/unload, automatic stop/restart และ protection เองทั้งหมด
- Elektronikon อยู่ใน Local control mode ตลอด start/stop เป็น manual ที่หน้าเครื่อง (maintenance) ระบบภายนอกจึงทำได้แค่เลือก band
- ค่า load/unload ของ PB1/PB2 และค่า SP1/SP2 ตั้งในเครื่องล่วงหน้า เพราะ Mk5 ไม่ยอมให้ gateway เขียนค่าใหม่
- เป้าหมาย: (1) ลดพลังงาน โดย Fixed เดินเต็มโหลดเป็น base และ VSD ตัวเดียวทำ trim (2) สึกเท่ากัน โดยสลับ lead/lag ตามชั่วโมงทำงาน (3) เครื่อง standby รับแทนทันทีด้วย band โดยไม่ต้องรอ PLC
- Fail-safe: ถ้า PLC, RS485 หรือ SCADA ล่ม เครื่องเดินต่อด้วย band ล่าสุด
อ้างอิง Mk5 Gateway Modbus User Guide (doc 2946 2070 00, Ed. 01, 2017).
Fixed speed Mk5: "It is not possible to overwrite the local Pressure Band (Un) Load levels" แต่สลับ Active Band (PB #01 / PB #02) ได้ "both in local as LAN control mode".
VSD Mk5: overwrite setpoint หรือสั่ง speed ไม่ได้ แต่สลับ active set point ได้ทั้ง Local และ LAN.
คำสั่งอื่น เช่น start/stop รับเฉพาะ LAN control
1.2 สถาปัตยกรรม
| ชั้น | หน้าที่ | ห้ามทำ |
|---|---|---|
| SCADA | Monitor, เปิด/ปิด AUTO, เลือก lead เริ่มต้น, maintenance lock, alarm, trend | เขียนเข้า gateway หรือเครื่องตรง |
| Delta AH500 | Availability, role manager, เขียนเลือก PB/SP เมื่อค่าเปลี่ยน, read-back, poll สถานะ | start/stop, load/unload, เขียนค่า pressure |
| Mk5 Gateway | แปลง Modbus RTU ⇄ CAN | ต่อพอร์ต Ethernet ของ gateway เข้า network โรงงาน (ใช้กับ PC tool ของ Atlas เท่านั้น) |
| Elektronikon Mk5 | คุม pressure, load/unload, automatic stop/restart, protection ทั้งหมด | — |
2. เงื่อนไขก่อนเริ่ม
ทุกข้อในตารางนี้ต้องปิดก่อนเขียนโปรแกรมจริง
| # | รายการ | วิธียืนยัน | ผู้รับผิดชอบ |
|---|---|---|---|
| 1 | Gateway เป็น Atlas Copco Mk5 Gateway (Modbus RTU) | ป้ายและ part no. บนตัว gateway, จำนวน gateway ต่อ 4 เครื่อง | หน้างาน |
| 2 | Address mapping ของทั้ง 4 เครื่อง | ช่าง Atlas generate ด้วย PC tool Speci5 ต้องมี register ตามตาราง 6.1 รวม read-back ของ active PB/SP และบิต automatic stop / manual stopped | Atlas Copco |
| 3 | RS485: baud, parity, station ของ gateway | จาก config ของ gateway หรือ mapping | Atlas / หน้างาน |
| 4 | ค่า PB1/PB2 (Fixed) และ SP1/SP2 (VSD) ตาม §3 | ช่าง Atlas ตั้งในเครื่องร่วมกับลูกค้า | Atlas + ลูกค้า |
| 5 | FAD ของ Fixed และ FAD min/max ของ VSD | Datasheet ของเครื่องจริง แล้วเช็ค control gap §3.3 | ทีมออกแบบ |
| 6 | แรงดันต่ำสุดที่ process ยอมรับได้ (Pprocess,min) | จากลูกค้า | ลูกค้า |
| 7 | พฤติกรรม active band เมื่อ comm หลุด และหลัง controller ไฟดับ | ทดสอบใน SAT (§7) ต้องยืนยัน | หน้างาน |
| 8 | COM port ของ AH500 และโปรแกรมเดิม | Upload โปรเจกต์ ISPSoft (read-only) ดูว่ามี MODRW เดิมไปที่ gateway หรือไม่ | ทีม PLC |
3. Pressure scheme
3.1 บทบาท
| Role | เครื่อง | Band ที่ใช้ | พฤติกรรม |
|---|---|---|---|
| TRIM | VSD lead | SP1 = PV1 | คุมแรงดันระบบ เดินตัวแรกเมื่อ demand ต่ำ |
| BASE | Fixed lead | PB1 = PFL1 / PFU1 | Load เมื่อ VSD ผลิตไม่พอ แล้วค้าง loaded เต็มโหลด |
| LAG | Fixed lag | PB2 = PFL2 / PFU2 | Load เมื่อ TRIM + BASE ไม่พอ หรือ BASE trip |
| RESERVE | VSD lag | SP2 = PV2 | เข้าเป็นตัวสุดท้าย หรือเมื่อ TRIM trip |
3.2 ลำดับแรงดัน
Pprocess,min < PV2 < PFL2 < PFL1 < PV1 < PFU2 < PFU1 ≤ Pmax
- PFL1 < PV1 < PFU1: ขณะ VSD คุมที่ PV1 แรงดันอยู่ในช่วง band ของ BASE ทำให้ BASE ค้างสถานะเดิม (loaded หรือ unloaded) ไม่ cycle
- PFL2 < PFL1: LAG load หลัง BASE
- PV1 < PFU2 < PFU1: LAG ที่ load แล้วไม่ unload ขณะ VSD trim และเมื่อ demand ลด LAG unload ก่อน BASE
- PV2 < PFL2: RESERVE เข้าหลังสุด ขณะนั้น TRIM เดินเต็มรอบ จึงมี VSD modulate อยู่ตัวเดียวเสมอ
- ขอบเขต: PV2 ต้องสูงกว่า Pprocess,min พร้อม margin และ PFU1 ต้องไม่เกิน max working pressure ของเครื่องที่ต่ำที่สุด
- ทุกค่าวัดที่ sensor ของแต่ละเครื่อง ต้องชดเชย pressure drop ของ piping/dryer ตอน commissioning
3.3 Control gap
FADVSD,max − FADVSD,min ≥ FADFixed
ถ้าไม่ผ่าน จะมีช่วง demand ที่ VSD เดินคนเดียวไม่พอ แต่ Fixed + VSD ที่รอบต่ำสุดก็เกิน ทำให้ BASE load/unload ถี่ในช่วงนั้น ต้องยอมรับ หรือทบทวนบทบาทจาก datasheet จริง
ข้อจำกัดด้านพลังงาน: band แบบเหลื่อม (cascade) ทำให้แรงดันเฉลี่ยของระบบสูงกว่าการคุมแบบ central controller ถ้าลูกค้าต้องการประหยัดพลังงานสูงสุด ให้พิจารณา Atlas Copco Optimizer 4.0 / ES ซึ่งคู่มือ gateway เองแนะนำสำหรับ "full external control"
4. Logic AUTO
4.1 Mode
| Mode | พฤติกรรม |
|---|---|
| AUTO OFF | PLC ไม่เขียนอะไร เครื่องใช้ band ที่ active อยู่ (operator เลือกที่หน้าจอได้) |
| OFF → ON | PLC เขียน desired band ให้ทุกเครื่องที่ CommOK (sync ครั้งเดียว) |
| AUTO ON | PLC เป็นเจ้าของการเลือก band ตาม §4.3–4.4 |
| ON → OFF | ไม่เขียนอะไร band ค้างตามล่าสุด |
4.2 Availability (ต่อเครื่อง)
Avail = CommOK ∧ ¬Shutdown ∧ ¬ManualStopped ∧ ¬MaintLock
- Automatic stop (ดับรอแรงดันตก) และ Running นับเป็น available ห้ามตีความ automatic stop ว่าเครื่องหยุด
- Debounce: เปลี่ยนเป็น 0 ต้องค้างนาน Tfail เปลี่ยนเป็น 1 ต้องค้างนาน Trecover กันสถานะกระพริบ
- MaintLock มาจาก SCADA ใช้ตอนช่างจะเข้าเครื่อง
4.3 Role manager (แยก 2 คู่: Fixed A/B และ VSD A/B)
- Failover: lead ไม่ available และ lag available ให้สลับทันทีหลัง debounce (ไม่รอ Tmin,switch)
- Rotation: สลับเมื่อ Hours(lead) − Hours(lag) ≥ Hdiff, ทั้งคู่ available, อยู่ในช่วงเวลาที่อนุญาต (เช่น ช่วง demand ต่ำ) และห่างจากการสลับครั้งก่อน ≥ Tmin,switch
- ไม่สลับกลับอัตโนมัติ: เครื่องที่กลับมา available หลัง failover เป็น lag จนถึงรอบ rotation ถัดไป
- ทั้งคู่ไม่ available: คงบทบาทเดิม ไม่เขียน และแจ้ง alarm
ใช้ running hours เป็นเกณฑ์ ค่า lead ที่เลือกเก็บแบบ retentive (คงอยู่หลัง PLC ไฟดับ)
4.4 Band writer (ต่อเครื่อง)
| เครื่อง | Lead | Lag |
|---|---|---|
| Fixed | PB1 | PB2 |
| VSD | SP1 | SP2 |
- เขียนเฉพาะเมื่อ AUTO ON, CommOK และ read-back ≠ desired โดยส่ง FC06 หนึ่งครั้ง
- หลัง Tverify ถ้า read-back ยังไม่ตรง ให้ขึ้น alarm BandMismatch และหยุดเขียนเครื่องนั้นจนกว่า operator กด Resync (ไม่วนเขียนซ้ำ)
- กรณี operator เปลี่ยน band ที่หน้าจอ หรือ controller ไฟดับแล้ว band เปลี่ยน read-back จะไม่ตรง แล้ว PLC เขียนกลับหนึ่งครั้งตามกติกาเดียวกัน
- ลำดับตอนสลับ: promote ก่อน demote เขียนเครื่องใหม่เป็น PB1/SP1 ก่อน แล้วค่อยเขียนเครื่องเดิมเป็น PB2/SP2 ช่วงเปลี่ยนผ่านจะมี band สูงสองตัวชั่วครู่ แทนที่จะเป็นช่วงที่ไม่มี lead ซึ่งทำให้แรงดันตก
4.5 Modbus scheduler (COM port เดียว)
- MODRW ทำงานทีละคำสั่ง ห้ามซ้อน (syntax และ flag ของ AH500 ต้องยืนยัน จากคู่มือ ISPSoft)
- คิว: write ที่ค้าง (เรียง promote ก่อน demote) แล้วจึง read block ของแต่ละเครื่องแบบ round-robin
- CommOK ของเครื่อง = อ่านสำเร็จครั้งล่าสุดภายใน Tcomm
4.6 โครงโปรแกรม (pseudo-ST ปรับ syntax ตาม ISPSoft)
(* ===== Role manager: 1 instance ต่อคู่ (Fixed, VSD) ===== *)
(* in : AutoOn, AvailA, AvailB, HoursA, HoursB, RotateEn, InWindow *)
(* retain : LeadIsA *)
MinGap(IN := NOT SwapLast, PT := T_MIN_SWITCH);
LeadAvail := SEL(LeadIsA, AvailB, AvailA);
LagAvail := SEL(LeadIsA, AvailA, AvailB);
LeadHrs := SEL(LeadIsA, HoursB, HoursA);
LagHrs := SEL(LeadIsA, HoursA, HoursB);
Swap := FALSE;
IF AutoOn AND LagAvail THEN
IF NOT LeadAvail THEN
Swap := TRUE; (* failover *)
ELSIF RotateEn AND InWindow AND MinGap.Q
AND (LeadHrs - LagHrs >= H_DIFF) THEN
Swap := TRUE; (* rotation *)
END_IF;
END_IF;
IF Swap THEN LeadIsA := NOT LeadIsA; END_IF;
SwapLast := Swap;
(* ===== Band writer: 1 instance ต่อเครื่อง ===== *)
(* Desired: 1 = PB1/SP1 (lead), 2 = PB2/SP2 (lag) *)
Desired := SEL(IsLead, 2, 1);
Mismatch := AutoOn AND CommOK AND (Readback <> Desired);
Verify(IN := Mismatch AND Written, PT := T_VERIFY);
IF Resync THEN Inhibit := FALSE; AlmMismatch := FALSE; Written := FALSE; END_IF;
IF NOT Mismatch THEN Written := FALSE; END_IF;
IF Mismatch AND NOT Written AND NOT Inhibit THEN
WriteReq := TRUE; (* scheduler ส่ง FC06 แล้วเคลียร์ *)
Written := TRUE;
END_IF;
IF Verify.Q THEN Inhibit := TRUE; AlmMismatch := TRUE; END_IF;
5. เหตุผิดปกติและ Security
5.1 พฤติกรรมเมื่อเกิดเหตุ
| เหตุการณ์ | เครื่อง | PLC | SCADA |
|---|---|---|---|
| SCADA ล่ม | เดินตาม band ล่าสุด | AUTO ทำงานต่อ | — |
| AH500 STOP / ไฟดับ | เดินตาม band ล่าสุด ต้องยืนยัน | — | Comm alarm |
| RS485 หรือ gateway หลุด | เดินตาม band ล่าสุด ต้องยืนยัน | ทุกเครื่อง Avail = 0 จึงไม่สลับบทบาท (freeze) เมื่อกลับมาให้ sync ตาม §4.4 | Comm alarm |
| Lead trip (shutdown) | แรงดันตก แล้วเครื่องที่ band ต่ำกว่า load เองทันที | Failover หลัง Tfail | Alarm |
| Manual stop (maintenance) | หยุดตามคำสั่งที่หน้าเครื่อง | Avail = 0 แล้ว failover | แสดงสถานะ |
| Controller ไฟดับแล้วกลับมา | Active band อาจกลับเป็นค่า default ต้องยืนยัน | Read-back ไม่ตรง จึงเขียนกลับหนึ่งครั้ง | — |
| Operator เปลี่ยน band ที่หน้าจอขณะ AUTO | ใช้ band ใหม่ | เขียนกลับหนึ่งครั้ง ถ้ายังไม่ตรงให้ alarm และหยุดเขียน | Alarm |
5.2 Security
- Elektronikon อยู่ใน Local: ช่องทางผ่าน network ทำได้แค่เลือก band ไม่สามารถ start/stop หรือ load/unload
- AH500 Ethernet: รับการเชื่อมต่อจาก IP ของ SCADA เท่านั้น (เมนู IP filter ตาม firmware ต้องยืนยัน) และปิด Modbus TCP server ถ้า SCADA ไม่ได้ใช้
- ขอบเขตการเขียนของ SCADA: เขียนได้เฉพาะ command block (§6.2) และ PLC ตรวจช่วงค่าทุกตัวก่อนใช้
- ตั้ง password ทั้งที่ PLC และไฟล์โปรเจกต์ ISPSoft
- ห้ามต่อพอร์ต Ethernet ของ gateway เข้า network โรงงาน และล็อกตู้ควบคุม
6. Tag list และ Parameters
Register address ทั้งหมดมาจาก Speci5 mapping ของแต่ละเครื่อง ต้องยืนยัน
6.1 PLC ⇄ Gateway (ต่อเครื่อง)
| Tag | ทิศทาง | ใช้ทำอะไร |
|---|---|---|
| Running / Loaded | Read | สถานะ และใช้คำนวณ load cycles |
| AutoStop | Read | ดับรอแรงดัน นับเป็น available |
| ManualStopped | Read | Availability |
| Shutdown / Warning | Read | Availability และ alarm |
| ControlMode | Read | ต้องเป็น Local ถ้าไม่ใช่ให้ขึ้น alarm |
| ActiveBand / ActiveSP | Read | Read-back ของ band writer |
| OutletPressure | Read | Trend และ alarm |
| RunningHours / LoadedHours | Read | Rotation |
| MotorSpeed (VSD) | Read | Trend และดูว่า TRIM เดินเต็มรอบหรือไม่ |
| BandSelect / SPSelect | Write (FC06) | 1 = PB1/SP1, 2 = PB2/SP2 |
6.2 SCADA ⇄ PLC
| SCADA → PLC (command block) | PLC → SCADA (status block) |
|---|---|
| AUTO_Enable FixedLeadSel, VSDLeadSel (A/B) RotateEnable, H_diff, RotateWindow MaintLock[4] Resync (pulse), AlarmAck |
AUTO_Active, Role[4], Avail[4] DesiredBand[4], ActiveBand[4], BandMismatch[4] CommOK[4], ControlModeAlarm[4] LastSwitchTime, LastSwitchReason (failover / rotation / manual) PLC heartbeat |
6.3 Parameters
| Parameter | ความหมาย | ค่า / ที่มา |
|---|---|---|
| PFL1,FU1,FL2,FU2 | Load/unload ของ PB1, PB2 (Fixed) | ตั้งในเครื่องโดย Atlas + ลูกค้า ตาม §3.2 |
| PV1, PV2 | SP1, SP2 (VSD) | ตั้งในเครื่องโดย Atlas + ลูกค้า ตาม §3.2 |
| Hdiff | ส่วนต่างชั่วโมงที่ทำให้สลับ | ตามนโยบาย maintenance ของลูกค้า |
| RotateWindow | ช่วงเวลาที่อนุญาตให้สลับ | ช่วง demand ต่ำ จากลูกค้า |
| Tcomm | Timeout ของ CommOK | เสนอ 3 × รอบ poll ของ gateway |
| Tfail | Debounce เมื่อ Avail → 0 | เสนอ 3 × รอบ poll |
| Trecover | Debounce เมื่อ Avail → 1 | เสนอระดับนาที ปรับตอน commissioning |
| Tverify | รอ read-back หลังเขียน | เสนอ 3 × รอบ poll |
| Tmin,switch | ระยะห่างขั้นต่ำระหว่างการ rotation | เสนอระดับชั่วโมง ปรับตอน commissioning |
7. Commissioning / SAT และ Open items
7.1 Test list
| # | Test | วิธี | ผลที่ต้องได้ |
|---|---|---|---|
| 1 | Mapping | อ่านค่าทุก tag เทียบกับหน้าจอแต่ละเครื่อง | ตรงทุกค่า |
| 2 | สลับ band ใน Local | เขียน PB/SP ทีละเครื่อง | หน้าจอแสดง active band ตาม และ read-back ตรง |
| 3 | Mismatch | Operator เปลี่ยน band ที่หน้าจอขณะ AUTO | PLC เขียนกลับหนึ่งครั้ง ถ้าบังคับซ้ำจะขึ้น alarm และหยุดเขียน |
| 4 | Staging | เพิ่ม/ลด demand จริง | ลำดับ TRIM → BASE → LAG → RESERVE และ BASE ไม่ cycle ถี่ (นับ load cycles/ชม.) |
| 5 | Failover | Manual stop เครื่อง lead แต่ละคู่ | Lag ถูก promote หลัง Tfail และแรงดัน > Pprocess,min |
| 6 | Rotation | ลด Hdiff ชั่วคราว | Promote ก่อน demote และไม่มีแรงดันตก |
| 7 | Comm loss | ถอด RS485 ที่ PLC | เครื่องคง band, alarm ขึ้น, ต่อกลับแล้ว sync |
| 8 | PLC STOP | สั่ง AH500 เป็น STOP | เครื่องคง band |
| 9 | Controller power cycle | ปิด/เปิดไฟ controller ทีละเครื่อง โดยมีลูกค้าอยู่ด้วย | บันทึก active band หลัง restart และ PLC sync กลับ |
| 10 | SCADA off | ปิด SCADA | AUTO ทำงานต่อ |
7.2 Open items ต้องยืนยัน
- รุ่นของ gateway และ topology CAN (1 gateway ต่อ 4 เครื่อง หรือแยก)
- Speci5 mapping ต้องมี read-back ของ active PB/SP และบิต AutoStop / ManualStopped แยกกัน
- Active band หลัง comm loss และหลัง controller power cycle
- Syntax ของ MODRW และการเรียงคำสั่งบน COM port เดียวของ AH500
- ฟังก์ชัน IP filter ของ AH500 ตาม firmware
- FAD ของแต่ละเครื่องสำหรับเช็ค control gap
7.3 เอกสารอ้างอิง
- Atlas Copco: Mk5 Gateway Modbus User Guide, doc 2946 2070 00, Ed. 01 (08/06/2017)
- Atlas Copco: Elektronikon Mk5 upgrade sheet, 2935 0093 20 (2012), Mk5 Graphic มี DI 10, DO 9, CAN 2, RS485 1
- Atlas Copco: Elektronikon Mk5 User Manual, หัวข้อ Change the active pressure band