หน้าแรกคู่มือPLCพื้นฐาน PLC และ SamSoar2022การควบคุมตามลำดับ Sequence Control
PLCเริ่มต้น · Beginner16 นาที

การควบคุมตามลำดับ Sequence Control

เขียน Ladder ให้ PLC ทำงานตามลำดับแบบ State Machine ด้วยตัว S ใน SamSoar2022 ตัวอย่างกระบอกลม ON 3.5 วินาที OFF 2 วินาที สลับไปเรื่อยๆ จนกด Stop พร้อมวิธีกัน State ติดซ้อนกัน

Sequence Control คือการแบ่งงานของเครื่องจักรเป็นสถานะ (State) แล้วให้ PLC เลื่อนจากสถานะหนึ่งไปอีกสถานะเมื่อเงื่อนไขครบ ในตัวอย่างใช้ S1 (กระบอกลม ON) และ S2 (กระบอกลม OFF) สลับกันด้วย Timer TV10/TV11 โดยเวลาเก็บใน D100/D102 ให้ผู้ใช้ปรับได้ และใส่ Contact NC ของ S2 กับ Stop (M110) ไว้ที่แถว Start เพื่อกัน State ติดซ้อนกัน

อัพเดทล่าสุด: 26 ตุลาคม 2569

ชุดอุปกรณ์สำหรับบทความนี้

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

฿3,690

Sequence Control คืออะไร

Sequence Control คือการควบคุมการทำงานตามลำดับ เครื่องจักร Automation ถูกสร้างมาให้ทำงานซ้ำๆ ตอนนี้จะดูว่าการเขียน Ladder ให้อะไรบางอย่างทำงานซ้ำตามลำดับทำกันอย่างไร โดยใช้ความรู้จากตอนก่อนๆ (Ladder, Timer, Data Register) มาประกอบกัน

ขั้นแรกคือซอยขั้นตอนการทำงานออกมาให้เล็กที่สุด เช่นเครื่องตัดชิ้นงาน

  1. ปล่อยชิ้นงานเข้ามาสักระยะหนึ่ง
  2. หยุดปล่อยชิ้นงาน
  3. รอให้มีดตัด — พอมีดยกขึ้นก็กลับไปทำขั้นตอนที่ 1

เมื่อนิยามแต่ละขั้นตอนชัดแล้ว ให้กำหนดเป็นสถานะ 1, 2, 3 ซึ่งเรียกว่า State เครื่องจักรจะเลื่อนจาก State 1 ไป State 2 และ State 3 ตามเงื่อนไขที่กำหนด

ทำไมใช้ตัว S แทนตัว M

ใน Ladder จะเก็บ State ไว้ในตัว S ซึ่งทำงานเหมือนตัว M ทุกอย่าง แต่พออ่านโค้ดแล้วรู้ทันทีว่าตัวนี้ถูก Assign ไว้เก็บสถานะของเครื่องจักร ส่วนตัว M ดูเป็นแค่คอยล์ตัวช่วยทั่วไป จะใช้ M เป็น State ก็ได้ แต่ใช้ S แล้วอ่านโค้ดง่ายกว่า

โจทย์: เปิด-ปิดกระบอกลมสลับกัน

  • กดปุ่ม Start (M100) แล้วกระบอกลม Cylinder (M120) ทำงาน
  • ค่าเริ่มต้นให้ ON 3.5 วินาที แล้ว OFF 2 วินาที สลับกันไปเรื่อยๆ จนกว่าจะกดปุ่ม Stop (M110)
  • ผู้ใช้กำหนดเวลาช่วง ON และ OFF เองได้

ตัวเลข M เหล่านี้จะใช้ตัวอื่นก็ได้ ขอแค่ไม่ซ้ำกับที่เคยเขียนไปแล้ว ระบบนี้มี 2 สถานะ คือ State 1 กระบอกลมทำงาน และ State 2 กระบอกลมหยุด เงื่อนไขที่ทำให้เลื่อนจาก 1 ไป 2 คือเวลาผ่านไป 3.5 วินาที และจาก 2 กลับมา 1 คือเวลาผ่านไป 2.0 วินาที

เขียนโปรแกรมใน SamSoar2022

โค้ดทั้งหมดอยู่ใน Network ใหม่ชื่อ State Machines โค้ดด้านล่างเป็นเวอร์ชันสุดท้ายในคลิป ส่วนเหตุผลของ Contact บางตัวอธิบายไว้ในหัวข้อ "ปัญหาที่เจอตอน Simulate"

1. ค่าเริ่มต้นของเวลา ON/OFF

ใช้แฟล็ก M8150 ซึ่งติด 1 ครั้งแล้วดับเมื่อ PLC เปิดขึ้นมา ใช้ MOV ใส่ค่าเริ่มต้นลง Data Register Timer ที่ใช้เป็นแบบ 100 ms ดังนั้น 3.5 วินาที = K35 และ 2.0 วินาที = K20 (กด Ctrl + ลูกศรลง เพื่อแตกแถวขนานลงมา)

ค่าเริ่มต้น Delay On / Delay Off
M8150 ติดครั้งเดียวตอน PLC เปิด
N0
D100 = Delay On (K35 = 3.5 วินาที), D102 = Delay Off (K20 = 2.0 วินาที)
M8150MOVK35, D100MOVK20, D102
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

เขียน Comment กำกับได้เลย (Delay On, Delay Off) ถ้าไม่เห็น Comment ให้ไปที่ View แล้วเปิด Unit Comment

2. Stop และ Start

Stop และ Start
N0
กด Stop (M110) → Reset ตั้งแต่ S1 ไป 2 ตัว คือ S1 และ S2
M110RSTS1, K2
กด Start (M100) ขณะไม่อยู่ใน S2 และไม่ได้กด Stop → Set S1
M100S2M110SETS1, K1
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

RST S1 K2 คือ Reset เริ่มที่ S1 จำนวน 2 ตัว ได้ทั้ง S1 และ S2 จึงต้องเป็น K2 ไม่ใช่ K1 ส่วน SET S1 K1 คือ Set แค่ S1 ตัวเดียว

3. State S1 — กระบอกลม ON

S1: Cylinder On
N0
อยู่ใน S1 (และ S2 ไม่ติด) → นับเวลา Delay On ด้วย TV10
S1S2TONTV10, D100
T10 ครบ (Cylinder On Done) → Reset S1, Set S2
S1T10RSTS1, K1SETS2, K1
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

4. State S2 — กระบอกลม OFF

S2: Cylinder Off
N0
อยู่ใน S2 → นับเวลา Delay Off ด้วย TV11
S2TONTV11, D102
T11 ครบ (Cylinder Off Done) → Reset S2, Set S1 กลับไป State แรก
S2T11RSTS2, K1SETS1, K1
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

5. Output กระบอกลม

Output M120
N0
S1 ติดและ S2 ไม่ติด → M120 (Cylinder) ON
S1S2M120
นำเข้าไฟล์ใน SamSoar2022: File → Import → เลือกไฟล์ .csv

แถวนี้วางไว้ล่างสุดของโค้ด Contact ของ S2 เปลี่ยนจาก NO เป็น NC เพราะเมื่อ S2 ติด Contact นี้จะตัดสะพานไฟ ทำให้ M120 ไม่มีทางติดได้ตราบที่ S2 ยังติดอยู่

ปัญหาที่เจอตอน Simulate

คลิปค่อยๆ เขียนแล้ว Simulate ทีละส่วน จนเจอปัญหาและแก้ตามลำดับนี้

  1. S1 กะพริบก่อนเขียน S2 เสร็จ — ตอนมีแค่ S1 กับการเลื่อนไป S2 จะเห็น S1 พยายามติดอยู่เรื่อยๆ เพราะโค้ดยังไม่ครบ ไม่ต้องสนใจ เขียนส่วน S2 ต่อให้จบก่อน
  2. กด Start ค้างไว้แล้ว State ติดทั้ง S1 และ S2 พร้อมกัน — ระหว่างที่ M100 ON มันพยายาม Set S1 อยู่ตลอด ขณะที่ S1 ทำงานจบแล้วกำลังจะไป S2 ใส่ Contact NC ของ S2 ที่แถว Timer TV10 แล้ว Timer ทำงานปกติ แต่ State ยังซ้อนกันบางจังหวะ วิธีแก้คือใส่ ANDI S2 (State สุดท้าย) ไว้ที่แถวปุ่ม Start ซึ่งเป็นจังหวะแรกที่ทำให้การทำงานแบบ Auto เริ่มขึ้น
  3. กด Stop ค้างไว้แล้วมีคนกด Start ค้าง ปัญหายังเกิด — ต้องใส่ Contact NC ของ Stop (ANDI M110) ไว้ที่จุดเริ่มต้นด้วย เพื่อให้ Stop มีลำดับความสำคัญเหนือ Start

หลังแก้ครบ กด Start ค้างไว้ก็ทำงานปกติ ไม่มี State ซ้อนกัน ปล่อย M100 แล้วระบบก็ยังทำงานต่อจนกว่าจะกด M110 ถ้ากด M110 ค้างไว้แล้วกด Start ระบบจะไม่เริ่ม และเมื่อปล่อย Stop แล้วกด Start ระบบก็กลับมาทำงานตามปกติ

ใช้ Pattern เดียวกันกับระบบที่มีหลายขั้นตอน

การเขียนแบบนี้เป็น Pattern ที่ใช้กันบ่อยในการทำ State Machine ไม่ว่าระบบจะมีกี่ขั้นตอน วิธีเขียนก็ไม่ต่างกัน แค่เพิ่ม State และเงื่อนไขที่ทำให้เลื่อนไป State ถัดไป เพียงต้องดูว่าอะไรคือ State เริ่มต้นและอะไรคือ State สุดท้าย แล้วประยุกต์ Pattern นี้

การบ้าน

ต่อยอดจากระบบเดิม

  • กด Start (M100) แล้ว Cylinder (M120) ON 3.5 วินาที OFF 2 วินาที จากนั้น ON ค้างจนกว่า M130 จะติด แล้วจึง OFF 2 วินาที จากนั้นทำงานสลับกันไปเรื่อยๆ จนกว่าจะกดปุ่ม Stop (M110)
  • ผู้ใช้กำหนดเวลาช่วง ON และ OFF เองได้
  • ผู้ใช้รู้ได้ว่าทำงานไปแล้วกี่ Cycle

เฉลยอยู่ในตอนถัดไป

ตอนถัดไป

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

13 นาทีเริ่มต้น · Beginner

ควรอ่านก่อน: