Giao thức Modbus là gì? Ứng dụng và đánh giá về giao thức Modbus

5/5 - (1 bình chọn)

Giao thức Modbus là một trong những giao thức truyền thông quan trọng và phổ biến trong lĩnh vực tự động hóa công nghiệp. Được phát triển vào những năm 1970, Modbus đã trở thành một tiêu chuẩn quốc tế, được sử dụng rộng rãi để kết nối và điều khiển các thiết bị trong các hệ thống tự động hóa và quản lý.

Bài viết này sẽ đi sâu vào khám phá giao thức Modbus là gì, cách nó hoạt động, và tầm quan trọng của nó trong ngành công nghiệp hiện nay. Chúng ta cũng sẽ xem xét các ứng dụng phổ biến của Modbus và đánh giá về hiệu suất và tính khả dụng của nó trong các môi trường khác nhau. Hãy cùng Nhà thông minh KST tìm hiểu về một trong những giao thức quan trọng nhất trong ngành tự động hóa – Modbus.

1. MODBUS là gì?

Modbus hay MODBUS là một giao thức truyền thông ở tầng Application theo mô hình OSI, hỗ trợ giao tiếp theo mô hình client/server giữa các thiết bị kết nối trong nhiều loại bus hoặc mạng khác nhau. Modbus được Modicon (nay là Schneider Electric) xuất bản vào năm 1979 để sử dụng với các bộ PLC của chính hãng này. Modbus sau đó đã trở thành một giao thức truyền thông tiêu chuẩn de facto và là một phương tiện phổ biến để kết nối các thiết bị điện tử công nghiệp.

>>> Nguồn: Modbus (Wiki)

giao-thuc-modbus
Giao thức Modbus

Trong một hệ thống MODBUS, thiết bị yêu cầu thông tin được gọi là Master và các thiết bị cung cấp thông tin là Slave . 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ỉ duy nhất từ 1 đến 247. Slave cũng có thể ghi thông tin vào Master.

>>> Xem thêm: Phân tích top 4 chuẩn giao tiếp có dây trong nhà thông minh

2. Nguyên lý hoạt động MODBUS

a. Tổng quan hệ thống:

MODBUS là một hệ thống “Master – Slave”, “Master ” được kết nối với một hay nhiều “Slave”. “Master ” thường là một PLC, PC, DCS, hay RTU. “Slave” thường là các thiết bị hiện trường chẳng hạn như cảm biến, bộ truyền động, bộ điều khiển logic lập trình , tất cả được kết nối với mạng trong cấu hình multi-drop. Khi một Master muốn có thông tin từ thiết bị, Master 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.Dữ liệu được gửi dưới dạng chuỗi các số một và số 0 được gọi là bit. Mỗi bit được gửi dưới dạng điện áp. Số 0 được gửi dưới dạng điện áp dương và số không là điện áp âm. Các bit được gửi rất nhanh. Tốc độ truyền điển hình là 9600 baud (bit trên giây).

b. Các thuật ngữ và kỹ thuật được dùng trong giao thức MODBUS:

  • Data Frame: Trong giao thức Modbus, frame data là một đơn vị dữ liệu được sử dụng để truyền thông tin giữa các thiết bị Modbus. Frame data bao gồm các thành phần sau:
  • Địa chỉ thiết bị (Device address): Là một byte dữ liệu xác định thiết bị mà frame data được gửi đến. Địa chỉ thiết bị có giá trị từ 1 đến 247. Ví dụ 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 Slave biết sau byte đầu tiên có nên bỏ qua thông báo hay không.
  • Mã chức năng (Function code): Là một byte dữ liệu xác định loại hành động mà frame data yêu cầu thiết bị thực hiện. Có nhiều mã chức năng khác nhau được định nghĩa trong giao thức Modbus, mỗi mã chức năng tương ứng với một loại hành động cụ thể.
  • Dữ liệu (Data): Là các byte dữ liệu được sử dụng để truyền thông tin cho thiết bị. Kích thước của dữ liệu phụ thuộc vào mã chức năng được sử dụng.
  • Kiểm tra CRC (CRC check): CRC là viết tắt của Cyclic Redundancy check. Là một byte dữ liệu được sử dụng để kiểm tra tính toàn vẹn của frame data. . Nó là hai byte được thêm vào cuối mỗi thông báo modbus để phát hiện lỗi. Mỗi byte trong tin nhắn đượ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 ngay cả một bit trong tin nhắn được nhận không chính xác, CRC sẽ khác và sẽ dẫn đến lỗi.
  • Hexadecimal (Hệ thập lục phân): Khi khắc phục sự cố, có thể hữu ích khi xem dữ liệu thô thực tế đang được truyền đi. 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ị trong hệ thập lục phân. Mỗi khối 4 bit được biểu thị bằng một trong mười sáu ký tự từ 0 đến F.
0000 = 0 0100 = 4 1000 = 8 1100 = C
0001 = 1 0101 = 5 1001 = 9 1101 = D
0010 = 2 0110 = 6 1010 = A 1110 = E
0011 = 3 0111 = 7 1011 = B 1111 = F

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

  • ASCII: ASCII là viết tắt của “American Standard Code for Information Interchange”. Theo cách tương tự, cứ 4 bit có thể được kết hợp và biểu diễn bằng một trong mười sáu ký tự thập lục phân từ 0 đến F, cứ 8 bit (mỗi byte) có thể được kết hợp và biểu diễn bằng một trong 256 ký tự ASCII, bao gồm các ký tự bàn phím chung. Ví dụ: một số giá trị cho các ký tự ASCII là …
decimal(base10) binary(base2) Hex(base16) ASCII(base256)
0 0000 0000 00 null
1 0000 0001 01
34 0010 0010 22 #
35 0010 0011 23 $
36 0010 0100 24 %
47 0010 1111 2F /
48 0011 0000 30 0
49 0011 0001 31 1
56 0011 1000 38 8
57 0011 1001 39 9
58 0011 1010 3A :
64 0100 0000 40 @
65 0100 0001 41 A
66 0100 0010 42 B
89 0101 1001 59 Y
90 0101 1010 5A Z
91 0101 1011 5B [
95 0101 1111 5F _
96 0110 0000 60 `
97 0110 0001 61 a
122 0111 1010 7A z
123 0111 1011 7B {
174 1010 1110 AE ®
255 1111 1111 FF
  • Register (Thanh ghi lưu trữ dữ liệu): 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).
giao-thuc-modbus
Các thiết bị có thể kết nối với Giao thức Modbus
  • 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 Data Addresses Type Table Name
1-9999 0000 to 270E Read-Write Discrete Output Coils
10001-19999 0000 to 270E Read-Only Discrete Input Contacts
30001-39999 0000 to 270E Read-Only Analog Input Registers
40001-49999 0000 to 270E Read-Write Analog Output Holding Registers

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).

Ví dụ: Holding Register có số là 40001, có “Data Address” là 0000. Sự khác biệt giữa hai giá trị này là độ lệch. Mỗi bảng có một độ lệch khác nhau. 1, 10001, 30001 và 40001.

  • 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ị.
Function Code Action Table Name
01 (01 hex) Read Discrete Output Coils
05 (05 hex) Write single Discrete Output Coil
15 (0F hex) Write multiple Discrete Output Coils
02 (02 hex) Read Discrete Input Contacts
04 (04 hex) Read Analog Input Registers
03 (03 hex) Read Analog Output Holding Registers
06 (06 hex) Write single Analog Output Holding Register
16 (10 hex) Write multiple Analog Output Holding Registers

Dưới đây là một số ví dụ về các mã chức năng thường được sử dụng trong giao thức Modbus:

  • Function Code 01 (lệnh đọc dữ liệu từ một thanh ghi): Mã chức năng này được sử dụng để yêu cầu một thiết bị Modbus đọc dữ liệu từ một thanh ghi cụ thể.
  • Function Code 02 (lệnh ghi dữ liệu vào một thanh ghi): Mã chức năng này được sử dụng để yêu cầu một thiết bị Modbus ghi dữ liệu vào một thanh ghi cụ thể.
  • Function Code 03 (lệnh đọc dữ liệu từ nhiều thanh ghi): Mã chức năng này được sử dụng để yêu cầu một thiết bị Modbus đọc dữ liệu từ nhiều thanh ghi.
  • Function Code 04 (lệnh ghi dữ liệu vào nhiều thanh ghi): Mã chức năng này được sử dụng để yêu cầu một thiết bị Modbus ghi dữ liệu vào nhiều thanh ghi.
giao-thuc-modbus
Giao thức Modbus là gì?

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

Data Addresses Read Write Single Write Multiple
Discrete Output Coils 0xxxx FC01 FC05 FC15
Discrete Input Contacts 1xxxx FC02 NA NA
Analog Input Registers 3xxxx FC04 NA NA
Analog Output Holding Registers 4xxxx FC03 FC06 FC16

d. Kiểu dữ liệu được dùng trong MODBUS

Ví dụ: FC03 cho thấy register 40108 chứa AE41 chuyển sang 16 bit là 1010 1110 0100 0001.

Register 40108 có thể được hiểu là bất kỳ kiểu dữ liệu 16 bit nào sau đây:

  1. Một số nguyên không dấu 16 bit (một số nguyên không dấu nằm từ 0 đến 65535): Register 40108 chứa AE41 = 44,609 (chuyển từ hệ lục phân sang hệ thập phân)
  2. Một số nguyên có dấu 16 bit (một số nguyên có dấu nằm từ -32768 đến 32767): AE41 = -20,927 (chuyển đổi từ hệ lục phân sang hệ thập phân không lặp lại, nếu nó quá 32767 thì trừ đi 65535)
  3. Một chuỗi ASCII hai ký tự (2 chữ cái đã nhập): AE41 = ® A
  4. Một giá trị on/off 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)

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

  1. Một 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
  2. Một 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
  3. Một số dấu phẩy động IEEE 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
  4. Một chuỗi ASCII bốn ký tự (4 chữ cái đã nhập) AE41 5652 = ® A V R. Nhiều Register hơn có thể được kết hợp để tạo thành chuỗi ASCII dài hơn. Mỗi Register được sử dụng để lưu trữ hai ký tự ASCII (2 byte)

e. Byte và Word trong giao thức MODBUS

Giao thức 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.

giao-thuc-modbus
Ứng dụng của Giao thức Modbus

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.

  1. AE41 5652
  2. 5652 AE41
  3. 41AE 5256
  4. 5256 41AE

>> Xem thêm: KNX là gì? Những điều cần biết về nhà thông minh chuẩn KNX

3. Phân loại chuẩn truyền thông MODBUS

Hiện nay, có 03 chuẩn modbus đang được sử dụng phổ biến trong công nghiệp – tự động hóa là: Modbus RTU, Modbus ASCII, Modbus TCP

  • Modbus ASCII:

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

Chính vì 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. Đây là chức năng 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.

  • Modbus RTU:

Modbus RTU là giao thức mở và sử dụng cổng kết nối RS232 hoặc RS485 để truyền dữ liệu. Mô hình hoạt động của nó cũng giống với các dạng Modbus khác là dạng Master/Slave.

Là giao thức được sử dụng rộng rãi trong nhiều lĩnh vực tự động hóa, công nghiệp,.. vì nó mang những ưu điểm đơn giản dễ dùng và ổn định.Tốc độ của giao thức này chủ yếu từ 1200 đến 115000 baud. Tốc độ phổ biến nhất là từ 9600 đến 19200 baud. Giảm tối thiểu dây kết nối, tiết kiệm một lượng lớn Modul mở rộng PLC.

    • Ưu điểm: Giảm không gian lắp đặt do bộ chuyển đổi có thiết kế mỏng nhỏ gọn so với Modul mở rộng của PLC. Độ ổn định và ít nhiễu so với tín hiệu analog 4-20mA.
    • Nhược điểm: Tín hiệu của giao thức này vẫn chậm hơn so với các giao thức trực tiếp analog hoặc Digital. Cần PLC hay Scada có cấu hình mạnh đủ để đọc tất cả các thanh ghi khi dùng nhiều bộ chuyển đổi Modbus RTU.
  • Modbus TCP:

Giao thức Modbus TCP nói một cách đơn giản là giao thức RTU và giao diện TCP được truyền trên giao thức ethernet. Giao thức này cho phép giao tiếp ngang hàng nghĩa là master đọc và truyền dữ liệu cho Slave và Slave cũng vậy, master và Slave đều có thể đặt và truyền lệnh. Ở giao thức này có thể có nhiều hơn 1 thiết bị lấy dữ liệu từ máy chủ.

TCP/IP cho phép các khối dữ liệu nhị phân được trao đổi qua máy tính. chức năng của TCP cho phép các dữ liệu được nhận chính xác và IP đảm bảo rằng các thông điệp được xử lý định tuyến chính xác. Lưu ý rằng kết hợp TCP / IP chỉ là một giao thức truyền tải; và không xác định ý nghĩa của dữ liệu hoặc cách hiểu dữ liệu. Giao thức TCP là dạng giao thức sử dụng cổng mở RJ45 hay chính là cổng internet thông thường.

>> Xem thêm: Giao thức DALI – Nguyên lý hoạt động và ứng dụng trong nhà thông minh

4. Ứng dụng của Modbus trong công nghiệp và Smart Home

Đối với công nghiệp:

Modbus được sử dụng trong nhiều ứng dụng công nghiệp khác nhau, bao gồm:

  • Điều khiển quá trình: Modbus được sử dụng để điều khiển các quá trình công nghiệp như nhiệt độ, áp suất, lưu lượng, v.v. Ví dụ, Modbus có thể được sử dụng để điều khiển nhiệt độ của một nồi hơi bằng cách đọc dữ liệu từ cảm biến nhiệt độ và sau đó sử dụng dữ liệu này để điều chỉnh đầu ra của bộ điều khiển nhiệt độ.
  • Giám sát: Modbus được sử dụng để giám sát các thiết bị và quá trình công nghiệp. Ví dụ, Modbus có thể được sử dụng để giám sát nhiệt độ, áp suất, và lưu lượng của một nồi hơi.
  • SCADA: Modbus được sử dụng trong các hệ thống SCADA (Supervisory Control and Data Acquisition) để thu thập dữ liệu từ các thiết bị và quá trình công nghiệp.
  • Tự động hóa nhà máy: Modbus được sử dụng trong tự động hóa nhà máy để điều khiển các thiết bị và quá trình trong nhà máy. Ví dụ, Modbus có thể được sử dụng để điều khiển máy móc, thiết bị vận chuyển, và hệ thống chiếu sáng trong một nhà máy sản xuất.
giao-thuc-modbus
Giao thức Modbus

Modbus RTU RS485 la gìĐối với Smart Home:

Trong nhà thông minh, Modbus có thể được sử dụng để:

  • Điều khiển hệ thống chiếu sáng: Modbus có thể được sử dụng để điều khiển các thiết bị chiếu sáng như đèn, công tắc, và rèm cửa. Ví dụ, Modbus có thể được sử dụng để tự động bật đèn khi trời tối và tắt đèn khi trời sáng.
  • Điều khiển hệ thống sưởi ấm, thông gió và điều hòa không khí (HVAC): Modbus có thể được sử dụng để điều khiển các thiết bị HVAC như máy điều hòa nhiệt độ, máy sưởi, và quạt. Ví dụ, Modbus có thể được sử dụng để tự động điều chỉnh nhiệt độ trong nhà dựa trên thời tiết và thói quen sử dụng của người dùng.
  • Điều khiển hệ thống an ninh: Modbus có thể được sử dụng để điều khiển các thiết bị an ninh như camera, cảm biến, và báo động. Ví dụ, Modbus có thể được sử dụng để tự động kích hoạt hệ thống báo động khi có người lạ xâm nhập vào nhà.
  • Giám sát nhà thông minh: Modbus có thể được sử dụng để giám sát các thiết bị và hệ thống trong nhà thông minh. Ví dụ, Modbus có thể được sử dụng để theo dõi nhiệt độ, độ ẩm, và lượng điện năng tiêu thụ trong nhà.

5. Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về giao thức Modbus và các ứng dụng quan trọng của nó trong ngành công nghiệp hiện nay. Modbus đã chứng tỏ sự linh hoạt và độ tin cậy của mình trong việc kết nối và điều khiển các thiết bị trong các hệ thống tự động hóa và quản lý. Từ việc thu thập dữ liệu từ cảm biến đến điều khiển các thiết bị công nghiệp, Modbus đã đóng vai trò quan trọng trong việc cải thiện hiệu suất và tiết kiệm thời gian và nguồn lực.

Tuy nhiên, không phải lúc nào cũng có một giao thức phù hợp cho tất cả các tình huống. Đánh giá kỹ lưỡng về cách Modbus hoạt động trong môi trường cụ thể của bạn và tùy chỉnh nó nếu cần thiết là điều quan trọng. Tính khả dụng và hiệu suất của Modbus có thể được tối ưu hóa khi sử dụng các công cụ và phần mềm hỗ trợ phù hợp.

Nhìn chung, giao thức Modbus vẫn tiếp tục đóng vai trò quan trọng trong ngành tự động hóa và công nghiệp, và nó dự kiến sẽ tiếp tục phát triển và thích nghi với các tiến bộ trong công nghệ và yêu cầu ngành công nghiệp ngày càng cao.

—————————————————————–

Liên hệ ngay với KST Group để nhận những ưu đãi hấp dẫn và tư vấn nhiệt tình nhất !

THÔNG TIN LIÊN HỆ

KST Group

Trả lời

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 *