การจัดการสูตรของ Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI
เรียนรู้การสร้างระบบแก้ไขสูตรอาหารบน HMI สำหรับ AB Logix 5000 โดยใช้แถวลำดับ UDT และคำสั่ง COP เพื่อจัดเก็บพารามิเตอร์แบบถาวร
การจัดการสูตรบนแพลตฟอร์ม Logix จะทำงานได้ดีที่สุดเมื่อ HMI ไม่เขียนข้อมูลลงในอาร์เรย์ประวัติโดยตรง รูปแบบที่ทนทานใช้แท็กสามรายการ ได้แก่ Recipe_Storage เป็นอาร์เรย์ UDT ขนาด 50 รายการ, Recipe_Display เป็นอินสแตนซ์ UDT เดี่ยวสำหรับหน้าจอผู้ปฏิบัติงาน และ Recipe_Index เป็น DINT ที่ใช้เลือกว่าสูตรใดที่จัดเก็บไว้จะถูกมิเรอร์ไปยังโครงสร้างแสดงผล คำสั่ง Copy (COP) จะย้ายข้อมูลเมื่อดัชนีเปลี่ยนและอีกครั้งเมื่อบันทึก ทำให้ผู้ปฏิบัติงานแก้ไขบัฟเฟอร์ชั่วคราว ขณะที่คลังข้อมูลยังคงสอดคล้องกันแม้ผ่านการตัดไฟและจ่ายไฟใหม่
มอนิเตอร์แท็ก Logix ที่แสดง Recipe_Storage[50], Recipe_Display และ Recipe_Index ซึ่งใช้สำหรับการแก้ไขสูตรผ่าน HMI
กำหนด UDT เพียงครั้งเดียว โดยใส่ค่ากำหนดทั้งหมดที่กระบวนการต้องใช้ ได้แก่ อุณหภูมิ ตัวตั้งเวลา ความเร็ว รหัสผลิตภัณฑ์ และมาสก์อินเตอร์ล็อก จากนั้นสร้างอินสแตนซ์ Recipe_Storage ให้เป็น UDT[50] Recipe_Display ต้องเป็นชนิด UDT เดียวกันทุกประการ ไม่ใช่ชุดแท็กอะตอมิกที่เกี่ยวข้องกันแบบหลวม ๆ ชนิดข้อมูลที่เหมือนกันช่วยให้การคำนวณความยาว COP ทำได้ง่าย และป้องกันการตัดทอนข้อมูลโดยไม่แจ้งเตือนเมื่อมีการเพิ่มสมาชิกในภายหลัง
การจำกัดช่วงดัชนีและเส้นทางการโหลด
จำกัดค่า Recipe_Index ให้อยู่ในช่วงรวมตั้งแต่ 0 ถึง 49 ก่อนที่ COP ใด ๆ จะทำงาน ดัชนีที่ไม่ได้จำกัดจากออบเจ็กต์รับค่าตัวเลขอาจทำให้ COP เกิดฟอลต์หรือดึงข้อมูลจากหน่วยความจำที่ไม่กำหนด ขึ้นอยู่กับวิธีจัดการขอบเขตอาร์เรย์ในโปรเจกต์ เมื่อ Recipe_Index เปลี่ยนจากค่าต่ำไปค่าสูง (หรือเมื่อกดปุ่ม Load โดยตรง) ให้คัดลอก Recipe_Storage[Recipe_Index] ไปยัง Recipe_Display HMI จะผูกกับสมาชิกของ Recipe_Display เท่านั้น กฎเดียวนี้ช่วยกำจัดสภาวะแข่งขันที่หน้าจอสองหน้าพยายามเขียนลงสล็อตอาร์เรย์คนละรายการ ขณะที่ผู้ปฏิบัติงานยังปรับค่าอยู่
// โครงสร้างรหัสเทียม
if Recipe_Index < 0 then Recipe_Index := 0;
if Recipe_Index > 49 then Recipe_Index := 49;
if IndexChanged or LoadPressed then
COP(Recipe_Storage[Recipe_Index], Recipe_Display, 1);
if SavePressed then
COP(Recipe_Display, Recipe_Storage[Recipe_Index], 1);
หน้าจอสูตรบน HMI ที่ผูกเฉพาะกับ Recipe_Display โดยการทำงาน Load/Save จะเรียกใช้รูทีน COP ในคอนโทรลเลอร์
เส้นทางการบันทึก การคงอยู่ของข้อมูล และพฤติกรรมขณะดาวน์โหลด
เมื่อกด Save ให้คัดลอก Recipe_Display กลับไปยัง Recipe_Storage[Recipe_Index] เนื่องจาก Recipe_Storage อยู่ในแท็กของคอนโทรลเลอร์ ค่าเหล่านี้จึงคงอยู่หลังการตัดไฟและจ่ายไฟใหม่ หากโปรเจกต์กำหนดค่าการคงอยู่ของแท็กตามปกติ ข้อมูลยังคงถูกเก็บไว้ระหว่างการดาวน์โหลดเมื่อเลือกให้คงค่าของแท็กไว้ด้วย ควรถือว่าตัวเลือกนี้เป็นส่วนหนึ่งของ SOP สำหรับสูตร ไม่ใช่เพียงความสะดวกเสริม ผู้ปฏิบัติงานควรเข้าใจว่าการดาวน์โหลดโปรเจกต์โดยเปิดใช้ “reinitialize tags” จะลบสูตรที่ปรับแต่งไว้อย่างละเอียด เว้นแต่จะมีข้อมูลสำรองแบบออฟไลน์
ควรใช้ความระมัดระวังกับเวิร์กโฟลว์นำเข้า CSV เครื่องมือ HMI หรือเครื่องมือ Excel-to-tag หลายชนิดอาจสร้างชื่อแท็กได้ แต่ไม่อัปเดตค่าของสมาชิกภายใน UDT ซ้อนกันอย่างถูกต้อง โดยเฉพาะเมื่อส่วนหัวคอลัมน์ไม่ตรงกับชื่อสมาชิก UDT ควรใช้รูทีนนำเข้าที่ตรวจสอบความถูกต้องของแต่ละฟิลด์โดยเฉพาะ หรือโหลดข้อมูลใหม่จากไฟล์ส่งออก L5X/แท็กที่ทราบว่าใช้งานได้ หลังจากแก้ไขข้อมูลจำนวนมาก อย่าสันนิษฐานว่าแบนเนอร์สีเขียว “นำเข้าเสร็จสมบูรณ์” หมายความว่า Recipe_Storage[n].Setpoint มีค่าเท่ากับเซลล์ในสเปรดชีตแล้ว
| แท็ก | ชนิด | ผูกกับ HMI หรือไม่ | วัตถุประสงค์ |
|---|---|---|---|
| Recipe_Storage | UDT[50] | ไม่ | คลังสูตรแบบไม่สูญหาย |
| Recipe_Display | UDT | ใช่เท่านั้น | บัฟเฟอร์สำหรับแก้ไขของผู้ปฏิบัติงาน |
| Recipe_Index | DINT | ใช่ (ตัวเลือก) | สล็อตที่ใช้งานอยู่ 0–49 |
แนวทางการออกแบบอินเทอร์เฟซ HMI
- จัดให้มีบิตแบบโมเมนทารีแยกสำหรับ Load และ Save ซึ่งจัดการโดยคอนโทรลเลอร์ ไม่ใช่การเขียนลงอาร์เรย์โดยตรงจากแผงควบคุม
- แสดงดัชนีที่ผ่านการจำกัดช่วงแล้ว และฟิลด์ “ชื่อที่จัดเก็บ” แบบอ่านอย่างเดียวซึ่งคัดลอกจาก Display UDT เพื่อให้ผู้ปฏิบัติงานยืนยันได้ว่าสล็อตใดกำลังใช้งาน
- ยับยั้งการ Save ขณะที่เครื่องกำลังทำงานในรอบการผลิต หากสมาชิกของสูตรมีผลต่อค่ากำหนดการเคลื่อนที่หรืออุณหภูมิระหว่างแบตช์
- บันทึกเหตุการณ์ Save พร้อมรหัสผู้ปฏิบัติงานและดัชนี เพื่อรองรับการตรวจสอบย้อนกลับในสายการผลิตที่อยู่ภายใต้ข้อกำกับ
ตรวจสอบขอบเขตดัชนีและการคงค่าระหว่างดาวน์โหลด
ทดสอบโดยโหลดสล็อต 0 แก้ไขค่าเซนทิเนลใน Recipe_Display บันทึก เปลี่ยนดัชนีเป็น 1 จากนั้นกลับไปที่ 0 และโหลดอีกครั้ง ค่าเซนทิเนลต้องปรากฏขึ้นอีกครั้งเฉพาะเมื่อมีการทำงานของ Save เท่านั้น ตัดไฟและจ่ายไฟให้คอนโทรลเลอร์ใหม่ แล้วตรวจสอบว่า Recipe_Storage ยังคงมีค่าเซนทิเนลอยู่ ลองป้อนดัชนีนอกช่วงจาก HMI และตรวจสอบการจำกัดค่า ทดลองนำเข้า CSV ในระบบสำรอง และเปรียบเทียบสมาชิกทีละรายการกับไฟล์ก่อนนำเส้นทางดังกล่าวไปใช้ในระบบการผลิตจริง
หลีกเลี่ยงการผูกแผงควบคุมกับ Recipe_Storage[Recipe_Index].Member การกำหนดแอดเดรส HMI ทางอ้อมเข้าไปในอาร์เรย์ตรวจสอบได้ยากกว่า และเพิ่มโอกาสเขียนลงสล็อตผิดเมื่อแท็กดัชนีและหน้าจออัปเดตด้วยอัตราที่แตกต่างกัน รูปแบบ Display UDT สามารถขยายได้อย่างเป็นระบบเมื่อภายหลังคุณขยาย UDT เพิ่มระดับความปลอดภัย หรือย้ายโมเดลสูตรเดียวกันไปใช้กับเซลล์ ระบบ PLC & PAC หลายเซลล์ที่ใช้เวิร์กโฟลว์ผู้ปฏิบัติงานร่วมกัน
เกี่ยวกับผู้เขียน
Mark Townsend | วิศวกรระบบอัตโนมัติอาวุโส – ระบบ Allen-Bradley
Mark Townsend เป็นวิศวกรระบบอัตโนมัติอาวุโสที่มีประสบการณ์บนแพลตฟอร์ม Allen-Bradley มากกว่า 18 ปี ครอบคลุม ControlLogix, CompactLogix และ SLC-500 รุ่นเก่า งานประจำวันของเขาคือการพัฒนาลอจิกใน RSLogix / Studio 5000 และการนำ HMI ของ FactoryTalk View ไปใช้งานบนระบบที่มีอุปกรณ์หลายรุ่นและอุปกรณ์รุ่นเก่า