O ORPAON
SCADA และระบบควบคุมส่วนบน

มาตรฐานโปรแกรม PLC: แบ่งชั้น ตั้งชื่อ จัดการเวอร์ชัน

การทำมาตรฐานโปรแกรม PLC คือการแบ่งโปรแกรมควบคุมเป็นชั้นอุปกรณ์ ชั้นยูนิต ชั้นกระบวนการ และชั้นใช้งานร่วม กำหนดความหมายของสัญญาณด้วยกฎการตั้งชื่อเดียวและตารางตัวแปรเดียว แล้วใช้การจัดการเวอร์ชันและการสำรองข้อมูลเพื่อให้ทุกการแก้ไขหน้างานตรวจสอบย้อนกลับและย้อนกลับได้ เป้าหมายไม่ใช่เขียนโค้ดให้สวย แต่คือเครื่องประเภทเดียวกันใช้โครงเดิมซ้ำได้ในแต่ละโครงการ และคนที่รับช่วงต่อไม่ต้องอ่านลำดับแลดเดอร์ทั้งหมดตั้งแต่ต้น สัญญาณว่าทำสำเร็จวัดได้ชัดเจน คือประมาณเจ็ดในสิบของตรรกะควบคุมในโครงการใหม่มาจากแม่แบบที่มีอยู่ และผู้ดูแลคนใหม่หาส่วนที่ผิดพลาดได้ภายในครึ่งวัน บทความนี้อธิบายวิธีแบ่งชั้น ระดับรายละเอียดของการตั้งชื่อและคำอธิบาย และสิ่งที่ต้องส่งมอบเมื่อส่งงาน

แผนภาพโครงสร้างสี่ชั้นของโปรแกรม PLC ที่เป็นมาตรฐาน: ชั้นอุปกรณ์ ชั้นยูนิต ชั้นกระบวนการ และชั้นใช้งานร่วม

1. มาตรฐานโปรแกรม PLC คืออะไร: เปลี่ยนนิสัยส่วนตัวให้เป็นสินทรัพย์ทางวิศวกรรม

มาตรฐานโปรแกรม PLC คือการลดความหลากหลายของวิธีเขียนโปรแกรมควบคุม จากนิสัยของแต่ละบุคคลให้เหลือโครงสร้างที่ทีมใช้ซ้ำได้ เครื่องบรรจุภัณฑ์เครื่องเดียวกัน วิศวกรสองคนอาจเขียนต่างกันทั้งการตั้งชื่อตัวแปร การแบ่งส่วน และการจัดการสัญญาณเตือน สามปีหลังส่งมอบ เมื่อผู้พัฒนาเดิมลาออก คนที่รับช่วงต้องใช้เวลาหลายวันอ่านตรรกะก่อนจะกล้าแก้เงื่อนไขอินเทอร์ล็อกหนึ่งข้อ คุณค่าของมาตรฐานอยู่ตรงนี้ เมื่อโครงสร้าง การตั้งชื่อ และเอกสารใช้ข้อตกลงร่วมกัน ใครก็เดินเส้นทางเดียวกันไปถึงจุดเดียวกัน

ขอบเขตต้องพูดให้ชัด มาตรฐานกำหนดวิธีจัดระเบียบโปรแกรมและสิ่งที่ต้องส่งมอบ ไม่ได้กำหนดตัวกระบวนการ สูตร จำนวนรอบ และลำดับการเคลื่อนที่ยังเป็นไปตามกระบวนการของลูกค้า การเข้าใจว่าเป็นข้อจำกัดของสไตล์การเขียนเป็นความเข้าใจผิดที่พบบ่อย สิ่งที่ถูกตรึงไว้คือโครงและอินเทอร์เฟซ ส่วนตรรกะกระบวนการกลับแก้ไขได้ง่ายขึ้นเมื่อชั้นข้อมูลชัดเจน IEC 61131-3:2013 ได้นิยามหน่วยองค์กรโปรแกรม (POU) บล็อกฟังก์ชัน และตัวแปรโกลบอลไว้แล้ว งานฝั่งวิศวกรรมคือการนำแนวคิดเหล่านั้นลงสู่โครงสร้างโฟลเดอร์ ลำดับส่วน และกฎการตั้งชื่อของโครงการ ไม่ใช่สร้างระบบใหม่ซ้อนขึ้นมา

เกณฑ์ทดสอบที่ใช้ได้จริงข้อหนึ่ง คือส่งโปรแกรมให้คนที่ไม่ได้ร่วมพัฒนาและขอให้ทำการเปลี่ยนแปลงหนึ่งอย่าง เช่นเพิ่มสถานีหนึ่งสถานี ถ้าคนนั้นหาจุดแทรกในโครงสร้างเดิมได้โดยไม่ต้องแก้ตรรกะของสถานีอื่น แปลว่าโปรแกรมมีมาตรฐานแล้ว ถ้าต้องอ่านทั้งหมดก่อน แปลว่ามาตรฐานหยุดอยู่แค่การตั้งชื่อไฟล์

แผนภาพโครงสร้างสี่ชั้นของโปรแกรม PLC ที่เป็นมาตรฐาน: ชั้นอุปกรณ์ ชั้นยูนิต ชั้นกระบวนการ และชั้นใช้งานร่วม

2. แบ่งชั้นอย่างไร: อุปกรณ์ ยูนิต กระบวนการ และใช้งานร่วม

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

  • ชั้นอุปกรณ์: การเริ่มและหยุด อินเทอร์ล็อก ลิมิตสวิตช์ และการจัดการข้อขัดข้องของเครื่องเดี่ยว หนึ่งเครื่องหนึ่งบล็อกฟังก์ชัน เปิดเฉพาะสี่อินเทอร์เฟซ คือ เริ่ม หยุด รีเซ็ต และสถานะ
  • ชั้นยูนิต: การประสานระหว่างสถานีหรือระหว่างเครื่อง เช่น แฮนด์เชกต้นน้ำปลายน้ำ การซิงก์รอบเวลา และการตัดสินบัฟเฟอร์ ชั้นนี้เรียกเฉพาะอินเทอร์เฟซของชั้นอุปกรณ์ ไม่อ่านหรือเขียนตัวแปรภายในของอีกยูนิตโดยตรง
  • ชั้นกระบวนการ: สูตร ชุดพารามิเตอร์ และลำดับขั้นตอนกระบวนการ ข้อมูลสูตรเก็บนอกโปรแกรมในตารางพารามิเตอร์หรือฐานข้อมูล เปลี่ยนสูตรไม่ต้องดาวน์โหลดโปรแกรมใหม่
  • ชั้นใช้งานร่วม: ระดับสัญญาณเตือน สิทธิ์ผู้ปฏิบัติงาน การซิงก์เวลา การแมปการสื่อสาร และการบันทึกข้อมูล ใช้ร่วมชุดเดียวทั้งโครงการ ไม่เขียนซ้ำในแต่ละสถานี
กฎการตั้งชื่อตัวแปร PLC ในโครงสร้างสามส่วน: รหัสอุปกรณ์ รหัสฟังก์ชัน และลำดับ พร้อมตัวอย่างที่ถูกและผิด

ในระดับไฟล์วิศวกรรม การแบ่งชั้นกลายเป็นโครงสร้างโฟลเดอร์และลำดับส่วนที่แน่นอน แต่ละบล็อกฟังก์ชันเริ่มด้วยคำอธิบายอินเทอร์เฟซ ตามด้วยตรรกะหลัก และการจัดการข้อยกเว้นไว้ท้ายส่วน เมื่อข้อตกลงถูกกำหนดแล้ว การตรวจทานโค้ดมีภาษากลาง ผู้ตรวจดูก่อนว่าอินเทอร์เฟซข้ามชั้นหรือไม่ แล้วจึงดูว่าตรรกะตรงกับกระบวนการหรือไม่

ข้อควรระวัง: ชั้นยิ่งมากไม่ได้ดีกว่าเสมอ สำหรับโครงการที่มีเครื่องประเภทเดียวและล็อตเล็ก สี่ชั้นเพิ่มพื้นที่บำรุงรักษา กรณีนั้นคงชั้นอุปกรณ์และชั้นใช้งานร่วมไว้ แล้วเขียนตรรกะประสานที่จุดเรียกใช้จะปฏิบัติได้จริงกว่า ความละเอียดของการแบ่งชั้นควรตามความซ้ำของอุปกรณ์ ไม่ใช่ตามแม่แบบ

3. การตั้งชื่อ ตารางตัวแปร และคำอธิบาย: ให้คนถัดไปอ่านเข้าใจ

การตั้งชื่อเป็นรายการที่ให้ผลตอบแทนสูงที่สุดในงานมาตรฐานทั้งหมด เมื่อสัญญาณเดียวกันถูกเรียกเป็น M100 ในโครงการหนึ่ง Start_OK ในอีกโครงการ และ X12 ในโครงการที่สาม การบำรุงรักษากลายเป็นการเดา การตั้งชื่อสามส่วนตรึงอุปกรณ์ ฟังก์ชัน และลำดับไว้ ชื่อเดียวบอกได้ว่าเป็นของเครื่องใด ทำอะไร และเป็นตัวที่เท่าไร

รายการข้อตกลงปัญหาที่พบบ่อย
รหัสอุปกรณ์ย่อตามช่วงกระบวนการ เช่น FIL กรอง PMP ปั๊ม CVY สายพานลำเลียง ตารางรหัสส่งพร้อมโครงการอุปกรณ์เดียวกันเขียนต่างกันในแต่ละสถานี จึงใช้ข้ามโครงการไม่ได้
รหัสฟังก์ชันIN อินพุต OUT เอาต์พุต AL สัญญาณเตือน ST สถานะ SP ค่าที่ตั้ง PV ค่าที่วัดได้บิตสถานะและบิตสัญญาณเตือนปนกัน การรีเซ็ตจึงทับกัน
ลำดับและบิตเลขลำดับสองหลักบวกบิตภายใน เช่น PMP01_ST_RUNเลขลำดับข้ามหรือถูกใช้ซ้ำ ฉบับแก้ไขจึงไม่ตรงกับแบบเดิม
ขั้วตรรกะปกติเปิดหรือปกติปิด ตรรกะบวกหรือลบ ระบุในตารางตัวแปร ไม่ฝังในชื่อหน้างานตัดสินเปิดปิดจากชื่อ แล้ววินิจฉัยจุดผิดพลาดคลาดเคลื่อน
ระดับคำอธิบายแต่ละบล็อกฟังก์ชันระบุวัตถุประสงค์และเงื่อนไขการเรียก อินเทอร์ล็อกสำคัญระบุผลเมื่อถูกละเมิดคำอธิบายเขียนแค่ว่า "เริ่ม" ไม่ได้บอกว่าอินเทอร์ล็อกกับอะไร และหยุดอะไรเมื่อละเมิด
ผังการจัดการเวอร์ชันโปรแกรม PLC ตั้งแต่การแก้ไขหน้างาน การจัดเก็บและเผยแพร่ ไปจนถึงการเทียบกับฉบับฐาน

ตารางตัวแปรส่งพร้อมโปรแกรม ไม่ใช่ทำทีหลัง อย่างน้อยต้องมีแอดเดรส ชนิดข้อมูล ช่วงวัดและหน่วยวิศวกรรม บล็อกฟังก์ชันที่สังกัด ค่าเริ่มต้น และแฟล็กคงค่าเมื่อไฟดับ สัญญาณแอนะล็อกต้องระวังเป็นพิเศษ หากไม่ได้เขียนการแมป 4–20 mA ไปยังช่วงวิศวกรรม เวลากรอง และเกณฑ์ตรวจจับสายขาดไว้ชัดเจน คนที่มาปรับครั้งถัดไปจะทำให้เพี้ยน

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

4. การจัดการเวอร์ชัน การสำรองข้อมูล และการตรวจรับส่งมอบ

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

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

ตรรกะเกี่ยวกับความปลอดภัยมีข้อกำหนดเพิ่มเติม ISO 13849-1:2023 กำหนดเส้นทางการออกแบบและการทวนสอบชิ้นส่วนเกี่ยวกับความปลอดภัยของระบบควบคุม และฟังก์ชันความปลอดภัยไม่อาจอยู่ในส่วนโปรแกรมธรรมดาที่แยกด้วยคำอธิบายเท่านั้น กฎระเบียบเครื่องจักร EU (EU) 2023/1230 ใช้บังคับตั้งแต่วันที่ 20 มกราคม 2027 และซอฟต์แวร์ที่เป็นชิ้นส่วนเกี่ยวกับความปลอดภัยต้องมีเวอร์ชันและบันทึกการทวนสอบที่ตรวจสอบย้อนกลับได้ IEC 62443-3-3:2013 กำหนดให้ควบคุมการแก้ไขโปรแกรมและการเข้าถึง ใครดาวน์โหลดได้ ใครแก้พารามิเตอร์ได้ และมีการบันทึก log หรือไม่ ล้วนอยู่ในขอบเขตส่งมอบ ไม่ใช่ตัวเลือกเสริม

การตรวจรับส่งมอบควรทำตามรายการ ครบทั้งห้าข้อจึงถือว่าเสร็จ คือ โปรเจกต์ต้นทางและโปรเจกต์ที่คอมไพล์ได้ ตารางตัวแปรและคำอธิบาย บันทึกเวอร์ชันและการแก้ไข ไฟล์สำรองพร้อมขั้นตอนกู้คืน และการซ้อมกู้คืนหน้างานหนึ่งครั้ง ขั้นซ้อมเป็นขั้นที่ถูกละเลยบ่อยที่สุดและเผยปัญหามากที่สุด ไฟล์สำรองมีอยู่แต่กู้คืนไม่ได้เป็นเรื่องที่ไม่พบได้ยาก

บทสรุป: มาตรฐานประหยัดต้นทุนการรับช่วงต่อ

ผลตอบแทนของมาตรฐานโปรแกรม PLC เขียนลงในใบตรวจรับได้ยาก มันปรากฏในอีกสามปีหลังส่งมอบ ในการแก้ปัญหาหนึ่งครั้ง คนที่รับช่วงสามารถหาส่วนที่ผิดพลาดได้ภายในครึ่งวันหรือไม่ แก้อินเทอร์ล็อกหนึ่งจุดแล้วกระทบสถานีอื่นหรือไม่ ถอยกลับไปฉบับก่อนใช้เวลานานเท่าใด การแบ่งชั้น การตั้งชื่อ และการจัดการเวอร์ชันต่างทำงานเดียวกัน คือเปลี่ยนโปรแกรมจากประสบการณ์ส่วนบุคคลเป็นสินทรัพย์ของทีม สำหรับผู้ผลิตเครื่องจักร ผลลัพธ์ตรงคืออัตราการใช้ซ้ำในโครงการใหม่สูงขึ้นและรอบคอมมิชชันนิงสั้นลง สำหรับโรงงานคือการบำรุงรักษาไม่ถูกผูกกับผู้พัฒนาเดิมอีกต่อไป ควรเริ่มจากรุ่นเครื่องที่มีความซ้ำสูงหนึ่งรุ่น ทำให้โครงเดินได้ก่อนแล้วจึงคัดลอกไปรุ่นอื่น ซึ่งลงตัวกว่า การผลักทั้งโรงงานในครั้งเดียว

นัดหมายปรึกษาแนวทาง

หากบริษัทของท่านกำลังเดินหน้ามาตรฐานโปรแกรม PLC หรือต้องการทบทวนกฎการตั้งชื่อ การจัดการเวอร์ชัน และรายการส่งมอบของโปรแกรมที่มีอยู่ก่อน ติดต่อเราเพื่อหารือเรื่องประเภทอุปกรณ์ สถานการณ์ใช้ซ้ำ และข้อกำหนดการส่งมอบ เราจะเสนอแนวทางเป็นระยะตามความซ้ำของรุ่นเครื่องและสภาพโปรแกรมปัจจุบัน

ติดต่อเรา