Bỏ qua tới nội dung
LSLab

Modbus RTU hỏi và trả lời dữ liệu như thế nào?

  • Cơ bản
  • Bài viết
  • Từ 15 tuổi
  • 4 phút đọc
Bộ điều khiển công nghiệp và đồng hồ đo số gắn thanh DIN được nối bằng cáp trên bàn thử nghiệm.

Modbus RTU là cách các thiết bị trao đổi dữ liệu theo kiểu hỏi và đáp: master gửi yêu cầu; slave thường trả lời yêu cầu unicast hợp lệ, còn slave không nên phản hồi broadcast. Dữ liệu đi ở dạng nhị phân và các bản tin được tách nhau bằng khoảng lặng trên đường truyền.

Mục lục
Ví dụ unicast: master gửi yêu cầu và nhận phản hồi.
  • Master
  • Các slave

Bạn sẽ học được gì

  • Mô tả được vai trò của master và slave.
  • Kể được các phần trong một bản tin Modbus RTU.
  • Giải thích được vì sao khoảng lặng quan trọng.

Cần biết trước

Nên biết UART và tín hiệu vi sai là gì.

Modbus hỏi và đáp ra sao?

Modbus là giao thức hỏi và đáp, thực hiện theo quan hệ master và slave. Thiết bị khởi tạo, tức master, chịu trách nhiệm bắt đầu mọi tương tác. Một cuộc trao đổi luôn do master trong mạng bắt đầu.

Với unicast, địa chỉ xác định slave nhận yêu cầu; các slave khác bỏ qua yêu cầu đó. Slave thường phản hồi yêu cầu unicast hợp lệ gửi đúng địa chỉ của nó. Địa chỉ 0 là broadcast: các slave nên xử lý yêu cầu ghi hợp lệ gửi tới địa chỉ này, và không slave nào nên phản hồi.

Trong yêu cầu unicast, slave có địa chỉ khớp mới trả lời.
  • Master
  • Slave có địa chỉ khớp
  • Yêu cầu
  • Phản hồi

Một bản tin Modbus RTU gồm những phần nào?

Với Modbus RTU, dữ liệu được trao đổi ở dạng nhị phân, mỗi byte thông tin được mã hóa trong một byte truyền. Bản tin gồm địa chỉ, mã chức năng, dữ liệu và phần kiểm tra lỗi.

Master phải gửi yêu cầu truy cập dữ liệu của slave thông qua các mã chức năng khác nhau. Không phải thiết bị Modbus nào cũng nhận biết cùng một tập mã chức năng.

Một bản tin gồm địa chỉ, mã chức năng, dữ liệu và phần kiểm tra lỗi.
  • Địa chỉ
  • Mã chức năng
  • Dữ liệu
  • Kiểm tra lỗi

Khi trả lời, slave thường dùng cùng mã chức năng như trong yêu cầu. Trong phản hồi ngoại lệ khi có lỗi, bit cao nhất của mã chức năng gốc được bật lên. Một phần kiểm tra lỗi được nối thêm để bên nhận kiểm tra có lỗi truyền thông hay không.

Làm sao biết một bản tin đã kết thúc?

Modbus RTU dùng các khoảng lặng trên đường truyền để phân khung. Vì vậy cần gửi mỗi bản tin thành một dòng liên tục; khoảng nghỉ giữa các ký tự không được đạt ngưỡng phân khung.

Thiết bị cấu hình Modbus ASCII không hiểu bản tin Modbus RTU và ngược lại, nên hai bên phải dùng cùng một chế độ.

Khoảng lặng cho bên nhận biết một bản tin kết thúc.
  • Khoảng lặng
  • Một bản tin liên tục

Ví dụ trong đời sống

Hãy cùng người lớn nghĩ về một đồng hồ đo điện trong tòa nhà. Hệ thống giám sát hỏi đồng hồ một giá trị, và chỉ đồng hồ có đúng địa chỉ mới đáp lại.

Hiểu lầm thường gặp

Slave có thể tự gửi dữ liệu bất cứ lúc nào. Một cuộc trao đổi luôn do master bắt đầu.

Thiết bị Modbus nào cũng hiểu mọi mã chức năng. Không phải thiết bị nào cũng nhận biết cùng một tập mã chức năng.

Câu hỏi thường gặp

Master và slave khác nhau thế nào?

Master khởi tạo yêu cầu; slave thường trả lời yêu cầu unicast hợp lệ gửi đến địa chỉ của nó. Không slave nào nên phản hồi địa chỉ broadcast 0.

Bản tin Modbus RTU gồm gì?

Địa chỉ, mã chức năng, dữ liệu và phần kiểm tra lỗi.

Mã chức năng bị bật bit cao nhất nghĩa là gì?

Trong phản hồi ngoại lệ khi có lỗi, bit cao nhất của mã chức năng gốc được bật lên.

Modbus RTU phân khung bằng cách nào?

Bằng các khoảng lặng trên đường truyền.

Tóm tắt

Thuật ngữ trong bài

Tên tiếng Việt, tên tiếng Anh và nghĩa dùng trong bài. Di chuột, chạm hoặc dùng phím Tab tới từ có gạch chân chấm để xem giải thích ngay khi đọc.

Modbus RTU
Chế độ Modbus truyền dữ liệu nhị phân và phân khung bằng khoảng lặng trên đường truyền.
Master và slaveMaster and slave
Master khởi tạo yêu cầu; slave thường phản hồi unicast hợp lệ, còn slave không nên phản hồi broadcast.
Mã chức năngFunction code
Mã trong bản tin cho biết master muốn slave thực hiện thao tác nào với dữ liệu.
Địa chỉ trong bản tinMessage address
Trường xác định slave nhận unicast; địa chỉ 0 dành cho broadcast.
Kiểm tra lỗiError check
Phần nối thêm vào bản tin để bên nhận phát hiện lỗi truyền thông.

Bài này chưa được đánh dấu là đã xem

Thấy nội dung sai hoặc chưa an toàn?

Báo cho quản trị viên qua email. Thư có sẵn tên bài và đường dẫn.

Báo lỗi bài này
  • Bo mạch vi điều khiển nhỏ có shield kim loại nối với cảm biến nhiệt độ qua dây.
    Cơ bản

    Bo ESP32 chạy chương trình và giao tiếp ra sao?

    Bo ESP32 gắn module ESP32 với cổng USB và hàng chân; bài giải thích các phần của bo, cách nạp firmware qua cổng nối tiếp và khả năng Wi-Fi, Bluetooth.

    Internet vạn vật (IoT)4 phút đọc
  • Bo mạch phát triển vi điều khiển cắm cáp USB, đèn trạng thái màu hổ phách đang sáng.
    Cơ bản

    Arduino chạy setup và loop như thế nào?

    Chương trình Arduino gọi là sketch gồm hai hàm: setup chạy một lần, loop lặp liên tục; bài giải thích thứ tự chạy, vì sao loop không nghỉ và hàm delay.

    Internet vạn vật (IoT)4 phút đọc
  • Bo mạch vi điều khiển nối qua cáp USB với laptop, router không dây ở phía sau.
    Khởi động

    Tổng quan: Firmware và kết nối mạng IoT

    Cái nhìn tổng quan về firmware chạy trên thiết bị IoT, vòng setup và loop, cách MQTT gửi bản tin lên mạng và hướng dẫn an toàn do NIST công bố.

    Internet vạn vật (IoT)4 phút đọc
  • Cảm biến chất lượng không khí, gateway Wi-Fi hai ăng-ten và máy tính bảng được đặt cùng nhau trên bàn lab.
    Cơ bản

    MQTT chuyển bản tin qua broker như thế nào?

    MQTT là giao thức xuất bản và đăng ký: broker nhận bản tin theo chủ đề rồi chuyển cho bên đã đăng ký; bài nêu chủ đề, ký tự thay thế, ba mức QoS.

    Internet vạn vật (IoT)4 phút đọc
Xem tất cả bài của chủ đề

Nguồn

Các nguồn này viết cho người đọc lớn hơn. Nếu thấy khó, hãy đọc cùng người lớn.