Học Automation cùng MINATA #76: MQTT trong IIoT: thiết kế topic, payload và store-and-forward trước khi gửi dữ liệu
MQTT nhẹ và linh hoạt, phù hợp gửi dữ liệu từ máy lên hệ IIoT. Nhưng chính vì linh hoạt, nó cần quy ước dữ liệu rõ ràng trước khi gắn gateway vào máy; thiếu quy ước, dữ liệu lên cloud khó dùng và khó bảo trì.
Thiết kế topic có cấu trúc
Topic nên thể hiện phạm vi và owner theo phân cấp, ví dụ site/line/machine/data-type, nhưng không nhét mọi chi tiết biến động vào tên topic. Cấu trúc ổn định giúp subscribe theo nhóm và phân quyền; tên topic đổi liên tục làm phía nhận khó theo dõi.
Payload phải versioned và có ngữ cảnh
Payload (thường JSON) nên có version, timestamp, quality, unit và sequence/event ID khi cần. Một payload đẹp nhưng thiếu timestamp gần như vô dụng khi mạng chập chờn: phía nhận không biết dữ liệu là mới hay cũ. Đặt version từ đầu để sau này đổi cấu trúc mà không phá phía nhận.
Event, sample hay aggregate
Quyết định mỗi loại dữ liệu gửi theo cách nào:
| Kiểu | Dùng cho | Cách gửi |
|---|
| Event | Đổi trạng thái máy, alarm | Phát khi có sự kiện |
| Sample | Giá trị đo theo dõi | Theo chu kỳ, có rate limit |
| Aggregate | Năng lượng, sản lượng | Tổng hợp theo khoảng |
Đừng publish toàn bộ tag PLC ở tần suất cao nếu không có người dùng, chi phí và kế hoạch lưu trữ (retention) rõ ràng.
Store-and-forward khi mất mạng
Gateway nên có store-and-forward: khi mất kết nối, đệm dữ liệu rồi gửi lại khi mạng phục hồi, kèm timestamp gốc để phía nhận sắp đúng thứ tự. Dùng QoS phù hợp cho dữ liệu quan trọng, tránh mất event trạng thái.
Tình huống kỹ thuật tham khảo
Một gateway publish event khi máy đổi trạng thái, gửi năng lượng dạng aggregate mỗi khoảng, và giới hạn tần suất cho giá trị nhanh. Payload có version và timestamp; khi Internet gián đoạn, dữ liệu được đệm và gửi lại đúng thứ tự khi phục hồi. Nhờ vậy dashboard trên cloud không mất event và không hiểu nhầm dữ liệu cũ là mới.
Cấu trúc topic, payload và chính sách gửi cuối cùng phải theo nhu cầu phía nhận, chi phí và retention plan.
Sai lầm thường gặp
- Đặt topic nhét mọi chi tiết biến động, khó subscribe.
- Payload thiếu version và timestamp, vô dụng khi mất mạng.
- Publish mọi tag ở tần suất cao không người dùng.
- Không có store-and-forward, mất dữ liệu khi rớt mạng.
- Dùng QoS không phù hợp, mất event trạng thái quan trọng.
Checklist MQTT trong IIoT
- [ ] Topic có cấu trúc ổn định thể hiện phạm vi và owner.
- [ ] Payload có version, timestamp, quality, unit.
- [ ] Phân loại event/sample/aggregate cho từng dữ liệu.
- [ ] Có store-and-forward và QoS phù hợp khi mất mạng.
- [ ] Chỉ gửi dữ liệu có người dùng và retention rõ.
Quy ước dữ liệu tốt làm IIoT bền và rẻ vận hành. Bài #77 chuyển sang phân vùng mạng OT, tách mạng để giảm phạm vi sự cố.
Đọc thêm kiến thức tự động hóa tại MINATA: https://minatavn.com/vi/blog/tu-dong-hoa
Bài liền trước — #75: OPC UA cho tích hợp dữ liệu: https://minatavn.com/vi/blog/hoc-automation-cung-minata-75-opc-ua-cho-tich-hop-du-lieu
Bài tiếp theo — #77: Phân vùng mạng OT: https://minatavn.com/vi/blog/hoc-automation-cung-minata-77-phan-vung-mang-cong-nghiep
Xem tất cả bài viết kỹ thuật MINATA