Chu trình Hỏi – Đáp trong Modbus: Master và Slave giao tiếp như thế nào?

Modbus hoạt động theo mô hình Master – Slave, trong đó toàn bộ quyền chủ động nằm ở phía Master. Slave không được phép tự ý gửi dữ liệu nếu không có yêu cầu. Cơ chế trao đổi này được gọi là Request – Response (Hỏi – Đáp).

1. Nguyên lý hoạt động của chu trình Hỏi – Đáp

Chu trình giao tiếp chuẩn trong Modbus luôn đi theo thứ tự:

  1. Master gửi khung Request (Hỏi)
  2. Slave nhận và kiểm tra dữ liệu
  3. Slave gửi khung Response (Đáp)
  4. Master xử lý dữ liệu phản hồi

Nếu Slave không phản hồi trong thời gian quy định, Master sẽ coi đó là timeout.

2. Cấu trúc khung Request của Master

Một khung yêu cầu (Request) trong Modbus RTU gồm:

Address | Function Code | Start Address | Quantity | CRC

Ý nghĩa từng trường:

  • Address: Địa chỉ Slave cần giao tiếp
  • Function Code: Loại thao tác (đọc/ghi)
  • Start Address: Địa chỉ bắt đầu
  • Quantity: Số lượng thanh ghi/bit
  • CRC: Mã kiểm tra lỗi

3. Cấu trúc khung Response của Slave

Khung phản hồi từ Slave có cấu trúc:

Address | Function Code | Byte Count | Data | CRC

Trường Byte Count cho biết số byte dữ liệu trả về.

4. Ví dụ chi tiết quá trình Hỏi – Đáp

Ví dụ: Master muốn đọc 2 Holding Register bắt đầu từ địa chỉ 40001.

Request từ Master:

01 03 00 00 00 02 CRC

Response từ Slave:

01 03 04 00 64 00 C8 CRC

Phân tích:

  • Address = 01 → Slave ID
  • Function = 03 → Đọc Holding Register
  • 04 → 4 byte dữ liệu
  • 0064 (100) và 00C8 (200) là giá trị thực tế

5. Cơ chế Polling – Master điều khiển toàn bộ luồng giao tiếp

Trong hệ thống Modbus, Master thường sử dụng cơ chế Polling:

  • Lần lượt gửi request đến từng Slave theo chu kỳ
  • Chờ phản hồi
  • Chuyển sang Slave tiếp theo

Điều này giúp hệ thống tránh tình trạng nhiều thiết bị truyền dữ liệu cùng lúc gây xung đột.

6. Timeout và Retry – Hai cơ chế sống còn của Master

Để đảm bảo hệ thống ổn định, Master luôn phải:

  • Thiết lập thời gian Timeout hợp lý
  • Cấu hình số lần Retry tối đa

Nếu gửi request mà không nhận được response, Master sẽ:

  • Gửi lại lệnh (Retry)
  • Đánh dấu Slave ở trạng thái lỗi nếu vượt quá số lần retry

7. Phân biệt phản hồi bình thường và phản hồi Exception

Có hai kiểu phản hồi từ Slave:

  • Normal Response: Trả về dữ liệu hợp lệ
  • Exception Response: Trả về mã lỗi (Function Code + 0x80)

Điều này giúp Master biết được Slave từ chối yêu cầu vì lý do gì.

8. Lỗi thường gặp trong chu trình Hỏi – Đáp Modbus

  • Master gửi sai Slave ID
  • Timeout quá thấp so với tốc độ truyền
  • Thiết lập sai baudrate, parity, stop bit
  • Nhiễu truyền thông làm sai CRC

9. Kết luận

Chu trình Hỏi – Đáp chính là nền tảng giúp Modbus hoạt động ổn định suốt hàng chục năm trong công nghiệp. Khi hiểu rõ cơ chế này, bạn có thể:

  • Thiết kế hệ thống truyền thông tin cậy
  • Dễ dàng mở rộng số lượng thiết bị
  • Tối ưu thời gian phản hồi của toàn 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.