Giao thức truyền thông modbus là gì? Có bao nhiêu loại Modbus? Chuẩn truyền thông modbus RTU là gì?… Trong bài viết hôm nay, bạn và vancongnghiephp cung nhau đi tìm hiểu những nội dung liên quan đến modbus nhé.
Giao thức truyền thông 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 và phát hành bởi MODICON vào năm 1979. Năm 1996, chuẩn giao thức này chính thức được Schneider Electrics sở hữu. Tính ổn định, dễ dàng sử dụng, tiện lợi và đặc biệt là miễn phí. Đã giúp MODBUS trở thành tiêu chuẩn truyền thông trong ngành công nghiệp tự động hóa. Hiện nay, chuẩn giao thức MODBUS được duy trì bởi tổ chức “modbus.org.
Giao thức truyền thông Modbus là một loại giao thức truyền dữ liệu được sử dụng để giao tiếp giữa các thiết bị trong các hệ thống tự động hóa. Giao thức này bao gồm hai loại thiết bị: “Master” và “Slave”. Mỗi hệ thống Modbus có một “Master” và tối đa 252 “Slave” được nối tiếp với nhau. “Slave” có thể là các thiết bị trong nhà máy như cảm biến nhiệt độ, cảm biến áp suất, cảm biến đo mức nước, và nhiều thiết bị khác.
Khi “Master” cần thông tin từ các “Slave”, nó sẽ phát đi một tín hiệu yêu cầu đến các “Slave”. Các “Slave” sau đó sẽ trả lời bằng cách gửi một gói tin chứa thông tin được yêu cầu cho “Master”. Điều này cho phép “Master” thu thập thông tin từ nhiều “Slave” khác nhau và điều khiển chúng. Modbus là một giao thức đơn giản và phổ biến được sử dụng rộng rãi trong các ngành công nghiệp tự động hóa. Điển hình là dòng đồng hồ đo lưu lượng điện tử.
Nguyên tắc hoạt động của modbus
Giao thức truyền thông modbus hoạt động theo nguyên tắc “Master-Slave” hoặc “Chủ-Tớ”. Một “Master” có thể kết nối với một hoặc nhiều “Slave”. “Master” thường là các thiết bị như PLC, PC, DCS, RTU hay SCADA. Trong khi đó, “Slave” thường là các thiết bị cấp hiện trường. MODBUS là phương pháp truyền thông tin qua đường dây 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 được gọi là “Modbus Slave”. Trong mạng MODBUS tiêu chuẩn, chỉ có một “Master” và tối đa 247 “Slave”, với mỗi “Slave” có một địa chỉ duy nhất từ 1 đến 247. “Master” cũng có thể ghi thông tin vào các “Slave.
Lịch sử phát triển Modbus
Modbus là một chuẩn truyền thông ra đời vào năm 1979 bởi Công ty Modicon với mục đích sử dụng cho các PLC của hãng. Hiện nay, công ty Modicon thuộc sở hữu của Schneider Electric. Modbus Organization được thành lập để quản lý việc phát triển và cập nhật các giao thức Modbus. Và là một hiệp hội của người dùng và nhà cung cấp thiết bị sử dụng chuẩn Modbus.
Lý do Modbus ra đời
Trước khi chuẩn truyền thông Modbus ra đời, các hãng sản xuất sử dụng các giao thức truyền thông và ngôn ngữ lập trình khác nhau và độc quyền của riêng họ. Điều này gây khó khăn nếu một bên thứ ba muốn đọc và truyền thông dữ liệu đến thiết bị của hãng. Tuy nhiên, các hãng sản xuất cũng không muốn giải quyết vấn đề này theo cách đơn giản nhất. Đó chính là sử dụng giao thức mở. Modbus ra đời với ưu điểm là một dạng giao thức mở. Nó cung cấp một nền tảng chung và tất cả các thông số được công bố. Các hãng sản xuất có thể tham gia trực tiếp vào việc chỉnh sửa. Lập trình trên nền tảng Modbus để đáp ứng nhu cầu của mình.
Một ví dụ đơn giản để hình dung ưu điểm của Modbus là hệ điều hành Android của Google. Google cung cấp một nền tảng chính cho Android. Và các hãng điện thoại như Samsung, Oppo, Xiaomi,… sẽ chỉnh sửa Android để phù hợp với nhu cầu của mình. Điều này rất quan trọng để đảm bảo các thiết bị giữa các hãng hoạt động ổn định và tương thích với nhau. Modbus cũng có ưu điểm tương tự, cho phép tích hợp các thiết bị từ nhiều nhà sản xuất khác nhau trong cùng một ứng dụng. Và thời gian giao tiếp nhanh, khoảng cách truyền thông xa (trung bình 1200 mét).
Ưu điểm của giao thức truyền thông modbus
Các ưu điểm khác của Modbus bao gồm sự hỗ trợ từ nhiều nhà sản xuất, nhà cung cấp phần mềm. Và các nhóm chuyên gia lập trình cùng phát triển, khả năng tích hợp qua web server và internet. Khả năng mở rộng nhiều thiết bị, hiệu quả kinh tế cao. Vì chỉ tốn 2 dây dẫn để kết nối vài trăm thiết bị.
Phân loại chuẩn giao thức truyền thông modbus
MODBUS hiện nay được phân thành bốn chuẩn phổ biến trong công nghiệp: MODBUS RTU, MODBUS TCP và MODBUS ASCII.
Truyền thông Modbus RTU
Giao thức MODBUS RTU sử dụng mã hóa dữ liệu theo hệ nhị phân. 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 cho các kết nối RS232 hay RS485. Với tốc độ truyền từ 1200 đến 115000 baud. Tốc độ phổ biến nhất là từ 9600 đến 19200 baud. Vì đây là chuẩn giao thức truyền thông công nghiệp được sử dụng rộng rãi nhất. Nên hầu hết trong bài viết này sẽ tập trung đề cập đến MODBUS RTU.
Chuẩn truyền thông ModBUS RTU
ModBUS RTU là chuẩn truyền thông phổ biến trong các ứng dụng công nghiệp, với 2 phương thức giao tiếp chính là ModBUS RTU RS232 và ModBUS RTU RS485.
Giao thức ModBUS RTU RS232
Đây là cổng giao tiếp đầu tiên được sử dụng khi ModBUS được phát triển. Giao thức này hoạt động trên cổng serial mắc nối tiếp với nhau. Tuy nhiên, cổng giao tiếp này chỉ hỗ trợ giao tiếp đơn định với một thiết bị một lúc.
>>> Tham khảo chi tiết bài viết: Truyền thông RS232 là gì?
Giao thức ModBUS RTU RS485
Để khắc phục hạn chế của cổng RS232, chuẩn ModBUS RTU được phát triển thêm với phương thức giao tiếp RS485. Với phương thức này, nhiều thiết bị có thể được kết nối với nhau trên cùng một đường truyền. Do đó, ModBUS RTU RS485 được sử dụng rộng rãi hơn trong các hệ thống truyền thông ModBUS.
>>> Bài viết tham khảo chi tiết: Modbus RS485
Giao thức truyền thông Modbus TCP
Modbus TCP là phiên bản của Modbus được sử dụng trên mạng Ethernet (RJ45). Dữ liệu Modbus được đóng gói trong một gói tin TCP/IP đơn giản. Một cách đơn giản để hiểu đó là Modbus RTU được đóng gói trong một khung TCP/IP và truyền qua mạng thay vì các kết nối nối tiếp. Máy chủ không sử dụng SlaveID mà sử dụng địa chỉ IP để định danh. Modbus TCP được sử dụng rộng rãi trong các ứng dụng mạng và cho phép truy cập từ xa đến các thiết bị Modbus một cách dễ dàng.
Truyền thông Modbus ASCll
Modbus ASCII là giao thức truyền thông mà mọi thông điệp được mã hóa bằng hệ thập lục phân và sử dụng đặc tính ASCII 4 bit. Đối với mỗi byte thông tin, cần có 2 byte truyền thông, gấp đôi so với MODBUS RTU hay MODBUS TCP. Mặc dù tốc độ truyền thông của MODBUS ASCII chậm hơn so với hai chuẩn khác, nhưng nó phù hợp với các thiết bị sử dụng modem điện thoại hoặc kết nối sóng radio, bởi vì ASCII sử dụng các tính năng phân định thông điệp. Điều này giúp mọi rắc rối trong phương tiện truyền dẫn không làm thiết bị nhận dịch sai thông tin, đặc biệ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 hoặc các phương tiện truyền thông chuyên dụng khác.
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 |
Mac Hexa ( Hexadecimal)
Khi quá trình khắc phục sự cố và khi xem dữ liệu thô thực tế đang được quyền. Thì các chuỗi dài gồm số 1 và số 0 rất khó đọc. Chình vì vậy, các bit được kết hợp với nhau và tạo ra một tệp hiển thị ở dạng thập lục phân. Mỗi khối 4 bit và được biểu diễn bằng một số 16 ký tự từ 0 cho đến F.
Ở mỗi khối 8 bít đều được biểu diễn bằng một trong 256 cặp ký tự từ 00 cho đến FF.
ASCll là gì?
ASCII là một bảng mã ký tự dùng để biểu diễn các ký tự chữ cái, số và các ký tự đặc biệt trong máy tính. Viết tắt của “American Standard Code for Information Interchange”, bảng mã ASCII bao gồm 128 ký tự, được biểu diễn bằng cách sử dụng 7 bit (128 = 2^7) để mã hóa mỗi ký tự. Các ký tự này bao gồm các chữ cái, số, dấu câu và các ký tự đặc biệt như khoảng trống, tab, v.v. Ngoài ra, có một phiên bản mở rộng của ASCII gọi là Unicode, được sử dụng rộng rãi hơn để hỗ trợ nhiều ngôn ngữ và ký tự hơn.
Đị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 thành bốn 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 chứa tối đa 9999 biến giá trị.
- Mỗi coils hoặc contact tương đương với 1 bit và được gán một địa chỉ dữ liệu trong khoảng từ 0000 đến 270E.
- Mỗi register tương đương với 1 word = 16 bit = 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 truyền tải thực tế. Thay vào đó, “Data Addresses” đượ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 và có “Data Address” là 0000. Sự khác biệt giữa hai giá trị này là độ lệch. Mỗi bảng dữ liệu có một độ lệch khác nhau, bao gồm 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 địa chỉ nào cần truy cập để đọc hoặc ghi giá trị.
Lệch và phản hồi trong chuẩn Modbus
Ứng dụng giao thông truyền thông MODBUS
Truyền thông modbus thuộc dạng giao thức mở. Có nghĩa là các nhà sản xuất hoàn toàn có thể tích hợp modbus với những thiết bị của họ mà không mất tiền. Điều này trở thành một tiêu chuẩn giao thức truyền thông trong công nghiệp. Và nó đang trở thành phương tiện phổ biến trong việc kết nối thiết bị điện tử công nghiệp.
Nó được sử dụng rộng rãi bởi nhiều nhà sản xuất trong nhiều ngành công nghiệp khác nhau. Modbus thường được sử dụng để truyền tín hiệu từ các thiết bị đo đạc, điều khiển rở lại bộ điều khiển chính. Hoặc là hệ thống thu thập dữ liệu. Chẳng hạn như hệ thống đo nhiệt độ và độ ẩm, và truyền kết quả tới máy tính. Modbus được kết nối với máy tính giám sát với thiết bị đầu cuối từ xa (RTU) trong hệ thống. Giúp đ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 phổ biến cho các kết nối tiếp (Modbus RTU và Modbus ASCII) và cho Ethernet (Modbus TCP).
Sự khác biệt giữa truyền thông RTU và TCP
Để tạo sự đồng bộ hóa cho các thông điệp truyền tải, một tiêu đề 7 byte mới được thêm vào đầu các thông điệp Modbus TCP. Tiêu đề này được gọi là MBAP Header (Modbus Application Header) và chứa các thông tin sau:
- Mã định danh (Transaction ID): 2 byte được 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ì 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 được Client đặt, luôn luôn bằng 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ị (Unit ID): 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.
Sự khác biệt chính giữa RTU và TCP là trong RTU, không có MBAP Header, và các thông điệp được truyền trực tiếp qua nối tiếp hoặc mạng, trong khi đó, trong TCP, các thông điệp được đóng gói trong các gói dữ liệu và được truyền qua mạng TCP/IP.
Yêu cầu tương ứng với ví dụ về Modbus RTU và Modbus TCP là:
Ví dụ Modbus RTU:
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ỉ của thanh ghi đầu tiên được yêu cầu (địa chỉ tương ứng trên thiết bị Slave: 40108-40001 = 107 = 6B hex)
0003: số lượng thanh ghi được yêu cầu (đọc 3 thanh ghi 40108 đến 40110)
7687: CRC (Cyclic Redundancy Check) để kiểm tra lỗi
Ví dụ Modbus TCP:
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: địa chỉ của thiết bị Slave (17 = 11 hex)
03: Function code (đọc thanh ghi giữ đầu ra tương tự (Analog Output Holding Registers))
006B: địa chỉ của thanh ghi đầu tiên được yêu cầu (địa chỉ tương ứng trên thiết bị Slave: 40108-40001 = 107 = 6B hex)
0003: số lượng thanh ghi được yêu cầu (đọc 3 thanh ghi 40108 đến 40110)
Trên đây, vancongnghiephp đã chia sẻ chi tiết cho bạn những thông tin liên quan đến giao thức truyền thông Modbus. Chúng tôi hy vọng qua những kiến thức về Modbus có thể giúp bạn đọc hiểu rõ hơn về sản phẩm. Từ đó, phục vụ được trong công việc của mình. Cảm ơn bạn đã quan tâm và theo dõi bài viết dưới đây.
>>> Tham khảo thêm bài viết: Hộp bảo vệ đồng hồ nước là gì? Mua hộp bảo vệ đồng hồ nước