Modbus TCP là biến thể của giao thức Modbus chạy trực tiếp trên ngăn xếp mạng Ethernet TCP/IP (mặc định port 502), cho phép truyền thông tốc độ cao giữa PLC, cảm biến, đồng hồ đo điện, IoT Gateway và hệ thống SCADA/MES trung tâm. Bằng việc bọc khung PDU (Protocol Data Unit) của Modbus trong tiêu đề MBAP (Modbus Application Protocol), Modbus TCP loại bỏ nhu cầu tính checksum CRC-16 của chuẩn nối tiếp và tận dụng tối đa hạ tầng cáp mạng công nghiệp có sẵn.
Trong thực tế vận hành nhà máy và tòa nhà, Modbus TCP thường đóng vai trò là “cầu nối tốc độ cao” gom dữ liệu từ các mạng con RS485 (Modbus RTU) hoặc kết nối trực tiếp các thiết bị hiện trường thế hệ mới lên máy chủ giám sát. Tuy nhiên, sự khác biệt giữa mô hình Master/Slave (RTU) và Client/Server (TCP), độ trễ do mạng IT/OT dùng chung, cũng như cách tổ chức Register Map thường gây ra sự cố mất gói hoặc nghẽn mạng nếu không được thiết kế bài bản từ đầu.
Bài viết này là cẩm nang kỹ thuật chuyên sâu về Modbus TCP — từ kiến trúc frame, phân biệt với Modbus RTU, quy tắc polling đến giải pháp Gateway tích hợp cho kỹ sư OT và đội ngũ R&D thiết bị.
—
Modbus TCP là gì?

Modbus TCP là giao thức truyền thông công nghiệp dạng Client/Server hoạt động ở tầng ứng dụng (Application Layer), sử dụng TCP/IP trên cổng 502 để truyền tải các lệnh đọc/ghi thanh ghi Modbus. Modbus TCP giữ nguyên cấu trúc tập lệnh chức năng (Function Code) của Modbus truyền thống nhưng thay thế lớp vật lý truyền dẫn nối tiếp RS485/RS232 bằng mạng Ethernet chuẩn (10/100/1000 Mbps).
Vị trí của Modbus TCP trong ngăn xếp kiến trúc mạng công nghiệp:
+-----------------------------------------------------------+ | Tầng Ứng Dụng (Application): Modbus Application Protocol | | (Function Code: 0x01, 0x03, 0x04, 0x06, 0x10...) | +-----------------------------------------------------------+ | Tầng Vận Chuyển (Transport): TCP (Port 502 mặc định) | +-----------------------------------------------------------+ | Tầng Mạng (Network): IP (IPv4 / IPv6) | +-----------------------------------------------------------+ | Tầng Liên Kết / Vật Lý: Ethernet (Cat5e/Cat6, Fiber, Wi-Fi)| +-----------------------------------------------------------+
Không giống như Modbus RTU phụ thuộc vào khoảng lặng thời gian (t1.5 / t3.5 character timeout) để xác định điểm đầu/cuối của frame, Modbus TCP xác định kích thước gói tin thông qua trường dữ liệu độ dài (Length Field) nằm trong MBAP Header, giúp việc truyền tải qua router, switch mạng văn phòng hoặc mạng VPN công nghiệp không bị gián đoạn hay sai lệch thời gian.
—
Cấu trúc Frame Modbus TCP: MBAP Header và PDU

Một gói tin Modbus TCP hoàn chỉnh bao gồm MBAP Header (7 bytes) kết hợp với PDU (Protocol Data Unit):
[---------------- MBAP Header (7 bytes) ----------------] [--- Modbus PDU ---] | Transaction ID (2B) | Protocol ID (2B) | Length (2B) | Unit ID (1B) | FC (1B) | Data (n B) |
Chi tiết các trường trong MBAP Header
- Transaction Identifier (2 bytes): Định danh giao dịch do Client gán cho mỗi bản tin yêu cầu. Server sẽ trả về đúng Transaction ID này trong bản tin phản hồi, cho phép Client gửi nhiều truy vấn đồng thời qua một kết nối TCP duy nhất mà không bị lẫn lộn.
- Protocol Identifier (2 bytes): Luôn có giá trị
0x0000đối với Modbus TCP. - Length (2 bytes): Cho biết số byte còn lại của bản tin tiếp theo, bao gồm trường Unit ID và toàn bộ khối PDU.
- Unit Identifier (1 byte): Tương đương với địa chỉ Slave Address trong Modbus RTU. Trường này đặc biệt quan trọng khi Modbus TCP đi qua một Gateway để giao tiếp với mạng nối tiếp RS485 phía sau: Gateway sẽ căn cứ vào Unit ID để chuyển tiếp lệnh tới đúng thiết bị slave.
Bảng so sánh Modbus TCP và Modbus RTU
| Tiêu chí | Modbus RTU | Modbus TCP |
|---|---|---|
| Lớp vật lý | RS485 / RS422 / RS232 cáp xoắn | Ethernet (Cat5e/Cat6, Cáp quang, Wi-Fi) |
| Mô hình giao tiếp | Master / Slave (1 Master duy nhất trên bus) | Client / Server (Nhiều Client cùng kết nối 1 Server) |
| Kiểm tra lỗi | Checksum CRC-16 (2 bytes cuối frame) | Tầng TCP/IP đảm nhiệm kiểm tra lỗi toàn vẹn |
| Tốc độ truyền | 9600 bps – 115200 bps | 10 Mbps – 1 Gbps+ |
| Xác định frame | Silent interval (3.5 ký tự) | Độ dài khai báo trong MBAP Header |
| Khoảng cách truyền | Tối đa 1200m (không repeater) | 100m (cáp đồng), hàng chục km (cáp quang/VLAN) |
| Cổng mạng (Port) | Không có (chạy cổng Serial) | Cổng TCP 502 mặc định |
—
Mô hình Client / Server trong Modbus TCP

Sự chuyển dịch từ khái niệm Master/Slave sang Client/Server thường gây nhầm lẫn:
- Modbus TCP Client (tương đương Master): Là thiết bị chủ động khởi tạo kết nối TCP và gửi request (yêu cầu đọc/ghi dữ liệu). Thường là SCADA, máy chủ MES, phần mềm HMI hoặc IoT Gateway.
- Modbus TCP Server (tương đương Slave): Là thiết bị thụ động lắng nghe kết nối tại Port 502, xử lý yêu cầu và trả lời response. Thường là PLC (Siemens S7-1200, Schneider M221), biến tần tích hợp cổng Ethernet, đồng hồ điện tử đa năng, hoặc các remote I/O module.
+------------------+ Modbus TCP Request (Port 502) +------------------+ | SCADA / Gateway | -------------------------------------------> | PLC / Sensor | | (Client) | <------------------------------------------- | (Server) | +------------------+ Modbus TCP Response +------------------+
Ưu điểm vượt trội của mô hình đa Client
Trong hệ thống Modbus RTU truyền thống, nếu một SCADA đang polling trên bus RS485, không thiết bị thứ hai nào được phép cắm vào bus để đọc dữ liệu. Với Modbus TCP, một PLC Server hiện đại có thể chấp nhận đồng thời từ 4 đến 16 kết nối TCP socket. Điều này cho phép:
- SCADA phòng điều khiển trung tâm vẫn đọc trạng thái máy.
- Màn hình HMI tại chân máy vẫn hiển thị thông số theo thời gian thực.
- Thiết bị IoT Gateway cạnh biên (Edge Gateway) độc lập thu thập dữ liệu đẩy về Cloud mà không làm gián đoạn hai hệ thống trên.
---
Các mã hàm (Function Codes) thông dụng
Modbus TCP sử dụng chung bảng mã hàm với chuẩn Modbus quốc tế:
- FC 01 (0x01) - Read Coils: Đọc trạng thái ngõ ra Relay/Digital Output (1 bit, dạng đọc/ghi).
- FC 02 (0x02) - Read Discrete Inputs: Đọc trạng thái ngõ vào số/Digital Input (1 bit, chỉ đọc).
- FC 03 (0x03) - Read Holding Registers: Đọc các thanh ghi cấu hình hoặc dữ liệu vận hành (16-bit word, dạng đọc/ghi). Thường dùng nhất để đọc biến tần, nhiệt độ, công suất.
- FC 04 (0x04) - Read Input Registers: Đọc thanh ghi đo lường hiện trường (16-bit word, chỉ đọc).
- FC 05 (0x05) - Write Single Coil: Ghi bật/tắt một ngõ ra số.
- FC 06 (0x06) - Write Single Register: Ghi giá trị vào một thanh ghi 16-bit.
- FC 15 (0x0F) - Write Multiple Coils: Ghi mảng nhiều ngõ ra số liên tiếp.
- FC 16 (0x10) - Write Multiple Registers: Ghi đồng thời nhiều thanh ghi liên tiếp (ví dụ: cài đặt bộ setpoint điều khiển).
---
Kiến trúc chuyển đổi: Modbus RTU sang Modbus TCP qua Gateway
Trong hơn 80% nhà máy hiện hữu, các máy móc đời cũ chỉ trang bị cổng truyền thông nối tiếp RS485 chạy Modbus RTU. Để đưa dữ liệu lên mạng nội bộ xí nghiệp hoặc nền tảng Cloud, giải pháp tiêu chuẩn là sử dụng Gateway chuyển đổi Modbus:
[SCADA / Cloud Platform]
|
(Ethernet) Modbus TCP
v
[Industrial IoT Gateway / Modbus Gateway]
|
(RS485) Modbus RTU
v
+--------+--------+--------+
| | | |
[PLC] [Biến tần] [Đồng hồ] [Cảm biến]
ID:1 ID:2 ID:3 ID:4
Cơ chế hoạt động của Gateway:
- Gateway nhận gói tin Modbus TCP từ mạng Ethernet, bóc tách MBAP Header lấy thông tin Unit ID và PDU.
- Gateway kiểm tra bảng định tuyến, tính toán mã kiểm tra lỗi CRC-16 rồi đóng gói lại thành frame Modbus RTU.
- Gateway bắn bản tin RTU ra cổng RS485 tới slave mang địa chỉ tương ứng với Unit ID.
- Khi slave phản hồi, Gateway đọc frame, kiểm tra CRC-16, gỡ bỏ CRC, gắn thêm MBAP Header với đúng Transaction ID ban đầu và gửi trả lại cho Client qua TCP.
---
5 Lỗi thường gặp khi triển khai Modbus TCP và cách khắc phục
1. Xung đột kết nối (Socket Connection Limit)
- Triệu chứng: Thiết bị phản hồi ngắt quãng, lúc kết nối được lúc báo "Connection Refused".
- Nguyên nhân: Thiết bị Server (PLC/Đồng hồ đo) chỉ hỗ trợ số lượng socket giới hạn (ví dụ tối đa 3-4 socket), nhưng Client mở socket liên tục mà không đóng, hoặc có quá nhiều Client cùng kết nối.
- Khắc phục: Sử dụng kiến trúc Connection Pooling, giữ kết nối TCP dài lâu thay vì mở/đóng liên tục; hoặc sử dụng Gateway tập trung làm proxy trung gian.
2. Trôi địa chỉ Offset (0-based vs 1-based)
- Triệu chứng: Đọc được số liệu nhưng giá trị bị dịch đi 1 ô nhớ hoặc báo lỗi
Illegal Data Address (Exception 0x02). - Nguyên nhân: Tài liệu thiết bị ghi địa chỉ thanh ghi bắt đầu từ
40001(1-based), trong khi frame Modbus TCP truyền địa chỉ offset từ0x0000(0-based). - Khắc phục: Khi cấu hình Client, kiểm tra xem phần mềm có tự động trừ 1 hay không. Thanh ghi
40001tương ứng với địa chỉ vật lý0trong gói tin mạng.
3. Sai thứ tự Byte / Word (Endianness)
- Triệu chứng: Đọc dữ liệu 32-bit (Float/DINT) hoặc 64-bit ra kết quả số liệu vô nghĩa, âm vô cùng hoặc cực lớn.
- Nguyên nhân: Modbus chỉ định nghĩa truyền từng thanh ghi 16-bit Big-Endian, nhưng không quy định thứ tự các Word khi ghép thành biến 32-bit (Big-Endian, Little-Endian, Mid-Big Endian).
- Khắc phục: Cấu hình chuẩn hoán vị Byte/Word (AB CD, CD AB, BA DC, DC BA) trên Gateway hoặc phần mềm SCADA cho phù hợp với tài liệu thanh ghi của nhà sản xuất.
4. Tần suất Polling quá dày làm nghẽn bus hoặc tràn hàng đợi
- Triệu chứng: Tỷ lệ timeout cao, thời gian đáp ứng (RTT) tăng từ vài chục ms lên hàng ngàn ms.
- Nguyên nhân: Client gửi truy vấn 10ms/lần tới Gateway, trong khi mạng RS485 phía sau chỉ chạy tốc độ 9600 baud và cần ít nhất 80-120ms mới hoàn tất một lượt hỏi đáp.
- Khắc phục: Phân tầng tần suất đọc: thông số vận hành quan trọng (dòng điện, áp suất) đọc chu kỳ 500ms - 1s; thông số tiêu thụ điện, nhiệt độ đọc chu kỳ 5s - 60s. Gom các thanh ghi liền kề để đọc bằng một lệnh FC03 thay vì gửi nhiều lệnh nhỏ lẻ.
5. Thiếu phân vùng mạng IT/OT và rủi ro an ninh
- Triệu chứng: Modbus TCP bị chiếm quyền điều khiển, máy móc dừng đột ngột hoặc tràn dữ liệu broadcast.
- Nguyên nhân: Cổng Modbus TCP 502 hoàn toàn không có cơ chế xác thực hay mã hóa mật khẩu. Nếu cắm chung vào mạng LAN văn phòng có kết nối Internet, bất kỳ máy tính nào cũng có thể gửi lệnh điều khiển PLC.
- Khắc phục: Cô lập mạng Modbus TCP vào VLAN OT riêng, đặt firewall công nghiệp, và chỉ cho phép giao tiếp ra ngoài thông qua Edge Gateway bảo mật hỗ trợ TLS/VPN.
---
Năng lực triển khai giải pháp Modbus TCP tại DeviceLab
DeviceLab cung cấp giải pháp trọn gói từ phần cứng đến phần mềm cho các bài toán thu thập và điều khiển dữ liệu công nghiệp:
- Thiết kế bo mạch IoT Gateway công nghiệp theo yêu cầu: Tích hợp đồng thời cổng Ethernet 10/100/1000Mbps, nhiều cổng RS485 cô lập quang (Galvanic Isolation 2.5kV), hỗ trợ chạy đồng thời Modbus TCP Client/Server và Modbus RTU Master.
- Edge Computing & Chuyển đổi giao thức: Xử lý dữ liệu Modbus TCP ngay tại biên (lọc biên độ, tính toán trung bình, phát hiện bất thường) và chuyển đổi trực tiếp sang MQTT/TLS, OPC UA, HTTP RESTful đẩy lên Cloud.
- Khảo sát & Tối ưu hóa hệ thống hiện trường: Tư vấn quy hoạch dải địa chỉ IP, phân tách VLAN OT, cấu hình polling tối ưu cho các cụm nhà máy hàng trăm thiết bị đo.
Chi tiết các dự án tiêu biểu:
- Hệ thống giám sát năng lượng và dữ liệu vận hành nhà máy Industrial IoT
- Hub giải pháp IoT Gateway công nghiệp DeviceLab
- Giải pháp công tơ điện thông minh và giám sát điện năng
- Dịch vụ phát triển thiết bị IoT công nghiệp
---
Câu hỏi thường gặp (FAQ)
Modbus TCP dùng cổng mạng (Port) nào?
Cổng mặc định tiêu chuẩn được tổ chức IANA cấp phát cho Modbus TCP là cổng TCP 502. Một số thiết bị hoặc phần mềm bảo mật có thể cho phép đổi sang các cổng khác nếu quản trị mạng yêu cầu.
Modbus TCP có cần kiểm tra lỗi CRC-16 như Modbus RTU không?
Không. Modbus TCP không chứa 2 byte CRC-16 ở cuối bản tin vì tầng liên kết dữ liệu và tầng vận chuyển TCP/IP của Ethernet đã tự động tích hợp thuật toán kiểm tra lỗi (Checksum và Frame Check Sequence - FCS).
Một Modbus TCP Server có thể kết nối với bao nhiêu Client cùng lúc?
Tùy thuộc vào phần cứng và ngăn xếp TCP/IP của thiết bị. Các PLC nhỏ hoặc cảm biến thường hỗ trợ từ 2 đến 8 kết nối đồng thời. Các máy tính công nghiệp hoặc IoT Gateway chuyên dụng có thể phục vụ hàng trăm kết nối Client cùng lúc.
Unit Identifier (Unit ID) trong Modbus TCP dùng để làm gì?
Unit ID (1 byte) dùng để phân biệt thiết bị khi gói tin Modbus TCP đi qua một Gateway kết nối với mạng RS485 phía sau. Nếu kết nối trực tiếp Ethernet đến thẳng PLC, Unit ID thường được đặt mặc định là 1 hoặc 255 (0xFF).
Modbus TCP có an toàn (Security) không?
Bản thân chuẩn Modbus TCP nguyên bản không có xác thực (authentication) và không mã hóa (encryption). Để đảm bảo an toàn, hệ thống phải được cô lập trong VLAN riêng, chạy qua VPN, hoặc sử dụng biến thể Modbus TCP Security (chạy trên cổng TLS 802).
Khoảng cách truyền tối đa của Modbus TCP là bao nhiêu?
Trên cáp đồng xoắn đôi Cat5e/Cat6 tiêu chuẩn, khoảng cách tối đa giữa hai nút mạng là 100 mét. Tuy nhiên, bằng việc sử dụng Switch mạng, bộ chuyển đổi quang (Media Converter) hoặc cáp quang, khoảng cách có thể mở rộng lên hàng chục kilomet.
Làm thế nào để test kết nối Modbus TCP nhanh nhất?
Kỹ sư thường dùng các phần mềm mô phỏng miễn phí như Modscan, Modbus Poll, QModMaster hoặc các thư viện Python (như pymodbus) kết nối trực tiếp đến địa chỉ IP và Port 502 của thiết bị để kiểm tra Register Map.
Có thể truyền Modbus TCP qua mạng Wi-Fi không?
Có. Modbus TCP hoạt động ở tầng ứng dụng trên nền TCP/IP nên hoàn toàn có thể truyền qua Wi-Fi công nghiệp, 4G LTE Router, hoặc mạng vô tuyến điểm-điểm, miễn là hạ tầng đảm bảo độ trễ ổn định và ít mất gói.
Sự khác nhau giữa Modbus TCP và OPC UA là gì?
Modbus TCP là giao thức truyền thông đơn giản, nhẹ, chỉ truyền các khối thanh ghi 16-bit thô không kèm ngữ cảnh. OPC UA là nền tảng truyền thông hiện đại hướng đối tượng, tích hợp sẵn mô hình dữ liệu (Data Modeling), bảo mật mã hóa cao cấp và tự mô tả kiểu dữ liệu.
Khi nào nên nâng cấp từ Modbus RTU lên Modbus TCP?
Nên nâng cấp khi: mạng RS485 hiện tại bị nghẽn do quá nhiều thiết bị (>30 node); cần truyền dữ liệu tốc độ cao khoảng cách xa; cần nhiều hệ thống (SCADA, MES, IoT) cùng đọc dữ liệu đồng thời; hoặc mở rộng nhà máy trên hạ tầng cáp mạng có sẵn.
---
Kết luận
Modbus TCP tiếp tục là tiêu chuẩn vàng trong tự động hóa công nghiệp nhờ tính đơn giản, độ ổn định và khả năng tích hợp linh hoạt với hạ tầng mạng hiện đại. Việc nắm vững cấu trúc frame, quy tắc định tuyến gateway và tối ưu hóa chu kỳ polling là yếu tố sống còn để xây dựng hệ thống thu thập dữ liệu tin cậy cho nhà máy thông minh.
Quý khách hàng đang tìm kiếm giải pháp phát triển Gateway Modbus tùy biến, bo mạch thu thập dữ liệu hiện trường hoặc tích hợp hệ thống SCADA/IoT, hãy liên hệ ngay với đội ngũ kỹ sư của DeviceLab để được khảo sát và tư vấn kiến trúc tối ưu.