Allen-Bradley Recipe Management with UDT Arrays and an HMI Edit Interface — figure 1

การจัดการสูตรของ Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI

เรียนรู้การสร้างระบบแก้ไขสูตรอาหารบน HMI สำหรับ AB Logix 5000 โดยใช้แถวลำดับ UDT และคำสั่ง COP เพื่อจัดเก็บพารามิเตอร์แบบถาวร

การจัดการสูตรบนแพลตฟอร์ม Logix จะทำงานได้ดีที่สุดเมื่อ HMI ไม่เขียนข้อมูลลงในอาร์เรย์ประวัติโดยตรง รูปแบบที่ทนทานใช้แท็กสามรายการ ได้แก่ Recipe_Storage เป็นอาร์เรย์ UDT ขนาด 50 รายการ, Recipe_Display เป็นอินสแตนซ์ UDT เดี่ยวสำหรับหน้าจอผู้ปฏิบัติงาน และ Recipe_Index เป็น DINT ที่ใช้เลือกว่าสูตรใดที่จัดเก็บไว้จะถูกมิเรอร์ไปยังโครงสร้างแสดงผล คำสั่ง Copy (COP) จะย้ายข้อมูลเมื่อดัชนีเปลี่ยนและอีกครั้งเมื่อบันทึก ทำให้ผู้ปฏิบัติงานแก้ไขบัฟเฟอร์ชั่วคราว ขณะที่คลังข้อมูลยังคงสอดคล้องกันแม้ผ่านการตัดไฟและจ่ายไฟใหม่

การจัดการสูตร Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI — รูปที่ 1 มอนิเตอร์แท็ก 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);
การจัดการสูตร Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI — รูปที่ 2 หน้าจอสูตรบน 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 ไปใช้งานบนระบบที่มีอุปกรณ์หลายรุ่นและอุปกรณ์รุ่นเก่า

การจัดการสูตรของ Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI

เรียนรู้การสร้างระบบแก้ไขสูตรอาหารบน HMI สำหรับ AB Logix 5000 โดยใช้แถวลำดับ UDT และคำสั่ง COP เพื่อจัดเก็บพารามิเตอร์แบบถาวร

การจัดการสูตรบนแพลตฟอร์ม Logix จะทำงานได้ดีที่สุดเมื่อ HMI ไม่เขียนข้อมูลลงในอาร์เรย์ประวัติโดยตรง รูปแบบที่ทนทานใช้แท็กสามรายการ ได้แก่ Recipe_Storage เป็นอาร์เรย์ UDT ขนาด 50 รายการ, Recipe_Display เป็นอินสแตนซ์ UDT เดี่ยวสำหรับหน้าจอผู้ปฏิบัติงาน และ Recipe_Index เป็น DINT ที่ใช้เลือกว่าสูตรใดที่จัดเก็บไว้จะถูกมิเรอร์ไปยังโครงสร้างแสดงผล คำสั่ง Copy (COP) จะย้ายข้อมูลเมื่อดัชนีเปลี่ยนและอีกครั้งเมื่อบันทึก ทำให้ผู้ปฏิบัติงานแก้ไขบัฟเฟอร์ชั่วคราว ขณะที่คลังข้อมูลยังคงสอดคล้องกันแม้ผ่านการตัดไฟและจ่ายไฟใหม่

การจัดการสูตร Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI — รูปที่ 1 มอนิเตอร์แท็ก 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);
การจัดการสูตร Allen-Bradley ด้วยอาร์เรย์ UDT และอินเทอร์เฟซแก้ไขบน HMI — รูปที่ 2 หน้าจอสูตรบน 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 ไปใช้งานบนระบบที่มีอุปกรณ์หลายรุ่นและอุปกรณ์รุ่นเก่า

แสดงความคิดเห็น

โปรดทราบว่าความคิดเห็นจะต้องได้รับการอนุมัติก่อนที่จะได้รับการเผยแพร่