Khái niệm về giao thức Modbus RTU và kết nối phần cứng

Khái niệm về giao thức Modbus RTU và kết nối phần cứng

Modbus là một chuẩn giao thức truyền thông công nghiệp được phát triển bởi Modicon (nay thuộc về Schneider Electric) vào năm 1979, được dùng để giao tiếp các thiết bị với nhau trong hệ SCADA (Supervisory Control And Data Acquistion). Modbus trở thành một chuẩn giao thức truyền thông công nghiệp tiêu chuẩn vì nó có độ ổn định cao, miễn phí, đơn giản và dễ sử dụng.

Giao thức Modbus được chia thành nhiều loại như Modbus RTU, Modbus ASCII, Modbus TCP/IP. Mỗi loại sẽ thích hợp cho từng ứng dụng riêng. Điểm chung của các giao thức này đều dựa trên nguyên tắc Master – Slave, khi thiết bị Master gửi yêu cầu tới thiết bị Slave thì thiết bị đó mới phản hồi. Tất cả các thiết bị sẽ được kết nối chung với nhau trên một đường truyền.

Application of MODBUS Protocol in Microcontrollers - Open4Tech

Bài viết này nằm trong chuỗi bài viết hướng dẫn sử dụng giao thức Modbus RTU. Và trong bài này mình sẽ giới thiệu tổng quan về giao thức Modbus RTU và một số chuẩn vật lý mà giao thức này sử dụng. 

1.Giao thức Modbus RTU

Giao thức Modbus RTU kà một giao thức truyền thông nối tiếp (định nghĩa truyền thông nối tiếp các bạn có thể xem tại đây)

Trong một mạng giao tiếp các thiết bị sử dụng giao thức Modbus RTU, các cảm biến hoặc các cơ cấu chấp hành thường đảm nhiệm vai trò là Slave; Các thiết bị như máy tính, PLC, vi điều khiển,  thiết bị HMI,… có thể là các thiết bị Master, nhưng đôi khi chúng cũng có thể đóng vai trò là các Slave.

Khung truyền của giao thức Modbus RTU xây dựng trên giao thức truyền thông nối tiếp UART. Giao thức UART cũng là một giao thức truyền thông nối tiếp, được sử dụng trong vi điều khiển, nó định nghĩa cấu tạo của một gói tin để gửi một byte sẽ gửi các bit như thế nào (xem thêm tại đây). Và nội dung của các tin nhắn Modbus được xây dựng bằng nhiều gói tin ghép lại (chúng ta sẽ tìm hiểu cấu tạo khung truyền tin nhắn Modbus trong bài tiếp theo).

Cấu tạo một packet của giao thức UART

Trong mô hình OSI, Modbus RTU là một giao thức ở lớp ứng dụng (Application Layer) nên nó cần lớp vật lý (Physical Layer) phía dưới đề kết nối với các thiết bị khác. Đường truyền vật lý chuẩn RS232 và RS485 được sử dụng ở cho giao thức này.

Trong khi đó, tín hiệu của giao thức UART sử dụng trong vi điều khiển dùng chuẩn TTL hoặc chuẩn CMOS (cách phân biệt 2 chuẩn này tại đây). Vì vậy, khi ta muốn sử dụng vi điều khiển để giao tiếp với các thiết bị sử dụng giao thức Modbus RTU thì chúng ta cần có các mạch chuyển đổi TTL/CMOS-RS232 hoặc TTL/CMOS-RS485. Chúng ta sẽ tìm hiểu một chút về đường truyền vật lý RS232 và RS485 ở phần tiếp theo.

Kết nối phần cứng để giao tiếp vi điều khiển sử dụng chuẩn TTL với các thiết bị Modbus RTU

2. Đường truyền vật lý RS232

RS232 còn được gọi là cổng COM, thường được thấy trong các máy tính bàn, máy in, máy fax,… Hiện nay thông dụng nhất vẫn là chuẩn RS232C với các đầu cắm 9 chân.

Một số đặc điểm của chuẩn RS232 như sau:

  • Được sử dụng với các kết nối point-to-point, tức là chỉ kết nối được một thiết bị Master với một thiết bị Slave.
  • Sử dụng 3 dây để TX, RX, GND để trao đổi dữ liệu và hoạt động dựa trên điện áp chênh lệch giữa TX, RX với GND.
    Chuẩn vật lý RS232C thường sử dụng loại 9 chân như hình dưới, tuy nhiên về cơ bản các bạn chỉ cần sử dụng chân 2 (RXD), chân 3 (TXD) và chân 5 (GND)

  • Mức logic 0 điện áp dao động giữa +3V đến+12V, logic 1 thì điện áp dao động giữa -3V đến -12V.Điện áp nằm trong khoảng -3V đến +3V là phạm vi không được xác đinh.
  • Chiều dài tối đa của dây dẫn truyền là 15m
  • Tốc độ truyền dữ liệu thường từ 9600 đến 115200 bps, tuy nhiên tốc độ càng cao thì chiều dài dây cần ngắn lại.

Có một số module chuyển đổi giữa chuẩn TTL và chuẩn RS232 giúp cho vi điều khiển có thể giao tiếp với các thiết bị sử dụng chuẩn RS232, ví dụ như module dưới sử dụng IC MAX3232 của hãng Texas Instruments.

3. Đường truyền vật lý RS485

RS485 là một đường truyền tương tự như RS232. Tuy nhiên, do có một số đặc tính nổi trội hơn RS232 nên giao thức Modbus RTU chủ yếu sử dụng đường truyền RS485. Nó có một số đặc điểm sau:

  • Được sử dụng với các mạng đa điểm, kết nối được nhiều thiết bị Master và nhiều thiết bị Slave.
  • Có 2 chế độ truyền: chế độ truyền half-duplex chỉ một cặp dây đối xứng A-B; chế độ truyền full-duplex cần 2 cặp dây A-B, X-Y.
    Giao thức Modbus sử dụng chế độ truyền half-duplex, chỉ cho phép một thiết bị trong mạng truyền dữ liệu trong một thời điểm.
  • Các dây tín hiệu được xoắn lại với nhau nên nếu có nhiễu tác động thì sẽ xảy ra đồng thời trên các dây. Đồng thời nó sử dụng hệ thống truyền dẫn cân bằng nên điện áp giữa 2 dây sẽ ngược nhau và mức logic sẽ được xác định dựa trên điện áp chênh lệch giữa các cặp dây (ví dụ A và B) nên khả năng chống nhiễu tốt.

  • Mức logic 1 tương ứng với điện áp chênh lệch giữa 2 dây Uab = Ua -Ub > +200mV. Còn mức logic 0 thì điện áp Uab < -200mV . Điện áp nằm trong khoảng -200mV < Uab < +200mV là phạm vi không được xác định.
  • Chiều dài tối đa của dây dẫn truyền là 1200m, tốc độ truyền dữ liệu thường từ 9600 đến 115200 bps. Tốc độ càng cao thì chiều dài dây càng phải ngắn lại.

  • Có điện trở đầu cuối RT được đặt ở hai đầu của đường truyền, giá trị điện trở đầu cuối phù hợp với giá trị trở kháng đặc tính của đường dây sẽ giảm thiểu nhiễu xảy ra do có sự phản xạ xuất hiện trên đường truyền.

  • Điện áp chênh lệch của 2 thiết bị giao tiếp với với nhau chỉ được chênh lệch trong khoảng từ -7V đến +12V. Vậy nên GND của các thiết bị nên được kết nối với nhau trên cùng một đường truyền để đảm bảo tín hiệu được ổn định.

Trên thị trường có một số module hỗ trợ để vi điều khiển có thể kết nối được các thiết bị sử dụng chuẩn RS485 sử dụng IC thông dụng như MAX485, SN65HVD485E…

 

=================================================

Như vậy, mình đã giới thiệu giao thức Modbus RTU và một số đặc điểm về đường truyền vật lý RS232 và RS485 khi sử dụng Modbus RTU. Trong phần tiếp theo, mình sẽ trình bày và giải thích cấu tạo của khung truyền tin nhắn Modbus RTU. Cùng theo dõi và đón xem nhé!

Chúc các bạn thành công!

Theo dõi thêm:
– Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32
– Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32

Nhóm TAPIT ARM R&D