Exception Codes trong Modbus TCP – Nguyên nhân lỗi và cách xử lý chi tiết

Trong quá trình thực tế triển khai giao tiếp truyền thông Modbus TCP, không phải lúc nào Server (PLC, Remote I/O, Gateway...) cũng trả về dữ liệu hợp lệ. Khi xảy ra lỗi, Server sẽ phản hồi bằng Exception Codes (Mã ngoại lệ). Việc hiểu rõ các mã này giúp kỹ sư xử lý sự cố nhanh chóng trên hiện trường. Hôm nay BKAII sẽ cùng các bạn tiếp tục đào sâu về vấn đề này nhé!
1. Exception Code trong Modbus TCP là gì?
Exception Code là mã lỗi được Server trả về khi không thể xử lý yêu cầu từ Client.
Khi xảy ra lỗi:
- Function Code trong phản hồi sẽ cộng thêm 0x80
- Byte tiếp theo là Exception Code
Ví dụ:
| Loại phản hồi | Function Code | Giá trị thực |
|---|---|---|
| Yêu cầu đọc Holding Register | 03 | 0x03 |
| Phản hồi lỗi | 03 + 0x80 | 0x83 |
2. Cấu trúc gói tin phản hồi lỗi (Exception Response)
| Function Code + 0x80 | Exception Code |
Ví dụ khung lỗi thực tế:
83 02
Giải thích:
- 83 → Function Code 03 bị lỗi
- 02 → Illegal Data Address
3. Bảng tổng hợp Exception Codes phổ biến trong Modbus TCP
| Code (Hex) | Tên lỗi | Ý nghĩa |
|---|---|---|
| 01 | Illegal Function | Thiết bị không hỗ trợ Function Code |
| 02 | Illegal Data Address | Địa chỉ thanh ghi không hợp lệ |
| 03 | Illegal Data Value | Giá trị dữ liệu không hợp lệ |
| 04 | Slave Device Failure | Lỗi nội bộ thiết bị |
| 05 | Acknowledge | Thiết bị đã nhận lệnh nhưng cần thêm thời gian xử lý |
| 06 | Slave Device Busy | Thiết bị đang bận, không thể xử lý ngay |
| 08 | Memory Parity Error | Lỗi bộ nhớ |
| 0A | Gateway Path Unavailable | Gateway không truy cập được thiết bị đích |
| 0B | Gateway Target Device Failed to Respond | Thiết bị đích không phản hồi |
4. Phân tích từng lỗi thường gặp nhất trong thực tế
4.1. Lỗi 01 – Illegal Function
Nguyên nhân thực tế:
- Thiết bị không hỗ trợ Function Code đó
- Sử dụng sai loại vùng nhớ (ví dụ ghi vào Input Register)
Cách khắc phục:
- Kiểm tra tài liệu thiết bị
- Đảm bảo Function Code phù hợp
4.2. Lỗi 02 – Illegal Data Address
Nguyên nhân:
- Địa chỉ thanh ghi vượt phạm vi
- Lệch offset giữa tài liệu và phần mềm cấu hình
Cách xử lý:
- Đối chiếu lại bản đồ thanh ghi (Register Map)
- Test thử địa chỉ thấp hơn
4.3. Lỗi 03 – Illegal Data Value
Nguyên nhân:
- Ghi giá trị vượt giới hạn cho phép
- Sai độ dài dữ liệu
4.4. Lỗi 04 – Slave Device Failure
Nguyên nhân:
- Lỗi phần cứng PLC
- Lỗi firmware
4.5. Lỗi 0A / 0B – Lỗi Gateway
Xảy ra khi dùng thiết bị chuyển đổi:
- Modbus TCP ↔ Modbus RTU Gateway
- Router công nghiệp
5. Ví dụ khung lỗi thực tế khi bắt gói bằng Wireshark
Response thực tế:
00 01 00 00 00 03 01 83 02
Phân tích:
- 83 → Lỗi của Function Code 03
- 02 → Illegal Data Address
6. Checklist quy trình xử lý lỗi Modbus TCP nhanh chóng
- Kiểm tra kết nối TCP (ping, port 502)
- Kiểm tra MBAP Header
- Đối chiếu Function Code
- So sánh địa chỉ trong Register Map
- Kiểm tra Unit ID
7. So sánh Exception Codes trong TCP và RTU
| Tiêu chí | Modbus TCP | Modbus RTU |
|---|---|---|
| Hình thức mã lỗi | Function Code + 0x80 | Function Code + 0x80 |
| Bảo vệ lỗi | TCP Checksum | CRC |
8. Kết luận
Exception Codes là công cụ quan trọng giúp chẩn đoán lỗi trong hệ thống Modbus TCP. Khi hiểu đúng ý nghĩa từng mã, kỹ sư có thể giảm rất nhiều thời gian debug và tăng độ ổn định cho hệ thống.
Xem thêm:
- Series: Giải phẫu Modbus – Từ cơ bản đến chuyên sâu
- Các kỹ thuật tối ưu tốc độ truyền Modbus TCP trong hệ thống SCADA
- Chu trình Hỏi – Đáp trong Modbus: Master và Slave giao tiếp như thế nào?
- Phân biệt Master và Slave trong Modbus RTU & Modbus TCP (Client vs Server)
- So sánh giao thức truyền thông công nghiệp: PROFIBUS-DP và Modbus RTU
- Modbus RTU và Modbus TCP là gì? So sánh và cách chọn đúng chuẩn cho hệ thống
"BKAII - Thiết bị truyền thông TỐT nhất với giá CẠNH TRANH nhất!"