Nhãn hiệu của chúng tôi

Impact-Company-Logo-English Black-01-177x54

Chào mừng bạn đến với Trang web của Schneider Electric

Chào mừng đến với trang web của chúng tôi.

Modbus và giao thức truyền thông MODBUS RTU,TCP, ASCII

Modbus là một trong những giao thức truyền thông phổ biến và quan trọng trong ngành công nghiệp hiện nay. Với các phiên bản như: Modbus RTU, Modbus TCP và Modbus ASCII, chúng cung cấp nền tảng quan trọng cho việc truyền thông và giao tiếp giữa các thiết bị điện tử công nghiệp. Trên cơ sở đó, chúng ta sẽ cùng tìm hiểu về sự khác biệt và tính ứng dụng của các phiên bản này trong ngành công nghiệp hiện đại ngày nay.

Modbus là gì?

Modbus là một chuẩn giao thức truyền thông công nghiệp được phát triển bởi MODICON vào năm 1979 và sau đó được Schneider Electric sở hữu vào năm 1996. Với tính ổn định, dễ dàng và khả năng thuận tiện cao, Modbus nhanh chóng trở thành tiêu chuẩn truyền thông trong các ngành công nghiệp tự động hóa. Giao thức này được sử dụng rộng rãi để kết nối và truyền thông dữ liệu giữa những thiết bị điện tử công nghiệp như cảm biến và thiết bị điều khiển.

Phân loại Modbus

Có ba phiên bản chính của Modbus như sau:

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ỗi byte dữ liệu. Giới hạn tốc độ truyền thông thường từ 1200 đến 115200 baud, với tốc độ phổ biến nhất là từ 9600 đến 19200 baud. Modbus RTU được sử dụng rộng rãi trong công nghiệp với các giao diện như RS232 hoặc RS485.

Modbus TCP

Đây là phiên bản sử dụng qua mạng Ethernet (RJ45). Dữ liệu Modbus được đóng gói trong giao thức TCP/IP, thay vì sử dụng các kết nối nối tiếp. Máy chủ không cần SlaveID mà sử dụng địa chỉ IP thay thế.

Modbus ASCII

Mỗi thông điệp được mã hóa bằng hệ thống hexadecimal, sử dụng đặc tính ASCII 4-bit. Để truyền một byte thông tin, cần hai byte truyền thông, gấp đôi so với Modbus RTU hoặc Modbus TCP. Mặc dù chậm hơn, Modbus ASCII thích hợp cho việc sử dụng modem điện thoại hoặc kết nối sóng radio do tính ổn định của ASCII trong việc phân định thông điệp, hỗ trợ việc tránh nhầm lẫn thông tin trong môi trường truyền dẫn không ổn định.

Nguyên tắc hoạt động

Modbus hoạt động theo nguyên tắc "Master – Slave", tức là "Chủ – Tớ". Một Master có khả năng kết nối với một hoặc nhiều thiết bị "Slave". Trong hệ thống, Master thường là các thiết bị như PLC, PC, DCS, RTU hoặc SCADA, trong khi Slave thường là các thiết bị cấp hiện trường. Đơn giản, đây là cách để truyền thông qua đường dây nối tiếp giữa những thiết bị điện tử với nhau. Thiết bị yêu cầu thông tin được gọi là Modbus Master, trong khi thiết bị cung cấp thông tin được gọi là Modbus Slave. Trong một mạng Modbus tiêu chuẩn sẽ tồn tại 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ó khả năng ghi thông tin vào các Slave trong hệ thống.

Tìm hiểu về mã HEX (HEXADECIMAL)

Mã HEXA (HEXADECIMAL) là cách biểu diễn dữ liệu bằng hệ thống số hexadeciaml, thay vì các chuỗi dài của số 0 và 1. Mỗi khối 4 bit sẽ được biểu diễn bằng một trong mười sáu ký tự từ 0 đến F.

ASCII là gì?

ASCII là từ viết tắt của “American Standard Code for Information Interchange”. Mỗi 8 bit (mỗi byte) trong dữ liệu có thể 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.

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

Trong chuẩn Modbus, thông tin dữ liệu được lưu trữ ở thiết bị Slave sẽ được chia thành 4 khoảng giá trị khác nhau, bao gồm 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 coil và register đều có khoảng biến chỉ đọc (read-only) và biến đọc và ghi (read-write).

Trong chuẩn Modbus, mỗi khoảng có thể lưu trữ 9999 biến giá trị. Mỗi coil hoặc contact là 1 bit và được gán với một địa chỉ dữ liệu trong khoảng từ 0000 đến 270E. Mỗi register là 1 word = 16 bits = 2 bytes và cũng được gán với một địa chỉ dữ liệu từ 0000 đến 270E. Coil/Register Numbers có thể được xem như tên vị trí và “Data Addresses” và được sử dụng trong các thông điệp truyền tải.

Function code

Byte thứ hai trong thông điệp của "Master" gửi đi là "Function code", để "Slave" biết được địa chỉ cần truy cập và đọc hoặc ghi giá trị.

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

Trong chuẩn Modbus, việc giao tiếp giữa thiết bị Master và thiết bị Slave sẽ được thực hiện thông qua quá trình gửi lệnh và nhận phản hồi. Lệnh gửi bắt đầu với thiết bị Master tới thiết bị Slave có thể yêu cầu đọc hoặc ghi dữ liệu từ các thanh ghi cụ thể, cũng như thực hiện các chức năng đọc trạng thái của các coil (chẳng hạn như các thiết bị on/off) và thực hiện các chức năng điều khiển.

Phản hồi từ thiết bị Slave về thiết bị Master sẽ chứa thông tin được yêu cầu, bao gồm dữ liệu của các thanh ghi hoặc trạng thái của các coil. Quá trình này sẽ tiếp tục theo chu kỳ khi thiết bị Master gửi lệnh và thiết bị Slave phản hồi, tạo nên một luồng liên tục của truyền thông và trao đổi dữ liệu giữa các thiết bị trong hệ thống Modbus.

Kiểu dữ liệu

Trong chuẩn Modbus, việc đọc dữ liệu từ các register rất quan trọng để có thể hiểu cách dữ liệu được biểu diễn. Ví dụ, với register 40108 chứa giá trị AE41 khi chuyển sang 16 bit, chúng ta có thể hiểu rằng:

  • Nếu xem register này như một số nguyên không dấu 16 bit, giá trị đó sẽ là 44,609 nếu chuyển từ hệ lục phân sang hệ thập phân.
  • Nếu xem đó là số nguyên có dấu 16 bit, giá trị sẽ là -20,927 khi chuyển từ hệ lục phân sang hệ thập phân, và nếu vượt quá 32767, thi sẽ trừ đi 65535.
  • Cũng có thể xem AE41 là chuỗi ASCII hai ký tự là ® A hoặc giá trị on/off rời rạc với dữ liệu hex là 0000 hoặc 0001.
  • Kết hợp register 40108 với 40109 tạo ra kiểu dữ liệu 32 bit, ví dụ như số nguyên không dấu 32 bit 2,923,517,522 hoặc số nguyên có dấu 32 bit -1,371,449,774. Một dạng khác là số dấu phẩy động IEEE 32 bit, cho phép biểu diễn số thực với độ chính xác 7 chữ số.
  • Khi kết hợp register, có thể lưu trữ chuỗi ASCII dài hơn, sử dụng các cặp register để lưu trữ 2 ký tự ASCII (2 byte) tương ứng.

Byte và Word trong chuẩn MODBUS

Trong chuẩn Modbus, cách dữ liệu được lưu trữ trong những thanh ghi không được xác định chính xác. Do đó, một số nhà sản xuất có thể lưu trữ và truyền byte cao hơn trước byte thấp hơn (ví dụ: AE trước 41), trong khi những nhà sản xuất khác có thể thực hiện theo thứ tự ngược lại (41 trước AE). Tương tự, khi sử dụng các kiểu dữ liệu 32 bit, một số thiết bị có thể lưu trữ và truyền 16 bit cao hơn trong thanh ghi đầu tiên và 16 bit thấp hơn trong thanh ghi thứ hai (ví dụ: AE41 trước 5652), trong khi các thiết bị khác có thể thực hiện theo thứ tự ngược lại (5652 trước AE41). Quan trọng nhất là thiết bị nhận biết cách dữ liệu được sắp xếp để hoạt động chính xác theo yêu cầu.

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

Mở rộng thanh ghi trong chuẩn Modbus cho phép phạm vi các thanh ghi giữ đầu ra từ 40001 đến 49999, tương ứng với địa chỉ dữ liệu từ 0000 đến 270E. Nếu sử dụng các địa chỉ dữ liệu còn lại từ 270F đến FFFF, số thanh ghi sẵn có sẽ gấp hơn sáu lần, lên tới tổng cộng 65536. Điều này mở ra khả năng lưu trữ dữ liệu cho nhiều ứng dụng đòi hỏi sự mở rộng.

Địa chỉ “Slave” 2-byte

Giao thức Modbus ban đầu sử dụng một byte để xác định địa chỉ "Slave", giới hạn số lượng "Slave" trên mạng ở mức 256, thậm chí trong chuẩn Modbus còn giới hạn lại mức số "Slave" ở mức 247. Tuy nhiên, để vượt qua giới hạn này, có thể sửa đổi giao thức để sử dụng hai byte cho địa chỉ, mở rộng giới hạn lên tới 65535 "Slave" trên mạng. Cả "Master" và "Slave" đều cần hỗ trợ sửa đổi này để thành công.

Mặc định, hầu hết phần mềm hỗ trợ Modbus đều sử dụng địa chỉ 1 byte. Khi nhập địa chỉ lớn hơn 255, phần mềm tự động chuyển sang định địa chỉ 2 byte và duy trì ở chế độ này với tất cả các địa chỉ cho đến khi người dùng thủ công tắt địa chỉ 2 byte.

Ứng dụng chuẩn Modbus

Modbus là một giao thức mở, cho phép các nhà sản xuất tích hợp chúng vào thiết bị của họ mà không cần phải trả tiền bản quyền. Giao thức này đã trở thành một tiêu chuẩn trong ngành công nghiệp và là cách kết nối thiết bị điện tử công nghiệp phổ biến nhất hiện nay. Modbus được sử dụng rộng rãi trong nhiều ngành công nghiệp để truyền tín hiệu từ thiết bị đo đạc và điều khiển trở lại bộ điều khiển chính hoặc hệ thống thu thập dữ liệu. Chúng 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). Giao thức Modbus có các phiên bản phổ biến dành cho cổng nối tiếp (Modbus RTU và Modbus ASCII) và cho Ethernet (Modbus TCP).

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

Giao thức Modbus có hai phiên bản phổ biến là Modbus RTU và Modbus TCP, và chúng có những điểm khác biệt quan trọng:

Modbus RTU là phiên bản dành cho các kết nối nối tiếp, sử dụng định dạng dữ liệu không thường xuyên để truyền thông tin, bao gồm bit dừng, bit bắt đầu và kiểm tra lỗi kiểu CRC (Cyclic Redundancy Check). Định dạng này thích hợp cho việc truyền thông tin trong môi trường nhiễu sóng và tốc độ truyền thông thấp.

Modbus TCP, đối với, là phiên bản sử dụng TCP/IP để truyền thông và sử dụng giao thức Ethernet. Điều này cho phép truyền thông thông tin ở tốc độ cao hơn so với Modbus RTU và phù hợp cho các môi trường mạng Ethernet. Modbus TCP cũng cho phép việc sử dụng các thiết bị mạng IP và mạng không dây.

Như vậy, điểm khác biệt chính giữa Modbus RTU và Modbus TCP nằm ở định dạng truyền dữ liệu và phương thức truyền thông, ảnh hưởng đến khả năng chịu nhiễu và tốc độ truyền thông của hệ thống.

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

Giao thức Modbus có hai phiên bản truyền thông phổ biến là Modbus ASCII và Modbus RTU, và chúng có những điểm khác biệt như:

Modbus RTU sử dụng định dạng dữ liệu không thường xuyên để truyền thông tin, bao gồm bit dừng, bit bắt đầu và kiểm tra lỗi kiểu CRC (Cyclic Redundancy Check). Sự sắp xếp dữ liệu trong các khung truyền tin RTU là theo định dạng nhị phân, đây là một định dạng hiệu quả cho việc truyền thông tin trong môi trường nhiễu sóng ở tốc độ truyền thông thấp.

Trái ngược với Modbus RTU, Modbus ASCII sử dụng một phương thức truyền thông dựa trên văn bản, trong đó dữ liệu được trình bày dưới dạng ký tự ASCII. Định dạng ASCII có thể mang lại sự linh hoạt trong việc truyền thông và kiểm tra lỗi, nhưng yêu cầu thêm thời gian truyền thông do dữ liệu được trình bày dưới dạng ký tự và có thêm các ký tự đánh dấu.

Điểm khác biệt chính giữa Modbus ASCII và Modbus RTU nằm ở định dạng truyền dữ liệu và phương thức truyền thông, ảnh hưởng đến tốc độ và hiệu suất truyền thông của hệ thống.

Trong bài viết này, chúng ta đã tìm hiểu về các phiên bản của giao thức Modbus, bao gồm Modbus RTU, Modbus TCP và Modbus ASCII. Chúng ta đã hiểu rõ sự khác biệt về cách thức truyền thông và ứng dụng của mỗi phiên bản trong ngành công nghiệp. Việc hiểu rõ về các phiên bản này sẽ giúp chúng ta áp dụng giao thức Modbus một cách hiệu quả trong các hệ thống điện tử công nghiệp và mạng truyền thông hiện đại.

Bạn cần trợ giúp?

Bắt đầu ở đây!

Tìm câu trả lời ngay. Tự tìm kiếm giải pháp, hoặc kết nối với một trong các chuyên gia của chúng tôi.

Liên hệ hỗ trợ

Liên hệ với nhóm chăm sóc khách hàng của Schneider để nhận thêm thông tin, được hỗ trợ kỹ thuật, trợ giúp khiếu nại và các thông tin khác.

Nơi mua hàng?

Dễ dàng tìm nhà phân phối Schneider Electric gần bạn nhất.

 Mở trong cửa sổ mới

Tìm kiếm câu hỏi thường gặp

Nhận câu trả lời bạn cần bằng cách duyệt tìm những Câu hỏi thường gặp (FAQ) liên quan đến chủ đề.

 Mở trong cửa sổ mới

Liên hệ bộ phận bán hàng

Đăng ký bán hàng trực tuyến và chuyên gia của chúng tôi sẽ liên hệ với bạn.

Chat

Bạn có câu hỏi hoặc cần trợ giúp? Chúng tôi sẵn sàng giúp đỡ bạn!