Cách kết nối xLogic Micro PLC với một MQTT Broker để giám sát từ xa

Hỏi một nhân viên bán hàng PLC về MQTT và bạn sẽ nhận được một lộ trình: "năm sau, có thể, trên mẫu cao cấp." Sau đó, bạn nhìn vào chữ nhỏ và tìm thấy một cổng, một bộ chuyển đổi, hoặc một đăng ký đám mây ẩn sau tính năng. Hỗ trợ MQTT trên các CPU Ethernet xLogic không có điều đó — nó đã có trong firmware kể từ phiên bản 1.04, và nó xuất bản trực tiếp từ bộ điều khiển.

Điều đó thay đổi những gì một máy budget có thể làm, và hầu hết các nhà tích hợp không nhận ra.

Tại sao MQTT cho mộtMicro PLC

MQTT được xây dựng cho chính tình huống này: một thiết bị trên một mạng không đáng tin cậy, xuất bản các tin nhắn nhỏ đến một broker, với các người đăng ký đến và đi. Một máy trong một nhà máy, một trạm bơm ở một cánh đồng, một nhà kính hai giờ từ văn phòng — mỗi cái xuất bản trạng thái của nó; bảng điều khiển đám mây, ứng dụng điện thoại và laptop của kỹ sư đều đăng ký cùng một chủ đề. Không có polling, không có cổng mở vào nhà máy, không có máy chủ SCADA trông nom kết nối.

Broker xử lý sự hỗn loạn. PLC chỉ xuất bản.

Những gì bạn thực sự cấu hình

Các khối kết nối sống trong chương trình: đặt địa chỉ broker, chủ đề, khoảng thời gian xuất bản, và ánh xạ các giá trị nào đi vào payload. CPU xử lý vòng đời kết nối — kết nối lại sau khi bị ngắt, xuất bản lại sau một khoảng trống — đó là phần làm hỏng các triển khai tự làm.

Ghép nó với máy chủ web và SMS báo động và bạn có ba kênh từ xa độc lập trên một bộ điều khiển. Bảng điều khiển đám mây cho văn phòng, trang web cho người vận hành, SMS cho kỹ sư trực. Chọn kênh của bạn theo đối tượng.

Trường hợp thực tế: Giám sát nhà kính từ xa

Một vườn ươm với bốn khu vực muốn có khả năng nhìn thấy đám mây mà không cần xây dựng lại mạng lưới trang web. Mỗi bộ điều khiển khu vực xuất bản nhiệt độ, độ ẩm và trạng thái van đến một broker trên VPS thuê; một bảng điều khiển đơn giản đã đăng ký và hiển thị tất cả bốn khu vực trên một màn hình. Khi internet bị ngắt trong một buổi chiều, các bộ điều khiển vẫn tiếp tục xuất bản vào một hàng đợi cục bộ và các giá trị đã bắt kịp khi kết nối lại.

Tóm tắt của người trồng, được dịch từ sự nhiệt tình: "Tôi đã theo dõi biểu đồ nhiệt độ từ điện thoại của mình trong khi nghỉ lễ. Nó tốt hơn là có mặt ở đó."

Nơi MQTT là câu trả lời sai

Hãy trung thực về giới hạn. MQTT là định hướng sự kiện và telemetry — nó không phải là một vòng điều khiển xác định. Nếu bạn cần đảm bảo giao hàng và phản hồi trong mili giây, hãy sử dụng Modbus TCP cục bộ. MQTT dành cho giám sát và báo cáo, không phải cho khóa an toàn. Thiết kế nó theo cách đó và nó sẽ phục vụ bạn trong nhiều năm.

Và giữ cho thông tin xác thực của broker rõ ràng. Một PLC xuất bản đến một chủ đề công khai là một PLC phát sóng công việc của nó. Các chủ đề riêng tư, một broker cục bộ, hoặc tối thiểu là TLS trên broker — chi phí thiết lập chỉ mất vài phút, và sự xấu hổ tránh được là có thật.

Mẫu đáng đánh cắp

Thiết kế chủ đề có thể mở rộng

MQTT chỉ sạch như cấu trúc chủ đề của bạn, và cấu trúc chủ đề là nơi các dự án nhỏ âm thầm trở nên không thể quản lý. Cách tiếp cận ngây thơ — một chủ đề cho mỗi thiết bị, một payload với mọi thứ trong đó — hoạt động cho một máy và sụp đổ ở mười. Mỗi người đăng ký sẽ phân tích lại mỗi payload, mỗi thay đổi đối với payload sẽ làm hỏng mọi bảng điều khiển, và việc gỡ lỗi trở thành một cuộc săn lùng theo từng chủ đề.

Thiết kế cấu trúc trước khi xuất bản lần đầu tiên. Một mẫu đã phục vụ tôi tốt:site/device/category/value. Vậyplant1/pump1/status/run, plant1/pump1/sensor/level, plant1/pump2/alarm/high-level. Các người đăng ký wildcard — một bảng điều khiển cho plant1, một trang cho pump1, một người nghe báo động cho mọi thứ — mỗi cái đăng ký chính xác phần mà họ cần. Các thiết bị mới có thể lắp vào mà không chạm vào các chủ đề cũ, và các payload vẫn nhỏ và có kiểu.

Giữ cho các payload đơn giản: một giá trị và một dấu thời gian. Không có các blob JSON lồng nhau giữ mười một trường trừ khi bạn thực sự cần chúng. Các payload đơn giản có thể gỡ lỗi — bạn có thể đọc một cái trong bảng điều khiển broker và biết ngay lập tức liệu nó có đúng không. Và đặt cờ giữ lại trên các chủ đề trạng thái để một người đăng ký mới ngay lập tức thấy trạng thái cuối cùng thay vì phải chờ xuất bản tiếp theo. Trạng thái giữ lại là sự khác biệt giữa một bảng điều khiển bật mở sẵn sàng và một bảng điều khiển nhìn chằm chằm vô hồn trong nhiều phút.

Quy tắc cuối cùng là quy tắc mà mọi người kháng cự: phiên bản chủ đề khi định dạng payload thay đổi.plant1/pump1/status/v2. Nó xấu xí. Nó giúp bạn tránh việc làm hỏng năm người đăng ký trong sản xuất với một thay đổi. Các chủ đề xấu xí hoạt động tốt hơn các chủ đề sạch sẽ nổ tung.

Dữ liệu đáng để công bố

Xuất bản mọi thứ cũng tệ như xuất bản không có gì — nó làm ngập broker, phình to nhật ký, và chôn vùi các giá trị quan trọng. Bắt đầu từ câu hỏi mà người đăng ký sẽ hỏi, không phải từ danh sách các thanh ghi. Một người vận hành muốn trạng thái, báo động và tổng số đang chạy. Một kỹ sư muốn xu hướng: nhiệt độ, áp suất, giờ chạy. Một quản lý muốn thời gian hoạt động và số lượng. Xuất bản những cái đó, và chỉ những cái đó.

Tốc độ cũng quan trọng. Chuyển tiếp báo động: xuất bản ngay lập tức, luôn luôn. Trạng thái: khi thay đổi cộng với một nhịp tim. Giá trị tương tự: tại khoảng thời gian thực sự cho thấy quy trình — mười giây cho nhiệt độ nhà kính chậm, một giây cho máy công cụ. Mỗi chủ đề nhanh mà bạn không cần là tải broker lãng phí và dữ liệu SIM lãng phí trên các mẫu không dây.

Và ghi lại những cái quan trọng ở cục bộ nữa. Việc ghi dữ liệu của CPU cộng với các tin nhắn giữ lại của broker cho bạn hai bản sao của lịch sử quan trọng. Khi broker có một ngày tồi tệ — tất cả đều có — nhật ký phía máy là nguồn sự thật, và cuộc trò chuyện phục hồi sẽ ngắn.

Kiểm soát cục bộ trên CPU, khả năng nhìn thấy đám mây qua MQTT, và hai cái không bao giờ can thiệp. Sự tách biệt đó là kiến trúc của tự động hóa nhỏ hiện đại, và nó vừa vặn trên một thanh DIN. Lộ trình của nhân viên bán hàng không đến. Firmware đã được gửi đi.