การควบคุมตามลำดับ 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
Sequence Control คืออะไร
Sequence Control คือการควบคุมการทำงานตามลำดับ เครื่องจักร Automation ถูกสร้างมาให้ทำงานซ้ำๆ ตอนนี้จะดูว่าการเขียน Ladder ให้อะไรบางอย่างทำงานซ้ำตามลำดับทำกันอย่างไร โดยใช้ความรู้จากตอนก่อนๆ (Ladder, Timer, Data Register) มาประกอบกัน
ขั้นแรกคือซอยขั้นตอนการทำงานออกมาให้เล็กที่สุด เช่นเครื่องตัดชิ้นงาน
- ปล่อยชิ้นงานเข้ามาสักระยะหนึ่ง
- หยุดปล่อยชิ้นงาน
- รอให้มีดตัด — พอมีดยกขึ้นก็กลับไปทำขั้นตอนที่ 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 + ลูกศรลง เพื่อแตกแถวขนานลงมา)
เขียน Comment กำกับได้เลย (Delay On, Delay Off) ถ้าไม่เห็น Comment ให้ไปที่ View แล้วเปิด Unit Comment
2. Stop และ Start
RST S1 K2 คือ Reset เริ่มที่ S1 จำนวน 2 ตัว ได้ทั้ง S1 และ S2 จึงต้องเป็น K2 ไม่ใช่ K1 ส่วน SET S1 K1 คือ Set แค่ S1 ตัวเดียว
3. State S1 — กระบอกลม ON
4. State S2 — กระบอกลม OFF
5. Output กระบอกลม
แถวนี้วางไว้ล่างสุดของโค้ด Contact ของ S2 เปลี่ยนจาก NO เป็น NC เพราะเมื่อ S2 ติด Contact นี้จะตัดสะพานไฟ ทำให้ M120 ไม่มีทางติดได้ตราบที่ S2 ยังติดอยู่
ปัญหาที่เจอตอน Simulate
คลิปค่อยๆ เขียนแล้ว Simulate ทีละส่วน จนเจอปัญหาและแก้ตามลำดับนี้
- S1 กะพริบก่อนเขียน S2 เสร็จ — ตอนมีแค่ S1 กับการเลื่อนไป S2 จะเห็น S1 พยายามติดอยู่เรื่อยๆ เพราะโค้ดยังไม่ครบ ไม่ต้องสนใจ เขียนส่วน S2 ต่อให้จบก่อน
- กด Start ค้างไว้แล้ว State ติดทั้ง S1 และ S2 พร้อมกัน — ระหว่างที่ M100 ON มันพยายาม Set S1 อยู่ตลอด ขณะที่ S1 ทำงานจบแล้วกำลังจะไป S2 ใส่ Contact NC ของ S2 ที่แถว Timer TV10 แล้ว Timer ทำงานปกติ แต่ State ยังซ้อนกันบางจังหวะ วิธีแก้คือใส่
ANDI S2(State สุดท้าย) ไว้ที่แถวปุ่ม Start ซึ่งเป็นจังหวะแรกที่ทำให้การทำงานแบบ Auto เริ่มขึ้น - กด 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
ควรอ่านก่อน:
มีคำถาม? ติดต่อทีมงาน
