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é!
- Khái niệm cơ bản về giao thức Modbus
- Hướng dẫn sử dụng ADAM-4051: Chuyển đổi từ giao thức ADAM ASCII sang Modbus RTU
- Các bộ modbus gateways
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
- Đọc 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 Coils | Bits, binary values, flags | 00001 |
Digital Inputs | Binary inputs | 10001 |
Analog Inputs | Binary inputs | 30001 |
Modbus Registers | Analog values, variables | 40001 |
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/ASCII | Modbus/RTU | |||
---|---|---|---|---|
Characters | ASCII 0…9 and A..F | Binary 0…255 | ||
Error check | LRC Longitudinal Redundancy Check | CRC Cyclic Redundancy Check | ||
Frame start | character ‘:‘ | 3.5 chars silence | ||
Frame end | characters CR/LF | 3.5 chars silence | ||
Gaps in message | 1 sec | 1.5 times char length | ||
Start bit | 1 | 1 | ||
Data bits | 7 | 8 | ||
Parity | even/odd | none | even/odd | none |
Stop bits | 1 | 2 | 1 | 2 |
0 nhận xét:
Đăng nhận xét