Modbus là một giao thức truyền thông phổ biến trong các hệ thống tự động hóa, được sử dụng để kết nối và trao đổi dữ liệu giữa các thiết bị như PLC, cảm biến, và các thiết bị điều khiển khác. Có ba loại Modbus chính:
Modbus RTU (Remote Terminal Unit):
Đặc điểm: Là dạng Modbus sử dụng giao thức nối tiếp (RS-232 hoặc RS-485). Dữ liệu được truyền dưới dạng nhị phân (bit).
Tốc độ truyền: Modbus RTU có khả năng truyền tải dữ liệu nhanh và hiệu quả, nhưng cần tuân thủ các yêu cầu về độ dài gói tin và đồng bộ.
Ứng dụng: Thường được sử dụng trong các hệ thống PLC, SCADA hoặc các thiết bị yêu cầu kết nối qua các mạng nối tiếp.
Modbus ASCII:
Đặc điểm: Giống như Modbus RTU nhưng sử dụng mã ASCII để mã hóa các dữ liệu. Mỗi byte dữ liệu được mã hóa dưới dạng hai ký tự ASCII.
Tốc độ truyền: Modbus ASCII có tốc độ truyền chậm hơn so với Modbus RTU vì mỗi byte dữ liệu cần được mã hóa thành hai ký tự ASCII.
Ứng dụng: Được sử dụng khi cần dễ dàng đọc và kiểm tra dữ liệu, nhưng ít được ưu tiên so với Modbus RTU do tốc độ truyền thấp hơn.
Modbus TCP/IP:
Đặc điểm: Là phiên bản của Modbus hoạt động trên giao thức TCP/IP qua mạng Ethernet. Modbus TCP/IP sử dụng các gói TCP/IP để truyền dữ liệu, giúp truyền tải dữ liệu qua các mạng LAN hoặc WAN.
Tốc độ truyền: Modbus TCP/IP có tốc độ truyền cao và khả năng kết nối linh hoạt qua các mạng Ethernet.
Ứng dụng: Được sử dụng trong các hệ thống công nghiệp lớn, SCADA, hoặc các ứng dụng yêu cầu khả năng kết nối mạng rộng rãi.
Tóm lại:
Modbus RTU và Modbus ASCII chủ yếu được sử dụng trong các mạng nối tiếp.
Modbus TCP/IP thích hợp cho các hệ thống sử dụng mạng Ethernet hoặc các hệ thống với yêu cầu truyền tải dữ liệu tốc độ cao và mạng kết nối rộng.
1. Modbus RTU
2. Modbus ASCII
Modbus ASCII là một trong ba chế độ truyền thông của giao thức Modbus, cùng với Modbus RTU và Modbus TCP. Modbus ASCII sử dụng mã ASCII (American Standard Code for Information Interchange) để truyền tải dữ liệu giữa các thiết bị trong mạng công nghiệp, và nó hoạt động trên các kênh truyền thông nối tiếp như RS-232 hoặc RS-485. Mặc dù ít phổ biến hơn Modbus RTU và Modbus TCP trong các ứng dụng hiện đại, Modbus ASCII vẫn được sử dụng trong một số hệ thống công nghiệp.
Sử dụng mã ASCII:
Modbus ASCII sử dụng mã ASCII (8 bit mỗi ký tự, được biểu diễn dưới dạng các ký tự chữ cái, số hoặc ký tự đặc biệt) để truyền tải các dữ liệu giữa các thiết bị.
Tất cả các thông điệp Modbus ASCII đều được mã hóa và truyền dưới dạng các ký tự ASCII, thay vì các dữ liệu nhị phân như trong Modbus RTU.
Cấu trúc gói tin Modbus ASCII: Một thông điệp Modbus ASCII bao gồm các thành phần sau:
Địa chỉ thiết bị (Address): 1 byte, chỉ định địa chỉ của thiết bị (0x01 đến 0xF7).
Mã chức năng (Function Code): 1 byte, chỉ định mã chức năng yêu cầu thực hiện (ví dụ: đọc thanh ghi, ghi dữ liệu).
Dữ liệu (Data): N bytes, chứa thông tin yêu cầu hoặc dữ liệu thiết bị gửi lại. Dữ liệu này có thể bao gồm các thanh ghi hoặc cuộn dây được yêu cầu đọc hoặc ghi.
Checksum: 2 byte (LRC - Longitudinal Redundancy Check) dùng để kiểm tra tính toàn vẹn của dữ liệu. Chúng được tính toán từ toàn bộ thông điệp và giúp phát hiện lỗi truyền.
Start/Stop: Các thông điệp Modbus ASCII bắt đầu và kết thúc bằng ký tự dấu " ":" (colon). Đây là đặc điểm riêng của Modbus ASCII để phân biệt với các giao thức khác.
Cấu trúc thông điệp:
Start: Ký tự ":" (Colon) - báo hiệu bắt đầu thông điệp.
Địa chỉ thiết bị: 2 ký tự (1 byte), dạng ASCII.
Mã chức năng: 2 ký tự (1 byte), dạng ASCII.
Dữ liệu: N ký tự, tùy thuộc vào yêu cầu của mã chức năng.
Checksum: 2 ký tự (1 byte), dạng ASCII.
Stop: Kết thúc thông điệp bằng dấu "CRLF" (Carriage Return & Line Feed).
Ví dụ một thông điệp Modbus ASCII:
CopyEdit
:010300000002F9
":": Bắt đầu thông điệp.
01: Địa chỉ thiết bị (1 byte, thiết bị có địa chỉ 1).
03: Mã chức năng (3 - Đọc Holding Registers).
0000: Dữ liệu (các thanh ghi cần đọc, ở đây là 0).
0002: Dữ liệu (số lượng thanh ghi cần đọc, ở đây là 2 thanh ghi).
F9: Checksum (tính toán từ toàn bộ thông điệp).
3. Các mã chức năng trong Modbus ASCII: Các mã chức năng của Modbus ASCII tương tự như trong Modbus RTU, ví dụ:
FC 01: Đọc trạng thái cuộn dây (Read Coils).
FC 02: Đọc các đầu vào rời rạc (Read Discrete Inputs).
FC 03: Đọc các thanh ghi giữ (Read Holding Registers).
FC 04: Đọc các thanh ghi đầu vào (Read Input Registers).
FC 05: Ghi một cuộn dây (Write Single Coil).
FC 06: Ghi một thanh ghi (Write Single Register).
FC 15: Ghi nhiều cuộn dây (Write Multiple Coils).
FC 16: Ghi nhiều thanh ghi (Write Multiple Registers).
4. Đặc điểm và ưu điểm của Modbus ASCII:
Dễ hiểu và dễ debug: Do sử dụng mã ASCII để truyền tải, thông điệp Modbus ASCII dễ dàng đọc và hiểu trực tiếp, giúp trong việc gỡ lỗi và phát hiện sự cố.
Tính tương thích với các thiết bị nối tiếp: Modbus ASCII thường được sử dụng trên các kênh nối tiếp như RS-232 hoặc RS-485.
Khả năng tương thích rộng: Bởi vì Modbus ASCII là một giao thức đơn giản và sử dụng mã ASCII, nó có thể được sử dụng với nhiều loại thiết bị và phần mềm khác nhau mà không cần cấu hình phức tạp.
Không yêu cầu phần cứng phức tạp: Modbus ASCII không yêu cầu phần cứng phức tạp, giúp giảm chi phí triển khai.
5. Hạn chế của Modbus ASCII:
Hiệu suất thấp: So với Modbus RTU, Modbus ASCII có tốc độ truyền dữ liệu chậm hơn vì sử dụng mã ASCII và có thêm các ký tự kiểm tra (checksum) để đảm bảo tính toàn vẹn dữ liệu.
Kích thước dữ liệu lớn hơn: Vì sử dụng mã ASCII, mỗi byte dữ liệu được mã hóa bằng hai ký tự ASCII, điều này làm tăng kích thước của thông điệp so với các giao thức nhị phân như Modbus RTU.
Không hỗ trợ băng thông cao: Do tốc độ truyền tải dữ liệu chậm hơn và yêu cầu bộ kiểm tra dữ liệu (LRC), Modbus ASCII không thích hợp cho các ứng dụng yêu cầu tốc độ cao và truyền tải nhiều dữ liệu.
6. Ứng dụng của Modbus ASCII:
Hệ thống điều khiển công nghiệp: Modbus ASCII thường được sử dụng trong các hệ thống tự động hóa công nghiệp như điều khiển máy móc, giám sát cảm biến và các thiết bị điều khiển khác.
Thiết bị đo lường: Modbus ASCII có thể được sử dụng để giao tiếp với các thiết bị đo lường và giám sát, như cảm biến nhiệt độ, độ ẩm, hoặc các thiết bị thu thập dữ liệu.
Ứng dụng trên các kênh nối tiếp: Modbus ASCII đặc biệt hữu ích khi sử dụng các giao diện nối tiếp như RS-232 hoặc RS-485.
Modbus ASCII là một giao thức truyền thông đơn giản nhưng hiệu quả cho các hệ thống công nghiệp sử dụng mạng nối tiếp. Mặc dù không phổ biến bằng Modbus RTU, Modbus ASCII vẫn có ưu điểm về khả năng dễ đọc, kiểm tra lỗi và khả năng tương thích với nhiều loại thiết bị. Tuy nhiên, với tốc độ chậm hơn và hiệu suất kém hơn so với Modbus RTU, nó thường được sử dụng trong các ứng dụng ít yêu cầu về băng thông hoặc các hệ thống cần dễ dàng gỡ lỗi.
3. Modbus TCP
Modbus TCP là một phiên bản của giao thức Modbus, sử dụng mạng Ethernet để truyền tải dữ liệu, thay vì các phương tiện truyền thông khác như RS-485 (dùng trong Modbus RTU). Modbus TCP cho phép các thiết bị giao tiếp với nhau thông qua mạng Ethernet, sử dụng giao thức TCP/IP để đảm bảo việc truyền tải dữ liệu tin cậy và hiệu quả.
Giao thức TCP/IP:
Modbus TCP sử dụng giao thức TCP (Transmission Control Protocol) dựa trên nền tảng TCP/IP để truyền tải dữ liệu qua mạng Ethernet. Điều này có nghĩa là Modbus TCP có cơ chế kiểm soát lỗi và đảm bảo tính toàn vẹn của dữ liệu (gửi và nhận theo đúng thứ tự).
Vì TCP là giao thức kết nối (connection-oriented), nó đảm bảo rằng các gói tin sẽ được xác nhận khi đến đích, và nếu có gói tin bị mất, nó sẽ được yêu cầu gửi lại.
Cấu trúc gói tin Modbus TCP:
Cấu trúc của một gói tin Modbus TCP bao gồm một phần Header và phần Data. Dưới đây là cấu trúc chi tiết của gói tin Modbus TCP:
MBAP Header (Modbus Application Protocol Header): Đây là phần đầu của gói tin, có nhiệm vụ giúp xác định các thông tin liên quan đến ứng dụng Modbus.
Transaction Identifier (2 bytes): Sử dụng để phân biệt các giao dịch.
Protocol Identifier (2 bytes): Được sử dụng để xác định giao thức, trong Modbus TCP, giá trị này luôn là 0.
Length (2 bytes): Xác định độ dài của phần còn lại của gói tin (bắt đầu từ phần Unit Identifier).
Unit Identifier (1 byte): Dùng để xác định địa chỉ của thiết bị trong hệ thống Modbus.
Modbus Data: Phần này chứa các thông tin yêu cầu và dữ liệu từ thiết bị, bao gồm các mã chức năng Modbus và các dữ liệu được yêu cầu.
Function Code (1 byte): Xác định loại yêu cầu (ví dụ: đọc/ghi các thanh ghi).
Data (n bytes): Dữ liệu thực tế của yêu cầu, có thể là thanh ghi, bit, hoặc thông tin khác mà thiết bị gửi hoặc nhận.
Ứng dụng của Modbus TCP:
Modbus TCP chủ yếu được sử dụng trong các hệ thống tự động hóa công nghiệp để kết nối các thiết bị như PLC, cảm biến, bộ điều khiển, và các thiết bị giám sát.
Cũng có thể sử dụng trong các hệ thống SCADA (Supervisory Control and Data Acquisition) để giám sát và điều khiển các thiết bị trong mạng lưới công nghiệp.
Các loại yêu cầu và chức năng trong Modbus TCP:
Modbus TCP hỗ trợ nhiều mã chức năng (Function Codes) khác nhau, mỗi mã chức năng tương ứng với một yêu cầu hoặc hành động cụ thể:
Read Coils (FC 01): Đọc trạng thái của các cuộn dây (bit) trong một thiết bị.
Read Discrete Inputs (FC 02): Đọc các đầu vào rời rạc.
Read Holding Registers (FC 03): Đọc các thanh ghi giữ (holding registers).
Write Single Coil (FC 05): Ghi một giá trị vào một cuộn dây (bit).
Write Single Register (FC 06): Ghi một giá trị vào một thanh ghi.
Write Multiple Coils (FC 15): Ghi nhiều giá trị vào các cuộn dây.
Write Multiple Registers (FC 16): Ghi nhiều giá trị vào các thanh ghi.
Ưu điểm của Modbus TCP:
Độ tin cậy cao: Do sử dụng TCP, Modbus TCP cung cấp cơ chế đảm bảo rằng các gói tin sẽ được truyền tải đúng và không bị mất mát.
Dễ dàng triển khai: Sử dụng mạng Ethernet tiêu chuẩn, giúp giảm chi phí hạ tầng và dễ dàng kết nối các thiết bị khác nhau trong một mạng.
Tốc độ cao: Modbus TCP cho phép tốc độ truyền tải nhanh hơn so với các phiên bản khác của Modbus (như Modbus RTU) nhờ vào tốc độ cao của mạng Ethernet.
Mở rộng linh hoạt: Với Ethernet là nền tảng, Modbus TCP có thể kết nối với hàng nghìn thiết bị và có thể dễ dàng mở rộng mạng mà không gặp vấn đề về băng thông.
Hạn chế của Modbus TCP:
Không hỗ trợ truyền thông không dây trực tiếp: Mặc dù có thể sử dụng mạng Ethernet không dây, Modbus TCP chủ yếu dựa vào mạng có dây Ethernet.
Khả năng bảo mật thấp: Mặc dù Modbus TCP sử dụng TCP/IP, nhưng nó không có cơ chế bảo mật mạnh mẽ như mã hóa, xác thực, hoặc bảo vệ chống tấn công. Điều này có thể khiến Modbus TCP dễ bị tấn công nếu không được bảo vệ đúng cách.
Modbus TCP là một giao thức truyền thông mạnh mẽ và dễ sử dụng cho các hệ thống tự động hóa công nghiệp, dựa trên nền tảng TCP/IP và Ethernet. Giao thức này cho phép kết nối các thiết bị công nghiệp qua mạng Ethernet với tốc độ cao, độ tin cậy và khả năng mở rộng linh hoạt. Tuy nhiên, người dùng cần phải lưu ý về các vấn đề bảo mật khi triển khai Modbus TCP trong các ứng dụng công nghiệp.