Mục tiêu bài học
Nắm vững vai trò và cơ chế giao tiếp Master/Slave của Modbus. Phân biệt được cấu trúc và môi trường truyền tải của hai phiên bản chính: Modbus RTU (qua RS232/RS485) và Modbus TCP (qua Ethernet/IP).
Mở đầu
Chào các bạn! Trong Bài 3.2, chúng ta đã phân tích các chuẩn vật lý RS232/RS485. Hôm nay, chúng ta sẽ tiến lên một bước để tìm hiểu về Giao thức Modbus – một “ngôn ngữ” lớp ứng dụng chạy trên nền tảng của các chuẩn vật lý đó và là một trong những giao thức phổ biến nhất trong hệ thống điều khiển công nghiệp.
Modbus được thiết kế vào năm 1979. Thành công của nó là nhờ vào tính đơn giản, là một tiêu chuẩn mở, và được hỗ trợ rộng rãi. Modbus thường được triển khai giao tiếp giữa PLC (Bộ điều khiển Logic Lập trình) và HMI (Giao diện Người-Máy).
Hiện nay, Modbus có hai phiên bản phổ biến: Modbus RTU (sử dụng đường truyền nối tiếp như RS485) và Modbus TCP (sử dụng nền tảng Ethernet). Với nhu cầu mở rộng của mạng công nghiệp, Modbus TCP đang được sử dụng rộng rãi trong các hệ thống SCADA.
Nội dung chính
1. Modbus trong Mô hình OSI và Cơ chế Giao tiếp
1.1. Vị trí trong Mô hình OSI
Theo mô hình OSI (Mô hình tham chiếu kết nối các hệ thống mở), Modbus là một chuẩn giao thức và dịch vụ thuộc Lớp Ứng dụng (Application Layer). Điều này có nghĩa là Modbus định nghĩa cấu trúc của thông điệp dữ liệu, trong khi nó có thể được vận chuyển qua nhiều lớp vật lý khác nhau (như RS485 hoặc TCP/IP qua Ethernet).
1.2. Cơ chế Master/Slave (Chủ/Tớ)
Giao thức Modbus giao tiếp theo cơ chế yêu cầu/đáp ứng (Master/Slave):
- Master (Thiết bị chủ): Chỉ có một thiết bị Master có thể khởi tạo yêu cầu (gửi lệnh đọc/ghi).
- Slave (Thiết bị tớ): Các thiết bị Slave (ví dụ: cảm biến, đồng hồ đo) lắng nghe. Nếu yêu cầu có đúng địa chỉ của mình, nó sẽ xử lý và gửi dữ liệu trả lời lại cho Master.
- Địa chỉ: Địa chỉ của các trạm (Slave) trong mạng Modbus là từ 1-247 (địa chỉ 0 dùng để gửi quảng bá – broadcast). Một bus Modbus có thể hỗ trợ tối đa 247 thiết bị.

Modbus Master Slave architecture diagram
2. Modbus RTU (Remote Terminal Unit) – Giao tiếp Nối tiếp
Modbus RTU là chế độ truyền thông Modbus truyền thống, thường được sử dụng trên các chuẩn nối tiếp như RS485 (phổ biến nhất) hoặc RS232.
- Chế độ Truyền: Trong chế độ RTU, mỗi byte trong thông điệp được truyền đi là 8 bit nhị phân.
- Cấu trúc Thông điệp: Thông điệp RTU được định dạng đơn giản, bao gồm:
- Địa chỉ Slave (1 byte)
- Mã hàm (1 byte – quy định lệnh đọc hay ghi)
- Dữ liệu (Nhiều byte – chứa thông tin cần đọc/ghi)
- Mã CRC (2 byte) – (Cyclic Redundancy Check) để kiểm tra lỗi truyền.
3. Modbus TCP/IP – Giao tiếp qua Ethernet
Modbus TCP/IP là phiên bản của giao thức Modbus RTU được sử dụng trên nền Ethernet thông qua họ giao thức TCP/IP.
3.1. Nhúng thông điệp Modbus chuẩn
- Cơ chế: Modbus TCP nhúng một thông điệp (khung dữ liệu) Modbus chuẩn vào phần dữ liệu của gói TCP.
- Kiểm lỗi: Trong Modbus TCP, phần kiểm lỗi (Mã CRC) của Modbus RTU không được sử dụng. Thay vào đó, nó sử dụng cơ chế kiểm lỗi của TCP/IP ở tầng vận chuyển để bảo toàn dữ liệu.
- Cổng (Port): Dữ liệu của Modbus TCP được gửi và nhận qua cổng mặc định là 502.
3.2. Cấu trúc Khung Modbus TCP (MBAP Header)
Modbus TCP bổ sung thêm 7 byte ở phía trước thông điệp Modbus chuẩn, gọi là MBAP (Modbus Application Protocol) Header. MBAP Header bao gồm:
- Transaction Identifier (2 Bytes): Mã nhận dạng giao dịch, dùng để phân biệt các thông điệp khi có nhiều yêu cầu/đáp ứng đồng thời trên cùng một kết nối TCP.
- Protocol Identifier (2 Bytes): Mã định danh giao thức (luôn đặt bằng 0 cho Modbus).
- Length (2 Bytes): Cho biết độ dài của các trường còn lại.
- Unit ID (1 Byte): Có ý nghĩa tương tự như trường “Địa chỉ Slave” trong Modbus RTU, dùng để nhận dạng thiết bị trong mạng.

Modbus RTU vs Modbus TCP frame structure
4. Lỗ hổng An ninh của Modbus TCP
Các hệ thống SCADA truyền thống thường ít quan tâm đến an ninh. Điều này khiến Modbus TCP có những lỗ hổng nghiêm trọng:
- Thiếu Xác thực (Lack of Authentication): Modbus không có cơ chế xác minh danh tính. Bất kỳ ai trong mạng cũng có thể gửi lệnh đến Slave nếu biết địa chỉ, tạo điều kiện cho các cuộc tấn công giả mạo.
- Thông điệp không được Mã hóa (Unencrypted): Tất cả dữ liệu (địa chỉ, mã hàm, dữ liệu) được truyền ở dạng bản rõ (clear text). Kẻ tấn công có thể dễ dàng bắt gói tin, đọc, sửa đổi, hoặc gửi lặp lại thông điệp.
- Giải pháp: Các hệ thống hiện đại cần bổ sung cơ chế bảo mật, ví dụ như sử dụng mã hóa khóa đối xứng AES-128 để bảo mật Modbus TCP, nhằm tăng cường tính bí mật, xác thực và toàn vẹn gói tin.
Tổng kết kiến thức
Dưới đây là bảng tóm tắt nhanh các kiến thức cốt lõi của bài học:
| Tiêu chí |
Modbus RTU |
Modbus TCP |
| Lớp OSI |
Lớp Ứng dụng (Application Layer) |
| Cơ chế |
Master/Slave (Yêu cầu/Đáp ứng) |
| Môi trường truyền |
Nối tiếp (Serial) – (RS232, RS485) |
Ethernet (TCP/IP) |
| Kiểm tra lỗi |
Mã CRC (16-bit) |
Sử dụng cơ chế của TCP/IP (Không có CRC) |
| Cổng (Port) |
Không áp dụng (truyền nối tiếp) |
Cổng 502 |
| Bảo mật (Mặc định) |
Rất kém (Không xác thực, không mã hóa) |
Liên hệ bài học sau
Bài học tiếp theo (Bài 3.4) sẽ giới thiệu về HMI và SCADA. Chúng ta sẽ thấy cách Modbus TCP được sử dụng để kết nối các thiết bị cấp trường (Slave) với các hệ thống điều khiển và giám sát trung tâm (Master), và tại sao màn hình HMI là giao diện quan trọng để người vận hành tương tác với hệ thống Modbus.
Từ khóa SEO
giao thức Modbus
Modbus RTU là gì
Modbus TCP là gì
so sánh Modbus RTU và TCP
Master-Slave Modbus
cổng 502
bảo mật Modbus TCP
Kiểm tra nhanh kiến thức
Hãy xem các câu hỏi dưới đây và tự trả lời. Sau đó, nhấp vào “Bấm để xem đáp án” để kiểm tra.
Câu hỏi 1: Theo mô hình OSI, Modbus là một chuẩn giao thức thuộc lớp nào?
- (A) Tầng Vật lý (Physical layer)
- (B) Tầng Vận chuyển (Transport layer)
- (C) Tầng Ứng dụng (Application layer)
- (D) Tầng Liên kết dữ liệu (Data-link layer)
Bấm để xem đáp án và giải thích
Đáp án đúng là (C).
Giải thích: Modbus là giao thức thuộc lớp Ứng dụng (Application layer), nó định nghĩa “ngôn ngữ” giao tiếp, không phải cách truyền tín hiệu vật lý.
Câu hỏi 2: Cơ chế giao tiếp cốt lõi của giao thức Modbus là gì?
- (A) Peer-to-peer (Ngang hàng)
- (B) Broadcast (Quảng bá)
- (C) Yêu cầu/Đáp ứng (Master/Slave)
- (D) Token Ring
Bấm để xem đáp án và giải thích
Đáp án đúng là (C).
Giải thích: Modbus giao tiếp theo cơ chế Master/Slave, trong đó Master (Chủ) gửi yêu cầu và Slave (Tớ) đáp ứng.
Câu hỏi 3: Điểm khác biệt chính giữa Modbus RTU và Modbus TCP/IP về môi trường truyền tải là gì?
- (A) Modbus RTU sử dụng cáp quang, Modbus TCP/IP sử dụng cáp xoắn đôi.
- (B) Modbus RTU sử dụng giao diện nối tiếp (RS232/RS485), Modbus TCP/IP sử dụng Ethernet.
- (C) Modbus RTU sử dụng cổng 502, Modbus TCP/IP sử dụng cổng 80.
- (D) Modbus RTU hỗ trợ đa điểm, Modbus TCP/IP chỉ hỗ trợ điểm-điểm.
Bấm để xem đáp án và giải thích
Đáp án đúng là (B).
Giải thích: Đây là sự khác biệt cơ bản về lớp vật lý và vận chuyển. RTU chạy trên đường truyền nối tiếp, trong khi TCP chạy trên mạng Ethernet (TCP/IP).
Câu hỏi 4: Trong cấu trúc thông điệp Modbus TCP, trường nào có ý nghĩa tương tự như trường “Địa chỉ Slave” trong Modbus RTU, dùng để nhận dạng thiết bị?
- (A) Transaction Identifier
- (B) Protocol Identifier
- (C) Length Field
- (D) Unit ID
Bấm để xem đáp án và giải thích
Đáp án đúng là (D).
Giải thích: Trường Unit ID (1 byte) trong MBAP Header được dùng để nhận dạng thiết bị Slave, tương đương với trường Địa chỉ (Address) trong Modbus RTU.
Câu hỏi 5: Lỗ hổng bảo mật đáng lo ngại nhất của giao thức Modbus TCP truyền thống là gì?
- (A) Tốc độ truyền dữ liệu quá chậm.
- (B) Các thông điệp được truyền ở dạng bản rõ (không mã hóa) và thiếu xác thực.
- (C) Bị giới hạn ở khoảng cách 1200m.
- (D) Chỉ có thể kết nối tối đa 247 thiết bị.
Bấm để xem đáp án và giải thích
Đáp án đúng là (B).
Giải thích: Việc truyền dữ liệu ở dạng bản rõ (clear text) và không yêu cầu xác thực khiến Modbus TCP dễ bị tấn công giả mạo và nghe lén.