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

Quản lý công thức Allen-Bradley với mảng UDT và giao diện chỉnh sửa HMI

Tìm hiểu cách tạo chức năng chỉnh sửa công thức dựa trên HMI cho AB Logix 5000 bằng mảng UDT và các lệnh COP để lưu trữ tham số lâu dài.

Việc quản lý recipe trên các nền tảng Logix hoạt động hiệu quả nhất khi HMI không bao giờ ghi trực tiếp vào mảng lưu trữ lịch sử. Một mô hình bền vững sử dụng ba tag: Recipe_Storage là một mảng UDT có độ dài 50, Recipe_Display là một instance UDT duy nhất dành cho màn hình vận hành, và Recipe_Index là một DINT dùng để chọn recipe đã lưu nào được phản ánh vào cấu trúc hiển thị. Các lệnh Copy (COP) di chuyển dữ liệu khi chỉ số thay đổi và một lần nữa khi nhấn Save, nhờ đó người vận hành luôn chỉnh sửa một bộ đệm tạm thời trong khi kho lưu trữ vẫn nhất quán qua các chu kỳ mất và cấp nguồn.

Quản lý recipe Allen-Bradley với mảng UDT và giao diện chỉnh sửa HMI — hình 1 Màn hình giám sát tag Logix hiển thị Recipe_Storage[50], Recipe_Display và Recipe_Index được dùng để chỉnh sửa recipe trên HMI.

Chỉ cần định nghĩa UDT một lần với mọi giá trị đặt mà quy trình cần—nhiệt độ, bộ định thời, tốc độ, mã sản phẩm và mặt nạ liên động—sau đó khởi tạo Recipe_Storage dưới dạng UDT[50]. Recipe_Display phải có đúng cùng kiểu UDT, không phải một tập hợp các tag nguyên tử có liên quan lỏng lẻo. Các kiểu đồng nhất giúp việc tính toán độ dài COP trở nên đơn giản và ngăn việc cắt ngầm dữ liệu khi các thành viên được bổ sung sau này.

Giới hạn chỉ số và đường dẫn tải

Giới hạn Recipe_Index trong phạm vi bao gồm từ 0 đến 49 trước khi bất kỳ COP nào được thực thi. Một chỉ số không được giới hạn từ đối tượng nhập số có thể khiến COP báo lỗi hoặc lấy vùng nhớ không xác định, tùy theo cách dự án xử lý giới hạn mảng. Khi Recipe_Index thay đổi theo sườn lên (hoặc khi nhấn nút Load), sao chép Recipe_Storage[Recipe_Index] vào Recipe_Display. HMI chỉ liên kết với các thành viên của Recipe_Display. Quy tắc duy nhất này loại bỏ các điều kiện tranh chấp, trong đó hai màn hình ghi vào các phần tử mảng khác nhau trong khi người vận hành vẫn đang điều chỉnh giá trị.

// Cấu trúc mã giả
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);
Quản lý recipe Allen-Bradley với mảng UDT và giao diện chỉnh sửa HMI — hình 2 Màn hình recipe HMI chỉ liên kết với Recipe_Display, trong đó các thao tác Load/Save kích hoạt các routine COP trong bộ điều khiển.

Đường dẫn lưu, khả năng duy trì và hành vi tải xuống

Khi nhấn Save, COP sao chép Recipe_Display trở lại Recipe_Storage[Recipe_Index]. Vì Recipe_Storage nằm trong các tag của bộ điều khiển, các giá trị vẫn được duy trì qua chu kỳ mất và cấp nguồn khi dự án được cấu hình để giữ tag theo thông thường. Dữ liệu cũng được bảo toàn khi tải xuống nếu bạn chọn giữ lại các giá trị tag; hãy xem tùy chọn này là một phần của SOP quản lý recipe, không phải tiện ích tùy chọn. Người vận hành cần hiểu rằng việc tải xuống dự án với tùy chọn “reinitialize tags” được bật sẽ xóa các recipe đã được tinh chỉnh cẩn thận nếu không có bản sao lưu ngoại tuyến.

Các quy trình nhập CSV cần được xem xét thận trọng. Nhiều tiện ích HMI hoặc Excel-to-tag tạo tên tag nhưng không cập nhật đáng tin cậy các giá trị thành viên bên trong UDT lồng nhau, đặc biệt khi tiêu đề cột không còn khớp với tên thành viên UDT. Hãy ưu tiên một routine nhập rõ ràng có xác thực từng trường, hoặc tải lại từ bản xuất L5X/tag đã biết là hợp lệ sau khi chỉnh sửa hàng loạt. Đừng cho rằng biểu ngữ màu xanh “import complete” có nghĩa là Recipe_Storage[n].Setpoint hiện bằng ô dữ liệu trong bảng tính.

Tag Kiểu Liên kết HMI? Mục đích
Recipe_Storage UDT[50] Không Kho lưu trữ recipe không mất dữ liệu
Recipe_Display UDT Chỉ có Bộ đệm chỉnh sửa của người vận hành
Recipe_Index DINT Có (bộ chọn) Vị trí đang hoạt động 0–49

Hướng dẫn giao diện HMI

  • Cung cấp Load và Save dưới dạng các bit tác động tức thời riêng biệt được xử lý trong bộ điều khiển, không ghi trực tiếp vào mảng từ panel.
  • Hiển thị chỉ số đã được giới hạn và một trường “tên đã lưu” chỉ đọc được sao chép từ UDT hiển thị, để người vận hành xác nhận vị trí đang hoạt động.
  • Vô hiệu hóa Save khi máy đang chạy chu kỳ nếu các thành viên recipe ảnh hưởng đến chuyển động hoặc giá trị đặt nhiệt giữa mẻ.
  • Ghi nhật ký các sự kiện Save cùng ID người vận hành và chỉ số để đảm bảo khả năng truy xuất trên các dây chuyền thuộc ngành được quản lý.

Xác thực giới hạn chỉ số và việc giữ dữ liệu khi tải xuống

Kiểm thử bằng cách tải vị trí 0, chỉnh sửa một giá trị đánh dấu trong Recipe_Display, lưu, đổi chỉ số sang 1, sau đó quay lại 0 và tải lại. Giá trị đánh dấu chỉ được xuất hiện trở lại nếu Save đã được thực thi. Tắt và bật nguồn bộ điều khiển, rồi xác nhận Recipe_Storage vẫn giữ giá trị đánh dấu. Thử nhập một chỉ số ngoài phạm vi từ HMI và kiểm tra cơ chế giới hạn. Thực hiện thử nhập CSV trên một hệ thống dự phòng và so sánh từng thành viên với tệp trước khi tin cậy quy trình đó trong sản xuất.

Tránh liên kết panel với Recipe_Storage[Recipe_Index].Member. Việc định địa chỉ HMI gián tiếp vào các mảng khó kiểm tra hơn và dễ dẫn đến ghi nhầm vị trí khi tag chỉ số và màn hình cập nhật ở các tốc độ khác nhau. Mô hình UDT hiển thị có thể mở rộng dễ dàng khi bạn bổ sung UDT, thêm cấp độ bảo mật hoặc chuyển cùng mô hình recipe giữa nhiều ô hệ thống PLC & PAC dùng chung một quy trình vận hành.

Về tác giả

Mark Townsend | Kỹ sư tự động hóa cấp cao – Hệ thống Allen-Bradley

Mark Townsend là kỹ sư tự động hóa cấp cao với hơn 18 năm làm việc trên các nền tảng Allen-Bradley, bao gồm ControlLogix, CompactLogix và SLC-500 thế hệ cũ. Công việc hằng ngày của ông là phát triển logic RSLogix / Studio 5000 và đưa HMI FactoryTalk View vào vận hành trên các hệ thống cũ và đội thiết bị hỗn hợp.

Quản lý công thức Allen-Bradley với mảng UDT và giao diện chỉnh sửa HMI

Tìm hiểu cách tạo chức năng chỉnh sửa công thức dựa trên HMI cho AB Logix 5000 bằng mảng UDT và các lệnh COP để lưu trữ tham số lâu dài.

Việc quản lý recipe trên các nền tảng Logix hoạt động hiệu quả nhất khi HMI không bao giờ ghi trực tiếp vào mảng lưu trữ lịch sử. Một mô hình bền vững sử dụng ba tag: Recipe_Storage là một mảng UDT có độ dài 50, Recipe_Display là một instance UDT duy nhất dành cho màn hình vận hành, và Recipe_Index là một DINT dùng để chọn recipe đã lưu nào được phản ánh vào cấu trúc hiển thị. Các lệnh Copy (COP) di chuyển dữ liệu khi chỉ số thay đổi và một lần nữa khi nhấn Save, nhờ đó người vận hành luôn chỉnh sửa một bộ đệm tạm thời trong khi kho lưu trữ vẫn nhất quán qua các chu kỳ mất và cấp nguồn.

Quản lý recipe Allen-Bradley với mảng UDT và giao diện chỉnh sửa HMI — hình 1 Màn hình giám sát tag Logix hiển thị Recipe_Storage[50], Recipe_Display và Recipe_Index được dùng để chỉnh sửa recipe trên HMI.

Chỉ cần định nghĩa UDT một lần với mọi giá trị đặt mà quy trình cần—nhiệt độ, bộ định thời, tốc độ, mã sản phẩm và mặt nạ liên động—sau đó khởi tạo Recipe_Storage dưới dạng UDT[50]. Recipe_Display phải có đúng cùng kiểu UDT, không phải một tập hợp các tag nguyên tử có liên quan lỏng lẻo. Các kiểu đồng nhất giúp việc tính toán độ dài COP trở nên đơn giản và ngăn việc cắt ngầm dữ liệu khi các thành viên được bổ sung sau này.

Giới hạn chỉ số và đường dẫn tải

Giới hạn Recipe_Index trong phạm vi bao gồm từ 0 đến 49 trước khi bất kỳ COP nào được thực thi. Một chỉ số không được giới hạn từ đối tượng nhập số có thể khiến COP báo lỗi hoặc lấy vùng nhớ không xác định, tùy theo cách dự án xử lý giới hạn mảng. Khi Recipe_Index thay đổi theo sườn lên (hoặc khi nhấn nút Load), sao chép Recipe_Storage[Recipe_Index] vào Recipe_Display. HMI chỉ liên kết với các thành viên của Recipe_Display. Quy tắc duy nhất này loại bỏ các điều kiện tranh chấp, trong đó hai màn hình ghi vào các phần tử mảng khác nhau trong khi người vận hành vẫn đang điều chỉnh giá trị.

// Cấu trúc mã giả
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);
Quản lý recipe Allen-Bradley với mảng UDT và giao diện chỉnh sửa HMI — hình 2 Màn hình recipe HMI chỉ liên kết với Recipe_Display, trong đó các thao tác Load/Save kích hoạt các routine COP trong bộ điều khiển.

Đường dẫn lưu, khả năng duy trì và hành vi tải xuống

Khi nhấn Save, COP sao chép Recipe_Display trở lại Recipe_Storage[Recipe_Index]. Vì Recipe_Storage nằm trong các tag của bộ điều khiển, các giá trị vẫn được duy trì qua chu kỳ mất và cấp nguồn khi dự án được cấu hình để giữ tag theo thông thường. Dữ liệu cũng được bảo toàn khi tải xuống nếu bạn chọn giữ lại các giá trị tag; hãy xem tùy chọn này là một phần của SOP quản lý recipe, không phải tiện ích tùy chọn. Người vận hành cần hiểu rằng việc tải xuống dự án với tùy chọn “reinitialize tags” được bật sẽ xóa các recipe đã được tinh chỉnh cẩn thận nếu không có bản sao lưu ngoại tuyến.

Các quy trình nhập CSV cần được xem xét thận trọng. Nhiều tiện ích HMI hoặc Excel-to-tag tạo tên tag nhưng không cập nhật đáng tin cậy các giá trị thành viên bên trong UDT lồng nhau, đặc biệt khi tiêu đề cột không còn khớp với tên thành viên UDT. Hãy ưu tiên một routine nhập rõ ràng có xác thực từng trường, hoặc tải lại từ bản xuất L5X/tag đã biết là hợp lệ sau khi chỉnh sửa hàng loạt. Đừng cho rằng biểu ngữ màu xanh “import complete” có nghĩa là Recipe_Storage[n].Setpoint hiện bằng ô dữ liệu trong bảng tính.

Tag Kiểu Liên kết HMI? Mục đích
Recipe_Storage UDT[50] Không Kho lưu trữ recipe không mất dữ liệu
Recipe_Display UDT Chỉ có Bộ đệm chỉnh sửa của người vận hành
Recipe_Index DINT Có (bộ chọn) Vị trí đang hoạt động 0–49

Hướng dẫn giao diện HMI

  • Cung cấp Load và Save dưới dạng các bit tác động tức thời riêng biệt được xử lý trong bộ điều khiển, không ghi trực tiếp vào mảng từ panel.
  • Hiển thị chỉ số đã được giới hạn và một trường “tên đã lưu” chỉ đọc được sao chép từ UDT hiển thị, để người vận hành xác nhận vị trí đang hoạt động.
  • Vô hiệu hóa Save khi máy đang chạy chu kỳ nếu các thành viên recipe ảnh hưởng đến chuyển động hoặc giá trị đặt nhiệt giữa mẻ.
  • Ghi nhật ký các sự kiện Save cùng ID người vận hành và chỉ số để đảm bảo khả năng truy xuất trên các dây chuyền thuộc ngành được quản lý.

Xác thực giới hạn chỉ số và việc giữ dữ liệu khi tải xuống

Kiểm thử bằng cách tải vị trí 0, chỉnh sửa một giá trị đánh dấu trong Recipe_Display, lưu, đổi chỉ số sang 1, sau đó quay lại 0 và tải lại. Giá trị đánh dấu chỉ được xuất hiện trở lại nếu Save đã được thực thi. Tắt và bật nguồn bộ điều khiển, rồi xác nhận Recipe_Storage vẫn giữ giá trị đánh dấu. Thử nhập một chỉ số ngoài phạm vi từ HMI và kiểm tra cơ chế giới hạn. Thực hiện thử nhập CSV trên một hệ thống dự phòng và so sánh từng thành viên với tệp trước khi tin cậy quy trình đó trong sản xuất.

Tránh liên kết panel với Recipe_Storage[Recipe_Index].Member. Việc định địa chỉ HMI gián tiếp vào các mảng khó kiểm tra hơn và dễ dẫn đến ghi nhầm vị trí khi tag chỉ số và màn hình cập nhật ở các tốc độ khác nhau. Mô hình UDT hiển thị có thể mở rộng dễ dàng khi bạn bổ sung UDT, thêm cấp độ bảo mật hoặc chuyển cùng mô hình recipe giữa nhiều ô hệ thống PLC & PAC dùng chung một quy trình vận hành.

Về tác giả

Mark Townsend | Kỹ sư tự động hóa cấp cao – Hệ thống Allen-Bradley

Mark Townsend là kỹ sư tự động hóa cấp cao với hơn 18 năm làm việc trên các nền tảng Allen-Bradley, bao gồm ControlLogix, CompactLogix và SLC-500 thế hệ cũ. Công việc hằng ngày của ông là phát triển logic RSLogix / Studio 5000 và đưa HMI FactoryTalk View vào vận hành trên các hệ thống cũ và đội thiết bị hỗn hợp.

Để lại bình luận

Xin lưu ý, bình luận cần được phê duyệt trước khi được đăng.