Giao thức truyền thông Modbus

Phân loại chuẩn MODBUS

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Modbus RTU

Modbus TCP

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Sự khác biệt giữa RTU và TCP

Giao thức truyền thông Modbus

Phân loại chuẩn MODBUS

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Modbus RTU

Modbus TCP

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Sự khác biệt giữa RTU và TCP

Giao thức truyền thông Modbus

Phân loại chuẩn MODBUS

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Modbus RTU

Modbus TCP

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Sự khác biệt giữa RTU và TCP

Giao thức truyền thông Modbus

Giao thức truyền thông Modbus là gì?

MODBUS do Modicon (hiện nay thuộc Schneider Electric) phát triển năm 1979, là một phương tiện truyền thông với nhiều thiết bị thông qua một cặp dây xoắn đơn. Ban đầu, nó hoạt động trên RS232, nhưng sau đó nó sử dụng cho cả RS485 để đạt tốc độ cao hơn, khoảng cách dài hơn, và mạng đa điểm (multi-drop). MODBUS đã nhanh chóng trở thành tiêu chuẩn thông dụng trong ngành tự động hóa, và Modicon đã cho ra mắt công chúng như một protocol miễn phí.

MODBUS là một hệ thống “chủ - tớ”, “chủ” được kết nối với một hay nhiều “tớ”. “Chủ” thường là một PLC, PC, DCS, hay RTU. “Tớ” MODBUS RTU thường là các thiết bị hiện trường, tất cả được kết nối với mạng trong cấu hình multi-drop. Khi một chủ MODBUS RTU muốn có thông tin từ thiết bị, chủ sẽ gửi một thông điệp về dữ liệu cần, tóm tắt dò lỗi tới địa chỉ thiết bị. Mọi thiết bị khác trên mạng sẽ nhận thông điệp này nhưng chỉ có thiết bị nào được chỉ định mới có phản ứng. 

Các thiết bị trên mạng MODBUS không thể tạo ra kết nối; chúng chỉ có thể phản ứng. Nói cách khác, chúng “lên tiếng” chỉ khi được “nói tới”. Một số nhà sản xuất đang phát triển các thiết bị lai ghép hoạt động như các tớ MODBUS, tuy nhiên chúng cũng có “khả năng viết”, do đó làm cho chúng trở thành các thiết bị chủ ảo.

 Phân loại chuẩn MODBUS

Hiện nay, MODBUS được biết đến và sử dụng phổ biến trong công nghiệp gồm 3 chuẩn: MODBUS RTU, MODBUS TCP và MODBUS ASCII.

Modbus RTU

Dữ liệu được mã hóa theo hệ nhị phân, và chỉ cần một byte truyền thông cho một byte dữ liệu. Đây là giao thức truyền thông lí tưởng đối với RS232 hay RS485, tốc độ từ 1200 đến 115000 baud. Tốc độ phổ biến nhất là từ 9600 đến 19200 baud. MODBUS RTU là giao thức truyền thông công nghiệp được sử dụng rộng rãi nhất, do đó hầu như trong bài viết này sẽ tập trung đề cập đến MODBUS RTU.

Modbus TCP

MODBUS TCP là MODBUS qua Ethernet (RJ45). Với MODBUS TCP, dữ liệu MODBUS được tóm lược đơn giản trong một gói TCP/IP. Nói một cách đơn giản, đây như là một thông điệp của Modbus RTU được truyền bằng trình bao bọc TCP/IP và được gửi qua mạng thay vì các đường nối tiếp. Máy chủ không có SlaveID vì nó sử dụng địa chỉ IP.

Trong đó:

TCP (Transmission Control Protocol) là giao thức điều khiển đường truyền và IP (Internet Protocol) là giao thức Internet. Các giao thức này được sử dụng cùng nhau và là giao thức truyền tải cho internet. Khi thông tin modbus được gửi bằng các giao thức này, dữ liệu được chuyển tới TCP nơi thông tin bổ sung được đính kèm và cấp cho IP. IP sau đó đặt dữ liệu trong một gói (hoặc gói dữ liệu) và truyền nó.

TCP phải được thiết lập kết nối trước khi truyền dữ liệu, vì nó là giao thức dựa trên kết nối. Master (hoặc Client trong Modbus TCP) thiết lập kết nối với Slave (hoặc Server). Server chờ một kết nối đến từ Client. Sau khi kết nối được thiết lập, Server sẽ phản hồi các truy vấn từ Client cho đến khi Client ngắt kết nối.

Modbus ASCII

Mọi thông điệp được mã hóa bằng hexadecimal, sử dụng đặc tính ASCII 4 bit. Đối với mỗi một byte thông tin, cần có 2 byte truyền thông, gấp đôi so với MODBUS RTU hay MODBUS TCP. Tuy nhiên, MODBUS ASCII chậm nhất trong số 3 loại giao thức, nhưng lại phù hợp với modem điện thoại hay kết nối sử dụng sóng radio bởi ASCII sử dụng các tính năng phân định thông điệp. Nhờ tính năng phân định này, mọi rắc rối trong phương tiện truyền dẫn sẽ không làm thiết bị nhận dịch sai thông tin. Điều này rất quan trọng khi đề cập đến các giao thức truyền thông cho các modem cần độ chính xác thông tin cao, điện thoại di động, nhiễu âm thanh hay các phương tiện truyền thông chuyên dụng khác.

Địa chỉ dữ liệu và thanh ghi theo chuẩn MODBUS

Thông tin dữ liệu được lưu trữ trong thiết bị Slave được chia trong 4 khoảng giá trị khác nhau. Hai khoảng lưu trữ các giá trị rời rạc on/off (coils) và hai khoảng lưu trữ giá trị số (register – thanh ghi). Mỗi coils và register đều có khoảng biến chỉ đọc (read-only) và biến đọc và ghi (read-write).

Mỗi khoảng có 9999 biến giá trị

Mỗi coil hoặc contact là 1 bit và được gán một địa chỉ dữ liệu trong khoảng từ 0000 đến 270E

Mỗi register là 1 word = 16 bít = 2 bytes và cũng được gán một địa chỉ dữ liệu từ 0000 đến 270E

Coil/Register Numbers có thể được coi như tên vị trị vì chúng không xuất hiện trong các thông điệp thực tế. “Data Addressses” được sử dụng trong các thông điệp truyền tải (truy xuất dữ liệu).

Function code

Byte thứ hai được “Master” gửi đi là “Function code”. Con số này cho “Slave” biết được rằng, địa chỉ nào cần truy cập để đọc hay ghi giá trị.

Lệnh và phản hồi trong chuẩn MODBUS

Click vào các liên kết trong bảng để xem ví dụ về các yêu cầu và phản hồi

Byte và Word trong chuẩn MODBUS

Chuẩn 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 tích hợp chuẩn 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, cũng có những nhà sản xuất khác lưu trữ và truyền byte thấp hơn trước và sau đó là byte cao hơn (41 trước AE).

Tương tự, khi các thanh ghi được kết hợp để sử dụng các kiểu dữ liệu 32 bit. Một số thiết bị lưu trữ và truyền 16 bit cao hơn (word cao) trong thanh ghi đầu tiên và word thấp hơn trong thanh ghi thứ hai (AE41 trước 5652) trong khi những thiết bị khác làm ngược lại (5652 trước AE41)

Không quan trọng thứ tự byte hoặc word được gửi đi, miễn là thiết bị nhận biết được là làm cách nào để hoạt động chính xác theo yêu cầu.

Ví dụ: nếu số 2.923.517.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 số bốn cách này.

AE41 5652

5652 AE41

41AE 5256

5256 41AE

Mở rộng thanh ghi (Register) trong chuẩn MODBUS

Phạm vi của các thanh ghi giữ đầu ra tương tự là 40001 đến 49999, nó ngụ ý rằng không thể có nhiều hơn 9999 thanh ghi. Mặc dù điều này thường là đủ cho hầu hết các ứng dụng, nhưng có những trường hợp cần thêm nhiều địa chỉ thanh ghi nữa.

Các thanh ghi 40001 đến 49999 tương ứng với địa chỉ dữ liệu từ 0000 đến 270E. Nếu chúng ta sử dụng các địa chỉ dữ liệu còn lại từ 270F đến FFFF, thì số thanh ghi có sẵn sẽ gấp hơn sáu lần, tổng cộng là 65536. Điều này sẽ tương ứng với các địa chỉ thanh ghi từ 40001 đến 105536.

Chú ý: nhiều trình điều khiển phần mền sử dụng modbus (PC Master) được viết với giới hạn địa chỉ từ 40001 đến 49999 và không thể truy cập các địa chỉ thanh ghi mở rộng trong các thiết “Slave”. Và nhiều thiết bị “Slave” không hỗ trợ sử dụng các địa chỉ thanh ghi mở rộng. Mặt khác, một số thiết bị “Slave” hỗ trợ các thanh ghi mở rộng này và một số phần mềm “Master” có thể truy cập được nó, đặc biệt nếu phần mềm được viết trên nền tảng có thể tùy chỉnh.

Địa chỉ “Slave” 2-byte

Bởi một byte đơn thường được sử dụng để xác định địa chỉ “Slave” và mỗi “Slave” trên mạng yêu cầu một địa chỉ duy nhất, nên số “Slave” trên mạng được giới hạn ở 256. Giới hạn được xác định trong modbus thậm chí còn thấp hơn và ở mức 247.

Để vượt qua giới hạn này, có thể thực hiện một sửa đổi đối với giao thức để sử dụng hai byte cho địa chỉ. “Master” và “Slave” đều phải được hỗ trợ sửa đổi này. Khi đó có thể chỉ định mở rộng giới hạn về số lượng “Slave” trong mạng lên 65535 bởi hai byte cho địa chỉ.

Theo mặc định, đa số phần mềm hỗ trợ Modbus sử dụng địa chỉ 1 byte. Khi một địa chỉ lớn hơn 255 được nhập vào, phần mềm sẽ tự động chuyển sang định địa chỉ 2 byte và giữ nguyên ở chế độ này cho tất cả các địa chỉ cho đến khi tắt định địa chỉ 2 byte theo cách thủ công.

Sự khác biệt giữa RTU và TCP

Một tiêu đề 7 byte mới được gọi là MBAP Header (Modbus Application Header) được thêm vào đầu thư. Tiêu đề này có dữ liệu sau:

Mã định danh (Transaction ID): 2 byte do Client đặt để nhận dạng từng yêu cầu duy nhất. Các byte này được lặp lại bởi Server vì các phản hồi của nó có thể không được nhận theo thứ tự như các yêu cầu.

Định dạng giao thức (Protocol ID): 2 byte do Client đặt, luôn luôn = 00 00

Độ dài (Length): 2 byte xác định số byte trong thông điệp cần theo dõi.

Định dạng đơn vị (UnitlD): 1 byte được đặt bởi Client và được Server lặp lại để xác định một Slave từ xa được kết nối trên đường truyền nối tiếp hoặc trên các bus khác.

Yêu cầu tương đương với ví dụ về Modbus RTU này:

11 03 006B 0003 7687

Trong đó:

11: Địa chỉ SlaveID (17 = 11 hex)

03: Function code (đọc thanh ghi giữ đầu ra tương tự (Analog Output Holding Registers))

006B: địa chỉ dữ liệu của thanh ghi đầu tiên được yêu cầu. (40108-40001 = 107 = 6B hex)

0003: tổng số thanh ghi được yêu cầu. (đọc 3 thanh ghi 40108 đến 40110)

7687: CRC (kiểm tra dự phòng theo chu kỳ) để kiểm tra lỗi.

Modbus TCP tương đương sẽ là:

0001 0000 0006 11 03 006B 0003

Trong đó:

0001: mã định danh

0000: định dạng giao thức

0006: độ dài tin nhắn (6 byte)

11: định dạng đơn vị (17 = 11 hex)

03: Function code (đọc thanh ghi giữ đầu ra tương tự (Analog Output Holding Registers))

006B: địa chỉ dữ liệu của thanh ghi đầu tiên được yêu cầu. (40108-40001 = 107 = 6B hex)

0003: tổng số thanh ghi được yêu cầu. (đọc 3 thanh ghi 40108 đến 40110)

Bài viết khác

Cách lập trình theo phương pháp Grafcet
Cách sử dụng cổng giao tiếp RS485
Cách phân biệt tín hiệu NPN và PNP
Giao thức truyền thông RS232

THIẾT KẾ THI CÔNG PHÒNG SẠCH: Tư vấn giải pháp thiết kế, đánh giá phòng sạch, Với kinh nghiệm thi công thực chiến chúng tôi sẽ đưa ra các hoạch định thi công với những giải pháp tối ưu nhất.

SẢN XUẤT TỦ ĐIỀU KHIỂN : Tủ điều khiển có thể nói là trái tim của mọi nhà máy sản xuất, với thế mạnh là nhà sản xuất nắm vững mọi nguyên lý hoạt động của hệ thống, nên LVD sẽ đưa ra giải pháp tốt nhất, chúng tôi cam kết làm hài lòng mọi khách hàng.

DỊCH VỤ BẢO TRÌ - BẢO DƯỠNG: LVD có đội ngũ Service chuyên nghiệp cho các hệ thống máy lạnh công nghiệp (AHU, FCU, BFU, CHILLER, VAF...) Của các hãng Trane, Daikin, Samsung.Đã có kinh nghiệm về các hệ thống lọc Hepa, thiết bị khử ẩm, thiết bị phòng Lab, diệt khuẩn. Sử dụng các thiết bị hiện đại đạt tiêu chuẩn để đo kiểm và sửa chữa.

hình nền phải

 

 

 

Dự án tiêu biểu

Công trình bảo dưỡng phòng sạch ở khu Công Nghiệp Tân Bình

Công trình bảo dưỡng phòng sạch ở khu Công Nghiệp Tân Bình

Dự án thi công hệ thống ống gió công trình Bình Minh

Dự án thi công hệ thống ống gió công trình Bình Minh

Dự án thi công lắp đặt hệ thống AHU 240.000BTU.

Dự án thi công lắp đặt hệ thống AHU 240.000BTU.

Thi công lắp đặt AHU tại công ty Dược Phẩm 3C

Thi công lắp đặt AHU tại công ty Dược Phẩm 3C

Dự án khu Công Nghiệp Long Sơn

Dự án khu Công Nghiệp Long Sơn

Dự án thi công khu Công Nghiệp Tân Bình

Dự án thi công khu Công Nghiệp Tân Bình

Lắp đặt AHU 360.000 BTU nhà máy thực phẩm Olam

Lắp đặt AHU 360.000 BTU nhà máy thực phẩm Olam

Thi công phòng sạch điện tử

Thi công phòng sạch điện tử

Thi công phòng sạch thí nghiệm lab FUWAH-HK

Thi công phòng sạch thí nghiệm lab FUWAH-HK

Xem các dự án khác

HÃY LIÊN HỆ VỚI CHÚNG TÔI .

- Tư vấn các giải pháp về phòng sạch, thi công phòng sạch

- Cung cấp, tư vấn về tủ điều khiển AHU, FCU

- Cung cấp tủ điều khiển kho lạnh, kho mát

- Bảo trì bảo dưỡng hệ thống HVAC, nâng cấp hệ thống lọc

- Tư vấn GMP, HACCP, ISO

hình nền phải

 

Yêu cầu báo giá