การเขียน Manual Auto ด้วย Sub-routine
เรียนรู้การสร้าง Subroutine และ Subprogram ใน PLC เพื่อพัฒนา State Machine 4 สถานะ พร้อมระบบ Safety สำหรับ Sequence Control ที่มีประสิทธิภาพ
อัพเดทล่าสุด: 31/1/2569
ราคาชุดอุปกรณ์
บทนำ Subroutine และ Subprogram
Subroutine หรือ Subprogram เป็นเครื่องมือสำคัญในการพัฒนา Sequence Control ที่ช่วยให้การเขียนโปรแกรม PLC มีโครงสร้างที่ชัดเจน อ่านง่าย และสามารถนำกลับมาใช้ซ้ำได้
การพัฒนา State Machine แบบ 4 สถานะ
โครงสร้างสถานะใหม่
จากตอนที่แล้วที่มี 2 สถานะ ขณะนี้ขยายเป็น 4 สถานะ:
- สถานะที่ 1: เริ่มต้น
- สถานะที่ 2: ทำงานตามเวลา
- สถานะที่ 3: กระบอกลมทำงานจนกว่า M130 จะติด
- สถานะที่ 4: กระบอกลมดับเป็นเวลา 2 วินาที แล้วกลับไปสถานะที่ 1
การแก้ไข Code หลัก
การ Reset สถานะ:
ปุ่ม Stop M110: Reset K4 (เพิ่มจาก K2 เป็น K4 เนื่องจากมี 4 สถานะ)
เงื่อนไขการเริ่มงาน:
- การกดปุ่ม Start ต้องมี NC ของ S2, S3, S4 มาขวางด้วย
- ป้องกันการ Overlap ระหว่างแต่ละ State
Code สำหรับสถานะใหม่
State 3:
เงื่อนไขเข้า: State 2 เป็นจริง
เงื่อนไขออก: M130 ติด
การทำงาน: Set State 3 → รอ M130 → Reset State 3 → Set State 4
State 4:
เงื่อนไขเข้า: จาก State 3
การทำงาน: Timer T12 (Cylinder Off เป็นเวลา 2 วินาที)
เงื่อนไขออก: T12 timeout → Reset State 4 → Set State 1
คำสั่งพิเศษ: INC (นับจำนวน Cycle)
ระบบความปลอดภัย (Safety System)
การสร้าง Safety Logic
- สร้างตัวแปรความปลอดภัย:
M98: เซนเซอร์ Safety แบบ NC
M99: สถานะความปลอดภัย (IsSafe)
- Logic การตรวจสอบ:
ถ้า M98 และเซนเซอร์อื่นๆ ปกติ → M99 = ON (ปลอดภัย)
ถ้าเซนเซอร์ใดๆ ผิดปกติ → M99 = OFF (ไม่ปลอดภัย)
การประยุกต์ใช้ Safety
การหยุดฉุกเฉิน:
- เมื่อ M99 (IsSafe) = OFF ให้ Reset สถานะทั้งหมด
- ทำงานร่วมกับปุ่ม Stop
การป้องกันเริ่มงาน:
- ก่อนเข้า State 1 ต้องตรวจสอบ M99 ติดก่อน
- หากไม่ปลอดภัย จะไม่สามารถเริ่มงานได้
Subroutine และ Subprogram
ความหมายและประโยชน์
Subroutine คือการแบ่งโปรแกรมออกเป็นส่วนย่อยๆ เพื่อ:
- จัดการ Code ได้ง่ายขึ้น
- อ่าน Code ได้ชัดเจนขึ้น
- นำ Code กลับมาใช้ซ้ำได้
- แยก Mode การทำงาน (Manual/Auto)
การสร้าง Subroutine
- สร้าง Manual Mode (R1):
คลิกขวาที่ Project Tree → Add → Add Sub Routine
ชื่อ: Manual
- สร้าง Auto Mode (R2):
คลิกขวาที่ Project Tree → Add → Add Sub Routine
ชื่อ: Auto
การย้าย Code เข้า Subroutine
Manual Mode:
M150: สำหรับสั่ง Manual Cylinder On/Off
Comment: "Cylinder On Off Manual"
Auto Mode:
- ย้าย Code ทั้งหมดของ Sequence Control เข้า Auto Subroutine
- ใช้คำสั่ง Cut (Ctrl+X) และ Paste (Ctrl+V)
การเรียกใช้ Subroutine
การสร้าง Mode Selection
ตัวแปรเลือก Mode:
M200 = OFF: Manual Mode
M200 = ON: Auto Mode
การเรียกใช้
ใน Main Program:
M200 (NC) → CALL Manual
M200 (NO) → CALL Auto
รูปแบบคำสั่ง:
CALL Manual(ไม่ใส่ตัว M)CALL Auto
การทดสอบระบบ
ทดสอบ Manual Mode
- เมื่อเริ่มงาน Manual Mode จะทำงานก่อน
- สามารถกด M150 เพื่อควบคุม Cylinder ได้
- หาก Start Auto ในขณะ Manual จะไม่มีการตอบสนอง
ทดสอบ Auto Mode
- เปลี่ยน M200 = ON เพื่อเรียก Auto Mode
- สั่ง M100 Start เพื่อเริ่ม Sequence
- ระบบจะทำงานตาม State 1→2→3→4 และวนซ้ำ
ข้อจำกัดของระบบปัจจุบัน
ปัญหาการขวาง State
เมื่อมี State จำนวนมาก (10-20 State) การเขียน:
- NC ของทุก State ยกเว้น State ปัจจุบัน
- ทำให้ Code ซับซ้อนและอ่านยาก
- การบำรุงรักษายากขึ้น
ตัวอย่างปัญหา
การเข้า State 1: ต้องมี NC ของ S2, S3, S4 มาขวาง
หาก 10 State: ต้องมี NC ของ S2-S10 มาขวาง
หาก 20 State: ต้องมี NC ของ S2-S20 มาขวาง
เคล็ดลับการใช้งาน
- การตั้งชื่อ: ใช้ชื่อที่เข้าใจง่าย เช่น Manual, Auto
- การ Comment: เขียน Comment ทุก Coil เพื่อความชัดเจน
- การทดสอบ: ทดสอบทีละ Mode ก่อนรวมกัน
- ความปลอดภัย: ใส่ Safety Logic ก่อนเสมอ
สรุป
Subroutine เป็นเครื่องมือที่ทรงพลังในการจัดโครงสร้างโปรแกรม PLC ช่วยให้:
- แบ่งแยกหน้าที่: Manual และ Auto Mode ทำงานแยกกัน
- เพิ่มความปลอดภัย: สามารถควบคุมการเรียกใช้แต่ละ Mode ได้
- อ่าน Code ง่ายขึ้น: แต่ละ Subroutine มีหน้าที่เฉพาะ
- บำรุงรักษาง่าย: แก้ไขเฉพาะส่วนที่มีปัญหา
อย่างไรก็ตาม เมื่อจำนวน State เพิ่มขึ้น จะต้องมีเทคนิคใหม่ในการจัดการ NC ของแต่ละ State เพื่อให้ Code กระชับและเข้าใจง่ายขึ้น ซึ่งจะได้เรียนรูในตอนต่อไป
ควรอ่านก่อน:
มีคำถาม? ติดต่อทีมงาน
