Tổng quan đầy đủ về giao thức MODBUS (P1)

Bài viết liên quan

Giới thiệu:
MODBUS là một giao thức truyền thông lớp ứng dụng, được định vị ở lớp thứ 7 của mô hình OSI, cung cấp giao tiếp client/server giữa các thiết bị được kết nối trên các loại bus hoặc network khác nhau. Ngày nay, sự hỗ trợ cho cấu trúc đơn giản và tao nhã của MODBUS tiếp tục phát triển. Cộng đồng Internet có thể truy cập MODBUS tại cổng hệ thống dành riêng 502 trên TCP/IP stack.

MODBUS là một giao thức yêu cầu/đáp ứng (request/reply) và cung cấp các dịch vụ được chỉ định bởi mã chức năng, mã hàm (function code). Mã chức năng MODBUS là các thành phần của MODBUS request/reply PDUs (protocol data unit - bộ dữ liệu giao thức).

Nó hiện đang được thực hiện bằng cách sử dụng:
+) TCP/IP qua Ethernet.
+) Truyền nối tiếp không đồng bộ qua nhiều phương tiện khác nhau (dây dẫn : EIA/TIA-232-E, EIA-422, EIA/TIA-485-A; sợi quang, radio...)
+) MODBUS PLUS, một mạng truyền mã thông báo (truyền thẻ xác thực) tốc độ cao - a high speed token passing network.

Giao thức MODBUS cho phép giao tiếp dễ dàng trong tất cả các loại kiến trúc mạng.
Mọi loại thiết bị (PLC, HMI, Control Panel, Driver, Motion control, I/O Device…) có thể sử dụng giao thức MODBUS để bắt đầu một hoạt động từ xa.
Giao tiếp tương tự cũng có thể được thực hiện trên đường nối tiếp cũng như trên mạng lưới Ethernet TCP/IP. Các Gateway cho phép giao tiếp giữa một số loại bus hoặc network bằng giao thức MODBUS.

Mô tả giao thức
Giao thức MODBUS định nghĩa một bộ dữ liệu giao thức đơn giản (PDU - protocol data unit) độc lập với các lớp truyền thông bên dưới. Việc ánh xạ giao thức MODBUS trên các bus hoặc network cụ thể có thể đưa vào một số trường bổ sung trên bộ dữ liệu ứng dụng (ADU - application data unit).

Bộ dữ liệu ứng dụng MODBUS được xây dựng bởi client mà khởi tạo giao dịch MODBUS. Hàm chỉ ra cho máy chủ loại hành động cần thực hiện. Giao thức ứng dụng MODBUS thiết lập định dạng của yêu cầu do client khởi tạo.
Trường mã hàm của một bộ dữ liệu MODBUS được mã hóa bằng một byte. Mã hợp lệ nằm trong phạm vi 1 ... 255 decimal (phạm vi 128 - 255 được dành riêng và được sử dụng cho các phản hồi ngoại lệ). Khi một tin nhắn được gửi từ Client đến thiết bị Server, trường mã hàm sẽ cho máy chủ biết loại hành động nào sẽ thực hiện. Mã hàm "0" là không hợp lệ.

Mã hàm phụ được thêm vào một số mã hàm để xác định nhiều hành động. Trường dữ liệu của thông điệp được gửi từ một client đến thiết bị máy chủ chứa thông tin bổ sung mà máy chủ sử dụng để thực hiện hành động được xác định bởi mã hàm. Điều này có thể bao gồm các hạng mục rời rạc và các địa chỉ thanh ghi, số lượng các mục cần xử lý và số byte dữ liệu thực tế trong trường.

Trường dữ liệu có thể không tồn tại (có độ dài bằng không) trong một số loại yêu cầu nhất định, trong trường hợp này, máy chủ không yêu cầu bất kỳ thông tin bổ sung nào. Mã hàm chỉ định hành động đơn độc.
Nếu không có lỗi xảy ra liên quan đến mã MODBUS được yêu cầu trong một MODBUS ADU được nhận một cách đúng đắn, thì trường dữ liệu của một phản hồi từ một máy chủ đến một máy khách sẽ chứa dữ liệu được yêu cầu. Nếu xảy ra lỗi liên quan đến mã MODBUS được yêu cầu, trường chứa mã ngoại lệ mà ứng dụng máy chủ có thể sử dụng để xác định hành động tiếp theo sẽ được thực hiện.

Ví dụ, máy khách có thể đọc trạng thái ON/OFF của một nhóm đầu ra hoặc đầu vào riêng biệt hoặc nó có thể đọc/ghi nội dung dữ liệu của một nhóm các thanh ghi.
Khi máy chủ trả lời máy khách, nó sử dụng trường mã hàm để chỉ ra phản hồi bình thường (không có lỗi) hoặc một số loại lỗi xảy ra (được gọi là phản hồi ngoại lệ). Đối với một phản hồi bình thường, máy chủ chỉ cần lặp lại yêu cầu mã hàm ban đầu.

Tiếp theo hãy cùng tìm hiểu sâu hơn về hai phương thức truyền dẫn của giao thức MODBUS là:
1. MODBUS Serial Line protocol (Truyền thông nối tiếp qua RS232, RS485 gồm 2 chế độ truyền RTU và ASCII)
2. MODBUS over TCP/IP protocol (Truyền thông qua giao thức TCP/IP qua Ethernet)



MODBUS Serial Line protocol
MODBUS qua giao thức truyền nối tiếp là là giao thức Master-Slave. Giao thức này diễn ra ở cấp 2 của mô hình OSI. Một hệ thống kiểu master-slave có một nút-node (nút chính-master node) đưa ra các lệnh rõ ràng cho một trong các nút "slave" và đáp ứng quá trình. Các nút slave thường sẽ không truyền dữ liệu mà không có yêu cầu từ nút chính và không giao tiếp với các slave khác.

Ở cấp độ vật lý, MODBUS trên các hệ thống truyền dẫn nối tiếp có thể sử dụng các giao diện vật lý khác nhau (RS485, RS232). Giao diện hai dây (Two-Wire interface) TIA/EIA-485 (RS485) là phổ biến nhất. Là một tùy chọn bổ sung, giao diện RS485 bốn dây (Four-Wire interface) cũng có thể được triển khai. Một giao diện nối tiếp TIA/EIA-232-E (RS232) cũng có thể được sử dụng làm giao diện, khi chỉ cần giao tiếp point to point (điểm -điểm) ở khoảng cách ngắn.
Hình dưới đây đưa ra một mô hình chung về ngăn giao tiếp nối tiếp MODBUS so với 7 lớp của mô hình OSI.
Giao thức truyền thông lớp ứng dụng MODBUS, được định vị ở cấp 7 của mô hình OSI, cung cấp phương thức truyền thông client/server giữa các thiết bị được kết nối trên các bus hoặc network. Trên đường truyền nối tiếp MODBUS, vai trò máy khách-client role được cung cấp bởi Master của bus nối tiếp và các nút Slaves đóng vai trò là máy chủ.

Nguyên tắc giao thức MODBUS Master/Slaves
Giao thức truyền nối tiếp MODBUS - MODBUS Serial Line protocol là một giao thức Master-Slaves. Chỉ một master (ở cùng thời điểm) được kết nối đến bus, và một hoặc một số nút slave (số lượng tối đa là 247) cũng được kết nối với cùng một bus nối tiếp.

Một giao tiếp MODBUS luôn được bắt đầu bởi master. Các nút slave sẽ không bao giờ truyền dữ liệu khi không nhận được yêu cầu từ master node. Các nút slave sẽ không bao giờ giao tiếp với nhau. Nút master chỉ khởi tạo một giao dịch MODBUS ở cùng một thời điểm. Nút master đưa ra một yêu cầu MODBUS cho các nút slave ở hai chế độ Unicast và Broadcast:

- Trong chế độ unicast, master định địa chỉ một slave riêng lẻ. Sau khi nhận và xử lý yêu cầu, slave trả lại một thông điệp ('reply' - 'trả lời') cho master. Trong chế độ đó, giao dịch MODBUS bao gồm 2 thông điệp: yêu cầu từ master và trả lời từ slave.
Mỗi slave phải có một địa chỉ duy nhất (từ 1 đến 247) để có thể được đánh địa chỉ độc lập với các nút slave khác.

-Trong chế độ broadcast, master có thể gửi một yêu cầu cho tất cả các slave. Không có phản hồi được trả lại cho các yêu cầu broadcast được gửi bởi master. Các yêu cầubroadcast nhất thiết phải là các writing command - lệnh viết. Tất cả các các thiết bị phải chấp nhận broadcast cho hàm viết. Địa chỉ 0 được dành riêng để xác định một broadcast exchange.
Trên đường truyền nối tiếp - MODBUS Serial Line, trường địa chỉ - Address field chỉ bao gồm các địa chỉ của các slave.
Như được mô tả ở phía trên các địa chỉ hợp lệ của các slave nodes là nằm trong khoảng 0 – 247 decimal. Các thiết bị slave riêng rẽ được định địa chỉ trong khoảng 1 – 247. Một master định địa chỉ một slave bằng cách đặt địa chỉ slave trong trường địa chỉ của thông điệp. Khi slave trả về phản hồi của nó, nó đặt địa chỉ của chính mình vào trường địa chỉ phản hồi để cho master biết slave nào đang phản hồi.

- Mã hàm-function code chỉ ra cho máy chủ loại hành động cần thực hiện. Mã hàm có thể được theo sau bởi một trường dữ liệu
chứa các tham số yêu cầu và đáp ứng.
- Trường kiểm tra lỗi-Error checking field là kết quả của phép tính  "Redundancy Checking"-"Kiểm tra dự phòng" được thực hiện trên nội dung thông điệp. Hai loại phương pháp tính toán được sử dụng tùy thuộc vào chế độ truyền nối tiếp đang được sử dụng (RTU hoặc ASCII).

Lớp liên kết dữ liệu MODBUS bao gồm hai lớp phụ riêng biệt:Giao thức Master/slaveChế độ truyền (chế độ RTU và ASCII)  

Bên dưới là sơ đồ trạng thái của Master và Slave giải thích cách xử lý, hành vi của Master và Slave:


Chúng ta sẽ cùng tìm hiểu tiếp về hai chế độ truyền nối tiếp: RTU Transmission Mode và The ASCII Transmission Mode cùng với truyền thông MODBUS bằng TCP/IP qua Ethernet trong bài viết tiếp theo ở link này.


Chia sẻ bài viết

Author:

Mong rằng những bài viết được viết và tổng hợp trên blog này sẽ cung cấp những thông tin hữu ích đến bạn. Chúc một ngày vui vẻ !

0 comments: