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

ฮาร์ดแวร์ได้รับการออกแบบให้เป็นโมดูลาร์ ซอฟต์แวร์ที่นำกลับมาใช้ซ้ำได้ก็ควรทำให้อินเทอร์เฟซ สถานะ และพฤติกรรมเมื่อเกิดความขัดข้องของแต่ละโมดูลมีความชัดเจนเช่นเดียวกัน
เริ่มจากการห่อหุ้ม ไม่ใช่การสืบทอด
การห่อหุ้มคือการรวมสถานะและพฤติกรรมที่เกี่ยวข้องไว้เบื้องหลังอินเทอร์เฟซที่กำหนดไว้อย่างชัดเจน คอมโพเนนต์วาล์วอาจรับคำสั่ง เงื่อนไขอนุญาต สัญญาณป้อนกลับ โหมด และการกำหนดค่า และอาจเปิดเผยสถานะเปิด ปิด กำลังเคลื่อนที่ ขัดข้อง ถูกอินเตอร์ล็อก และการวินิจฉัย ขณะที่ตัวตั้งเวลา การตรวจจับการเปลี่ยนสถานะ นโยบายการลองใหม่ และตรรกะสัญญาณเตือนภายในยังคงอยู่ภายใต้การดูแลของคอมโพเนนต์
แนวทางนี้มีประโยชน์แม้บนแพลตฟอร์มที่ไม่มีการสืบทอด ฟังก์ชันบล็อกหรือคำสั่งเสริมยังคงสามารถปกป้องสถานะภายใน กำหนดพฤติกรรมให้เป็นมาตรฐาน และลดโค้ดที่ซ้ำซ้อนได้ การสืบทอดมีประโยชน์เฉพาะเมื่อมีความสัมพันธ์แบบ “เป็นประเภทเดียวกับ” อย่างแท้จริง และชนิดที่สืบทอดสามารถรักษาอินเทอร์เฟซพื้นฐานไว้ได้ โครงสร้างการสืบทอดที่ลึกเกินไปวินิจฉัยได้ยากขณะออนไลน์ และอาจทำให้การเปลี่ยนแปลงเล็กน้อยในคลาสพื้นฐานส่งผลต่อเครื่องจักรจำนวนมาก
แยกการกำหนดชนิด ข้อมูลอินสแตนซ์ และการแมป I/O
คำจำกัดความที่นำกลับมาใช้ซ้ำได้จะอธิบายพฤติกรรม อินสแตนซ์จะเก็บสถานะของอุปกรณ์จริงหรืออุปกรณ์เชิงตรรกะหนึ่งรายการ ส่วนการแมป I/O จะเชื่อมอินสแตนซ์นั้นเข้ากับสัญญาณจริง การผสมความรับผิดชอบเหล่านี้เข้าด้วยกันทำให้ตรรกะในไลบรารีขึ้นอยู่กับแอดเดรสของแร็ก และทำให้การทดสอบแบบออฟไลน์อย่างปลอดภัยทำได้ยาก
ควรเก็บแท็กอินพุตและเอาต์พุตทางกายภาพไว้ที่ขอบเขตการผสานระบบ แปลงสัญญาณดิบให้เป็นค่าบูลีนหรือค่าทางวิศวกรรมที่ชัดเจน เรียกใช้คอมโพเนนต์ที่นำกลับมาใช้ซ้ำได้ แล้วแมปคำขอเอาต์พุตที่ได้รับอนุมัติกลับไปยังฮาร์ดแวร์ โครงสร้างนี้รองรับการจำลอง I/O ทดแทน และการย้ายระบบแบบเป็นขั้นตอน อีกทั้งยังทำให้โปรแกรมระดับบนสุดแสดงเจตนาของกระบวนการแทนการจัดการแอดเดรสซ้ำ ๆ
สามารถตรวจสอบคอนโทรลเลอร์และตระกูล I/O ได้จากคอลเลกชัน ระบบ PLC และ PAC แต่สถาปัตยกรรมซอฟต์แวร์ที่เลือกต้องสอดคล้องกับภาษาที่คอนโทรลเลอร์รองรับ โมเดลหน่วยความจำ กฎการเปลี่ยนแปลงออนไลน์ และการรับรองด้านความปลอดภัย
ใช้อินเทอร์เฟซเป็นสัญญาด้านพฤติกรรม
หากแพลตฟอร์มรองรับอินเทอร์เฟซ ให้กำหนดการดำเนินการที่ผู้เรียกใช้สามารถพึ่งพาได้โดยไม่เปิดเผยรายละเอียดการนำไปใช้งาน ตัวอย่างเช่น CODESYS มีเอกสารเกี่ยวกับฟังก์ชันบล็อกเชิงวัตถุที่มีเมธอด อินเทอร์เฟซ พร็อพเพอร์ตี การสืบทอด และการเรียกเมธอดเสมือนใน เอกสารอ้างอิงการเขียนโปรแกรมเชิงวัตถุอย่างเป็นทางการ ความสามารถนี้มีอยู่จริง แต่ไม่ควรเหมารวมว่าทุกสภาพแวดล้อม PLC รองรับเช่นเดียวกัน
อินเทอร์เฟซช่วยให้การนำมอเตอร์หลายรูปแบบมาใช้งานร่วมกันสามารถนำเสนอคำสั่งและสถานะร่วมกันได้ สตาร์ตเตอร์แบบง่าย อินเวอร์เตอร์ VFD และเซอร์โวอาจรองรับการเปิดใช้งาน การหยุด การรีเซ็ต โหมด สถานะพร้อมทำงาน กำลังทำงาน และข้อมูลความขัดข้องเหมือนกัน ขณะเดียวกันยังคงมีการวินิจฉัยภายในที่แตกต่างกัน ลำดับการเรียกใช้จึงขึ้นอยู่กับสัญญา ไม่ใช่พารามิเตอร์เฉพาะของผู้ผลิตแต่ละราย
เลือกใช้การประกอบสำหรับเครื่องจักรและสกิด
อุปกรณ์อุตสาหกรรมส่วนใหญ่มีลักษณะเป็นองค์ประกอบประกอบรวมกันโดยธรรมชาติ ชุดปั๊มประกอบด้วยมอเตอร์ วาล์วแยก เงื่อนไขอนุญาต การวัดค่าแอนะล็อก และตรรกะลำดับการทำงาน ระบบถังประกอบด้วยเครื่องมือวัดระดับ วาล์ว ปั๊ม สัญญาณเตือน และโหมดการทำงาน ควรสร้างหน่วยขนาดใหญ่เหล่านี้โดยรวมคอมโพเนนต์ขนาดเล็กที่ผ่านการทดสอบแล้ว แทนการสืบทอดให้อุปกรณ์ทุกชนิดมาจากคลาสพื้นฐานสากลเพียงคลาสเดียว
การประกอบช่วยให้เห็นความรับผิดชอบของแต่ละส่วนอย่างชัดเจน ลำดับการทำงานของปั๊มอาจสั่งงานมอเตอร์และวาล์ว แต่คอมโพเนนต์มอเตอร์ยังคงรับผิดชอบสัญญาณป้อนกลับของสตาร์ตเตอร์ การหมดเวลาขณะสตาร์ต และสถานะความขัดข้องเฉพาะมอเตอร์ คอมโพเนนต์แอนะล็อกจะรับผิดชอบความถูกต้องของสัญญาณและการสเกล หน่วยจะทำหน้าที่ประสานงานและรายงานสถานะโดยสรุปไปยังตรรกะระดับสูง

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