Phân Tích Frame Phản Hồi Modbus RTU: Byte Count – Data – Exception

Sau khi hiểu cấu trúc Frame yêu cầu (Request) của Modbus RTU, bước tiếp theo trong quá trình làm chủ giao thức này là nắm vững Frame phản hồi (Response Frame). Đây chính là phần dữ liệu mà thiết bị Slave gửi về sau khi nhận lệnh từ Master.


1. Tổng quan về Modbus RTU Response Frame

Frame phản hồi của Modbus RTU có cấu trúc gần giống Frame yêu cầu, nhưng có thêm những thành phần đặc trưng như Byte Count, Data FieldException Code (trong trường hợp lỗi).

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

Address | Function Code | Byte Count | Data | CRC

2. Byte Count – Trường đếm số byte dữ liệu

Byte Count là trường thể hiện số lượng byte dữ liệu thực tế sẽ xuất hiện trong phần Data Field ngay sau đó.

Ví dụ:

  • Nếu đọc 2 thanh ghi Holding Register → Dữ liệu trả về là 4 byte → Byte Count = 0x04
  • Nếu đọc 4 Coil → Dữ liệu gói trong 1 byte → Byte Count = 0x01

Trường này giúp Master biết chính xác phải đọc bao nhiêu byte dữ liệu tiếp theo.

3. Data Field – Trường dữ liệu chính

Đây là phần quan trọng nhất của Frame phản hồi, nơi chứa dữ liệu thực tế từ Slave.

Nội dung Data Field phụ thuộc vào Function Code:

Function CodeÝ nghĩa Data Field
0x01 Trạng thái các Coil (được đóng gói theo bit)
0x03 Giá trị các Holding Register (mỗi thanh ghi = 2 byte)
0x04 Giá trị Input Register

Dữ liệu được truyền theo thứ tự Big-endian (byte cao trước, byte thấp sau).

4. Frame khi xảy ra lỗi – Exception Response

Khi Slave không thể thực hiện yêu cầu, nó sẽ trả về một Frame lỗi gọi là Exception Response.

Đặc điểm của Frame lỗi:

  • Function Code sẽ được cộng thêm 0x80
  • Phần Data chỉ còn 1 byte – gọi là Exception Code

Cấu trúc:

Address | (Function Code + 0x80) | Exception Code | CRC

4.1 Các Exception Code phổ biến

Exception CodeÝ nghĩa
0x01 Illegal Function – Hàm không hợp lệ
0x02 Illegal Data Address – Địa chỉ không tồn tại
0x03 Illegal Data Value – Giá trị dữ liệu sai
0x04 Slave Device Failure – Lỗi thiết bị Slave

5. Ví dụ phân tích Frame phản hồi thực tế

Ví dụ Slave trả về dữ liệu khi đọc Holding Register:

01 03 02 00 64 B9 AF
  • 01: Địa chỉ Slave
  • 03: Function Code
  • 02: Byte Count (2 byte data)
  • 00 64: Giá trị thanh ghi = 100 (thập phân)
  • B9 AF: CRC

6. Ý nghĩa thực tế trong hệ thống công nghiệp

Hiểu Frame phản hồi giúp kỹ sư:

  • Chuẩn đoán lỗi nhanh khi hệ thống không phản hồi
  • Phân tích log truyền thông từ Serial Sniffer
  • Tối ưu thời gian quét (scan time) trong PLC

7. Kết luận

Frame phản hồi Modbus RTU không chỉ đơn thuần là dữ liệu trả về, mà còn là chìa khóa để giám sát sức khỏe hệ thống truyền thông. Việc hiểu Byte Count, Data Field và Exception Code giúp bạn kiểm soát hệ thống một cách chuyên nghiệp hơn.

📌 Bài viết tiếp theo thuộc Series: CRC trong Modbus là gì? Cách tính CRC-16 và ý nghĩa từng bit

 
 

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.