Bỏ qua tới nội dung
Gọi kỹ thuật
  1. Trang chủ
  2. Kiến thức
  3. Thông tin công nghệ

MODBUS là gì? Khái niệm cơ bản về giao thức Modbus

IPC · đăng 04/04/2023 · cập nhật 03/09/2026 · 14 phút đọc
Modbus là gì? Modbus là giao thức truyền thông công nghiệp mở, do Modicon công bố năm 1979, dùng để một thiết bị chủ (Master) đọc và ghi dữ liệu trên các thiết bị tớ (Slave) như PLC, biến tần, đồng hồ đo, cảm biến. Giao thức miễn phí bản quyền, cấu trúc đơn giản, chạy trên đường nối tiếp RS-232, RS-485 và trên Ethernet, nên đến nay vẫn là cách nối thiết bị phổ biến nhất trong nhà máy. Bài viết trình bày nguyên tắc hoạt động, ba biến thể Modbus RTU, ASCII, TCP, cách đánh địa chỉ thanh ghi, kiểu dữ liệu, ứng dụng và cách chọn thiết bị cho mạng Modbus.

1. MODBUS là gì?

Modbus là chuẩn giao thức truyền thông công nghiệp do hãng Modicon (nay thuộc Schneider Electric) công bố năm 1979 để nối các PLC của hãng với nhau. Giao thức quy định cấu trúc khung dữ liệu và tập lệnh đọc, ghi, không quy định phần cứng đường truyền.
Modbus trở thành tiêu chuẩn thực tế (de facto) của ngành tự động hoá vì ba lý do: đặc tả công khai, miễn phí bản quyền và đơn giản để cài đặt trên vi điều khiển nhỏ. Từ năm 2004, đặc tả Modbus do tổ chức phi lợi nhuận Modbus Organization duy trì và công bố. Tổ chức này đã đổi cách gọi Master/Slave thành Client/Server trong tài liệu mới, nhưng phần lớn tài liệu kỹ thuật và phần mềm tại nhà máy vẫn dùng thuật ngữ cũ, nên bài viết giữ cách gọi Master/Slave.
Modbus là gì - giao thức truyền thông nối thiết bị chủ với các thiết bị tớ trong nhà máy
Modbus là gì

2. Nguyên tắc hoạt động của MODBUS

Modbus hoạt động theo nguyên tắc Master – Slave (chủ – tớ). Một Master nối với một hoặc nhiều Slave. Master thường là PLC, máy tính công nghiệp, DCS, RTU hoặc máy chủ SCADA. Slave thường là thiết bị cấp hiện trường: mô-đun vào ra, biến tần, đồng hồ điện, bộ điều khiển nhiệt độ, cảm biến có ngõ ra số. Thiết bị yêu cầu dữ liệu là Modbus Master; thiết bị cung cấp dữ liệu là Modbus Slave. Trong một mạng Modbus nối tiếp tiêu chuẩn chỉ có một Master và tối đa 247 Slave, mỗi Slave mang một địa chỉ duy nhất từ 1 đến 247. Master đọc dữ liệu từ Slave và cũng ghi được dữ liệu xuống Slave, ví dụ đặt tần số cho biến tần.
Sơ đồ Modbus Master gửi yêu cầu và Modbus Slave trả lời dữ liệu
Modbus Master và các thiết bị cung cấp thông tin Modbus Slave
Một chu kỳ trao đổi gồm hai bước: Master gửi khung yêu cầu chứa địa chỉ Slave, mã hàm (function code) và địa chỉ dữ liệu; Slave có địa chỉ trùng khớp xử lý rồi gửi khung trả lời. Các Slave không tự phát dữ liệu; chúng chỉ trả lời khi được hỏi. Vì vậy, thời gian cập nhật của một điểm dữ liệu phụ thuộc số Slave trên mạng và tốc độ truyền. Mã hàm hay dùng nhất gồm 01 (đọc coil), 02 (đọc ngõ vào rời rạc), 03 (đọc holding register), 04 (đọc input register), 05 và 06 (ghi một coil, một thanh ghi), 15 và 16 (ghi nhiều coil, nhiều thanh ghi). Ban đầu Modbus chạy trên RS-232, sau đó được dùng chủ yếu trên RS-485 để đạt khoảng cách xa hơn và nối nhiều thiết bị trên cùng một đôi dây (mạng đa điểm, multi-drop). Một số thiết bị hiện đại vừa làm Slave cho hệ thống cấp trên vừa làm Master cho các thiết bị cấp dưới, gọi là thiết bị lai; chúng cần hai cổng hoặc một cổng có phần mềm chuyển vai trò.

3. Các tiêu chuẩn Modbus được sử dụng phổ biến

Ba biến thể Modbus đang được dùng phổ biến trong công nghiệp là Modbus RTU, Modbus ASCII và Modbus TCP. Cả ba dùng chung tập mã hàm và mô hình dữ liệu, khác nhau ở cách mã hoá khung và đường truyền vật lý.
Ba tiêu chuẩn Modbus phổ biến: Modbus RTU, Modbus ASCII và Modbus TCP
Các tiêu chuẩn Modbus
Tiêu chíModbus ASCIIModbus RTUModbus TCP
Đường truyềnRS-232, RS-485, modemRS-232, RS-485Ethernet, cổng TCP 502
Mã hoáKý tự ASCII, 2 ký tự cho 1 byteNhị phân, 1 byte cho 1 byteNhị phân trong gói TCP/IP
Kiểm lỗiLRCCRC 16 bitDo tầng TCP/IP đảm nhiệm
Phân định khungKý tự bắt đầu ":" và kết thúc CR LFKhoảng lặng ≥ 3,5 ký tựTiêu đề MBAP có trường độ dài
Định danh thiết bịĐịa chỉ Slave 1–247Địa chỉ Slave 1–247Địa chỉ IP, thêm Unit ID khi qua gateway
Điểm mạnhChịu đường truyền kém, dễ đọc khi gỡ lỗiHiệu suất cao, được hỗ trợ rộng nhấtTốc độ cao, nhiều Master, dùng chung hạ tầng mạng nhà máy

3.1 Modbus ASCII

Trong Modbus ASCII, mỗi byte dữ liệu được mã hoá thành hai ký tự ASCII ở hệ thập lục phân, nên khối lượng truyền gấp đôi Modbus RTU với cùng nội dung. Khung bắt đầu bằng ký tự ":" và kết thúc bằng CR LF, do đó thiết bị nhận xác định được ranh giới khung ngay cả khi có khoảng ngắt bất thường trên đường truyền. Nhờ đặc điểm này, Modbus ASCII chậm nhất trong ba biến thể nhưng phù hợp với đường truyền qua modem điện thoại, sóng vô tuyến hoặc đường dây nhiễu, nơi khoảng lặng giữa các ký tự không ổn định.

3.2 Modbus RTU

Modbus RTU mã hoá dữ liệu ở dạng nhị phân, một byte truyền cho một byte dữ liệu, kiểm lỗi bằng CRC 16 bit. Khung được phân định bằng khoảng lặng tối thiểu 3,5 ký tự, nên đòi hỏi đường truyền có định thời ổn định. Modbus RTU chạy trên RS-232 (điểm – điểm) hoặc RS-485 (đa điểm), tốc độ từ 1200 đến 115200 baud, phổ biến nhất là 9600 và 19200 baud. Đây là biến thể được hỗ trợ rộng nhất: hầu hết PLC, biến tần, đồng hồ điện năng và bộ điều khiển nhiệt độ đều có sẵn cổng RS-485 Modbus RTU.
Cấu trúc khung Modbus RTU trên đường truyền RS-485 với địa chỉ, mã hàm, dữ liệu và CRC
Modbus RTU

3.3 Modbus TCP

Modbus TCP là Modbus chạy trên Ethernet (đầu nối RJ45). Khung Modbus được đặt trong gói TCP/IP với một tiêu đề MBAP (Modbus Application Protocol header) chứa mã giao dịch, độ dài và Unit ID. Về bản chất, đây là thông điệp Modbus RTU bỏ trường CRC, gửi qua mạng IP thay cho đường nối tiếp. Thiết bị Modbus TCP được định danh bằng địa chỉ IP, lắng nghe ở cổng 502; trường Unit ID chỉ cần thiết khi đi qua gateway nối xuống mạng RS-485. Modbus TCP cho phép nhiều Master cùng truy vấn một Slave và tận dụng switch, cáp mạng sẵn có của nhà máy.
Modbus TCP đóng gói khung Modbus trong gói TCP/IP truyền qua mạng Ethernet
Modbus TCP

4. Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Dữ liệu trong thiết bị Slave được tổ chức thành bốn vùng. Hai vùng chứa giá trị rời rạc bật/tắt (coil và ngõ vào rời rạc), hai vùng chứa giá trị số 16 bit (thanh ghi, register). Mỗi loại có một vùng chỉ đọc (read-only) và một vùng đọc – ghi (read-write).
  • Mỗi vùng có tối đa 9999 phần tử theo cách đánh số truyền thống.
  • Mỗi coil hoặc ngõ vào rời rạc là 1 bit, được gán địa chỉ dữ liệu từ 0000 đến 270E (hệ thập lục phân).
  • Mỗi thanh ghi là 1 word = 16 bit = 2 byte, cũng được gán địa chỉ dữ liệu từ 0000 đến 270E.
Số hiệu coil/thanh ghiĐịa chỉ dữ liệuQuyền truy cậpTên vùng
1 – 99990000 – 270EĐọc – ghiDiscrete Output Coils (coil ngõ ra)
10001 – 199990000 – 270EChỉ đọcDiscrete Input Contacts (ngõ vào rời rạc)
30001 – 399990000 – 270EChỉ đọcAnalog Input Registers (thanh ghi ngõ vào)
40001 – 499990000 – 270EĐọc – ghiAnalog Output Holding Registers (thanh ghi lưu giữ)
Số hiệu coil/thanh ghi (register number) chỉ là tên gọi trong tài liệu, không xuất hiện trong khung truyền. Khung truyền dùng địa chỉ dữ liệu (data address), là số hiệu trừ đi phần lệch (offset) của vùng: 1, 10001, 30001 hoặc 40001. Ví dụ, Holding Register số hiệu 40001 có địa chỉ dữ liệu 0000; thanh ghi 40108 có địa chỉ 006B (107 ở hệ thập phân). Khi đọc tài liệu thiết bị, cần xác định hãng đang ghi số hiệu hay địa chỉ, và địa chỉ bắt đầu từ 0 hay từ 1; đây là nguyên nhân phổ biến nhất khiến đọc lệch một thanh ghi.

5. Kiểu dữ liệu MODBUS

Đặc tả Modbus chỉ định nghĩa thanh ghi 16 bit, không định nghĩa kiểu dữ liệu. Cách hiểu nội dung thanh ghi do hãng thiết bị quy định trong tài liệu. Lấy ví dụ thanh ghi 40108 chứa giá trị AE41 (hệ thập lục phân), giá trị này có thể được hiểu theo một trong các kiểu 16 bit sau:
  • Số nguyên không dấu 16 bit (0 đến 65535): AE41 = 44609.
  • Số nguyên có dấu 16 bit (-32768 đến 32767): AE41 = -20927 (bù hai: giá trị lớn hơn 32767 thì trừ đi 65536).
  • Chuỗi hai ký tự ASCII: AE41 = "®A".
  • Giá trị bật/tắt rời rạc lưu trong thanh ghi: chỉ nhận 0000 hoặc 0001.
Hai thanh ghi liên tiếp 40108 và 40109 có thể ghép thành một giá trị 32 bit, ví dụ AE41 5652:
  • Số nguyên không dấu 32 bit (0 đến 4294967295): AE415652 = 2923517522.
  • Số nguyên có dấu 32 bit (-2147483648 đến 2147483647): AE415652 = -1371449774.
  • Số thực dấu phẩy động IEEE 754 32 bit, độ chính xác khoảng bảy chữ số thập phân: AE415652 ≈ -4,395978 × 10⁻¹¹.
  • Chuỗi bốn ký tự ASCII: "®AVR". Ghép nhiều thanh ghi hơn sẽ được chuỗi dài hơn, mỗi thanh ghi chứa hai ký tự.
Phần mềm SCADA và trình điều khiển Modbus trên máy tính thường cho chọn kiểu dữ liệu khi khai báo thẻ (tag). Chọn sai kiểu thì giá trị đọc về vẫn có nhưng vô nghĩa, ví dụ nhiệt độ hiển thị hàng chục nghìn độ.

6. Thứ tự byte và word trong chuẩn Modbus

Đặc tả Modbus quy định trong một thanh ghi 16 bit, byte cao truyền trước byte thấp (big-endian). Với giá trị 32 bit ghép từ hai thanh ghi, đặc tả không quy định thanh ghi nào chứa word cao. Do đó, một số hãng đặt word cao ở thanh ghi đầu (AE41 trước 5652), hãng khác đặt word thấp ở thanh ghi đầu (5652 trước AE41). Một số hãng còn đảo cả thứ tự byte trong từng thanh ghi. Vì vậy, khi ghép giá trị 32 bit, phần mềm Master thường có tuỳ chọn hoán đổi word (word swap) và hoán đổi byte (byte swap). Cách xác định nhanh: đọc một thanh ghi có giá trị đã biết, ví dụ điện áp lưới hoặc tần số 50 Hz, rồi thử các tổ hợp hoán đổi đến khi giá trị hiển thị đúng.
Thứ tự byte và word khi ghép hai thanh ghi Modbus 16 bit thành giá trị 32 bit
Byte và word trong chuẩn Modbus

7. Mở rộng thanh ghi trong chuẩn Modbus

Theo cách đánh số truyền thống, vùng Holding Register có số hiệu 40001 đến 49999, tức tối đa 9999 thanh ghi, đủ cho phần lớn thiết bị. Tuy nhiên, trường địa chỉ trong khung Modbus dài 16 bit, cho phép địa chỉ dữ liệu từ 0000 đến FFFF, tức 65536 thanh ghi. Nếu tính theo số hiệu, vùng này kéo dài từ 40001 đến 105536. Nhiều trình điều khiển Modbus trên máy tính (PC Master) được viết với giới hạn 40001 đến 49999 và không truy cập được thanh ghi mở rộng; nhiều thiết bị Slave cũng không hỗ trợ. Ngược lại, thiết bị đời mới với bản đồ dữ liệu lớn (đồng hồ điện năng nhiều thông số, bộ điều khiển đa kênh) có thể đặt dữ liệu ở vùng mở rộng. Khi chọn phần mềm hoặc thiết bị Master, cần kiểm tra có hỗ trợ địa chỉ 6 chữ số hoặc địa chỉ thô 0 đến 65535 hay không.

8. Ứng dụng của Modbus trong nhà máy

Modbus là giao thức mở: hãng sản xuất tích hợp Modbus vào thiết bị mà không trả phí bản quyền. Nhờ đó, Modbus có mặt trong hầu hết thiết bị điện tử công nghiệp và là phương tiện phổ biến nhất để nối thiết bị của các hãng khác nhau vào một hệ thống.
Ứng dụng chuẩn Modbus nối PLC, biến tần, đồng hồ đo với máy tính giám sát SCADA
Ứng dụng chuẩn Modbus
Trong nhà máy, Modbus thường được dùng ở các vị trí sau:
  • Đưa tín hiệu từ thiết bị đo (nhiệt độ, độ ẩm, áp suất, lưu lượng, điện năng) về bộ điều khiển hoặc máy tính thu thập dữ liệu.
  • Nối PLC với biến tần, bộ điều khiển nhiệt độ, van điều khiển để đọc trạng thái và đặt giá trị.
  • Nối máy tính giám sát với thiết bị đầu cuối từ xa (RTU) trong hệ thống SCADA của trạm bơm, trạm điện, xử lý nước.
  • Làm giao thức chung khi phần mềm MES hoặc hệ thống giám sát năng lượng cần đọc dữ liệu từ máy móc nhiều hãng.
Biến thể nối tiếp (Modbus RTU, Modbus ASCII) dùng cho thiết bị cấp hiện trường; Modbus TCP dùng cho lớp điều khiển và giám sát trên Ethernet. Gateway Modbus chuyển đổi giữa hai lớp này để thiết bị RS-485 đời cũ tham gia mạng Ethernet.

9. Lợi ích khi sử dụng Modbus

  • Tương thích rộng: thiết bị của hầu hết các hãng đều hỗ trợ, thuận lợi khi nhà máy có máy móc nhiều đời và nhiều nguồn gốc.
  • Chi phí thấp: không phí bản quyền, phần cứng RS-485 rẻ, cáp xoắn đôi hai dây, khoảng cách đến khoảng 1200 m mà không cần bộ lặp.
  • Dễ triển khai và bảo trì: khung dữ liệu đơn giản, có thể theo dõi bằng công cụ miễn phí; kỹ thuật viên dễ tìm lỗi.
  • Kết nối được với hệ thống giám sát, thu thập dữ liệu cấp trên và các ứng dụng IoT công nghiệp thông qua gateway hoặc Modbus TCP.
Hạn chế cần tính đến: Modbus không có cơ chế bảo mật, không có cơ chế thiết bị tớ tự báo sự kiện, và tốc độ nối tiếp thấp nên không phù hợp cho điều khiển chuyển động hoặc lượng dữ liệu lớn. Với các yêu cầu này, nhà máy dùng thêm PROFINET, EtherNet/IP hoặc EtherCAT ở lớp điều khiển, còn Modbus giữ vai trò nối thiết bị đo và thiết bị cấp trường.

Chọn thiết bị cho mạng Modbus

Ba tiêu chí kỹ thuật cần xem khi chọn máy tính và thiết bị mạng cho mạng Modbus: thứ nhất, có cổng COM RS-485 hoặc RS-232, ưu tiên cổng cách ly và có bảo vệ ESD để chịu nhiễu, xung sét lan truyền trên đường dây dài; thứ hai, có cổng Ethernet để chạy Modbus TCP và nối lên SCADA, MES; thứ ba, dải nhiệt độ làm việc và thiết kế không quạt phù hợp với vị trí lắp trong tủ điện. Cho vị trí máy thu thập dữ liệu đặt trong tủ, máy tính công nghiệp không quạt Advantech UNO-2271G có 2 cổng Gigabit Ethernet, tuỳ chọn 2 cổng RS-232/422/485 qua mô-đun iDoor, hỗ trợ giao thức fieldbus và lắp thêm ngõ vào ra số cách ly. Khi cần đưa thiết bị RS-485 đời cũ lên Ethernet, Modbus Gateway Advantech EKI-1221 chuyển đổi giữa Modbus TCP và Modbus RTU/ASCII, mỗi cổng nối tiếp nối tới 31 Slave, có bảo vệ ESD 15 kV và lắp ray DIN. Ở lớp mạng, switch công nghiệp Advantech EKI-5525MI giao tiếp với phần mềm SCADA bằng Modbus/TCP, chịu nhiệt độ -40 đến 75 °C và có nguồn vào dự phòng. Để rà nhanh theo điều kiện lắp đặt thực tế, dùng công cụ chọn máy theo điều kiện lắp đặt.

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

Modbus là gì?

Modbus là giao thức truyền thông công nghiệp mở, do Modicon công bố năm 1979 và hiện do Modbus Organization duy trì. Giao thức quy định cách một thiết bị chủ (Master) đọc, ghi dữ liệu trên các thiết bị tớ (Slave) qua đường nối tiếp RS-232, RS-485 hoặc qua Ethernet. Modbus miễn phí bản quyền nên được tích hợp trong PLC, biến tần, đồng hồ đo, cảm biến của hầu hết các hãng.

Modbus RTU và Modbus TCP khác nhau như thế nào?

Modbus RTU truyền khung dữ liệu nhị phân trên đường nối tiếp RS-485 hoặc RS-232, mỗi mạng có một Master và tối đa 247 Slave, kiểm lỗi bằng CRC. Modbus TCP đóng gói khung Modbus trong gói TCP/IP, chạy trên Ethernet, cổng 502, định danh thiết bị bằng địa chỉ IP nên không giới hạn 247 thiết bị và cho phép nhiều Master cùng truy vấn một Slave.

Một mạng Modbus RTU nối được bao nhiêu thiết bị?

Theo đặc tả, một mạng Modbus nối tiếp có một Master và tối đa 247 Slave, mỗi Slave mang địa chỉ duy nhất từ 1 đến 247. Trong thực tế, số thiết bị trên một nhánh RS-485 còn bị giới hạn bởi tải của bộ thu phát, thường là 32 thiết bị mỗi đoạn nếu không dùng bộ lặp.

Thanh ghi Modbus 40001 nghĩa là gì?

Số 40001 là số hiệu thanh ghi (register number) theo cách đánh số truyền thống: tiền tố 4 chỉ vùng Holding Register, phần còn lại là thứ tự trong vùng. Trong khung truyền thực tế, thanh ghi này có địa chỉ dữ liệu 0000 (hệ thập lục phân), tức là số hiệu trừ đi 40001. Nhầm lẫn giữa số hiệu và địa chỉ là nguyên nhân phổ biến khiến đọc sai thanh ghi.

Máy tính công nghiệp cần cổng gì để giao tiếp Modbus?

Với Modbus RTU hoặc ASCII, máy tính cần cổng COM RS-485 hoặc RS-232, tốt nhất là cổng cách ly để chống nhiễu và xung điện. Với Modbus TCP, máy tính chỉ cần cổng Ethernet và phần mềm hỗ trợ giao thức. Nhiều máy tính công nghiệp không quạt có cả hai loại cổng nên dùng được cho cả thiết bị cũ và mới.

Bài liên quan

Công cụ chọn máy · maytinhcongnghiep.com

Cần máy tính công nghiệp cho ứng dụng trong bài? Trả lời 4 câu về điều kiện lắp đặt.

Nhiệt độ, rung, bụi, nguồn điện — hệ thống gợi ý cấu hình từ hơn 2.700 mã máy trong kho dữ liệu maytinhcongnghiep.com của IPC247.