Ví dụ 3: Hướng Dẫn Giám Sát Hàng Ngàn Thanh Ghi (2400 Thanh Ghi) Với iNut RS485

1. Giới Thiệu

Tài liệu này hướng dẫn bạn cách giám sát một lượng lớn thanh ghi Modbus RTU (cụ thể là 2400 thanh ghi) bằng thiết bị iNut RS485 và gửi dữ liệu lên MQTT. Đây là cấu hình mẫu dành cho các cảm biến, thiết bị hỗ trợ Modbus RTU, cần giám sát dải thanh ghi 4x (Function Code 3).

  • Giao thức: Modbus RTU

  • Function code: 3 (đọc Holding Register)

  • Địa chỉ bắt đầu: 40001 (tức address 0)

  • Slave ID: 1

  • Prefix MQTT: Rỗng (mặc định không có tiền tố)

2. Cấu Trúc Topic MQTT

Mỗi lần thiết bị gửi dữ liệu Modbus, nó sẽ tạo một topic như sau:

/slave_id/<slave_id>/req_id/<req_id>

Ví dụ:

/slave_id/1/req_id/0

Phản hồi trạng thái đi kèm sẽ được gửi về:

/slave_id/1/req_id/0/message

Payload:

{
  "status": "OK",
  "time": 1752656804,
  "date": "16:06:44 16/07/25"
}

3. Thiết Lập Đọc 2400 Thanh Ghi

Do giới hạn của Modbus RTU, mỗi lần chỉ đọc tối đa 120 thanh ghi. Vì vậy, ta chia 2400 thanh ghi thành 20 nhóm, mỗi nhóm 120 thanh ghi, bắt đầu từ address 0 đến 2280.

Cấu hình trong app đã tạo sẵn các dải như sau:

  • address 0 (40001) đến 119 (40120)

  • address 120 (40121) đến 239

  • ...

  • address 2280 (42281) đến 2399 (42400)

Mỗi block có thể bật/tắt hiển thị trong Dashboard tuỳ ý. Tốc độ quét mặc định: mỗi 10 giây (10000 ms).

Lưu ý:

  • Chỉ nên bật hiển thị những block quan trọng, để tránh tải quá lớn trên thiết bị hoặc server MQTT.

  • Các dải đang tắt hiển thị vẫn được thiết bị gửi MQTT nếu bạn bật lại chúng.

4. Code Cấu Hình Mẫu (Import vào App)

Bạn có thể import đoạn cấu hình sau vào app iNut để thử nghiệm:

{"input_components":[],"output_components":[{"label":"Dashboard","unit":null,"type":"modbusdashboard","local_id":0,"config":{"modbus":{"modbus_elements":[{"id":0,"source":{"slave_id":"1","function_code":"3","address":"0","pre_processing":""},"display":{"label":"40001","icon":"power","unit":"","color":"#000000","ui_by_range":[]}},{"id":27,"source":{"slave_id":"1","function_code":"3","address":"1","pre_processing":""},"display":{"label":"40002","icon":"power","unit":"","color":"#000000","ui_by_range":[]}},{"id":2,"source":{"slave_id":"1","function_code":"3","address":"2","pre_processing":""},"display":{"disabled":false,"label":"40003","icon":"power","ui_by_range":[]}},{"id":3,"source":{"slave_id":"1","function_code":"3","address":"3","pre_processing":""},"display":{"disabled":false,"label":"40004","icon":"power","ui_by_range":[]}},{"id":4,"source":{"slave_id":"1","function_code":"3","address":"0","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":5,"source":{"slave_id":"1","function_code":"3","address":"120","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":6,"source":{"slave_id":"1","function_code":"3","address":"240","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":7,"source":{"slave_id":"1","function_code":"3","address":"360","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":8,"source":{"slave_id":"1","function_code":"3","address":"480","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":9,"source":{"slave_id":"1","function_code":"3","address":"600","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":10,"source":{"slave_id":"1","function_code":"3","address":"720","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":11,"source":{"slave_id":"1","function_code":"3","address":"840","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":12,"source":{"slave_id":"1","function_code":"3","address":"960","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":13,"source":{"slave_id":"1","function_code":"3","address":"1080","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":14,"source":{"slave_id":"1","function_code":"3","address":"1200","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":15,"source":{"slave_id":"1","function_code":"3","address":"1320","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":16,"source":{"slave_id":"1","function_code":"3","address":"1440","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":17,"source":{"slave_id":"1","function_code":"3","address":"1560","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":18,"source":{"slave_id":"1","function_code":"3","address":"1680","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":19,"source":{"slave_id":"1","function_code":"3","address":"1800","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":20,"source":{"slave_id":"1","function_code":"3","address":"1920","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":21,"source":{"slave_id":"1","function_code":"3","address":"2040","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":22,"source":{"slave_id":"1","function_code":"3","address":"2160","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":23,"source":{"slave_id":"1","function_code":"3","address":"2280","quantity":120,"pre_processing":""},"display":{"disabled":true,"label":"Dải dữ liệu mới","ui_by_range":[]}},{"id":24,"source":{"slave_id":"1","function_code":"4","address":"0","pre_processing":"","quantity":120},"display":{"disabled":true,"label":"Device_Range_1_4_0_120","icon":"power","ui_by_range":[]}}],"slave_interval":{"1":10000},"object_config":{"0":{"object_id":"0","slave_id":"1","req_id":0,"req_index":0,"bitmask":65535,"division":1},"2":{"object_id":"2","slave_id":"1","req_id":0,"req_index":2,"bitmask":65535,"division":1},"3":{"object_id":"3","slave_id":"1","req_id":0,"req_index":3,"bitmask":65535,"division":1},"27":{"object_id":"27","slave_id":"1","req_id":0,"req_index":1,"bitmask":65535,"division":1}},"next_element_id":28}}}]}

Đã rút gọn để dễ đọc, phần JSON chi tiết bạn đã có sẵn.

5. Gợi Ý Kiểm Tra và Debug

  • Dùng MQTT Explorer để theo dõi dữ liệu gửi lên.

  • Kiểm tra xem các topic có đầy đủ từ address 0 đến 2399 (qua 20 request).

  • Xem phần message để xác nhận status của từng request.

6. Kết Luận

Việc giám sát hàng ngàn thanh ghi Modbus RTU bằng iNut RS485 rất khả thi nếu chia nhỏ dữ liệu theo từng block hợp lý. iNut sẽ giúp bạn gửi toàn bộ dữ liệu lên MQTT để tích hợp vào hệ thống SCADA, cloud hoặc dashboard một cách linh hoạt.

Mọi thắc mắc kỹ thuật, vui lòng liên hệ đội hỗ trợ iNut.

Last updated