Thứ Sáu, 27 tháng 11, 2020

Khái niệm cơ bản về giao thức Modbus RTU

 Hôm nay, BKAII sẽ cùng các bạn trao đổi với nhau về những khái niệm cơ bản liên quan đến một chuẩn giao thức truyền thông thông dụng nhất trong công nghiệp - tự động hóa là Modbus RTU. Nội dung trao đổi ở dưới mang tính chất chia sẻ dựa trên những kiến thức, kinh nghiệm cá nhân và bao gồm quá trình tìm hiểu tài liệu trên internet,... không mang tính lý thuyết chuẩn mực các bạn nhé! 

Vậy, Modbus RTU là gì?

Giao thức Modbus RTU là một giao thức mở, sử dụng đường truyền vật lý RS-232 hoặc RS485 và mô hình dạng Master-Slave. Đây là một giao thức được sử dụng rộng rãi trong nhiều lĩnh vực như BMS (Building Management Systems), tự động hóa, công nghiệp, điện lực,.... Chắc hẳn sẽ có bạn tự hỏi, tại sao giao thức Modbus này lại thông dụng như thế, đi đến đâu, đụng vào thiết bị gì thì hầu như cũng có giao thức này? Vâng, câu trả lời cho câu hỏi trên chắc chỉ cần gói gọn trong vài từ: Ổn định - Đơn giản - dễ dùng.

Modbus được coi là giao thức truyền thông hoạt động ở tầng "Application", cung cấp khả năng truyền thông Master/Slave giữa các thiết bị được kết nối thông qua các bus hoặc network. Trên mô hình OSI, Modbus được đặt ở lớp 7. Modbus được xác định là một giao thức hoạt động theo "hỏi/đáp" và sử dụng các "function codes" tương ứng để hỏi đáp.

Cấu trúc bản tin Modbus RTU

Một bản tin Modbus RTU bao gồm: 1 byte địa chỉ  -  1 byte mã hàm - n byte dữ liệu - 2 byte CRC như hình ở dưới:

Chức năng và vai trò cụ thể như sau:

  • Byte địa chỉ: xác định thiết bị mang địa chỉ được nhận dữ liệu (đối với Slave) hoặc dữ liệu nhận được từ địa chỉ nào (đối với Master). Địa chỉ này được quy định từ 0 - 254
  • Byte mã hàm: được quy định từ Master, xác định yêu cầu dữ liệu từ thiết bị Slave. Ví dụ mã 01: đọc dữ liệu lưu trữ dạng Bit, 03: đọc dữ liệu tức thời dạng Byte, 05: ghi dữ liệu 1 bit vào Slave, 15: ghi dữ liệu nhiều bit vào Slave ...
  • Byte dữ liệu: xác định dữ liệu trao đổi giữa Master và Slave.
    • Đọc dữ liệu:  
      • Master:  2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu            
      • Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ liệu đọc được
    • Ghi dữ liệu:   
      • Master: 2 byte địa chỉ dữ liệu  - 2 byte độ dài dữ liệu - n byte dữ liệu cần ghi     
      • Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu  
  • Byte CRC: 2 byte kiểm tra lỗi của hàm truyền. cách tính giá trị của Byte CRC 16 Bit

 

Sự khác nhau giữa Modbus RTU và Modbus TCP 

Sự khác nhau cơ bản giữa MODBUS RTU và MODBUS TCP ( còn được gọi là modbus IP, Modbus Ethernet hay Modbus TCP/IP) là Modbus TCP chạy ở cổng vật lý Ethernet và Modbus RTU thì chạy ở cổng vật lý serial nối tiếp ( RS232 hoặc RS485). 

MODBUS RTU Memory Map

Modbus RTU 
Data Type
Common
name
Starting address
Modbus CoilsBits, binary values, flags00001
Digital InputsBinary inputs10001
Analog InputsBinary inputs30001
Modbus RegistersAnalog values, variables40001

 

Sự khác nhau giữa Modbus RTU và Modbus ASCII

Đây là hai chế độ truyền dữ liệu cơ bản trong giao thức Modbus khi sử dụng đường truyền nối tiếp là: ASCII và RTU.  Mỗi một chuẩn sẽ có một cách mã hóa tin nhắn khác nhau, cho dù đều alf chuẩn Modbus chung. Ví dụ, Modbus ASCII cho phép người đọc có thể đọc trực tiếp tin nhắn trong bản tin. Nhưng với Modbus RTU, thì nội dung data đã được mã hóa nhị phân và không thể đọc được trong quá trình giám sát. Một điểm đặc biệt trong giao thức Modbus là trong một đường truyền dẫn Modbus, tất cả các giao thức phải là giống nhau, có nghĩa là Modbus ASCII không thể giao tiếp với modbus RTU và ngược lại.

Các tính chất của Modbus ASCII và Modbus RTU 

Modbus/ASCIIModbus/RTU
CharactersASCII 0…9 and A..FBinary 0…255
Error checkLRC Longitudinal Redundancy CheckCRC Cyclic Redundancy Check
Frame startcharacter ‘:‘3.5 chars silence
Frame endcharacters CR/LF3.5 chars silence
Gaps in message1 sec1.5 times char length
Start bit11
Data bits78
Parityeven/oddnoneeven/oddnone
Stop bits1212

0 nhận xét:

Đăng nhận xét