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ồiFunction CodeGiá 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

  1. Kiểm tra kết nối TCP (ping, port 502)
  2. Kiểm tra MBAP Header
  3. Đối chiếu Function Code
  4. So sánh địa chỉ trong Register Map
  5. Kiểm tra Unit ID

7. So sánh Exception Codes trong TCP và RTU

Tiêu chíModbus TCPModbus 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.


 
 

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.