FBD การควบคุมตามลำดับ: บทเรียนการเขียนโปรแกรมเครื่องจักรสถานะ

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

การควบคุมตามลำดับมีอยู่ทุกที่ในระบบอัตโนมัติ: สายการเติม, โต๊ะหมุน, เครื่องกด, ห้องพ่นสี ความผิดพลาดคลาสสิกคือการเขียนแต่ละเอาต์พุตเป็นเงื่อนไขที่หลวม — "เมื่อเซ็นเซอร์ A และตัวจับเวลา B, เปิดวาล์ว C" — และจากนั้นก็แก้ไขข้อผิดพลาดที่เป็นไปไม่ได้ในเวลา 2 โมงเช้า วิธีแก้ไขคือหยุดคิดในเอาต์พุตและเริ่มคิดในสถานะ.

เครื่องจักรสถานะคืออะไรจริง ๆ

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

ใน FBD ของ xLogicSoft เครื่องจักรสถานะจะถูกแมพอย่างชัดเจนไปยังรูปแบบ Shift Register คลาสสิกหรือไปยัง F flags ที่ใช้เป็น step bits รูปแบบ: F flag หนึ่งตัวต่อขั้นตอน, ชุดของเงื่อนไขการเปลี่ยนแปลง, และบล็อกการเปลี่ยนแปลงแบบช็อตเดียวเพื่อให้เครื่องจักรเคลื่อนที่ไปข้างหน้าเพียงหนึ่งขั้นตอนต่อเหตุการณ์ เนื่องจากขั้นตอนปัจจุบันมองเห็นได้เสมอ — LCD แสดงว่า F flag ตัวไหนที่ทำงานอยู่ — ผู้ปฏิบัติงานและช่างบำรุงรักษาสามารถเห็นได้ทันทีว่าเครื่องจักรคิดว่ามันอยู่ที่ไหน คุณสมบัติเดียวนี้ช่วยลดเวลาในการแก้ไขปัญหามากกว่าคู่มือการวินิจฉัยใด ๆ.

การสร้างมัน: สถานีเติมสามแห่ง

ลองใช้ตัวอย่างสามสถานีที่ง่าย: ขวดมาถึง, ถูกเติม, ถูกปิดฝา ขั้นตอน:

  • ขั้นตอนที่ 0 IDLE: ปิดเอาต์พุตทั้งหมด การเปลี่ยนแปลง: เซ็นเซอร์ขวดมีอยู่ ปุ่มเริ่ม
  • ขั้นตอนที่ 1 ตำแหน่ง: สายพานลำเลียงทำงานจนกว่าขวดจะหยุดที่หัวเติม การเปลี่ยนแปลง: เซ็นเซอร์ตำแหน่ง
  • ขั้นตอนที่ 2 เติม: วาล์วเติมเปิดเป็นระยะเวลาที่กำหนดหรือตราบเท่าที่เซ็นเซอร์ระดับทำงาน การเปลี่ยนแปลง: ตัวจับเวลาเสร็จสิ้น
  • ขั้นตอนที่ 3 การปิดฝา: เครื่องปิดฝาลดและกด การเปลี่ยนแปลง: ยืนยันแรงดัน ตัวจับเวลาเสร็จสิ้น
  • ขั้นตอนที่ 4 การปล่อย: สายพานลำเลียงทำงานเพื่อเคลื่อนย้ายขวดออกไป การเปลี่ยนแปลง: เซ็นเซอร์ออกทำงานเสร็จสิ้น

การเปลี่ยนแปลงแต่ละครั้งใช้บล็อก On-Delay หรือ Wiping Relay (ช็อตเดียว) เพื่อให้การเคลื่อนที่เกิดขึ้นเพียงครั้งเดียว การป้องกันในทุกการเปลี่ยนแปลงคือขั้นตอนเอง — ขั้นตอนที่ 2 ไม่สามารถเริ่มได้หากเครื่องอยู่ในขั้นตอนที่ 1, สิ้นสุด. ขวดไม่สามารถถูกเติมก่อนเวลาเพราะ "ก่อนเวลา" ไม่มีอยู่เป็นเงื่อนไข; มันไม่ได้อยู่ในตารางขั้นตอน และขวดจะไม่ถูกจัดตำแหน่งจนกว่าเครื่องจะออกจากตำแหน่ง.

ให้ผู้ปฏิบัติงานมีโหมดขั้นตอนด้วยตนเองก่อนที่คุณจะให้สิ่งอื่นใดกับพวกเขา อินพุตตัวเลือกช่วยให้เครื่องจักรเคลื่อนที่ไปข้างหน้าได้ทีละขั้นตอนผ่านลำดับ ดังนั้นช่างติดตั้งสามารถเลื่อนสายผ่านตำแหน่ง, เติม และปิดฝาแยกกันในขณะที่ดูตัวกระตุ้น เครื่องจักรสถานะทำให้เรื่องนี้ง่าย — การเคลื่อนที่ไปข้างหน้าเพียงหนึ่งขั้นตอนคือการบังคับการเปลี่ยนแปลงถัดไป — และมันเปลี่ยนการตั้งค่าให้กลายเป็นรายการตรวจสอบ เครื่องจักรที่ไม่สามารถเลื่อนไปข้างหน้าได้ด้วยตนเองคือเครื่องจักรที่ต้องแก้ไขด้วยไขควง.

การทดสอบโหมดความล้มเหลว

นี่คือการฝึกที่เปิดเผยว่าคุณได้สร้างเครื่องจักรสถานะหรือกองเงื่อนไข: ระบุเหตุฉุกเฉิน ขวดติดอยู่ใต้หัวเติม? เครื่องควรอยู่ในสถานะเติม, หยุดปั๊ม, และส่งสัญญาณเตือน — ไม่เดินไปที่ EJECT และทิ้งผลิตภัณฑ์ลงบนพื้น เซ็นเซอร์ล้มเหลวและรายงานว่า "ขวดมีอยู่" ตลอดไป? เครื่องควรหมดเวลาขั้นตอนตำแหน่งและส่งสัญญาณเตือน, ไม่เติมขวดที่มองไม่เห็นเดียวกันทั้งคืน เซ็นเซอร์ล้มเหลวในทางกลับกัน, "ไม่เคยมีอยู่"? เครื่องรออย่างอดทน — นั่นคือสิ่งที่เครื่องควรทำ.

เขียน watchdog ลงในโปรแกรม: หากเครื่องนั่งอยู่ในขั้นตอนที่ไม่ใช่ IDLE นานกว่าระยะเวลาสูงสุดของขั้นตอนนั้น ให้ลดลงไปยังสถานะ FAULT, ตัดเอาต์พุต, และกระพริบสัญญาณเตือน ระยะเวลาสูงสุดคือหมายเลขที่คุณรู้จักอยู่แล้วจากเวลาในการทำงาน — คุณไม่ได้เดา, คุณกำลังบังคับฟิสิกส์.

ตัดสินใจว่าเกิดอะไรขึ้นหลังจากเกิดข้อผิดพลาดก่อนที่ข้อผิดพลาดจะเกิดขึ้น ตัวเลือกทั่วไป: เครื่องหยุดอยู่ที่ที่มันอยู่, ผู้ปฏิบัติงานเคลียร์สาเหตุ, กดรีเซ็ต, และลำดับกลับไปที่ IDLE — หรือไปยังจุดเริ่มต้นของขั้นตอนที่ถูกขัดจังหวะหากผลิตภัณฑ์ยังปลอดภัย การกลับไปที่ IDLE ง่ายกว่าและปลอดภัยกว่าสำหรับเครื่องจักรขนาดเล็ก; การกลับไปกลางรอบเร็วกว่าแต่ต้องการให้สถานะเอาต์พุตทุกสถานะเป็นที่รู้จักและพิสูจน์แล้ว สำหรับเครื่องเติม, IDLE คือคำตอบที่ตรงไปตรงมา — ขวดที่เติมครึ่งหนึ่งเป็นของเสียทั้งสองทาง.

ทำไม FBD ถึงดีกว่า Ladder สำหรับเรื่องนี้

นิสัยการแก้ไขข้อผิดพลาดอย่างหนึ่งจ่ายคืนทันที: ทำให้ขั้นตอนปัจจุบันมองเห็นได้บน LCD ด้านหน้าเป็นหมายเลขธรรมดา รายงานแรกของผู้ปฏิบัติงานกลายเป็น "มันติดอยู่ที่ขั้นตอนที่ 4," ไม่ใช่ "มันทำอะไรแปลก ๆ," และขั้นตอนที่ 4 ชี้ตรงไปที่เงื่อนไขการเปลี่ยนแปลงของมัน ใน xLogicSoft บิตธงอยู่ที่นั่นในหน้าต่างมอนิเตอร์ ดังนั้นเซสชันแล็ปท็อปจึงแสดงภาพเดียวกันที่ LCD แสดง การจับคู่คำพูดของผู้ปฏิบัติงานกับสถานะของโปรแกรมช่วยลดการค้นหาสองชั่วโมงลงเหลือยี่สิบนาทีทุกครั้ง.

Ladder logic สามารถแสดงเครื่องจักรสถานะได้ แต่ต้องใช้บันไดร้อยขั้นและแผนภาพที่ไม่มีใครอ่าน ใน FBD โครงสร้างขั้นตอนนั่งอยู่ตรงหน้าคุณ: Shift Register หรือบล็อกธงแสดงขั้นตอนปัจจุบัน, บล็อกการเปลี่ยนแปลงมองเห็นได้, และลำดับอ่านจากบนลงล่าง สภาพแวดล้อมของ xLogicSoft รวมบล็อกฟังก์ชันประมาณเจ็ดสิบบล็อก และเครื่องจักรห้าขั้นตอนที่มีการล็อคเหมาะสมในหนึ่งหน้าโปรแกรม เมื่อเครื่องจักรเปลี่ยน — สถานีใหม่, เซ็นเซอร์ใหม่ — คุณเพิ่มขั้นตอนและสองการเปลี่ยนแปลงแทนที่จะเดินสายตรรกะใหม่.

เริ่มต้นด้วยตารางขั้นตอนบนกระดาษ, จากนั้นธง, จากนั้นการเปลี่ยนแปลง โปรแกรมจะถูกต้องอย่างน่าเบื่อ และการถูกต้องอย่างน่าเบื่อคือคำชมที่สูงที่สุดที่โปรแกรมอัตโนมัติสามารถได้รับ เครื่องจักรไม่ต้องการความฉลาด; พวกเขาต้องการความคาดเดาได้.