CoderTools

Trình Phân tích Giao thức Modbus

Phân tích, chuyển đổi và gỡ lỗi truyền thông Modbus RTU/ASCII/TCP

Vui lòng nhập dữ liệu

Tham khảo Giao thức Modbus

Modbus là giao thức truyền thông công nghiệp được sử dụng rộng rãi nhất, được phát triển bởi Modicon vào năm 1979. Nó cho phép giao tiếp giữa các thiết bị điện tử qua đường nối tiếp (RTU) hoặc Ethernet (TCP/IP). Công cụ này giúp kỹ sư gỡ lỗi và phân tích truyền thông Modbus mà không cần phần cứng hoặc phần mềm chuyên dụng.

Cấu trúc Khung Modbus RTU

Modbus RTU (Remote Terminal Unit) truyền dữ liệu ở định dạng nhị phân qua các kết nối nối tiếp như RS-232 hoặc RS-485. Mỗi khung bao gồm địa chỉ slave, mã chức năng, dữ liệu và checksum CRC 16-bit để phát hiện lỗi. Định dạng nhị phân nhỏ gọn làm cho RTU hiệu quả trong môi trường có băng thông hạn chế.

Slave ID
1 byte
Function
1 byte
Data
N bytes
CRC-16
2 bytes

Modbus RTU Frame Structure

Cấu trúc Khung Modbus TCP

Modbus TCP đóng gói các khung RTU trong các gói TCP/IP, sử dụng header MBAP (Modbus Application Protocol) 7 byte. Header này chứa ID giao dịch để khớp yêu cầu-phản hồi, định danh giao thức (luôn là 0 cho Modbus), độ dài tin nhắn và ID đơn vị. Giao tiếp TCP sử dụng cổng 502 theo mặc định.

Trans ID
2 bytes
Proto ID
2 bytes
Length
2 bytes
Unit ID
1 byte
Function
1 byte
Data
N bytes

Modbus TCP Frame Structure (MBAP Header + PDU)

Các Mã Chức năng Phổ biến

Mã chức năng định nghĩa loại thao tác trong yêu cầu Modbus. Các thao tác đọc (01-04) lấy trạng thái cuộn dây hoặc giá trị thanh ghi, trong khi các thao tác ghi (05, 06, 0F, 10) sửa đổi dữ liệu thiết bị. Mỗi mã chức năng có yêu cầu định dạng dữ liệu cụ thể.

Chức năng Loại
0x01Đọc CoilsĐọc
0x02Đọc đầu vào rời rạcĐọc
0x03Đọc thanh ghi lưu giữĐọc
0x04Đọc thanh ghi đầu vàoĐọc
0x05Ghi một CoilGhi
0x06Ghi một thanh ghiGhi
0x0FGhi nhiều CoilsGhi
0x10Ghi nhiều thanh ghiGhi

Thứ tự Byte trong Modbus

Các nhà sản xuất PLC khác nhau sử dụng các thứ tự byte khác nhau cho các giá trị 32-bit và 64-bit. Bốn cách sắp xếp phổ biến là: Big Endian (ABCD) - thứ tự mạng tiêu chuẩn; Little Endian (DCBA); Mid-Big Endian (BADC); và Mid-Little Endian (CDAB). Khi đọc được giá trị sai, hãy thử các thứ tự byte khác nhau để tìm cách giải thích đúng.

Big Endian (ABCD)
A B C D
Little Endian (DCBA)
D C B A
Mid-Big Endian (BADC)
B A D C
Mid-Little Endian (CDAB)
C D A B

Thuật toán CRC-16/Modbus

Modbus RTU sử dụng CRC-16 với đa thức 0x8005 và giá trị khởi tạo 0xFFFF để phát hiện lỗi. CRC được tính trên địa chỉ slave, mã chức năng và các byte dữ liệu, sau đó được thêm vào với byte thấp đầu tiên. Khung có CRC sai phải bị loại bỏ bởi bên nhận.

Đa thức: 0x8005
Giá trị khởi tạo: 0xFFFF
Đảo ngược đầu vào:
Đảo ngược đầu ra:

Ứng dụng Thực tế

  • Khắc phục lỗi giao tiếp giữa PLC và hệ thống SCADA bằng cách phân tích dữ liệu gói tin thô
  • Xác minh giá trị thanh ghi trong quá trình vận hành bằng cách chuyển đổi dữ liệu hex sang đơn vị kỹ thuật
  • Tạo lệnh thử nghiệm để xác thực thiết bị mà không cần phần mềm Modbus master chuyên dụng
  • Gỡ lỗi vấn đề thứ tự byte khi tích hợp thiết bị từ các nhà sản xuất khác nhau

Công Cụ Liên Quan

Menu Nhanh

Chưa có công cụ gần đây