Giao thức Modbus là gì? Ứng dụng Modbus trong IoT và cách hoạt động

Modbus là gì? Đây là một giao thức được phát triển từ những năm 1979, giúp các thiết bị tự động trong IoT có thể tự liên lạc với nhau. Chúng là giao thức truyền thông nối tiếp, có tốc độ thấp và thường dùng rộng rãi trong các ứng dụng tự động hóa thông minh. Nhiều ứng dụng giám sát và điều khiển trong công nghiệp cũng thường dùng Modbus, đặc biệt là trong PLC.

Modbus là gì?

Modbus là giao thức giao tiếp được hoạt động theo mô hình Master – Slave (chủ – tớ). Trong đó, cách thức giao tiếp luôn diễn ra theo cặp:

  • Thiết bị khởi tạo (Master) chịu trách nhiệm khởi tạo mọi tương tác và chờ phản hồi
  • Thiết bị Slave phản hồi
Tìm hiểu về Modbus là gì?

Modubus thường dùng để liên lạc với Programmable Logic Controllers (Bộ điều khiển logic khả trình PLCs). Nhờ vào ưu điểm đơn giản, dễ triển khai, Modbus đã được sử dụng khá phổ biến. Đây là giao thức kết nối cổng RS485.

Trong giao tiếp giữa các bộ vi điều khiển hoặc giữa các vi điều khiển và máy tính Host, các bộ nội dung giao thức khác nhau sẽ được xác định rõ. Cả 2 bên đều phải tuân thủ theo các nội dung giao thức này để khởi tạo kết nối.

Hiện nay, có khá nhiều giao thức khác nhau để đáp ứng nhu cầu liên lạc giữa các thiết bị, ví dụ như UART, I2C hoặc SPI.

Các loại giao thức Modbus

Dưới đây là 3 loại giao thức Modbus chính:

Modbus RTU

Modbus RTU (Remote Terminal Unit) là giao thức thường dùng RS485 làm lớp vật lý và dùng cổng Serial của chip để truyền tải thông điệp hoặc dữ liệu. Các dữ liệu này được gửi đi dưới dạng nhị phân, ví dụ:

Tin nhắn gửi đi trong Modbus RTU

Trong đó:

  • Slave address: Địa chỉ của thiết bị Slave. Mỗi một Slave có một địa chỉ duy nhất, chiếm một byte trong khoảng 0 – 255. Phạm vi hợp lệ của Slave thường là 1 đến 247, vì địa chỉ 255 thường dùng cho các địa chỉ quảng bá (được dùng để Master gửi thông báo tới tất cả các thiết bị Slave).
  • Function code: Mã chức năng chiếm 1 byte, dùng để mô tả mục đích của lệnh. Ví dụ, chúng ta dùng Function code để truy vấn dữ liệu của thiết bị Slave hoặc thay đổi thông tin nào đó của Slave. Mỗi một mã chức năng khác nhau sẽ có tính năng khác nhau.
  • Data: Phần dữ liệu data sẽ thay đổi, tùy thuộc vào mã chức năng. Ví dụ, nếu mã chức năng là truy vấn vào dữ liệu của Slave, data có thể là địa chỉ cần truy vấn và số lượng byte cần đọc.
  • Checksum: Dùng để tổng kiểm tra, xác minh tính chính xác của dữ liệu nhận được (chẳng hạn như CRC).

Modbus TCP

Modbus TCP còn có thể viết là Modbus TCP/IP, đây là một biến thể của Modbus sử dụng mạng TCP/IP để giao tiếp. Chúng kết nối với nhau qua cổng 502.

Với giao thức này, chúng ta không cần kiểm tra các thông báo, vì lớp Ethernet đã triển khai và đảm bảo tính toàn vẹn của dữ liệu.

>> Xem thêm: Nhà thông minh Zigbee – Các tính năng nổi bật và cách dùng

Modbus ACSII

Với giao thức này, các tin nhắn được gửi đi dưới dạng ký tự ASCII, với định dạng là dự phòng dọc (Vertical Redundancy Check – VRC).

Tin nhắn gửi đi trong giao thức Modbus ACSII

Các thông báo trong Modbus ACSII thường bắt đầu bằng dấu hai chấm ( : ) và kết thúc bằng một chuỗi xuống dòng.

Ngoài ra, giao thức này không có các điểm đánh dấu, mà chúng phụ thuộc vào các khoảng thời gian để xác định điểm bắt đầu và kết thúc của frame.

Cách thức hoạt động của Modbus

Để hiểu hơn về Modbus là gì, chúng ta hãy cùng xem qua cách thức hoạt động của nó. Trong giao thức này, có 2 loại thiết bị chính:

  • Modbus Client: Máy chủ chính, thường là các máy tính giám sát trong HMI hoặc SCADA.
  • Modbus Server: Thiết bị Slaves, thường là các thiết bị đầu cuối từ xa như PLC, các cảm biến hoặc PAC.

Toàn bộ việc giao tiếp dữ liệu được điều khiển bởi Modbus Client, thông qua việc phản hồi yêu cầu kết nối. Khi đó, dữ liệu được chuyển thành byte:

  • Với Modbus RTU, mỗi byte đều được mã hóa dựa trên khung 11 bit không đồng bộ, bao gồm bit start, byte dữ liệu, byte chẵn lẻ và bit stop.
  • Với Modbus ASCII, mỗi byte được mã hóa trên khung 10 bit, bao gồm bit start, 7 bit dữ liệu, 1 bit chẵn lẻ (có thể không có) và 1 bit stop.

Các thông báo được truyền giữa các thiết bị Master và Slave (hoặc giữa Server và Client) còn được gọi là đơn vị dữ liệu giao thức – Protocol Data Unit (PDU).

Master gửi yêu cầu đến một trong các Slave đã được xác định, dựa trên địa chỉ của Slave (là mỗi dãy byte có giá trị từ 0 đến 255). Khi đó, Slave sẽ đưa ra phản hồi, trong đó chứa các giá trị mà Master cần. Nếu quá trình này xảy ra lỗi, một đoạn mã chức năng sẽ bị thay đổi và dữ liệu gửi về có chứa mã mô tả chi tiết về lỗi đã xảy ra.

Ứng dụng của Modbus trong IoT

Vậy, ứng dụng Modbus TCP/IP hoặc các loại Modbus khác trong dự án IoT là gì? Nhìn chung, giao thức này thường được dùng như một giao diện cục bộ để quản lý các thiết bị trong dự án IoT – các dự án công nghiệp tự động.

Hiện nay, hàng trăm nhà cung cấp khác nhau đã triển khai hệ thống Modbus IoT với thiết bị của họ. Có thể nói, Modbus hiện đang là một tiêu chuẩn phổ biến cho các hệ thống mạng truyền thông công nghiệp.

Ngoài ra, lớp truyền tải dữ liệu trong Modbus RTU cũng khá đơn giản, với tiêu chuẩn RS485 hỗ trợ lên đến 32 Node. Tiêu chuẩn này cũng có khả năng chống ồn vượt trội hơn hẳn so với RS232.

Tuy nhiên, khi sử dụng Modbus, bạn cần lưu ý một số nhược điểm sau, để đảm bảo an toàn tốt nhất cho hệ thống của mình:

  • Modbus chưa hỗ trợ các biện pháp bảo vệ nào trước các cuộc tấn công độc hại hoặc các sự cố an ninh mạng, bạn cần thêm các biện pháp bảo vệ bổ sung nếu dự án IoT gửi các thông tin nhạy cảm.
  • Khi bạn cần phản hồi dữ liệu nhanh chóng thì Modbus RTU chưa hẳn là lựa chọn phù hợp. Tốc độ truyền của giao thức này có thể lên đến 115L baud, nhưng thời gian phản hồi sẽ từ 25 mili giây trở lên cho mỗi một thiết bị được kết nối trong hệ thống. Điều này tạo ra độ trễ cao khi xử lý với các Node Slave trong hệ thống Modbus. Khi hệ thống có càng nhiều thiết bị Slave, thời gian xử lý càng lâu.
  • Giao thức Modbus không hỗ trợ các ứng dụng điều khiển.

Lời kết

Qua bài viết trên, hy vọng bạn đã hiểu hơn về Modbus là gì, cách thức hoạt động cũng như các loại giao thức Modbus chính hiện nay. Nhìn chung, Modbus phù hợp cho các dự án IoT nhỏ, khi ta cần gửi một đoạn dữ liệu ngắn từ A đến B. Chúng khá đơn giản khi triển khai và hầu như không làm tiêu tốn dung lượng RAM, nên đây là lựa chọn lý tưởng cho các ứng dụng nhúng nhỏ.

IoTZone – Chuyên cung cấp thiết bị điện tử & tài liệu cho Makers

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *