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 Field và Exception 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.