Exception Response trong Modbus – Khi Slave trả về mã lỗi

Trong truyền thông Modbus, không phải lúc nào Slave cũng chấp nhận yêu cầu từ Master. Khi xảy ra lỗi, thay vì trả về dữ liệu bình thường, Slave sẽ gửi một khung đặc biệt gọi là Exception Response (Phản hồi ngoại lệ).
Đây là cơ chế quan trọng giúp kỹ sư nhanh chóng phát hiện lỗi sai địa chỉ, sai chức năng hoặc lỗi bên trong thiết bị.
1. Exception Response là gì?
Exception Response là khung phản hồi mà Slave gửi về khi:
- Master yêu cầu một Function Code không được hỗ trợ
- Địa chỉ thanh ghi không tồn tại
- Giá trị ghi vào vượt phạm vi cho phép
- Thiết bị Slave đang bận hoặc gặp lỗi nội bộ
2. Cấu trúc khung Exception trong Modbus RTU
Khung lỗi Modbus RTU có cấu trúc:
Trong đó:
- Address: Địa chỉ của Slave
- Function + 0x80: Function Code gốc cộng thêm 0x80 để báo lỗi
- Exception Code: Mã lỗi chi tiết
- CRC: Mã kiểm tra lỗi truyền thông
3. Ví dụ khung Exception thực tế
Master gửi yêu cầu đọc Holding Register:
Slave trả về:
Giải thích:
- 01 → Địa chỉ Slave
- 83 → 03 + 0x80 → Lỗi khi gọi Function 03
- 02 → Illegal Data Address (Địa chỉ không tồn tại)
4. Các mã lỗi phổ biến trong Modbus (Exception Code)
| Mã lỗi | Tên lỗi | Ý nghĩa |
|---|---|---|
| 01 | Illegal Function | Function Code không được Slave hỗ trợ |
| 02 | Illegal Data Address | Địa chỉ thanh ghi không tồn tại |
| 03 | Illegal Data Value | Giá trị ghi vượt phạm vi cho phép |
| 04 | Slave Device Failure | Lỗi nội bộ của thiết bị Slave |
| 05 | Acknowledge | Slave đã 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ý yêu cầu |
5. Khi gặp Exception Response, Master nên làm gì?
Trong thiết kế hệ thống thực tế, Master không nên bỏ qua các khung lỗi này. Một chiến lược xử lý phổ biến:
- Ghi log lỗi để kỹ thuật viên theo dõi
- Thực hiện retry (gửi lại) sau một khoảng thời gian
- Giới hạn số lần retry để tránh treo hệ thống
6. Các lỗi Exception thường gặp trong thực tế nhà máy
- Đọc nhầm vùng Holding Register thành Input Register
- Sai offset địa chỉ (0-based và 1-based)
- Ghi giá trị vượt giới hạn cho phép của biến tần, PLC
- Thiết bị đang xử lý tác vụ nội bộ nên tạm thời không phản hồi
7. Kết luận
Exception Response giúp Modbus trở nên an toàn và đáng tin cậy hơn. Thay vì "im lặng" khi có lỗi, Slave sẽ phản hồi chính xác lý do từ chối yêu cầu. Khi hiểu rõ các mã lỗi này, kỹ sư có thể:
- Rút ngắn thời gian xử lý sự cố
- Thiết kế hệ thống ổn định hơn
- Dễ dàng bảo trì, chuẩn đoán trong công nghiệp
Xem thêm:
- Khi nào nên dùng Modbus TCP thay vì Modbus RTU? Phân tích chi tiết
- 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
- Chuyển đổi Modbus RTU Slave ↔ HART Master bằng HD67908-5-A1 — Giải pháp kết nối thiết bị trường vào hệ SCADA/PLC
"BKAII - Thiết bị truyền thông TỐT nhất với giá CẠNH TRANH nhất!"