HOANTRANTDHPHẦN MỀM KỸ THUẬTBáo giá
Trang chủ › Phần mềm kỹ thuật › Công cụ Modbus RTU · Cập nhật 24/10/2026

Công cụ Modbus RTU trên trình duyệt – đọc/ghi thanh ghi, tính CRC, giải mã khung

Kết nối máy tính với thiết bị Modbus RTU qua bộ chuyển đổi USB–RS485, đọc và ghi thanh ghi ngay trên trình duyệt Chrome hoặc Edge, không cần cài phần mềm. Hiển thị giá trị dạng số nguyên, số thực 32 bit với nhiều thứ tự byte, kèm nhật ký khung truyền dạng hex.

Phần tạo khung và giải mã khung chạy được trên mọi trình duyệt, kể cả điện thoại – hữu ích khi đọc tài liệu, kiểm tra CRC hoặc phân tích dữ liệu bắt được từ đường truyền.

1. Kết nối và đọc/ghi thiết bị (Web Serial)

Chưa kết nối

Địa chỉ Thanh ghi 4x/3x Giá trị
Nhật ký khung truyền (TX/RX) sẽ hiển thị ở đây.

2. Tạo khung Modbus RTU và tính CRC

Dùng các thông số ở mục 1 (ID, chức năng, địa chỉ, số lượng, giá trị ghi) để tạo khung yêu cầu hoàn chỉnh – dán vào phần mềm terminal hoặc đối chiếu với tài liệu thiết bị.

–

3. Giải mã khung phản hồi

Dán khung hex (có hoặc không có khoảng trắng). Công cụ kiểm tra CRC, nhận diện mã lỗi (exception) và tách giá trị thanh ghi theo kiểu dữ liệu đã chọn ở mục 1.

Tra nhanh Modbus

Mã lỗi Ý nghĩa Cách xử lý thường gặp
01 Illegal Function Thiết bị không hỗ trợ mã chức năng – thử 03 thay vì 04 hoặc ngược lại.
02 Illegal Data Address Sai địa chỉ: kiểm tra địa chỉ 0-based hay 1-based (40001 tương ứng địa chỉ 0).
03 Illegal Data Value Số lượng thanh ghi vượt giới hạn hoặc giá trị ghi ngoài dải cho phép.
04 Slave Device Failure Lỗi bên trong thiết bị – xem mã lỗi trên màn hình thiết bị.
06 Slave Device Busy Thiết bị đang bận, tăng thời gian giữa các lệnh.
Không phản hồi Timeout Kiểm tra A/B đảo dây, tốc độ baud, parity, địa chỉ slave, điện trở đầu cuối 120 Ω và đất chung.
  • Địa chỉ thanh ghi: tài liệu ghi 40001 thì nhập địa chỉ 0 với chức năng 03; 30001 → địa chỉ 0 với chức năng 04.
  • Số thực 32 bit chiếm 2 thanh ghi; nếu giá trị hiển thị vô lý, thử đổi thứ tự byte (ABCD ↔ CDAB).
  • Mạng RS-485: nối dây kiểu bus (daisy-chain), không đấu hình sao; điện trở 120 Ω ở hai đầu xa nhất; cáp xoắn đôi có chống nhiễu.

Kiến thức chuyên sâu: Modbus RTU và RS-485 từ gốc

Modbus là giao thức truyền thông công nghiệp phổ biến nhất nhờ đơn giản và mở. Phần lớn sự cố “không đọc được Modbus” đến từ một số nguyên nhân lặp đi lặp lại: sai địa chỉ thanh ghi, sai thứ tự byte, sai thông số cổng hoặc đấu dây RS-485 chưa đúng. Hiểu các nguyên tắc dưới đây sẽ giúp bạn xử lý phần lớn tình huống trong vài phút.

1. Cấu trúc khung Modbus RTU

Modbus hoạt động theo mô hình hỏi–đáp: một master (PLC, SCADA, máy tính) gửi yêu cầu, một slave (đồng hồ điện, biến tần, cảm biến) trả lời. Mỗi khung gồm:

Địa chỉ slaveMã chức năngDữ liệu (địa chỉ, số lượng, giá trị)CRC16 (2 byte)1 byte1 byte0 – 252 bytebyte thấp trước

Giải mã ví dụ: yêu cầu 01 03 00 00 00 02 C4 0B = gửi slave 1, chức năng 03 (đọc holding register), bắt đầu từ địa chỉ 0, đọc 2 thanh ghi, CRC = C4 0B. Phản hồi 01 03 04 00 7B 01 C8 8A 2C = slave 1, chức năng 03, 4 byte dữ liệu: thanh ghi thứ nhất 0x007B = 123, thanh ghi thứ hai 0x01C8 = 456, CRC = 8A 2C.

Trong RTU, ranh giới giữa các khung được xác định bằng khoảng lặng tối thiểu 3,5 ký tự. Ở 9600 bps (11 bit mỗi ký tự kể cả start, parity/stop), một ký tự mất khoảng 1,15 ms, nên khoảng lặng khoảng 4 ms; từ 19200 bps trở lên, tiêu chuẩn khuyến nghị giá trị cố định 1,75 ms. Bộ chuyển đổi USB–RS485 có độ trễ lớn hoặc phần mềm gửi từng byte rời rạc có thể làm khung bị cắt đôi.

2. Bốn vùng dữ liệu và chuyện “40001 hay 0”

Vùng Kiểu Quyền Mã chức năng Ký hiệu truyền thống
Coil 1 bit Đọc/ghi 01, 05, 15 0xxxx
Discrete Input 1 bit Chỉ đọc 02 1xxxx
Input Register 16 bit Chỉ đọc 04 3xxxx
Holding Register 16 bit Đọc/ghi 03, 06, 16 4xxxx

Trên đường truyền, địa chỉ luôn bắt đầu từ 0. Ký hiệu “40001” là cách viết của tài liệu: chữ số 4 chỉ vùng holding register, 0001 là thanh ghi thứ nhất – tương ứng địa chỉ 0 với mã chức năng 03. Nếu đọc được nhưng dữ liệu “lệch một thanh ghi”, gần như chắc chắn là nhầm giữa địa chỉ 0-based và 1-based.

3. Số thực, số 32 bit và thứ tự byte

Một thanh ghi chỉ có 16 bit. Giá trị lớn hơn 65535 hoặc số thực (FLOAT32 theo IEEE 754) phải ghép hai thanh ghi liên tiếp. Tiêu chuẩn Modbus không quy định thứ tự ghép, nên mỗi hãng làm một kiểu:

  • ABCD (big-endian): thanh ghi đầu là phần cao – phổ biến nhất.
  • CDAB (word swap): thanh ghi đầu là phần thấp – hay gặp ở đồng hồ điện, một số PLC.
  • BADC, DCBA: ít gặp hơn, có đảo byte trong mỗi thanh ghi.
Ví dụ: hai thanh ghi đọc được là 0x41BC và 0x0000. Ghép ABCD → 0x41BC0000 = 23,5 (hợp lý cho nhiệt độ). Nếu thiết bị dùng CDAB mà bạn ghép ABCD, giá trị sẽ thành một số cực nhỏ vô nghĩa. Mẹo: khi không có tài liệu, thử lần lượt các kiểu trong công cụ ở trên cho đến khi ra giá trị khớp với màn hình thiết bị.

Giá trị nhân hệ số (scaling): nhiều thiết bị gửi số nguyên đã nhân 10 hoặc 100 để giữ phần thập phân. Ví dụ thanh ghi nhiệt độ đọc 235 với hệ số 0,1 nghĩa là 23,5 °C. Luôn kiểm tra cột “scale”, “resolution” hoặc “unit” trong bảng thanh ghi của nhà sản xuất.

4. Lớp vật lý RS-485: phần lớn lỗi nằm ở đây

  • Truyền vi sai: tín hiệu là hiệu điện áp giữa hai dây A và B, nên chống nhiễu tốt và đi xa tới khoảng 1200 m ở tốc độ thấp. Dùng cáp xoắn đôi có chống nhiễu.
  • Đấu kiểu bus (daisy-chain): dây đi lần lượt qua từng thiết bị, nhánh rẽ càng ngắn càng tốt. Không đấu hình sao.
  • Điện trở đầu cuối 120 Ω: đặt ở hai đầu xa nhất của bus để chống phản xạ tín hiệu – không đặt ở mọi thiết bị.
  • Điện trở phân cực (bias): giữ đường truyền ở trạng thái xác định khi không ai truyền; thường có sẵn trong master hoặc bộ chuyển đổi.
  • Số thiết bị: chuẩn RS-485 cho 32 tải đơn vị trên một đoạn; thiết bị 1/4 hoặc 1/8 tải cho phép nhiều hơn. Địa chỉ Modbus hợp lệ là 1–247.
  • Đất chung (GND/0 V tham chiếu): nên nối dây tham chiếu giữa các thiết bị để điện áp chung không vượt giới hạn, đặc biệt khi thiết bị dùng nguồn khác nhau.
Ký hiệu A/B không thống nhất: một số hãng ghi A là dây dương, hãng khác ngược lại (hoặc ghi D+/D−, TX+/TX−). Nếu mọi thông số đều đúng mà không có phản hồi, hãy thử đảo hai dây A và B – không làm hỏng thiết bị.

5. Tính thời gian quét để chọn tốc độ phù hợp

Ví dụ: đọc 10 thanh ghi ở 9600 bps, 8N1 thêm parity coi như 11 bit/ký tự. Yêu cầu 8 byte + phản hồi 25 byte = 33 byte × 1,15 ms ≈ 38 ms, cộng thời gian xử lý của slave (thường 5–50 ms) và khoảng lặng → khoảng 60–100 ms mỗi lần hỏi. Một bus có 20 thiết bị sẽ mất 1,2–2 giây mỗi vòng quét. Muốn nhanh hơn: tăng tốc độ lên 19200/38400 bps, gộp nhiều thanh ghi liền nhau vào một lệnh, hoặc chia thành nhiều bus.

6. Quy trình xử lý sự cố 6 bước

  1. Không có phản hồi (timeout): kiểm tra nguồn thiết bị, địa chỉ slave, tốc độ baud, parity, stop bit – năm thông số này phải khớp tuyệt đối.
  2. Kiểm tra đấu dây A/B, thử đảo dây; đo điện áp giữa A và B khi bus rảnh (thường vài trăm mV).
  3. Thử kết nối trực tiếp chỉ với một thiết bị bằng dây ngắn để loại trừ lỗi đường truyền.
  4. Có phản hồi nhưng CRC sai: nhiễu, thiếu điện trở đầu cuối, cáp không xoắn/không chống nhiễu, đi chung máng với cáp động lực biến tần.
  5. Phản hồi mã lỗi (exception): đọc mã lỗi để biết sai chức năng, sai địa chỉ hay sai giá trị (bảng tra ở trên).
  6. Đọc được nhưng giá trị vô lý: kiểm tra lệch địa chỉ 0/1, thứ tự byte, hệ số nhân, kiểu có dấu/không dấu.

7. Modbus RTU và Modbus TCP

Modbus TCP giữ nguyên phần mã chức năng và dữ liệu, chỉ thay địa chỉ slave và CRC bằng một header 7 byte (MBAP) chạy trên Ethernet, cổng 502. Gateway Modbus TCP/RTU cho phép SCADA đọc các thiết bị RS-485 qua mạng LAN; trường “Unit ID” trong header TCP được gateway dùng làm địa chỉ slave phía RTU.

Cần đưa dữ liệu Modbus lên SCADA, cloud hoặc dashboard?

HOANTRANTDH cung cấp bộ chuyển đổi tín hiệu, gateway Modbus TCP/RTU, bộ thu thập dữ liệu và triển khai SCADA cho nhà máy.

Gọi 0879 848 668Nhắn ZaloXem SCADA Studio

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

Trình duyệt nào kết nối được cổng COM?

Chrome và Edge bản máy tính (Windows, macOS, Linux) hỗ trợ Web Serial. Firefox, Safari và trình duyệt điện thoại chưa hỗ trợ – vẫn dùng được phần tạo khung, tính CRC và giải mã.

Dữ liệu có gửi lên máy chủ không?

Không. Trình duyệt giao tiếp trực tiếp với cổng COM trên máy bạn; trang web chỉ chạy mã JavaScript tại chỗ.

Có hỗ trợ Modbus TCP không?

Trình duyệt không mở được kết nối TCP thô tới cổng 502. Với Modbus TCP, hãy dùng gateway hoặc phần mềm chuyên dụng; phần giải mã khung vẫn dùng được cho phần dữ liệu PDU.

Tìm hiểu thêm: Bộ chuyển đổi tín hiệu Seneca · SCADA Studio · Kết nối dữ liệu nhà máy · Công cụ tính toán kỹ thuật

ZaloGọi