โมดูล 3/5 · สัปดาห์ 7–9 · 27 ชม.

PLC และลอจิกควบคุม

UAT 202 พื้นฐานเทคโนโลยีระบบอัตโนมัติ

เวลาเรียนประมาณ 80 นาทีร่าง รอตรวจปรับปรุงล่าสุด 27 กันยายน 2569

บทเรียน

เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ

  1. อธิบายรอบการทำงาน (scan cycle) ของ PLC และผลต่อเวลาตอบสนอง
  2. เขียน ladder logic ด้วยหน้าสัมผัส NO/NC ขดลวด วงจรคงสถานะ และตัวจับเวลา
  3. บอกภาษาเขียนโปรแกรมตาม IEC 61131-3 และเลือกภาษาให้เหมาะกับงาน
  4. ออกแบบวงจรหยุดฉุกเฉินตามหลักความปลอดภัยของเครื่องจักร

ความรู้พื้นฐานที่ควรมี: UAT 202 โมดูล 1–2 · UAT 104 (การเขียนโปรแกรม)

ทำไมต้องรู้

PLC (programmable logic controller) คือคอมพิวเตอร์อุตสาหกรรมที่ทนร้อน ฝุ่น และสัญญาณรบกวน ออกแบบมาให้ทำงานต่อเนื่องหลายปี เครื่องจักรในโรงงานเกือบทุกแห่งควบคุมด้วย PLC และสถานีเปลี่ยนแบตเตอรี่โดรนก็เช่นกัน ช่างและวิศวกรที่อ่านและเขียนลอจิกของ PLC ได้ จึงเป็นที่ต้องการทั้งในงานอุตสาหกรรมและงานโดรน

รอบการทำงานของ PLC

PLC ไม่ได้ตอบสนองทันทีที่อินพุตเปลี่ยน แต่ทำงานเป็นรอบวนซ้ำ ตามคู่มือของ Siemens S7-1500 แต่ละรอบมีสี่ขั้น

สี่ขั้นวนเป็นวง ขั้นที่ 1 อ่านอินพุตเก็บเป็นภาพอินพุต ขั้นที่ 2 รันโปรแกรมจากบนลงล่าง ขั้นที่ 3 เขียนเอาต์พุตไปที่โมดูล ขั้นที่ 4 งานระบบแล้วเริ่มรอบใหม่
ภาพที่ 1 รอบการทำงาน (scan cycle) ของ PLC
  1. อ่านอินพุตทั้งหมดเก็บไว้ใน ภาพอินพุต (process image)
  2. รันโปรแกรมจากบนลงล่างโดยใช้ภาพอินพุตนั้น
  3. เขียนผลไปที่เอาต์พุต
  4. ทำงานระบบแล้วเริ่มรอบใหม่

ผลคือ อินพุตที่เปลี่ยนกลางรอบจะถูกเห็นในรอบถัดไป เวลาตอบสนองที่แย่ที่สุดจึงประมาณสองรอบ และสัญญาณที่สั้นกว่าหนึ่งรอบอาจไม่ถูกเห็นเลย

Ladder logic

Ladder logic เขียนโปรแกรมเป็นขั้นบันได (rung) คล้ายแผนผังวงจรรีเลย์ ตามคำอธิบายของ Rockwell

  • หน้าสัมผัสปกติเปิด (NO) เป็นจริงเมื่อบิตเป็น 1
  • หน้าสัมผัสปกติปิด (NC) เป็นจริงเมื่อบิตเป็น 0
  • ขดลวด (coil) เป็นเอาต์พุต
  • ต่อ อนุกรม คือ AND ต่อ ขนาน คือ OR
ladder สองรางซ้ายขวา ขั้นแรกมีหน้าสัมผัส START ต่ออนุกรมกับ STOP แบบ NC และ E-STOP แบบ NC ไปที่ขดลวด M มอเตอร์สายพาน หน้าสัมผัส M คงสถานะต่อขนานกับ START ด้านล่างเขียนว่า ต่ออนุกรมเท่ากับ AND ต่อขนานเท่ากับ OR
ภาพที่ 2 ladder logic ของวงจร start–stop พร้อมหยุดฉุกเฉิน

วงจร start–stop แบบคงสถานะ (seal-in) ในภาพที่ 2 เมื่อกดปุ่ม START มอเตอร์ติด และหน้าสัมผัส M ที่ต่อขนานทำให้มอเตอร์ติดต่อไปแม้ปล่อยปุ่ม จนกว่าจะกด STOP หรือ E-STOP ซึ่งต่อสายแบบปกติปิด เหตุผลคือ ถ้าสายของปุ่มหยุดขาด วงจรจะหยุดเอง ปลอดภัยกว่าการต่อแบบปกติเปิดที่สายขาดแล้วกดหยุดไม่ได้

ตัวจับเวลาหน่วงเปิด (TON) ให้เอาต์พุตเป็นจริงเมื่ออินพุตเป็นจริงต่อเนื่องนานถึงเวลาที่ตั้ง ใช้กรองสัญญาณสั่นหรือรอให้วัตถุเข้าที่

ตัวอย่างที่ 1 จำลอง PLC ของสายพาน

รอบการทำงาน 0.1 วินาที ขั้นแรกคือวงจร start–stop ขั้นที่สองคือเมื่อมีแบตเตอรี่อยู่บนสายพานต่อเนื่อง 1.0 วินาทีขณะสายพานวิ่ง ให้สั่งแขนกลจับ

DT = 0.1


def inputs_at(t):
    start = 0.5 <= t < 0.7 or 6.0 <= t < 6.2           # กดปุ่มสั้น ๆ
    stop_ok = not (8.0 <= t < 8.2)                        # NC: เป็น True เมื่อไม่ได้กด
    estop_ok = not (4.0 <= t < 4.5)
    battery = 2.0 <= t < 5.5 or 6.5 <= t < 7.0
    return start, stop_ok, estop_ok, battery


state = {"motor": False, "ton": 0.0, "grip": False}
previous = None
for k in range(100):
    t = round(k * DT, 1)
    start, stop_ok, estop_ok, battery = inputs_at(t)                              # 1 อ่านอินพุต
    motor = (start or state["motor"]) and stop_ok and estop_ok                     # 2 rung 1
    state["ton"] = state["ton"] + DT if (battery and motor) else 0.0               #   rung 2 (TON)
    grip = state["ton"] >= 1.0 - 1e-9
    state["motor"], state["grip"] = motor, grip                                    # 3 เขียนเอาต์พุต
    if (motor, grip) != previous:
        print(f"t = {t:4.1f} s  motor {'ON ' if motor else 'OFF'}  gripper {'ON' if grip else 'OFF'}")
        previous = (motor, grip)
t =  0.0 s  motor OFF  gripper OFF
t =  0.5 s  motor ON   gripper OFF
t =  2.9 s  motor ON   gripper ON
t =  4.0 s  motor OFF  gripper OFF
t =  6.0 s  motor ON   gripper OFF
t =  8.0 s  motor OFF  gripper OFF

มอเตอร์ติดเมื่อกด START และค้างไว้เอง แขนกลจับหลังแบตเตอรี่อยู่ครบ 1 วินาที เมื่อกดหยุดฉุกเฉินที่วินาทีที่ 4 ทุกอย่างหยุดทันที และ ไม่กลับมาติดเองเมื่อปล่อยปุ่ม ต้องกด START ใหม่ ช่วงวินาทีที่ 6.5–7.0 แบตเตอรี่อยู่แค่ครึ่งวินาที ตัวจับเวลาจึงไม่ครบและแขนกลไม่จับ

ภาษาตาม IEC 61131-3 และความปลอดภัย

มาตรฐาน IEC 61131-3 ฉบับที่ 4 (2025) กำหนดภาษาเขียนโปรแกรม PLC ได้แก่ Ladder Diagram (LD) Function Block Diagram (FBD) Structured Text (ST) ซึ่งคล้ายภาษา Pascal และ Sequential Function Chart (SFC) สำหรับงานเป็นลำดับขั้น ภาษา Instruction List ที่เคยมีถูกยกเลิกไปแล้วในฉบับล่าสุด ในห้องปฏิบัติการใช้ CODESYS Development System ซึ่งใช้ได้ฟรีและมี PLC จำลองบน Windows

หยุดฉุกเฉินไม่ใช่ปุ่มธรรมดา

มาตรฐาน ISO 13850 ว่าด้วยหลักการออกแบบฟังก์ชันหยุดฉุกเฉิน และ IEC 60204-1 แบ่งการหยุดเป็น Category 0 ตัดพลังงานทันที Category 1 หยุดแบบควบคุมแล้วจึงตัดพลังงาน และ Category 2 หยุดแบบควบคุมโดยยังจ่ายพลังงานอยู่ ปุ่มหยุดฉุกเฉินต้องค้างเมื่อกด และเครื่องต้องไม่เริ่มใหม่เองเมื่อปลดปุ่ม ระบบจริงต้องใช้อุปกรณ์ความปลอดภัยที่ได้รับการรับรอง ไม่ใช่พึ่งโปรแกรม PLC ธรรมดาเพียงอย่างเดียว

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: เขียนโปรแกรม PLC ของสายพาน

  1. ติดตั้ง CODESYS Development System สร้างโปรเจกต์กับ PLC จำลอง
  2. เขียนวงจร start–stop พร้อม E-STOP ด้วย LD ตามภาพที่ 2 แล้วทดสอบทุกกรณีในตาราง: กด START, ปล่อย START, กด STOP, กด E-STOP ขณะวิ่ง, ปลด E-STOP
  3. เพิ่มตัวจับเวลา TON 1.0 วินาทีสำหรับแขนกล เทียบผลกับโค้ดตัวอย่างที่ 1
  4. เขียนลอจิกเดียวกันด้วย ST แล้วเปรียบเทียบความอ่านง่าย
  5. ทดลองลดเวลากดปุ่มในโค้ดตัวอย่างที่ 1 ให้สั้นกว่ารอบการทำงาน แล้วอธิบายผล

ข้อผิดพลาดที่พบบ่อย

ระวัง

  • ต่อปุ่มหยุดเป็นหน้าสัมผัสปกติเปิด สายขาดแล้วกดหยุดไม่ได้
  • ให้เครื่องเริ่มใหม่เองหลังปลดปุ่มหยุดฉุกเฉิน
  • ลืมวงจรคงสถานะ มอเตอร์ติดเฉพาะตอนกดปุ่ม
  • ใช้พัลส์ที่สั้นกว่ารอบการทำงาน จน PLC ไม่เห็น
  • เขียนเอาต์พุตตัวเดียวกันในหลาย rung ผลจึงขึ้นกับ rung สุดท้าย

สรุป

  • PLC ทำงานเป็นรอบ อ่านอินพุต รันโปรแกรม เขียนเอาต์พุต แล้ววนใหม่
  • Ladder logic ใช้หน้าสัมผัส NO/NC และขดลวด ต่ออนุกรมคือ AND ขนานคือ OR
  • วงจรคงสถานะทำให้มอเตอร์ติดค้าง ตัวจับเวลา TON รอให้อินพุตเป็นจริงต่อเนื่อง
  • IEC 61131-3 มี LD, FBD, ST และ SFC และหยุดฉุกเฉินต้องออกแบบตามมาตรฐานความปลอดภัย

แบบฝึกตรวจความเข้าใจ

  1. PLC มีรอบการทำงาน 10 ms เวลาตอบสนองที่แย่ที่สุดโดยประมาณเท่าใด
  2. หน้าสัมผัส A และ B ต่ออนุกรม ขดลวดติดเมื่อใด
  3. ทำไมปุ่ม STOP จึงต่อแบบปกติปิด
  4. ตัวจับเวลา TON ตั้ง 2 วินาที อินพุตเป็นจริงนาน 1.5 วินาทีแล้วดับ เอาต์พุตเป็นอย่างไร
  5. การหยุดแบบ Category 0 ตาม IEC 60204-1 คืออะไร
เฉลย
  1. ประมาณสองรอบ คือ 20 ms
  2. เมื่อ A และ B เป็นจริงทั้งคู่ (AND)
  3. ถ้าสายขาด วงจรจะเปิดและเครื่องหยุดเอง ปลอดภัยเมื่อเกิดความเสียหาย
  4. เอาต์พุตไม่ทำงาน เพราะไม่ครบ 2 วินาทีต่อเนื่อง และตัวจับเวลารีเซ็ต
  5. ตัดพลังงานไปยังแอคชูเอเตอร์ทันที

สรุปสูตรสำคัญ

วงจรคงสถานะ start–stop
ตัวจับเวลาหน่วงเปิด (TON)

แหล่งอ้างอิงหลัก

  1. International Electrotechnical Commission. (2025). Programmable controllers – Part 3: Programming languages (IEC 61131-3:2025, Ed. 4.0). link
  2. Siemens AG. (2014). SIMATIC S7-1500 cycle and response times: Function manual (A5E03461504-02). link
  3. Rockwell Automation. Examine if open (XIO) and bit instructions. FactoryTalk Design Studio documentation. link
  4. CODESYS GmbH. CODESYS Development System V3. link
  5. International Organization for Standardization. (2015). Safety of machinery — Emergency stop function — Principles for design (ISO 13850:2015). link
  6. International Electrotechnical Commission. (2021). Safety of machinery – Electrical equipment of machines – Part 1: General requirements (IEC 60204-1:2016+AMD1:2021 CSV). link
  7. Bolton, W. (2015). Programmable logic controllers (6th ed.). Newnes.

อ่านเพิ่มเติม

ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล

ในชั้นเรียน / ภาคสนาม

ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย

หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz

แบบทดสอบประจำโมดูล

แบบทดสอบนี้ใช้ตรวจความเข้าใจ (formative) ไม่ใช่การสอบเก็บคะแนน

โดเมนความรู้: ระบบอัตโนมัติ หุ่นยนต์ และฝูงโดรน