บัญชี

หน้าแรกคู่มือPLCพื้นฐาน PLC และ SamSoar2022การเขียน Manual Auto ด้วย Sub-routine
PLC
เริ่มต้น
12 นาที

การเขียน Manual Auto ด้วย Sub-routine

เรียนรู้การสร้าง Subroutine และ Subprogram ใน PLC เพื่อพัฒนา State Machine 4 สถานะ พร้อมระบบ Safety สำหรับ Sequence Control ที่มีประสิทธิภาพ

อัพเดทล่าสุด: 31/1/2569

ราคาชุดอุปกรณ์

฿3,690

บทนำ Subroutine และ Subprogram

Subroutine หรือ Subprogram เป็นเครื่องมือสำคัญในการพัฒนา Sequence Control ที่ช่วยให้การเขียนโปรแกรม PLC มีโครงสร้างที่ชัดเจน อ่านง่าย และสามารถนำกลับมาใช้ซ้ำได้

การพัฒนา State Machine แบบ 4 สถานะ

โครงสร้างสถานะใหม่

จากตอนที่แล้วที่มี 2 สถานะ ขณะนี้ขยายเป็น 4 สถานะ:

  1. สถานะที่ 1: เริ่มต้น
  2. สถานะที่ 2: ทำงานตามเวลา
  3. สถานะที่ 3: กระบอกลมทำงานจนกว่า M130 จะติด
  4. สถานะที่ 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

  1. สร้างตัวแปรความปลอดภัย:
M98: เซนเซอร์ Safety แบบ NC
M99: สถานะความปลอดภัย (IsSafe)

  1. 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

  1. สร้าง Manual Mode (R1):
คลิกขวาที่ Project Tree → Add → Add Sub Routine
ชื่อ: Manual

  1. สร้าง 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

  1. เมื่อเริ่มงาน Manual Mode จะทำงานก่อน
  2. สามารถกด M150 เพื่อควบคุม Cylinder ได้
  3. หาก Start Auto ในขณะ Manual จะไม่มีการตอบสนอง

ทดสอบ Auto Mode

  1. เปลี่ยน M200 = ON เพื่อเรียก Auto Mode
  2. สั่ง M100 Start เพื่อเริ่ม Sequence
  3. ระบบจะทำงานตาม 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 มาขวาง

💡 หมายเหตุ
เราจะมีวิธีจัดการ State ปริมาณมากได้โดยการใช้ D แทน S สามารถดูรายละเอียดเพิ่มเติมได้ในบทความถัดไป

เคล็ดลับการใช้งาน

  • การตั้งชื่อ: ใช้ชื่อที่เข้าใจง่าย เช่น Manual, Auto
  • การ Comment: เขียน Comment ทุก Coil เพื่อความชัดเจน
  • การทดสอบ: ทดสอบทีละ Mode ก่อนรวมกัน
  • ความปลอดภัย: ใส่ Safety Logic ก่อนเสมอ

สรุป

Subroutine เป็นเครื่องมือที่ทรงพลังในการจัดโครงสร้างโปรแกรม PLC ช่วยให้:

  1. แบ่งแยกหน้าที่: Manual และ Auto Mode ทำงานแยกกัน
  2. เพิ่มความปลอดภัย: สามารถควบคุมการเรียกใช้แต่ละ Mode ได้
  3. อ่าน Code ง่ายขึ้น: แต่ละ Subroutine มีหน้าที่เฉพาะ
  4. บำรุงรักษาง่าย: แก้ไขเฉพาะส่วนที่มีปัญหา

อย่างไรก็ตาม เมื่อจำนวน State เพิ่มขึ้น จะต้องมีเทคนิคใหม่ในการจัดการ NC ของแต่ละ State เพื่อให้ Code กระชับและเข้าใจง่ายขึ้น ซึ่งจะได้เรียนรูในตอนต่อไป