Modbus là gì ?

modbus

Modbus là gì

Modbus là một giao thức truyền thông nối tiếp được phát triển bởi Modicon được xuất bản vào năm 1979. Modbus được sử dụng với các bộ điều khiển logic có thể lập trình được (PLC). Nói một cách dễ hiểu, nó là một phương pháp được sử dụng để truyền thông tin qua các đường nối tiếp giữa các thiết bị điện tử. Thiết bị yêu cầu thông tin được gọi là Modbus Master và thiết bị cung cấp thông tin là Modbus Slaves. Trong mạng Modbus tiêu chuẩn, có một Master và tối đa 247 Slave, mỗi Slave có một Địa chỉ Slave duy nhất từ 1 đến 247. Master cũng có thể ghi thông tin vào các Slave.

Ứng dụng của Modbus?

Modbus là một giao thức mở, hoàn toàn miễn phí. Modbus là giao thức truyền thông tiêu chuẩn trong công nghiệp và hiện là phương tiện phổ biến nhất. Nó được nhiều nhà sản xuất sử dụng rộng rãi trong nhiều ngành. Modbus thường được sử dụng để kết nối máy tính giám sát với thiết bị đầu cuối từ xa (RTU) trong hệ thống điều khiển giám sát và thu thập dữ liệu (SCADA). Các phiên bản của giao thức Modbus :Modbus RTU/Modbus ASCII/Modbus TCP.

Modbus hoạt động như thế nào?

Modbus được truyền qua đường nối tiếp giữa các thiết bị. Cách đơn giản nhất là sử dụng một cáp nối tiếp duy nhất kết nối các cổng nối tiếp trên hai thiết bị, một Master và một Slave.

Dữ liệu được gửi dưới dạng chuỗi các số một và số không được gọi là các bit. Mỗi bit được gửi dưới dạng điện áp. Các số không được gửi dưới dạng điện áp dương và một số là điện áp âm. Các bit được gửi đi rất nhanh chóng. Tốc độ truyền thông thường là 9600 baud (bit trên giây).

Số Hex là gì?

Khi khắc phục sự cố, sẽ là hữu ích khi xem dữ liệu thô thực tế đang được truyền. Các chuỗi dài gồm số 1 và số 0 rất khó đọc, vì vậy các bit được kết hợp và hiển thị ở dạng thập lục phân. Mỗi khối 4 bit được biểu diễn bằng một trong mười sáu ký tự từ 0 đến F.

Mỗi khối 8 bit (gọi là byte) được biểu diễn bằng một trong 256 cặp ký tự từ 00 đến FF.

Dữ liệu trong Standard Modbus

Thông tin được lưu trữ trong thiết bị Slave trong bốn bảng khác nhau. Hai bảng lưu trữ các giá trị rời rạc bật / tắt (cuộn dây) và hai lưu trữ giá trị số (thanh ghi). Mỗi cuộn dây và thanh ghi đều có bảng chỉ đọc và bảng đọc-ghi. Mỗi bảng có 9999 giá trị. Mỗi cuộn dây hoặc tiếp điểm là 1 bit và được gán địa chỉ dữ liệu trong khoảng từ 0000 đến 270E. Mỗi thanh ghi là 1 từ = 16 bit = 2 byte và cũng có địa chỉ dữ liệu từ 0000 đến 270E.

Modbus Table

Địa chỉ dữ liệu được sử dụng trong các bản tin. Ví dụ: Thanh ghi giữ (holding register) đầu tiên, số 40001, có địa chỉ dữ liệu 0000. Sự khác biệt giữa hai giá trị này là phần bù. Mỗi bảng có một độ lệch khác nhau. 1, 10001, 30001 và 40001.

Salve ID

Mỗi slave trong mạng được gán một địa chỉ đơn vị duy nhất từ 1 đến 247. Khi master yêu cầu dữ liệu, byte đầu tiên nó gửi là địa chỉ Slave. Bằng cách này, mỗi salve sẽ biết xử lý bản tin hay bỏ qua.

Function code

Byte thứ hai được gửi bởi Master là mã chức năng (function code). Function code cho biết Slave cần truy cập vào bảng nào và nên đọc hoặc ghi vào bảng đó hay không.

function code modbus

CRC

CRC là viết tắt của Cyclic Redundancy check. Nó là hai byte được thêm vào cuối mỗi bản tin modbus để phát hiện lỗi. Mỗi byte trong bản tin đều được sử dụng để tính CRC. Thiết bị nhận cũng tính toán CRC và so sánh nó với CRC từ thiết bị gửi. Nếu thậm chí một bit trong thông báo được nhận không chính xác, các CRC sẽ khác và dẫn đến lỗi.

Định dạng bản tin gửi và nhận

Kiểu dữ liệu

Số nguyên không dấu 16 bit (unsigned int) (một số nguyên từ 0 đến 65535): Thanh ghi40108 chứa AE41 = 44,609 (chuyển đổi từ hệ thập lục phân sang thập phân)

Số nguyên có dấu 16 bit (một số nguyên từ -32768 đến 32767) AE41 = -20,927. Chuyển đổi từ hệ thập lục phân sang thập phân kết thúc, nếu số nguyên trên 32767 thì trừ đi 65536.

Chuỗi ASCII hai ký tự (2 chữ cái đã nhập) AE41 = ® A

Giá trị bật / tắt rời rạc (giá trị này hoạt động giống như số nguyên 16 bit có giá trị 0 hoặc 1. Dữ liệu hex sẽ là 0000 hoặc 0001)

Thanh ghi 40108 cũng có thể được kết hợp với 40109 để tạo bất kỳ kiểu dữ liệu 32 bit nào sau đây:

Số nguyên không dấu 32 bit (một số từ 0 đến 4,294,967,295) 40108.40109 = AE41 5652 = 2.923.517.522

Số nguyên có dấu 32 bit (một số từ -2,147,483,648 đến 2,147,483,647) AE41 5652 = -1,371,449,774

Số thập phân dấu phẩy động IEEE chính xác kép 32 bit. Đây là một công thức toán học cho phép bất kỳ số thực nào (một số có dấu thập phân) được biểu diễn bằng 32 bit với độ chính xác khoảng bảy chữ số. AE41 5652 = -4.395978 E-11.

Chuỗi ASCII bốn ký tự (4 chữ cái được đánh máy) AE41 5652 = ® A V R. Nhiều thanh ghi hơn có thể được kết hợp để tạo thành chuỗi ASCII dài hơn. Mỗi thanh ghi được sử dụng để lưu trữ hai ký tự ASCII (hai byte).

Thứ tự Byte và Word

Đặc tả Modbus không xác định chính xác cách dữ liệu được lưu trữ trong các thanh ghi. Do đó, một số nhà sản xuất đã triển khai modbus trong thiết bị của họ để lưu trữ và truyền byte cao hơn đầu tiên sau đó là byte thấp hơn. (AE trước 41). Ngoài ra, những người khác lưu trữ và truyền byte thấp hơn trước (41 trước AE). Tương tự, khi các thanh ghi được kết hợp để biểu diễn các kiểu dữ liệu 32 bit, Một số thiết bị lưu trữ 16 bit cao hơn (high word) trong thanh ghi đầu tiên và low word còn lại trong thanh ghi thứ hai (AE41 trước 5652) trong khi các thiết bị khác làm ngược lại (5652 trước đó AE41). Không quan trọng thứ tự các byte hoặc word được gửi đi, miễn là thiết bị nhận biết cách nào để phân biệt. Ví dụ: nếu số 29,235,175,522 được gửi dưới dạng số nguyên 32 bit không dấu, nó có thể được sắp xếp theo bất kỳ cách nào trong bốn cách này.

AE41 5652 byte cao đầu tiên, word cao đầu tiên

5652 AE41 byte cao đầu tiên, word thấp đầu tiên

41AE 5256 byte thấp, word cao đầu tiên

5256 41AE byte thấp, word thấp đầu tiên

Nguồn tham khảo

https://www.se.com/us/en/faqs/FA168406/

One thought on “Modbus là gì ?

  1. Pingback: Danh sách các công cụ và ứng dụng hữu ích Modbus - PAT TECH

Để lại một bình luận

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 *

zalo-icon
facebook-icon
tiktok-icon
phone-icon
proto-chatbot-icon