So sánh PDU và ADU trong Modbus TCP – Cách đóng gói dữ liệu thực tế

Trong Modbus TCP, hai khái niệm thường gây nhầm lẫn nhất chính là PDU (Protocol Data Unit)ADU (Application Data Unit). Hôm nay BKAII sẽ cùng các bạn  phân  biệt rõ hai lớp này giúp kỹ sư tự động hóa hiểu chính xác cách PLC, HMI, SCADA đóng gói và truyền dữ liệu qua mạng Ethernet.

Bài viết này  hy vọng sẽ giúp bạn:

  • Hiểu bản chất của PDU và ADU
  • Nắm cách dữ liệu được đóng gói trong Modbus TCP
  • Biết cách đọc và phân tích frame thực tế khi bắt gói tin Wireshark

1. PDU trong Modbus là gì?

PDU (Protocol Data Unit) là phần lõi của giao thức Modbus, chứa:

  • Function Code – Mã hàm
  • Data – Dữ liệu đi kèm (địa chỉ, số lượng thanh ghi, giá trị…)

Cấu trúc tổng quát của PDU:

| Function Code (1 byte) | Data (N bytes) |

Ví dụ PDU – Lệnh đọc Holding Register (FC = 03)

03 00 00 00 02

Giải thích:

  • 03 → Function Code (Read Holding Registers)
  • 00 00 → Địa chỉ bắt đầu
  • 00 02 → Số lượng thanh ghi cần đọc

2. ADU trong Modbus TCP là gì?

ADU (Application Data Unit) là khung dữ liệu hoàn chỉnh được truyền đi trên mạng.

Trong Modbus TCP, ADU bao gồm:

  • MBAP Header (7 byte)
  • PDU

Sơ đồ cấu trúc ADU trong Modbus TCP:

| MBAP Header (7 bytes) | PDU (Function + Data) |

3. So sánh trực tiếp PDU và ADU

Tiêu chíPDUADU
Thành phần Function Code + Data MBAP Header + PDU
Có phụ thuộc loại Modbus? Không (dùng chung cho RTU, ASCII, TCP) Có (khác nhau giữa TCP và RTU)
Mục đích Chứa nội dung lệnh Đóng gói để truyền đi trên mạng
Có CRC? Không Không (Modbus TCP dùng TCP checksum)

4. Quy trình đóng gói dữ liệu trong Modbus TCP

Quá trình đóng gói dữ liệu diễn ra theo thứ tự:

  1. Ứng dụng (SCADA/HMI) tạo PDU
  2. Hệ thống thêm MBAP Header phía trước → tạo thành ADU
  3. ADU được đưa vào TCP Segment → gửi qua mạng Ethernet

Sơ đồ minh họa:

Application Data
       ↓
      PDU
       ↓
  MBAP + PDU = ADU
       ↓
   TCP/IP Frame

5. Ví dụ thực tế: Đóng gói một gói tin Modbus TCP

Yêu cầu: đọc 2 thanh ghi từ địa chỉ 0x0000

Bước 1 – Tạo PDU

03 00 00 00 02

Bước 2 – Thêm MBAP Header để tạo ADU

00 01   → Transaction ID
00 00   → Protocol ID
00 06   → Length
01      → Unit ID
03 00 00 00 02 → PDU

ADU hoàn chỉnh:

00 01 00 00 00 06 01 03 00 00 00 02

6. PDU và ADU trong các biến thể Modbus

Chuẩn ModbusCấu trúc ADU
Modbus TCP MBAP Header + PDU
Modbus RTU Slave Address + PDU + CRC
Modbus ASCII Start + Address + PDU + LRC + End

7. Lỗi phổ biến khi hiểu sai PDU và ADU

  • Nhầm lẫn PDU là toàn bộ khung Modbus
  • Tính sai Length trong MBAP do hiểu nhầm ranh giới PDU
  • Phân tích sai frame khi dùng Wireshark

8. Kết luận

PDU là phần nội dung lệnh, còn ADU là bản đóng gói hoàn chỉnh để truyền trên mạng. Trong Modbus TCP, ADU = MBAP Header + PDU. Hiểu đúng hai lớp này giúp bạn debug nhanh, đọc frame chính xác và thiết kế hệ thống truyền thông ổn định hơn.


 
 

Số lượng người đang truy cập...

Không thể hiển thị dữ liệu người dùng trực tuyến vào lúc này.