Modbus RTU Và Modbus TCP: Giải Thích Đơn Giản Cho Kỹ Sư Hiện Trường

Modbus RTU Và Modbus TCP

Modbus ra đời năm 1979 cho PLC Modicon, đến nay vẫn là giao thức mà gần như mọi biến tần, đồng hồ điện, cảm biến và PLC đều hỗ trợ. Lý do nó sống lâu như vậy rất đơn giản: giao thức mở, cấu trúc gọn, ai cũng triển khai được. Nhưng chính sự đơn giản đó để lại nhiều chỗ “tùy hãng”, và đó là nơi phần lớn lỗi tích hợp xảy ra. Bài này giải thích Modbus RTU và Modbus TCP theo góc nhìn của người phải làm cho hệ thống chạy được: khung dữ liệu, mô hình thanh ghi, đấu dây RS-485, tính thời gian quét và cách đọc mã lỗi.

Trả lời nhanh: Modbus RTU truyền nối tiếp qua RS-485 (đôi khi RS-232), dữ liệu nhị phân có CRC, một master hỏi lần lượt các slave có địa chỉ 1 đến 247. Modbus TCP chạy trên Ethernet, cổng 502, thay CRC bằng header MBAP vì TCP đã kiểm lỗi, cho phép nhiều client truy cập cùng lúc và nhanh hơn nhiều. Hai loại chuyển đổi qua lại bằng gateway.

Sơ đồ so sánh Modbus RTU và Modbus TCP
Modbus RTU trên RS-485 và Modbus TCP trên Ethernet, nối với nhau qua gateway

Mô hình dữ liệu: bốn bảng và chuyện lệch 1 địa chỉ

BảngKiểuTruy cậpMã hàm thường dùngKý hiệu quen gọi
CoilsBitĐọc/ghi01, 05, 150xxxx
Discrete InputsBitChỉ đọc021xxxx
Input Registers16 bitChỉ đọc043xxxx
Holding Registers16 bitĐọc/ghi03, 06, 164xxxx

Tài liệu thiết bị hay ghi “thanh ghi 40001”. Trong khung truyền thực tế, đó là holding register địa chỉ 0. Có phần mềm nhập 40001, có phần mềm nhập 0, có phần mềm nhập 1. Khi đọc ra giá trị “gần đúng nhưng sai” hoặc lệch sang thông số bên cạnh, việc đầu tiên là thử lệch địa chỉ ±1.

Chuyện thứ hai là số 32 bit. Một giá trị float hoặc số nguyên 32 bit chiếm hai thanh ghi liền nhau, nhưng thứ tự word và byte không được giao thức quy định. Cùng bốn byte có thể ghép theo ABCD, CDAB, BADC hoặc DCBA. Đọc ra số khổng lồ hoặc số rất nhỏ vô nghĩa thì gần như chắc chắn là sai thứ tự word.

Modbus RTU

Khung dữ liệu

Một khung RTU gồm: địa chỉ slave (1 byte), mã hàm (1 byte), dữ liệu (n byte), CRC-16 (2 byte, byte thấp gửi trước). Các khung được phân tách bằng khoảng lặng tối thiểu 3,5 ký tự. Ví dụ master đọc 2 holding register bắt đầu từ địa chỉ 0 của slave số 1:

01 03 00 00 00 02 C4 0B

Slave trả về: 01 03 04 [4 byte dữ liệu] [CRC]. Một lần đọc FC03 lấy được tối đa 125 thanh ghi.

Các mã hàm (function code) Modbus RTU hay dùng

Mã hàmTênBảng dữ liệuVí dụ dùng
01 (0x01)Read CoilsCoil 0xxxxĐọc trạng thái relay, đầu ra số
02 (0x02)Read Discrete InputsDiscrete input 1xxxxĐọc tiếp điểm, đầu vào số
03 (0x03)Read Holding RegistersHolding register 4xxxxĐọc thông số, giá trị đo của phần lớn thiết bị
04 (0x04)Read Input RegistersInput register 3xxxxĐọc giá trị đo chỉ đọc (đồng hồ điện, cảm biến)
05 (0x05)Write Single CoilCoilBật/tắt một đầu ra: FF00 = ON, 0000 = OFF
06 (0x06)Write Single RegisterHolding registerGhi tần số đặt biến tần, setpoint
15 (0x0F)Write Multiple CoilsCoilGhi nhiều đầu ra một lần
16 (0x10)Write Multiple RegistersHolding registerGhi số thực 32-bit (2 thanh ghi), ghi nhiều thông số

Một lệnh FC03/FC04 đọc tối đa 125 thanh ghi, FC16 ghi tối đa 123 thanh ghi. Số thực (float) và số 32-bit chiếm 2 thanh ghi liền nhau – thứ tự word (ABCD hay CDAB) phải khớp giữa thiết bị và phần mềm đọc.

Thông số cổng nối tiếp

Baud rate, số bit dữ liệu, parity, stop bit và địa chỉ phải khớp tuyệt đối giữa master và mọi slave. Đặc tả Modbus khuyến nghị mặc định 8 bit, parity chẵn, 1 stop bit (8E1); nếu không dùng parity thì 2 stop bit (8N2). Thực tế rất nhiều thiết bị xuất xưởng ở 9600 8N1. Một slave sai parity trên đường dây sẽ không trả lời, nhưng không làm hỏng các slave khác.

Đấu dây RS-485 đúng cách

  • Đi dây kiểu nối tiếp (daisy chain) từ thiết bị này sang thiết bị kia. Không đi hình sao, không kéo nhánh dài.
  • Điện trở đầu cuối 120 Ω tại hai đầu xa nhất của đường dây, không đặt ở giữa, không đặt ở mọi thiết bị.
  • Điện trở phân cực (bias) đặt tại một điểm, thường ở master, để đường dây có trạng thái xác định khi không ai truyền.
  • Cáp xoắn đôi có chống nhiễu, trở kháng khoảng 120 Ω, nên có thêm dây tham chiếu chung (GND/COM). Vỏ chống nhiễu nối đất một đầu.
  • Một phân đoạn chuẩn chịu được 32 tải đơn vị, dài tối đa khoảng 1200 m ở tốc độ thấp. Nhiều thiết bị hơn hoặc xa hơn thì dùng repeater.
  • Ký hiệu A/B không thống nhất giữa các hãng. Nếu không liên lạc được dù mọi thứ đã đúng, thử đảo hai dây.
Kỹ sư kiểm tra đường truyền Modbus RTU
Kiểm tra Modbus RTU tại tủ điện với bộ chuyển đổi USB/RS-485 và phần mềm master

Tính thời gian quét

Ở 9600 baud, mỗi ký tự 11 bit mất khoảng 1,15 ms. Đọc 10 thanh ghi: khung hỏi 8 byte, khung trả lời 25 byte, tổng 33 byte, khoảng 38 ms, cộng thời gian xử lý của slave (thường 5 đến 50 ms). Với 20 slave, mỗi vòng quét hết gần 1 giây. Muốn nhanh hơn: tăng baud, gom các thanh ghi liền nhau vào một lần đọc, tách ra nhiều đường RS-485, hoặc chuyển sang TCP.

Modbus TCP

Modbus TCP bỏ địa chỉ slave và CRC, thêm header MBAP 7 byte: Transaction ID (2 byte), Protocol ID (2 byte, luôn bằng 0), Length (2 byte), Unit ID (1 byte). Phần mã hàm và dữ liệu giữ nguyên như RTU. Thiết bị nghe ở cổng TCP 502.

Unit ID thường bị bỏ qua khi kết nối trực tiếp tới thiết bị Ethernet, nhưng rất quan trọng khi đi qua gateway: gateway dùng Unit ID để biết chuyển yêu cầu tới slave RTU nào phía sau.

Một điểm hay nhầm: Modbus RTU over TCP (gói nguyên khung RTU có CRC vào TCP) không phải Modbus TCP. Nhiều bộ chuyển đổi serial-Ethernet giá rẻ chỉ làm kiểu này. Nếu SCADA cấu hình Modbus TCP mà không nhận được dữ liệu, kiểm tra xem bộ chuyển đổi đang ở chế độ nào.

So sánh

Tiêu chíModbus RTUModbus TCP
Môi trường truyềnRS-485 / RS-232Ethernet
Tốc độ thường dùng9600 đến 115200 bps10/100 Mbps
Kiểm lỗiCRC-16Do TCP/IP đảm nhận
Số thiết bịTối đa 247 địa chỉ, 32 tải đơn vị mỗi phân đoạnGiới hạn bởi mạng IP và số kết nối của thiết bị
Truy cập đồng thờiMột masterNhiều client cùng lúc
Khoảng cáchKhoảng 1200 m mỗi phân đoạn100 m cáp đồng mỗi đoạn, xa hơn dùng switch hoặc cáp quang
Chi phíThấp, chỉ cần cáp xoắn đôiCần switch, quy hoạch IP
Phù hợpCảm biến, đồng hồ, biến tần ở hiện trườngPLC, SCADA, HMI, mạng nhà máy
So sánh trực tiếp Modbus RTU và Modbus TCP
RTU cho tầng hiện trường, TCP cho tầng điều khiển và giám sát

Đọc mã lỗi exception

Khi slave nhận được yêu cầu nhưng không xử lý được, nó trả về mã hàm cộng 0x80 kèm mã exception:

  • 01 Illegal Function: thiết bị không hỗ trợ mã hàm đó (ví dụ đọc FC03 vào vùng chỉ có FC04).
  • 02 Illegal Data Address: địa chỉ không tồn tại, thường do lệch 1 địa chỉ hoặc đọc quá số thanh ghi.
  • 03 Illegal Data Value: giá trị ghi không hợp lệ hoặc số lượng thanh ghi yêu cầu sai.
  • 04 Server Device Failure: lỗi bên trong thiết bị.
  • 0A / 0B: do gateway trả về, nghĩa là không có đường tới slave hoặc slave phía sau không trả lời.

Không nhận được gì (timeout) thì không phải exception: kiểm tra địa chỉ, thông số cổng, dây A/B, điện trở đầu cuối.

Kiến trúc thường gặp trong nhà máy

Cảm biến, đồng hồ điện, biến tần nối Modbus RTU trên vài đường RS-485, mỗi đường về một gateway. Gateway chuyển lên Modbus TCP cho PLC, SCADA hoặc hệ thống quản lý năng lượng EMS. Cách làm này giữ chi phí đi dây thấp ở hiện trường mà vẫn cho phép nhiều hệ thống đọc dữ liệu cùng lúc. Thiết bị chuyển đổi tham khảo ở bài gateway Modbus Seneca.

Hệ thống truyền thông công nghiệp Modbus
Kiến trúc kết hợp RTU ở hiện trường và TCP ở tầng giám sát

Thiết bị chuyển đổi Modbus RTU sang Modbus TCP hay dùng

Khi cần ghép thiết bị RS-485 cũ (đồng hồ điện, biến tần, bộ hiển thị) vào mạng Ethernet của PLC/SCADA, dùng gateway Modbus: Seneca Z-KEY (1 cổng RS-485, cấu hình web, giá tốt cho tủ nhỏ), Moxa MGate MB3180/MB3280 (1–2 cổng, chuẩn công nghiệp, hỗ trợ 16–32 kết nối TCP đồng thời), hoặc dùng chính switch managed như Moxa EDS-408A cho phần mạng Ethernet. Cách cấu hình gateway, ánh xạ ID slave và xử lý lỗi timeout xem bài Modbus gateway là gì; công cụ đọc thanh ghi trực tiếp trên trình duyệt tại công cụ Modbus của HOANTRANTDH.

Xem thêm: Delta DVP14SS211R: Thông Số PLC DVP-SS2, Đấu Dây, Mã Tương Đương Và Báo Giá · Cảm Biến Độ Ẩm Là Gì? Nguyên Lý, Phân Loại, Cách Chọn, Lắp Đặt Và Hiệu Chuẩn

Xem thêm: Remote I/O giá bao nhiêu? Bảng giá Seneca Z-PC 2026.

Cần thiết bị cho ứng dụng này?

Cần chuyển Modbus RTU sang TCP hoặc gom nhiều thiết bị RS-485 về SCADA? Xem gateway Modbus RTU ↔ TCP Seneca Z-KEY, R-KEY-LT, Z-PASS2. Tư vấn chọn model miễn phí, báo giá trong 24 giờ: 0879 848 668 hoặc gửi yêu cầu báo giá.

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

Một đường RS-485 nên gắn bao nhiêu thiết bị?

Về điện, 32 tải đơn vị (nhiều hơn nếu thiết bị dùng transceiver 1/4 hoặc 1/8 tải). Về thời gian quét, thường giữ dưới 20 đến 30 thiết bị mỗi đường để chu kỳ cập nhật vẫn chấp nhận được.

Hai master cùng đọc một đường RTU được không?

Không, Modbus RTU chỉ có một master. Muốn nhiều hệ thống cùng đọc, đưa qua gateway lên Modbus TCP.

Modbus có an toàn về bảo mật không?

Modbus TCP gốc không có xác thực hay mã hóa. Không đưa cổng 502 ra Internet, đặt thiết bị trong mạng riêng có tường lửa. Đã có chuẩn Modbus/TCP Security dùng TLS nhưng chưa nhiều thiết bị hỗ trợ.

🔌  CẦN TƯ VẤN TRIỂN KHAI MODBUS RTU / TCP CHO NHÀ MÁY?

Thiết bị Modbus chính hãng + Tư vấn kỹ thuật từ HOANTRANTDH

🏢  HOANTRANTDH – Công ty TNHH Kỹ thuật Tự động hóa Hoàn Trần

●  Cảm biến, transmitter, gateway Modbus RTU/TCP chính hãng

●  Tư vấn kiến trúc mạng, cấu hình register map, tích hợp PLC

●  CO/CQ đầy đủ, xuất hóa đơn VAT, giao hàng toàn quốc

●  Hỗ trợ lập trình IIoT cloud qua Z-PASS2-RT + MQTT + 4G

📱  Zalo: 0879 848 668

🌐  hoantrantdh.com

📧  sales@hoantrantdh.com

▶  Tư vấn miễn phí trong 2 giờ

HOANTRANTDH – Hải Phòng, Việt Nam  |  Seneca • Dinel • Georgin • Flowline  |  hoantrantdh.com

 

 

Bài viết bởi HOANTRANTDH – Công ty TNHH Kỹ thuật Tự động hóa Hoàn Trần  |  Zalo: 0879 848 668  |  hoantrantdh.com

Đọc thêm: module I/O Ethernet Modbus TCP (remote I/O Seneca).

Dữ liệu Modbus của bạn có thể dự báo hỏng bơm

Dữ liệu đã đọc về qua Modbus RTU/TCP từ biến tần, đồng hồ, cảm biến chính là đầu vào để kỹ sư xếp hạng sức khỏe từng bơm và chỉ ra máy sắp có vấn đề – không cần lắp thêm thiết bị.

Phân tích dữ liệu bơm →  ·  Bảo trì dự đoán cho bơm →

Chia sẻ bài viết:

Cần báo giá hoặc tư vấn kỹ thuật?

Để lại thông tin, kỹ sư HOANTRANTDH sẽ liên hệ trong giờ làm việc.

Hoặc gọi/Zalo 0879 848 668 · Email sales@hoantrantdh.com


BÀI VIẾT LIÊN QUAN

Tín Hiệu 4–20 mA Và 0–10 V Là Gì? Hướng Dẫn Cho Người Mới

Cảm biến áp suất gửi tín hiệu về PLC, biến tần nhận lệnh tốc độ từ bộ điều khiển, van điều khiển nhận tín hiệu mở: phần lớn những đường tín hiệu này đi bằng 4-20 mA hoặc 0-10 V. Hai chuẩn này trông giống nhau trên giấy, nhưng hành xử rất khác ngoài hiện […]

Cảm Biến Áp Suất Là Gì? Nguyên Lý, Phân Loại, Cách Chọn, Lắp Đặt Và Đấu Dây

Cảm biến áp suất (pressure sensor, pressure transmitter) là thiết bị biến áp suất của chất lỏng, khí hoặc hơi thành tín hiệu điện – phổ biến nhất là 4–20 mA – để PLC, biến tần hoặc màn hình đọc và điều khiển. Chọn đúng cảm biến áp suất cần năm thông tin: dải đo, […]

Calibration và adjustment: hiệu chuẩn khác hiệu chỉnh thế nào?

Trong biên bản đánh giá ISO 9001, câu hỏi “thiết bị này đã được hiệu chuẩn chưa?” thường nhận câu trả lời “rồi, tháng trước kỹ thuật đã chỉnh zero span”. Đó là hai việc khác nhau. Bài này phân biệt calibration (hiệu chuẩn) và adjustment (hiệu chỉnh) theo định nghĩa chuẩn quốc tế, giải […]

Chat Zalo Gọi 0879 848 668