Logo Zephyrnet

Giám sát dây chuyền sản xuất theo thời gian thực của Krones với Dịch vụ được quản lý của Amazon cho Apache Flink | Dịch vụ web của Amazon

Ngày:

Máy bay không người lái cung cấp cho các nhà máy bia, nhà đóng chai đồ uống và nhà sản xuất thực phẩm trên toàn thế giới các máy móc riêng lẻ và dây chuyền sản xuất hoàn chỉnh. Mỗi ngày, hàng triệu chai thủy tinh, lon và hộp đựng PET chạy qua dây chuyền của Krones. Dây chuyền sản xuất là những hệ thống phức tạp có nhiều lỗi có thể xảy ra, có thể làm dây chuyền bị đình trệ và làm giảm năng suất sản xuất. Krones muốn phát hiện lỗi càng sớm càng tốt (đôi khi thậm chí trước khi nó xảy ra) và thông báo cho người vận hành dây chuyền sản xuất để tăng độ tin cậy và sản lượng. Vậy làm thế nào để phát hiện sự cố? Krones trang bị cho dây chuyền của họ các cảm biến để thu thập dữ liệu, sau đó có thể đánh giá theo các quy tắc. Krones, với tư cách là nhà sản xuất dây chuyền cũng như người vận hành dây chuyền, có khả năng tạo ra các quy tắc giám sát cho máy móc. Do đó, các nhà đóng chai đồ uống và các nhà khai thác khác có thể xác định mức sai số của riêng họ cho dây chuyền. Trước đây, Krones đã sử dụng hệ thống dựa trên cơ sở dữ liệu chuỗi thời gian. Những thách thức chính là hệ thống này khó gỡ lỗi và các truy vấn cũng thể hiện trạng thái hiện tại của máy chứ không thể hiện sự chuyển đổi trạng thái.

Bài đăng này cho thấy cách Krones xây dựng giải pháp phát trực tuyến để giám sát dây chuyền của họ, dựa trên Amazon KinesisDịch vụ được quản lý của Amazon dành cho Apache Flink. Các dịch vụ được quản lý hoàn toàn này giúp giảm độ phức tạp của việc xây dựng các ứng dụng phát trực tuyến bằng Apache Flink. Dịch vụ được quản lý dành cho Apache Flink quản lý các thành phần Apache Flink cơ bản nhằm cung cấp trạng thái, số liệu, nhật ký, v.v. bền vững của ứng dụng, đồng thời Kinesis cho phép bạn xử lý dữ liệu truyền trực tuyến một cách hiệu quả về mặt chi phí ở mọi quy mô. Nếu bạn muốn bắt đầu với ứng dụng Apache Flink của riêng mình, hãy xem Kho GitHub đối với các mẫu sử dụng API Java, Python hoặc SQL của Flink.

Tổng quan về giải pháp

Giám sát dây chuyền của Krones là một phần của Hướng dẫn về phân xưởng của Krones hệ thống. Nó cung cấp hỗ trợ trong việc tổ chức, ưu tiên, quản lý và ghi chép tất cả các hoạt động trong công ty. Nó cho phép họ thông báo cho người vận hành nếu máy bị dừng hoặc cần vật liệu, bất kể người vận hành đang ở đâu trong dây chuyền. Các quy tắc giám sát tình trạng đã được chứng minh đã được tích hợp sẵn nhưng cũng có thể được người dùng xác định thông qua giao diện người dùng. Ví dụ: nếu một điểm dữ liệu nhất định được theo dõi vi phạm ngưỡng, thì có thể có một tin nhắn văn bản hoặc trình kích hoạt yêu cầu bảo trì trên đường dây.

Hệ thống giám sát tình trạng và đánh giá quy tắc được xây dựng trên AWS, sử dụng các dịch vụ phân tích của AWS. Sơ đồ sau đây minh họa kiến ​​trúc.

Sơ đồ kiến ​​trúc giám sát dây chuyền sản xuất của Krones

Hầu hết mọi ứng dụng truyền dữ liệu đều bao gồm năm lớp: nguồn dữ liệu, nhập luồng, lưu trữ luồng, xử lý luồng và một hoặc nhiều đích. Trong các phần sau, chúng ta sẽ đi sâu hơn vào từng lớp và cách thức hoạt động của giải pháp giám sát đường dây do Krones xây dựng.

Nguồn dữ liệu

Dữ liệu được thu thập bởi một dịch vụ chạy trên thiết bị biên đọc một số giao thức như Siemens S7 hoặc OPC/UA. Dữ liệu thô được xử lý trước để tạo cấu trúc JSON thống nhất, giúp xử lý sau này trong công cụ quy tắc dễ dàng hơn. Tải trọng mẫu được chuyển đổi sang JSON có thể trông giống như sau:

{
  "version": 1,
  "timestamp": 1234,
  "equipmentId": "84068f2f-3f39-4b9c-a995-d2a84d878689",
  "tag": "water_temperature",
  "value": 13.45,
  "quality": "Ok",
  "meta": {      
    "sequenceNumber": 123,
    "flags": ["Fst", "Lst", "Wmk", "Syn", "Ats"],
    "createdAt": 12345690,
    "sourceId": "filling_machine"
  }
}

Truyền phát trực tuyến

Cỏ xanh AWS IoT là dịch vụ đám mây và thời gian chạy biên Internet of Things (IoT) mã nguồn mở. Điều này cho phép bạn hành động trên dữ liệu cục bộ cũng như tổng hợp và lọc dữ liệu thiết bị. AWS IoT Greengrass cung cấp các thành phần dựng sẵn có thể được triển khai ở biên. Giải pháp dây chuyền sản xuất sử dụng thành phần quản lý luồng, có thể xử lý dữ liệu và truyền dữ liệu đến các điểm đến AWS như Phân tích AWS IoT, Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) và Kinesis. Trình quản lý luồng sẽ đệm và tổng hợp các bản ghi, sau đó gửi bản ghi đó tới luồng dữ liệu Kinesis.

Lưu trữ luồng

Công việc của bộ lưu trữ luồng là đệm các thông báo theo cách có khả năng chịu lỗi và cung cấp thông báo đó cho một hoặc nhiều ứng dụng tiêu dùng. Để đạt được điều này trên AWS, các công nghệ phổ biến nhất là Kinesis và Truyền trực tuyến được quản lý của Amazon cho Apache Kafka (Amazon MSK). Để lưu trữ dữ liệu cảm biến từ dây chuyền sản xuất, Krones chọn Kinesis. Kinesis là dịch vụ truyền dữ liệu không cần máy chủ, hoạt động ở mọi quy mô với độ trễ thấp. Phân đoạn trong luồng dữ liệu Kinesis là một chuỗi bản ghi dữ liệu được xác định duy nhất, trong đó luồng bao gồm một hoặc nhiều phân đoạn. Mỗi phân đoạn có khả năng đọc 2 MB/s và khả năng ghi 1 MB/s (với tối đa 1,000 bản ghi/s). Để tránh đạt đến những giới hạn đó, dữ liệu phải được phân phối giữa các phân đoạn càng đồng đều càng tốt. Mỗi bản ghi được gửi tới Kinesis đều có khóa phân vùng, khóa này dùng để nhóm dữ liệu vào một phân đoạn. Vì vậy, bạn muốn có số lượng lớn các phím phân vùng để phân bổ tải đều. Trình quản lý luồng chạy trên AWS IoT Greengrass hỗ trợ gán khóa phân vùng ngẫu nhiên, nghĩa là tất cả bản ghi đều kết thúc ở một phân đoạn ngẫu nhiên và tải được phân bổ đồng đều. Một nhược điểm của việc gán khóa phân vùng ngẫu nhiên là các bản ghi không được lưu trữ theo thứ tự trong Kinesis. Chúng tôi sẽ giải thích cách giải quyết vấn đề này trong phần tiếp theo, nơi chúng tôi nói về hình mờ.

Hình mờ

A watermark là một cơ chế được sử dụng để theo dõi và đo lường tiến trình thời gian sự kiện trong luồng dữ liệu. Thời gian sự kiện là dấu thời gian kể từ khi sự kiện được tạo tại nguồn. Hình mờ cho biết tiến trình kịp thời của ứng dụng xử lý luồng, vì vậy tất cả các sự kiện có dấu thời gian sớm hơn hoặc bằng nhau đều được coi là đã xử lý. Thông tin này rất cần thiết để Flink nâng cao thời gian diễn ra sự kiện và kích hoạt các tính toán có liên quan, chẳng hạn như đánh giá cửa sổ. Độ trễ cho phép giữa thời gian sự kiện và hình mờ có thể được định cấu hình để xác định thời gian chờ dữ liệu trễ trước khi xem xét cửa sổ hoàn tất và nâng cao hình mờ.

Krones có hệ thống trên toàn cầu và cần xử lý những trường hợp đến muộn do mất kết nối hoặc các hạn chế khác về mạng. Họ bắt đầu bằng cách theo dõi những người đến muộn và đặt xử lý trễ Flink mặc định thành giá trị tối đa mà họ thấy trong số liệu này. Họ gặp phải sự cố với việc đồng bộ hóa thời gian từ các thiết bị biên, điều này dẫn đến cách tạo hình chìm mờ phức tạp hơn. Họ đã xây dựng hình mờ toàn cầu cho tất cả người gửi và sử dụng giá trị thấp nhất làm hình mờ. Dấu thời gian được lưu trữ trong HashMap cho tất cả các sự kiện sắp tới. Khi hình mờ được phát ra định kỳ, giá trị nhỏ nhất của HashMap này sẽ được sử dụng. Để tránh hình mờ bị trì hoãn do thiếu dữ liệu, họ đã cấu hình một idleTimeOut tham số này bỏ qua các dấu thời gian cũ hơn một ngưỡng nhất định. Điều này làm tăng độ trễ nhưng mang lại tính nhất quán dữ liệu mạnh mẽ.

public class BucketWatermarkGenerator implements WatermarkGenerator<DataPointEvent> {
private HashMap <String, WatermarkAndTimestamp> lastTimestamps;
private Long idleTimeOut;
private long maxOutOfOrderness;
}

Xử lý luồng

Sau khi dữ liệu được thu thập từ các cảm biến và nhập vào Kinesis, dữ liệu đó cần được đánh giá bằng một công cụ quy tắc. Quy tắc trong hệ thống này thể hiện trạng thái của một số liệu (chẳng hạn như nhiệt độ) hoặc tập hợp các số liệu. Để diễn giải một số liệu, nhiều điểm dữ liệu được sử dụng, đây là phép tính có trạng thái. Trong phần này, chúng ta sẽ tìm hiểu sâu hơn về trạng thái khóa và trạng thái phát sóng trong Apache Flink cũng như cách chúng được sử dụng để xây dựng công cụ quy tắc Krones.

Kiểm soát luồng và mẫu trạng thái phát sóng

Trong Apache Flink, nhà nước đề cập đến khả năng hệ thống lưu trữ và quản lý thông tin liên tục theo thời gian và hoạt động, cho phép xử lý dữ liệu truyền phát với sự hỗ trợ cho các tính toán trạng thái.

Sản phẩm mẫu trạng thái phát sóng cho phép phân phối trạng thái cho tất cả các phiên bản song song của toán tử. Do đó, tất cả các toán tử đều có cùng trạng thái và dữ liệu có thể được xử lý bằng cùng trạng thái này. Dữ liệu chỉ đọc này có thể được nhập bằng cách sử dụng luồng điều khiển. Luồng điều khiển là luồng dữ liệu thông thường nhưng thường có tốc độ dữ liệu thấp hơn nhiều. Mẫu này cho phép bạn cập nhật động trạng thái trên tất cả các toán tử, cho phép người dùng thay đổi trạng thái và hành vi của ứng dụng mà không cần triển khai lại. Chính xác hơn, việc phân phối trạng thái được thực hiện bằng cách sử dụng luồng điều khiển. Bằng cách thêm bản ghi mới vào luồng điều khiển, tất cả người vận hành đều nhận được bản cập nhật này và đang sử dụng trạng thái mới để xử lý tin nhắn mới.

Điều này cho phép người dùng ứng dụng Krones nhập các quy tắc mới vào ứng dụng Flink mà không cần khởi động lại ứng dụng. Điều này tránh thời gian chết và mang lại trải nghiệm tuyệt vời cho người dùng khi các thay đổi diễn ra trong thời gian thực. Một quy tắc bao gồm một kịch bản nhằm phát hiện sai lệch quy trình. Đôi khi, dữ liệu máy không dễ diễn giải như thoạt nhìn. Nếu cảm biến nhiệt độ đang gửi giá trị cao, điều này có thể cho thấy có lỗi nhưng cũng có thể là do ảnh hưởng của quy trình bảo trì đang diễn ra. Điều quan trọng là đặt số liệu trong ngữ cảnh và lọc một số giá trị. Điều này đạt được nhờ một khái niệm gọi là nhóm lại.

Nhóm các số liệu

Việc nhóm dữ liệu và số liệu cho phép bạn xác định mức độ liên quan của dữ liệu đến và tạo ra kết quả chính xác. Chúng ta hãy xem qua ví dụ trong hình dưới đây.

Nhóm các số liệu

Ở Bước 1, chúng tôi xác định hai nhóm điều kiện. Nhóm 1 thu thập tình trạng máy và sản phẩm nào đang đi qua dây chuyền. Nhóm 2 sử dụng giá trị của cảm biến nhiệt độ và áp suất. Một nhóm điều kiện có thể có các trạng thái khác nhau tùy thuộc vào giá trị mà nó nhận được. Trong ví dụ này, nhóm 1 nhận dữ liệu máy đang chạy và chọn chai XNUMX lít làm sản phẩm; điều này mang lại cho nhóm này trạng thái ACTIVE. Nhóm 2 có các số liệu về nhiệt độ và áp suất; cả hai số liệu đều vượt quá ngưỡng trong hơn 5 phút. Điều này dẫn đến việc nhóm 2 rơi vào tình trạng WARNING tình trạng. Điều này có nghĩa là nhóm 1 báo cáo rằng mọi thứ đều ổn còn nhóm 2 thì không. Ở Bước 2, trọng số được thêm vào các nhóm. Điều này là cần thiết trong một số trường hợp vì các nhóm có thể báo cáo thông tin mâu thuẫn nhau. Trong trường hợp này, nhóm 1 báo cáo ACTIVE và báo cáo nhóm 2 WARNING, vì vậy hệ thống không rõ trạng thái của đường dây là gì. Sau khi thêm trọng số, các trạng thái có thể được xếp hạng, như thể hiện ở bước 3. Cuối cùng, trạng thái có thứ hạng cao nhất sẽ được chọn làm trạng thái chiến thắng, như thể hiện ở Bước 4.

Sau khi các quy tắc được đánh giá và trạng thái máy cuối cùng được xác định, kết quả sẽ được xử lý tiếp. Hành động được thực hiện tùy thuộc vào cấu hình quy tắc; đây có thể là thông báo cho người vận hành đường dây để bổ sung nguyên liệu, thực hiện một số bảo trì hoặc chỉ là cập nhật trực quan trên bảng điều khiển. Phần này của hệ thống đánh giá các số liệu, quy tắc và thực hiện hành động dựa trên kết quả, được gọi là phần công cụ quy tắc.

Mở rộng công cụ quy tắc

Bằng cách cho phép người dùng xây dựng quy tắc của riêng họ, công cụ quy tắc có thể có nhiều quy tắc cần đánh giá và một số quy tắc có thể sử dụng cùng dữ liệu cảm biến như các quy tắc khác. Flink là một hệ thống phân tán có quy mô rất tốt theo chiều ngang. Để phân phối luồng dữ liệu cho một số tác vụ, bạn có thể sử dụng keyBy() phương pháp. Điều này cho phép bạn phân vùng luồng dữ liệu một cách hợp lý và gửi các phần dữ liệu đến các trình quản lý tác vụ khác nhau. Điều này thường được thực hiện bằng cách chọn một khóa tùy ý để bạn có được tải được phân bổ đều. Trong trường hợp này, Krones đã thêm một ruleId đến điểm dữ liệu và sử dụng nó làm chìa khóa. Nếu không, các điểm dữ liệu cần thiết sẽ được xử lý bởi một tác vụ khác. Luồng dữ liệu có khóa có thể được sử dụng trên tất cả các quy tắc giống như một biến thông thường.

Các điểm đến

Khi một quy tắc thay đổi trạng thái, thông tin sẽ được gửi đến luồng Kinesis và sau đó qua Sự kiện Amazon tới người tiêu dùng. Một trong những người tiêu dùng tạo thông báo từ sự kiện được truyền đến dây chuyền sản xuất và cảnh báo nhân viên hành động. Để có thể phân tích các thay đổi trạng thái quy tắc, một dịch vụ khác ghi dữ liệu vào Máy phát điện Amazon bảng để truy cập nhanh và có sẵn TTL để tải lịch sử dài hạn sang Amazon S3 để báo cáo thêm.

Kết luận

Trong bài đăng này, chúng tôi đã giới thiệu cho bạn cách Krones xây dựng hệ thống giám sát dây chuyền sản xuất theo thời gian thực trên AWS. Dịch vụ được quản lý dành cho Apache Flink cho phép nhóm Krones bắt đầu nhanh chóng bằng cách tập trung vào phát triển ứng dụng thay vì cơ sở hạ tầng. Khả năng thời gian thực của Flink cho phép Krones giảm 10% thời gian ngừng hoạt động của máy và tăng hiệu suất lên tới 5%.

Nếu bạn muốn xây dựng các ứng dụng phát trực tuyến của riêng mình, hãy xem các mẫu có sẵn trên Kho GitHub. Nếu bạn muốn mở rộng ứng dụng Flink của mình bằng các trình kết nối tùy chỉnh, hãy xem Giúp việc xây dựng trình kết nối với Apache Flink dễ dàng hơn: Giới thiệu Async Sink. Async Sink có sẵn trong Apache Flink phiên bản 1.15.1 trở lên.


Về các tác giả

Florian Mair là Kiến trúc sư giải pháp cấp cao và chuyên gia truyền dữ liệu tại AWS. Ông là một nhà công nghệ giúp khách hàng ở Châu Âu thành công và đổi mới bằng cách giải quyết các thách thức kinh doanh bằng cách sử dụng dịch vụ Đám mây AWS. Ngoài công việc là Kiến trúc sư Giải pháp, Florian còn là một nhà leo núi đam mê và đã leo lên một số ngọn núi cao nhất trên khắp Châu Âu.

Emil Dietl là Trưởng nhóm công nghệ cao cấp tại Krones chuyên về kỹ thuật dữ liệu, với lĩnh vực chính là Apache Flink và microservices. Công việc của ông thường liên quan đến việc phát triển và bảo trì phần mềm quan trọng. Ngoài cuộc sống nghề nghiệp của mình, anh ấy vô cùng coi trọng việc dành thời gian chất lượng cho gia đình.

Simon Peyer là Kiến trúc sư giải pháp tại AWS có trụ sở tại Thụy Sĩ. Anh ấy là người làm việc thực tế và đam mê kết nối công nghệ và con người sử dụng dịch vụ Đám mây AWS. Trọng tâm đặc biệt của anh ấy là truyền dữ liệu và tự động hóa. Ngoài công việc, Simon thích gia đình, hoạt động ngoài trời và đi bộ đường dài trên núi.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img