Trang chủ › Bài kỹ thuật

Read in English

N3uron và Canary Historian qua MQTT Sparkplug B: primary host và store and forward

TDL Industrial Automation · Cập nhật lần cuối:

Đưa tag PLC Allen-Bradley vào Canary qua MQTT: N3uron ở biên đọc PLC và xuất bản Sparkplug B, collector MQTT của Canary đăng ký nhận. Bài đi theo tài liệu của N3uron và Canary, tập trung vào primary host, store and forward và các thiết lập phải khớp ở hai bên để không mất dữ liệu khi mất mạng.

Khi PLC nằm ở trạm xa hoặc ở mạng mà Historian không với tới trực tiếp, MQTT là thêm một đường vào Historian của Canary. N3uron đặt ở biên đọc bộ điều khiển Allen-Bradley và xuất bản tag dưới dạng bản tin Sparkplug B lên broker, còn collector MQTT của Canary đăng ký nhận và ghi lại. Bài này đi theo đường đó dựa trên tài liệu của N3uron và Canary, kèm các thiết lập ở mỗi bên quyết định dữ liệu có còn nguyên sau khi mất mạng hay không. Các đường khác để ghi tag Allen-Bradley: xem bài Đưa dữ liệu PLC Allen-Bradley vào Canary.

Từ PLC qua N3uron và MQTT tới CanaryNăm lớp từ trên xuống: PLC Allen-Bradley; N3uron ở biên đọc PLC và xuất bản Sparkplug B; MQTT broker; collector MQTT của Canary; Historian. Khi mất kết nối, N3uron giữ dữ liệu có thời điểm trong store and forward và gửi bù sau.Từ PLC qua N3uron và MQTT tới CanaryPLC Allen-BradleyControlLogix, CompactLogixN3uron đọc qua module EtherNet/IP Clientduyệt tag rồi kéo vào mô hình dữ liệu N3uronEtherNet/IPN3uron ở biênSparkplug Clientxuất bản tag dạng Sparkplug B v2 hoặc v3chỉ gửi khi giá trị đổi (report by exception)store and forward: giữ dữ liệukhi mất broker hoặc primary hostMQTT, Sparkplug BMQTT brokermột hoặc nhiều brokerMQTT cổng 1883, MQTTS cổng 8883N3uron chuyển sang broker khác khi một broker mấtcollector đăng ký topicCollector MQTTcủa Canarysubscriberđăng ký topic spBv1.0/…Primary Application: host ID là MQTT Client IDghi vào DataSet, tự tách DataSet theo số tag đặt trướcghi vào DataSetHistorianDataSetViews, Axiom, Excel đọc từ đâyTheo N3uron (EtherNet/IP Client; Sparkplug Client, KB v1.21) và Canary Labs (MQTTCollector Overview v22; How to Configure the MQTT Collector v24). Hình: TDL tự vẽ.
Hình 1: Từ PLC qua N3uron và MQTT tới Canary. Trên điện thoại, vuốt ngang để xem hết hình.

Đọc PLC bằng N3uron

Module EtherNet/IP Client của N3uron dùng cho bộ điều khiển dòng ControlLogix, gồm cả CompactLogix, cùng PLC-5, SLC 500, MicroLogix và Micro800. Trình duyệt của module liệt kê tag trong bộ điều khiển, rồi kéo tag vào mô hình dữ liệu N3uron hoặc chọn khi cấu hình tag. Chương trình PLC không phải sửa; thứ thay đổi là tải đọc, phụ thuộc chu kỳ quét đặt trong N3uron.

Xuất bản bằng Sparkplug Client

Module Sparkplug Client của N3uron xuất bản tag N3uron theo định dạng topic và payload Sparkplug B, phiên bản 2 hoặc 3; phiên bản 3 cần N3uron 1.21.4 trở lên. Mỗi node có Group ID và Edge Node ID, và cặp này phải là duy nhất trên broker. Giá trị chỉ được gửi khi thay đổi, và tài liệu N3uron cho khai nhiều broker trong một cluster, nên client chuyển sang broker kế tiếp khi một broker không dùng được. Kết nối dùng MQTT thường ở cổng 1883 hoặc MQTTS ở cổng 8883, xác thực bằng mật khẩu, chứng chỉ client hoặc cả hai.

Nhận bằng collector MQTT của Canary

Collector MQTT của Canary cấu hình trong Canary Admin client và nhận payload Sparkplug B 3.0, Sparkplug B 2.2 hoặc JSON; Canary ghi Sparkplug B 3.0 được hỗ trợ từ phiên bản 23. Tag được chia vào các connection group, mỗi group là một phiên ghi vào một DataSet. Topic đăng ký bắt đầu bằng spBv1.0/ và, theo bài cấu hình của Canary, nên đăng ký ở cấp node để collector có ngữ cảnh node cần cho template. Có thể đặt giới hạn số tag mỗi DataSet, khi đạt giới hạn collector mở DataSet mới có thêm số ở cuối tên.

Bài của Canary cũng cảnh báo việc bỏ phần đầu tên tag có thể làm trùng tên, và khuyên bật yêu cầu device birth trong hầu hết trường hợp. Một connection group có thể gửi cùng dữ liệu tới nhiều Historian bằng cách liệt kê chúng.

Khi mất kết nối: primary host và store and forward

Đây là chỗ hai bên phải đặt cùng nhau. Ở collector của Canary, tùy chọn Primary Application làm các publisher có bộ đệm giữ dữ liệu lại trong lúc collector mất kết nối; bài tổng quan của Canary giải thích collector khi đó báo trạng thái trên topic STATE theo MQTT Client ID của nó. Ở N3uron, Primary Host ID là tên của ứng dụng đó, và khi bật kiểm tra trạng thái, N3uron ngừng xuất bản trong lúc primary host mất kết nối và tìm broker nào mà primary host đang online.

Store and forward của N3uron giữ bản ghi có thời điểm trong lúc node hoặc primary application mất kết nối, rồi xuất bản chúng dưới dạng bản ghi lịch sử khi kết nối trở lại; thời gian lưu đặt theo số ngày. Bài của Canary ghi thêm nên để tắt "Store No Data On Disconnect" khi collector là primary và publisher có bộ đệm. Đọc hai tài liệu cùng nhau thì ID nhập ở N3uron phải là Client ID đặt cho collector của Canary; chúng tôi sẽ thử trên một broker trước khi nhà máy dùng thật.

Tài liệu của Canary cũng ghi một hệ quả: trong lúc collector là primary application và đang offline, các client khác đăng ký cùng topic cũng không nhận được dữ liệu.

Cần thống nhất gì trước khi cấu hình

  • Danh sách tag PLC cần xuất bản, có đơn vị kỹ thuật và chu kỳ quét trong N3uron.
  • Tên Group ID và Edge Node ID, và đường dẫn tag sẽ thành cấu trúc topic.
  • Dùng broker nào, cổng nào, client xác thực ra sao.
  • Collector của Canary có làm primary application không, và thời gian lưu store and forward trong N3uron.
  • Tên DataSet và giới hạn số tag mỗi DataSet phía Canary.

TDL tiếp cận thế nào

TDL Industrial Automation là N3uron Certified Integrator và Canary Certified Partner, có tên trên trang đối tác của Canary tại Việt Nam. Phần lớn nhà máy chúng tôi làm việc dùng bộ điều khiển Allen-Bradley, nên chúng tôi bắt đầu từ danh sách tag PLC và mạng: N3uron chạy được ở đâu cạnh PLC, broker đặt ở đâu, kết nối MQTT đi ra cần mở firewall chỗ nào. Thêm về dịch vụ historian: Canary Historian tại Việt Nam.

Câu hỏi thường gặp

Collector MQTT của Canary có hỗ trợ Sparkplug B 3.0 không?

Có. Canary ghi collector MQTT hỗ trợ Sparkplug B 3.0 từ phiên bản 23, và kiểu payload cũng chọn được Sparkplug B 2.2 hoặc JSON.

Mất broker hoặc mất kết nối tới Historian thì dữ liệu ra sao?

Store and forward của N3uron giữ bản ghi có thời điểm trong lúc node hoặc primary application mất kết nối và xuất bản chúng dưới dạng bản ghi lịch sử khi kết nối trở lại. Phía Canary, collector nên là primary application và để tắt "Store No Data On Disconnect".

Nhập ID nào vào Primary Host ID của N3uron?

Bài tổng quan của Canary ghi collector báo trạng thái trên topic STATE theo MQTT Client ID của nó, nên đó là ID cần nhập vào N3uron; thử trên broker trước khi chạy thật.

Có phải sửa chương trình PLC không?

Không. N3uron đọc tag có sẵn trong bộ điều khiển qua EtherNet/IP; tải thêm lên PLC phụ thuộc chu kỳ quét đặt trong N3uron.

Nguồn

Đọc ngày 12/11/2026. Bài viết diễn giải, không trích nguyên văn; đọc tài liệu gốc trước khi thiết kế hoặc thao tác.

Dịch vụ liên quan:
SCADA & historian N3uron (IIoT và DataOps) Canary Historian