Một trong những giao thức truyền thông kỹ thuật số lâu đời nhất cũng là giao thức phổ biến nhất và vì lý do đó bạn nên làm quen với Modbus. Modbus là giao thức mạng cơ bản được sử dụng trong hầu hết các ứng dụng công nghiệp ngày nay. Với tính phổ biến, “mở”  và là một giao thức dễ sử dụng, Modbus đã có mặt trong mọi lĩnh vực công nghiệp trong hơn 30 năm qua. Modbus được coi là tiêu chuẩn chung được sử dụng trong hầu hết các sản phẩm tự động hóa, thiết bị đo lường và điều khiển quy trình công nghiệp lớn trên thị trường hiện nay.

Các sản phẩm công nghiệp mới như PLC, PAC, thiết bị I /O và đồng hồ đo có thể có cổng Ethernet, nối tiếp hoặc thậm chí có thể là không dây, nhưng Modbus vẫn là giao thức được ưa chuộng. Lợi thế quan trọng của Modbus là nó có thể chạy trên hầu như tất cả các phương tiện truyền thông, bao gồm dây xoắn đôi, không dây, sợi quang, Ethernet, modem điện thoại, điện thoại di động và sóng viba với hàm ý rằng việc kết nối Modbus có thể dễ dàng thiết lập trên mọi mặt của nhà máy cũ hoặc mới.

Modbus là gì ?

Giao thức Modbus được phát triển vào năm 1979 bởi Modicon, dành cho các hệ thống tự động hóa công nghiệp và bộ điều khiển lập trình Modicon. Kể từ đó, nó đã trở thành một tiêu chuẩn công nghiệp để truyền thông tin I/O rời rạc, dữ liệu thanh ghi giữa các thiết bị điều khiển và giám sát công nghiệp. Modbus hiện là một giao thức miền phí công cộng, mở, được sử dụng phổ biến nhất hiện nay.

Các thiết bị Modbus giao tiếp qua mối liên hệ Master-Slave (Client-Server) trong đó chỉ một thiết bị (Client /Server) có thể bắt đầu tạo yêu cầu tạm gọi là truy vấn). Các thiết bị khác (Slave/Server) phản hồi bằng cách cung cấp dữ liệu được yêu cầu cho thiết bị chính hoặc bằng cách thực hiện hành động được yêu cầu trong lúc truy vấn. Thiết bị Slave là bất kỳ thiết bị ngoại vi nào (bộ chuyển I/O, Valve, Driver hoặc thiết bị đo lường khác…) xử lý thông tin và gửi Output của nó đến thiết bị chính bằng Modbus. Các Mô-đun I /O tạo thành các thiết bị Slave/Server, trong khi thiết bị chính là một máy tính chủ chạy phần mềm ứng dụng thích hợp, và các thiết bị khác có thể hoạt động như  Client(Master) và Server(Slave).

Các loại giao tiếp trong giao thức Modbus

Giao tiếp nối tiếp Modbus (phiên bản gốc) là giao thức Master/Slave, ví dụ: một Master điều khiển và giao tiếp với nhiều Slave đáp ứng yêu cầu của Master để đọc từ hoặc ghi dữ liệu vào các Slave. Cấu trúc mạng giao tiếp được thể hiện trong Hình 1.

Modbus TCP, còn được gọi là Modbus TCP / IP, sử dụng kiến ​​trúc máy Client/Server. Cấu trúc mạng giao tiếp được thể hiện trong Hình 2.

Hình 1: Cấu trúc mạng giao tiếp nối tiếp

Trong cách giao tiếp nối tiếp này, chỉ có một Master duy nhất và có tới 247 Slave, mỗi Slave có một địa chỉ duy nhất. Và chúng ta có hai loại giao tiếp Modbus nối tiếp, là Modbus RTU và Modbus ASCII.

Sự khác nhau giữa Modbus RTU và Modbus ASCII

Chỉ có hai cách truyền cơ bản trong kết nối Modbus RTU và ASCII. Các chế độ truyền này xác định cách thức mã hóa các thông điệp MODBUS tức là code. Ở định dạng ASCII, các thông điệp có thể đọc được, trong khi trong RTU, các thông điệp ở dạng mã nhị phân (bin) và không thể đọc được trong khi giám sát. Đánh đổi là các thông điệp RTU có kích thước nhỏ hơn, cho phép trao đổi dữ liệu nhiều hơn trong một khoảng thời gian giống nhau. Tuy nhiên thì tất cả các nút trong một mạng MODBUS phải có cùng một kiểu truyền dẫn, có nghĩa là Modbus ASCII không thể giao tiếp với Modbus RTU và ngược lại.

Thông số kỹ thuật chi tiết:

Modbus TCP (Ethernet)

Modbus TCP thường được gọi với cái tên là Modbus truyền qua Ethernet. Modbus TCP (cũng là ModbusTCP / IP) chỉ đơn giản là giao thức Modbus RTU với giao diện TCP chạy trên Ethernet. Trong đó, thì cấu trúc truyền tin Modbus là giao thức ứng dụng xác định các quy tắc tổ chức dữ liệu độc lập với phương tiện truyền dữ liệu. TCP / IP cho phép giao thức điều khiển truyền và Giao thức Internet, cung cấp phương tiện truyền dẫn cho việc nhắn tin Modbus TCP / IP.

Điều này cho phép các thiết bị Modbus / TCP kết nối và giao tiếp ngay lập tức và dễ dàng qua các mạng cáp quang và Ethernet hiện có. Modbus / TCP cũng cho phép nhiều địa chỉ hơn dùng RS-485, sử dụng nhiều Master và tốc độ trong phạm vi gigabit. Trong khi Modbus RTU có giới hạn là 247 nút trên mỗi mạng, mạng Modbus / TCP có thể có nhiều slave như lớp vật lý có thể xử lý. Thường thì con số này là khoảng 1.024.

Sự thích ứng nhanh chóng của Ethernet trong ngành điều khiển quá trình và tự động hóa có cho phép Modbus / TCP trở thành giao thức công nghiệp được sử dụng rộng rãi nhất, phát triển nhanh nhất và được hỗ trợ qua Ethernet. Kiến trúc mạng được thể hiện trong Hình 2.

Hình 2: Cấu trúc mạng giao tiếp TCP/IP

Không giống như Modbus RTU và Modbus ASCII, Modbus / TCP sẽ cho phép nhiều Client thăm dò cùng một thiết bị Server đồng thời. Điều này được cho phép vì qua Ethernet qua TCP / IP, nhiều thông báo có thể được gửi, lưu vào bộ đệm và phân phối mà không yêu cầu chuyển mã thông báo hoặc kiểm soát toàn bộ bus, điều này thường xảy ra với nhiều giao thức RS485 và RS422.

Định địa chỉ và truyền tin trong Modbus

Định địa chỉ bộ nhớ Modbus thường được tổ chức xung quanh các thanh ghi 16 bit chứa 16 cuộn dây hoặc trạng thái bật / tắt (0/1) hoặc các giá trị nguyên trong thanh ghi 16 bit (thanh ghi đầu vào / đầu ra hoặc thanh ghi giữ). Ngoài ra, một số thiết bị sẽ sử dụng địa chỉ Modbus của riêng chúng. Những cách định địa chỉ Modbus điển hình chung có thể được nhìn thấy trong Hình 3.

Truyền tin Modbus dựa trên cái được gọi là đơn vị dữ liệu ứng dụng (ADU) và Đơn vị dữ liệu giao thức (PDU). Điều này sẽ báo Modbus bao gồm địa chỉ slave/server cho slave/server có liên quan, mã chức năng (code), địa chỉ bắt đầu dữ liệu và dữ liệu đang được gửi đến (được ghi) hoặc được gửi lại (đọc) tới Master/Client, và có cả đoạn code kiểm tra lỗi theo tiêu chuẩn (CRC / LRC / Checksum). Kích thước của Modbus PDU nối tiếp bị giới hạn bởi giới hạn kích thước được kế thừa từ việc triển khai mạng nối tiếp Modbus, tối đa là 256 byte. Địa chỉ Slave Modbus được giới hạn ở 1-255. Địa chỉ 1-247 có sẵn cho người dùng và địa chỉ 248-255 được dành riêng dùng cho tương lai.

Một giao tiếp dữ liệu nối tiếp Modbus điển hình được thể hiện trong Hình 3. Các giao dịch dữ liệu Modbus TCP về cơ bản giống nhau ngoại trừ địa chỉ máy chủ là địa chỉ IP, vài con số liên quan Ethernet và tổng kiểm tra lỗi là khác nhau. Dữ liệu Modbus có thể bao gồm địa chỉ dữ liệu bắt đầu, số lượng hoặc số lượng dữ liệu và dữ liệu thực tế được đọc hoặc sẽ được ghi. Nếu Slave/Server Modbus có vấn đề với yêu cầu Master/Client, thì Slave/Server sẽ đưa ra phản hồi lỗi trở lại Master/ Client.

Ở định dạng truyền tin Modbus TCP / IP, Modbus PDU thường được bao bọc trong gói Ethernet và bao gồm mã chức năng Modbus và yêu cầu dữ liệu Modbus. Địa chỉ phụ và mã lỗi (CRC) thường không cần thiết vì gói Modbus TCP / IP được mạng định tuyến đến địa chỉ IP mong muốn (trừ khi có kết nối vào mạng nối tiếp) và việc kiểm tra lỗi được thực hiện như một phần của gói Ethernet. 

Mã chức năng xác định lệnh mà thiết bị phụ sẽ thực thi, chẳng hạn như đọc dữ liệu, chấp nhận dữ liệu, trạng thái báo cáo, v.v.

Thuộc tính của lệnh chức năng

 

Modbus không dây

Tiết kiệm chi phí trong chi phí lắp đặt (cơ sở hạ tầng dây dẫn) là lợi ích quan trọng khi sử dụng các thiết bị không dây trong các ứng dụng công nghiệp. Công nghệ không dây cho phép các kỹ sư thiết lập nhanh chóng và tiết kiệm chi phí để có được dữ liệu thời gian thực từ bất kỳ đâu trong hiện trường hay sàn nhà máy hoặc có thể là nhiều địa điểm từ xa khác vào bất kỳ lúc nào, điều cần thiết cho hệ thống điều khiển và tự động hóa công nghiệp.

Modbus qua không dây là trong suốt đối với hệ thống điều khiển hoặc host(Master) và các thiết bị slave. Hệ thống máy chủ không biết liệu mạng Modbus không dây có tồn tại hay không, vì nó không phải xử lý nó. Khi một Modbus master thực hiện một yêu cầu tới một Slave và các gói tin đến nơi phát tín hiệu đi, bộ chuyển đổi thường sẽ sắp xếp lại thứ tự các gói và mã hóa chúng trước khi truyền. Sau khi các gói tần số vô tuyến (Radio Frequency) được nhận bởi bộ thu “Slave”, nó sẽ khử mã hóa chúng và đưa chúng trở lại để đại diện cho một Gói Modbus hợp lệ.

Giả sử rằng gói tin không bị hỏng hoặc bị lỗi, sau đó nó sẽ được gửi đến đúng địa chỉ Slave. Slave sẽ phản hồi lại Master và quá trình bắt đầu lại. Điều quan trọng là phải đặc biệt chú ý đến một tham số truyền thông Modbus được gọi là “thời gian chờ” (timeout). Thời gian chờ là khoảng thời gian mà Modbus master sẽ đợi phản hồi từ thiết bị phụ trước khi cố gắng truyền lại. Tùy thuộc vào mức độ liên lạc của đài phát thanh, các gói tin có thể bị trì hoãn gây ra số lượng thử lại và truyền lại không cần thiết. Ngày nay hầu hết các tham số này có thể được quản lý để chuyển các gói Modbus hiệu quả. Tuy nhiên, điều cần thiết là phải tiến hành một cuộc khảo sát địa điểm vô tuyến thích hợp bao gồm phân tích cường độ tín hiệu và nhiễu phổ trước khi triển khai mạng Modbus không dây để giảm bớt bất kỳ sự cố liên lạc nào.

Một mạng Modbus có thể được thiết lập khá dễ dàng để hoạt động qua một liên kết không dây như thể hiện trong hình 4. Về cơ bản, tất cả những gì liên kết không dây làm là thay thế các cặp cáp xoắn bằng một bộ phát / thu ở mỗi đầu của mạng. Điều đó thực sự là cần thiết do đó bạn phải tham khảo ý kiến ​​chuyên gia không dây công nghiệp của Daviteq để hỗ trợ bạn trong việc lựa chọn phần cứng không dây phù hợp cho các ứng dụng công nghiệp của bạn. 

Mức độ phổ biến của chuẩn Modbus trên thị trường hiện nay

Trên thị trường hiện nay, phần lớn các dòng thiết bị điều khiển và tự động hóa đều được hỗ trợ chuẩn truyền thông Modbus. Điển hình như là cảm biến không dây đo nhiệt độ, cảm biến áp suất, đồng hồ điện năng, PLC, biến tần…Và bên cạnh đó với sự phát triển ngày càng lớn mạnh của cộng đồng IoT thì càng có nhiều thiết bị điện-điện tử đã và đang sử dụng chuẩn Modbus. Ta không còn quá xa lạ với các hãng đình đám như : Schneider, Mitsubishi, ABB, Siemens, Omron, Selec, IFM…

Dưới đây là một vài hình ảnh về sản phẩm trên thị trường đang sử dụng chuẩn Modbus:

Modbus và quá trình kết nối vạn vật trong tương lai (IoT)

Giao thức thường được sử dụng trong IoT như một giao diện cục bộ để quản lý thiết bị chính là Modbus. Nói cách khác, Modbus cũng là giao thức truyền thông phổ biến nhất trong việc xây dựng hệ thống tự động hóa công nghiệp và là phương tiện phổ biến nhất hiện có để kết nối các thiết bị điện tử tự động, được gọi chung đó là IoT (Internet of Things). Tại sao điều đó lại xảy ra? Tại sao Modbus lại có tác động đến ngành Tự động hóa Công nghiệp cũng như IoT đến mức nó tồn tại cho đến ngày nay như một trong những mạng công nghiệp hàng đầu của thế kỷ 21? Có một số lý do.

Modbus là tiêu chuẩn fieldbus đầu tiên được chấp nhận rộng rãi. Trong một thời gian ngắn, hàng trăm nhà cung cấp đã triển khai hệ thống truyền tin Modbus trong thiết bị của họ và Modbus đã trở thành tiêu chuẩn thực tế cho các mạng truyền thông công nghiệp.

Lớp truyền tải dữ liệu cho các lệnh Modbus RTU cũng đơn giản để hiểu. Nó sử dụng RS485, một tiêu chuẩn giao tiếp khác biệt hỗ trợ tối đa 32 nút trong cấu hình bus nhiều điểm. RS485 cung cấp khả năng chống ồn vượt trội so với tiêu chuẩn điện RS232.

Modbus thực hiện một trao đổi dữ liệu rất đơn giản. Mục đích chính của nó chỉ đơn giản là di chuyển dữ liệu giữa thiết bị Master (Client trong Modbus TCP) và thiết bị Slave (Server trong Modbus TCP).

Một lý do khác khiến Modbus rất thành công là thực tế là nó có thể dễ dàng hiểu được bởi những người không phải là lập trình viên. Các kỹ sư chế tạo máy dán keo, máy đo, thiết bị đo lường, v.v. có thể dễ dàng hiểu khái niệm về cuộn dây / thanh ghi và các lệnh đơn giản để đọc và viết chúng.

Tóm lại: Trong khi các giao thức truyền thông thay thế ‘hiện đại hơn’ đang tồn tại và đang được phát triển, Modbus chắc chắn sẽ tồn tại trong một thời gian dài trong tương lai và thậm chí có thể lâu hơn chúng ta nghĩ.

Một số điểm hạn chế của giao thức Modbus? Tránh dùng nó trong những trường hợp nào?

Cũng như bất kỳ một giao thức truyền thông nào đều cũng có các mặt hạn chế của nó. Việc hiểu rõ các điểm hạn chế giúp chúng ta khai thác hiệu quả giao thức truyền thông mong muốn nhưng vẫn đảm bảo sự an toàn nhất định. Sau đây là một số hạn chế cần lưu ý.

  • Modbus không có bất kỳ biện pháp bảo vệ cố hữu nào chống lại các cuộc tấn công vô tình hoặc độc hại đối với các giao dịch dữ liệu của nó từ các cuộc tấn công an ninh mạng và yêu cầu các biện pháp bảo vệ bổ sung. Do đó, không nên sử dụng Modbus TCP nếu bạn muốn vượt qua tường lửa. Bởi vì bất kỳ ai ở phía đó của tường lửa sẽ có quyền truy cập không chỉ vào thiết bị Modbus đó mà còn mọi thứ khác trên mạng đó.
  • Không sử dụng Modbus RTU nếu bạn cần phản hồi dữ liệu nhanh. Bạn có thể đẩy tốc độ truyền của Modbus RTU lên 56K baud hoặc thậm chí có thể là 115K, nhưng bạn vẫn đang xem xét thời gian phản hồi từ 25 mili giây trở lên cho mỗi thiết bị trên liên kết. Tốc độ baud thường là cơ chế kém hiệu quả nhất để tạo phản hồi nhanh hơn trên liên kết Modbus RTU. Phần lớn độ trễ giữa việc truyền yêu cầu Modbus và nhận phản hồi là thời gian xử lý với nút Modbus Slave, chứ không phải thời gian truyền trên mạng, và càng nhiều nút Slave, thì thời gian chu kỳ của toàn bộ mạng RTU càng dài.
  • Không sử dụng Modbus nếu bạn cần bất kỳ phản hồi theo hướng Event nào. Bởi vì Modbus không thực hiện các sự kiện. Modbus Master (RTU) hoặc Modbus Client (TCP) chỉ đơn giản gửi yêu cầu và nhận phản hồi. Đây không phải là những mạng có thể nhanh chóng phản ứng kịp với tình trạng báo động.
  • Không sử dụng Modbus để truyền dữ liệu nhạy cảm. Modbus không hỗ trợ bất kỳ loại bảo mật nào. Bất kỳ ai có quyền truy cập vào mạng đều có thể đọc dữ liệu được truyền trên mạng.
  • Không sử dụng Modbus nếu bạn có nhiều dữ liệu cần truyền. Các gói được giới hạn tối đa khoảng 120 byte. Nó không hiệu quả đối với bất kỳ hình thức truyền dữ liệu lớn nào. Đề xuất đó không thay đổi đối với Modbus TCP. Mặc dù Modbus TCP được chứa trong một gói TCP, bạn chỉ có thể chuyển cùng 120 byte trong một thông điệp Modbus.
  • Không sử dụng Modbus trong các ứng dụng điều khiển. Modbus chỉ là một giao thức điều khiển “ok”. Bởi vì Modbus RTU hoạt động ở chế độ bán song công (yêu cầu ra – phản hồi trong, nút tiếp theo và lặp lại) nên thời gian chu kỳ qua tất cả các nút thay đổi theo số lượng nút. Nó chỉ nên được sử dụng trong các ứng dụng mà thời gian và thời gian phản hồi không phải là vấn đề.

Vì vậy, Modbus rất phù hợp cho các ứng dụng điều khiển nhỏ, nơi cần chuyển một lượng nhỏ dữ liệu từ điểm A đến điểm B. Nó yêu cầu ít không gian mã và hầu như không có RAM, vì vậy nó hoàn hảo cho các ứng dụng nhúng nhỏ. 

Khắc phục sự cố Modbus có thể được chia thành hai phần chung, Modbus TCP/IP và Modbus nối tiếp. Khắc phục sự cố Modbus TCP / IP có thể được chia thành khắc phục sự cố mạng, chẳng hạn như bạn phải đảm bảo rằng các gói Modbus TCP / IP Ethernet với dữ liệu không có lỗi được đến và đi từ nơi chúng được cho là phải đến để thực hiện các giao dịch mong muốn.

Câu hỏi đầu tiên cần đặt ra khi khắc phục sự cố liên kết Modbus cho dù vấn đề là mới – liên kết Modbus đã hoạt động trước đây hay chưa bao giờ hoạt động? Nếu nó hoạt động trước đó đối với liên kết Modbus TCP, điều này có nghĩa là cấu hình thiết bị và Ethernet có thể ổn.

Điều tương tự cũng áp dụng cho liên kết nối tiếp Modbus — loại Modbus, RTU / ASCII, tốc độ truyền, ký tự bắt đầu, chẵn lẻ, ký tự kết thúc, thời gian giữa các bản tin, điện trở kết thúc tại chỗ, v.v. có thể đúng. Điều này cho phép trình khắc phục sự cố tập trung vào những gì đã thay đổi trên liên kết, chẳng hạn như (các) thiết bị mới, hệ thống dây điện đã sửa đổi hoặc thay đổi, hệ thống dây điện mới gần hệ thống dây điện hiện có, v.v. Nếu cài đặt là một cài đặt mới, hệ thống dây điện và cấu hình Modbus đối với tất cả các thiết bị Modbus trên liên kết nên được kiểm tra kỹ và đảm bảo rằng nó phù hợp với tài liệu và hướng dẫn liên kết Modbus. Một vấn đề phổ biến đối với nối tiếp Modbus là có các dây tín hiệu bị đảo ngược.

Các dấu hiệu phổ biến nhất của sự cố Modbus là thời gian chờ “timeout” I / O (yêu cầu tin nhắn đã được gửi và không nhận được trả lời trước khi giao diện hết thời gian chờ) hoặc nhận được mã lỗi từ thiết bị Slave/Server. Điều này thường hiển thị dưới dạng “process Variable” hoặc “timeout” I / O trên DCS hoặc HMI. Hầu hết các thiết bị Modbus đều có đèn giao tiếp nhấp nháy khi thiết bị đang giao tiếp và một số sẽ sử dụng đèn LED màu để cung cấp một số khả năng khắc phục sự cố.

Nếu bạn đang gặp phải nhiễu hoặc sự cố không liên tục hoặc vấn đề khác về liên kết nối tiếp Modbus, thì sự cố có thể liên quan đến nối đất, che chắn không chính xác hoặc nối dây nguồn bên cạnh hệ thống dây Modbus. Trong đó, RS-485 hai dây và bốn dây yêu cầu một đường dây chung chỉ được nối đất tại một điểm, ngoài hai hoặc bốn dây.

Việc sử dụng Modbus cho các vấn quan trọng về an toàn phải được đánh giá rủi ro và nếu được sử dụng trong các ứng dụng quan trọng về an toàn, các biện pháp bảo vệ phải được thực hiện để đảm bảo tính toàn vẹn “an toàn” của dữ liệu Modbus để tín hiệu chức năng được thực hiện một cách an toàn và bảo mật.

Kết luận

Rõ ràng giao thức Modbus đóng vai trò không hề nhỏ trong truyền thông công nghiệp và cả IoT, việc hiểu rõ giao thức Modbus giúp các bạn có thể triển khai hiệu quả các ứng dụng tự động hoá cũng như IoT nhưng vẫn đảm bảo độ tin cậy và an toàn của giải pháp. Muốn biết thêm chi tiết hay cần tư vấn rõ hơn về các ứng dụng liên quan đến Modbus xin liên hệ với chúng tôi theo email info@daviteq.com