Mọi kỹ sư lập trình điều khiển nói chung và lập trình PLC nói riêng ngày ngay phải biết tới giao thức Modbus RTU và giao thức Modbus TCP/IP để không lỗi thời trong thời đại 4.0 ngày càng phát triển như vũ bão. Tuy nhiên, điều đó không có nghĩa là các bạn phải chi tiết từng giao thức. Thay vào đó, tốt hơn bạn hiểu biết cách sử dụng và thiết lập Modbus TCP/IP như thế nào cho hiệu quả và tiết kiệm nhất.
Vậy Modbus TCP/IP là gì & tại sao chúng ta cần phải quan tâm nó trong thời đại ngày nay.

Modbus TCP/IP là gì
Modbus TCP/IP là gì

Modbus TCP/IP là gì?

Giao thức Modbus TCP/IP được sử dụng rộng rãi trong thời gian gần đây, nó giúp truyền thông hai hoặc nhiều thiết bị với nhau thông qua mạng Ethernet. Modbus RTU thực chất là giao thức Modbus RTU nhưng chạy trên nền mạng Ethernet nên được đặt theo một tên khác đó chính là Modbus TCP/IP.

So Sánh Modbus RTU và TCP/IP

So sánh Modbus TCP-IP với Modbus RTU
So sánh Modbus TCP-IP với Modbus RTU

Với sự phát triển công nghệ ngày càng nhanh chóng trong thời đại 4.0 việc biết càng nhiều phương thức giao tiếp càng giúp ích cho việc tiết kiệm chi phí và nhân công lắp đặt, cài đặt, lập trình. Tôi nghĩ rẳng một người lập trình cần cập nhật ngay chuẩn truyền thông Modbus TCP/IP nếu như đã biết Modbus RTU.

Modbus RTU RS485

Modbus RTU
Modbus RTU

Để hiểu được cách thức hoạt động của Modbus TCP/IP, trước tiên chúng ta cần phải biết tổ tiên của nó. Một kiểu giao thức Modbus nối tiếp cổ điển.

Giao thức Modbus được tạo ra bởi một công ty tên là Modicon vào năm 1979, nay thuộc về tập đoàn Schneider Electric. Ban đầu nó được phát triển cho PLC Modicon và các hệ thống tự động hóa công nghiệp. Sau đó họ chia sẻ phương thức truyền thông này miễn phí với tất cả các hãng khác.

Kể từ đó, nó đã trở thành một phương pháp tiêu chuẩn công nghiệp để truyền dữ liệu giữa các thiết bị điều khiển công nghiệp. Qua nhiều năm, Modbus RTU được sử dụng một cách phổ biến tại các nước phát triển nhưng đối với chúng ta nó vẫn còn là khá mới mẻ.

Trên mạng truyền thông Modbus RTU, các thiết bị giao tiếp với nhau theo phương thức Master– Slave hay còn gọi là Chủ – Tớ. Master – Slave ( Client – Server ) hoạt động theo phương thức Master gọi thì Slave sẽ trả lời.

Hệ thống chỉ có duy nhất 1 master và nhiều Slave.

Nếu hệ thống của bạn có 10 thiết bị Slave giao tiếp với 1 Master thì Master sẽ gọi từng Slave theo vòng tròn. Các tín hiệu đọc được sẽ theo tuần từ 1 đến 10 chứ không trả lời đồng thời.

Đây chính là nhược điểm duy nhất của Modbus RTU RS485. Tuy nhiên, điểm thuận tiện khi sử dụng Modbus RTU đó chính là tiết kiệm dây dẫn tín hiệu. Dù bạn có 100 thiết bị hay nhiều hơn thì cũng chỉ cần duy nhất 1 dây dẫn 2 lỏi A-B và GND.

Modbus TCP/IP Protocol

Modbus TCP-IP
Modbus TCP-IP

Về cơ bản thỉ Modbus TCP/IP hoạt động trên giao thức Modbus RTU với giao diện TCP chạy trên nền tảng Ethernet. Giống như Modbus RTU, Modbus TCP/IP cũng hoạt động dựa trên nguyên tắt Client – Server.

Nhưng,

Điểm khác biệt chính là Client ( Master ) khởi tạo lệnh hỏi và thời gian đáp ứng nhanh bất kỳ từ Server ( Slave ). Điều này mở ra một kỷ nguyên mới là bất kỳ một thiết bị nào cũng có thể Client hay Server. Do đó các thiết bị sẽ là đồng thời Client và server cùng lúc.

Một mạng có thể có nhiều Client. Tại một thời điểm, một số Client có thể gửi yêu cầu cùng lúc, nhiều server có thể phản hồi và Client có thể giao tiếp với nhiều server khác nhau.

Một máy chủ – Server  có thể đáp ứng đồng thời nhiều máy khách khác nhau ( Client ).

Ethernet, nắm vai trò chỉ đạo, đảm bảo tốc độ truyền dữ liệu đến tất cả các thiết bị cùng một lúc nhanh chóng. Giao thức Modbus TCP-IP sử dụng chuẩn Ethernet 10Mbps để truyền tải toàn bộ cấu trúc của modbus.

Đối với modbus TCP/IP thì thiết lập thông số Port 502 là được dành riêng cho Modbus. Bạn phải khai báo 502 tại Port truyền thông trên web server để kết nối và giao tiếp dữ liệu giữa các thiết bị với nhau.

Ứng dụng Modbus TCP/IP

Ứng dụng Modbus TCP:IP
Ứng dụng Modbus TCP:IP

Một trong những ứng dụng được sử dụng nhiều nhất liên quan tới Modbus TCP/IP đó chính là truyền thông Modbus RTU thông qua giao thức mạng Ethernet. Các thiết bị cổ điển không có sẳn chuẩn Modbus TCP/IP ngay trên thiết bị mà thường có ngõ ra là Digital ( DI ) hoặc Analog 4-20mA / 0-10V ( AI ).

Các thiết bị này thường được chuyển đổi sang modbus RTU trước khi qua gateawy để chuyển đổi thành Modbus TCP-IP. Một gateway có thể đọc được rất nhiều Modbus RTU. Việc lưu dữ liệu vào bộ nhớ tạm trên Gateway sẽ giúp PLC truy xuất data nhanh chóng hơn.

Với các phương thức truyền thông cũ thì Modbus RTU chỉ có thể truyền trực tiếp về PLC và không thể truy xuất ra bên ngoài. Ngày nay, với Modbus TCP-IP chúng ta có thể đọc các dữ liệu vào trực tiếp PLC và xuất sang một Server khác bên ngoài.

Bộ Chuyển đổi Modbus RTU sang Modbus TCP/IP

Bộ chuyển đổi Modbus RTU sang Modbus TCP-IP
Bộ chuyển đổi Modbus RTU sang Modbus TCP-IP

Hầu hết các PLC đời mới ngày nay nhất là Siemens lại giao tiếp Modbus TCP/IP làm tiêu chuẩn. Điều này có nghĩa rằng các thiết bị nào có chuẩn Modbus TCP/IP thì không cần sử dụng thêm card mở rộng của PLC Siemens.

Ngày nay, đa phần các thiết bị đều hỗ trợ Modbus RTU RS485 hoặc Analog 4-20mA / 0-10V. Để sử dụng chuẩn truyền thông Modbus TCP/IP chúng ta cần có một thiết bị được gọi là bộ chuyển đổi modbus RTU sang Modbus TCP/IP.

Tôi lựa chọn R-key-Lt thay cho các thiết bị khác vì nó có giá thành khá dễ tiếp cận & đặc biệt R-key-LT được sản xuất tại Seneca – Italy.

Để sử dụng Modbus TCP/IP bạn cần cài đặt tất cả các thiết bị chung 1 lớp mạng như 192.168.1.xxx có nghĩa rằng tất các thiết bị đều có 3 dữ liệu đầu giống nhau & số cuối cùng phải khác nhau.

Bộ chuyển đổi modbus RTU sang Modbus TCP/IP sẽ giúp giảm số lượng IP thiết bị cũng như quản lý từng khu vực.

Vd : bạn có 20 thiết bị Modbus RTU thì sẽ tương ứng 20 ID slave khác nhau. PLC sẽ tốn nhiều bộ nhớ để đọc từng địa chỉ thanh ghi này. Nếu bạn sử dụng gateway R-key-Lt thì 20 cái ID này sẽ được lưu trong bộ nhớ của R-key-Lt, bạn chỉ cần đọc địa chỉ IP : 192.168.1.xxx và Slave ID của các thiết bị Modbus RTU.

Việc sử dụng bộ chuyển đổi modbus RTU sang Modbus TCP/IP không chỉ làm tăng bộ nhớ mà còn giúp tăng thời gian đáp ứng rất nhiều so với Modbus RTU kết nối trực tiếp.

Cách sử dụng bộ chuyển đổi Z-KEY từ modbus RTU sang TCP/IP như sau:

Thiết bị bao gồm :

  • TEST-4: phát tín hiệu 4-20mA vào Z-4AI
  • Z-4AI: chuyển đổi từ 4-20mA sang Modbus RTU
  • Z-key-2ETH: chuyển đổi từ Modbus RTU sang Modbus TCP/IP
  • Modbus Poll : để đọc giá trị từ Z-key-2ETH
Cài đặt Modbus TCP/IP choZ-key-2ETH
Cài đặt Modbus TCP/IP choZ-key-2ETH

Bước 1 : Đầu tiên chúng ta vào web server của Z-key với địa chỉ : 192.168.1.101

Bước 2 : vào mục Working Mode => chọn Modbus Gateway Ethernet to Serial ( PORT#1 và PORT #2 ). Tại vì Z-key có 2 port RS485 độc lập nhau.

Khai Báo Modbus TCP-IP cho Modbus Poll
Khai Báo Modbus TCP-IP cho Modbus Poll

Bước 3: mở Modbus poll lên vào phần Connection. Chọn Modbus TCP/IP.

Modbus poll sẽ tự chọn Baud tương ứng với Z-key-2ETH.

Bước 4: Tại ô IP Adress gõ IP của Z-key-2ETH là 192.168.1.101 vào ô IP Address của Modbus Poll

Khai Báo ID và Ô nhớ thanh ghi trên Modbus Poll
Khai Báo ID và Ô nhớ thanh ghi trên Modbus Poll

Bước 5: Vào phần Setup trên thanh công cụ chọn Slave ID, Adress, Quality của Z-8AI ( Modbus RTU )

Ta có : Z-4AI có ID = 1, Ô nhớ Address Input 1 = 40017, quality = chọn >1 là được.

Lưu ý : chọn Fucntion 03 Read Holding Register(4x) nhé & dislay dạng Signed.

Đọc Modbus TCP/IP trên Modbus Poll
Đọc Modbus TCP/IP trên Modbus Poll

Sau khi nhấn OK. Chúng ta phát dòng 0,649mA vào Z-8AI. Modbus Poll không báo lỗi và hiển thị giá trị tại ô 7 x 4×0010 tức tương ứng ô nhớ 40017 của Z-4AI.

Như vậy, việc sử dụng bộ chuyển đổi modbus RTU sang Modbus TCP/IP khá đơn giản đúng không nào. Tương tự với PLC S7-1200 hay S7-1500 và các PLC khác cũng sẽ đọc tương tự như Modbus Poll.

Modbus TCP/IP S7-1200

Modbus TCP/IP S7-1200 được sử dụng ngày càng phổ biến thay thế cho Modbus RTU S7-1200 bởi tất cả các dòng PLC của Siemens ngày nay đều được tích hợp Ethernet vào cổng giao tiếp.

Điều này không chỉ giúp thuận tiện trong việc giao tiếp giữa máy tính cài TIAPORTAL với PLC mà còn giúp tất cả các thiết bị khác có giao thức Modbus nhưng có Protocol TCP-IP là có thể giao tiếp được với S7-1200, S7-1400 và S7-1500 một cách dễ dàng.

Tôi sẽ hướng dẫn các bạn cách truyền thông Modbus TCP/IP S7-1200 với R-key-Lt một cách đơn giản & dễ hiểu nhất.

Bỏ qua các bước  cơ bản mình vào ngay vấn đề chính. Hãy xem hình bên dưới nhé.

Modbus TCP/IP S7-1200 Client
Modbus TCP/IP S7-1200 Client

Tôi đang có :

  • PLC S7-1200 có IP:192.168.1.100
  • IP cần đọc là 192.168.1.101 từ Z-key

Bỏ qua các bước cơ bản minh nghĩ các bạn đã biết mình vào ngay vấn đề chính.

Tại PLC chúng ta cần lấy khối MB_Client ( Master ) và 2 khối MOVE với IN = địa chỉ của ID Mobus. Hiện tại thiết bị của mình có ID = 1 thì chọn vào là 1.
–     Lệnh MOVE thứ nhất mình tại OUT1 =  Unit_ID

  • Lệnh MOVE thứ hai mình chọn OUT1 = Transaction_ID

Và cần khai báo các thông số tương ứng. Bạn cần quan tâm thông số quan trọng:

  • MB_MODE : chọn 0
  • MB_Data_Add: sẽ chọn thanh ghi cần đọc tương tự như Modbus RTU như 40017…
  • MB_DATA_LEN: độ dài của ô nhớ cần đọc – mình chọn 10 giá trị
  • MB_DATA_PTR và CONNECT cần được khai báo theo khối lưu trữ bên dưới
    Connec S7-1200 Modbus TCP/IP
    Connec S7-1200 Modbus TCP/IP

Tại phần khái báo Connection ( địa chỉ kết nối ) cho Modbus TCP – Client thì chúng ta dùng lệnh TCON_IP_V4 :

  • InterfaceId : 64
  • ID : 1
  • Connecttion type: 11
  • ActiveEstablished: TRUE
  • ADDR chúng ta cần ghi đúng IP của R-key-lt hoặc Z-key lần lượt 168.1.101
  • RemotePort: 502 – luôn luôn là 502 vì modbus chỉ sử dụng cổng 502
MB_Data_LEN S7-1200
MB_Data_LEN S7-1200

Tại khối lưu trữ MB_DATA_LEN = 10 thì Modbus thì chúng ta chọn Array[10] với Int cho giá trị tuyến tính cho 10 ô nhớ.

Lưu ý rằng để khối lệnh đọc được dữ liệu từ MB_DATA_LEN và CONNECT bạn cần kéo 2 ô này trực tiếp vào thì mới đọc được.

Kéo Ô nhớ khai báo Lưu trữ DATA vào Modbus Client
Kéo Ô nhớ khai báo Lưu trữ DATA vào Modbus Client
Kéo ô nhớ khai báo kết nối TCP-IP vào Modbus Client
Kéo ô nhớ khai báo kết nối TCP-IP vào Modbus Client

Khi cho PLC S7-1200 chạy chúng ta sẽ thấy các nhớ từ 1…10 hiển thị các giá trị truyền từ Modbus RTU sang TCP/IP tới PLC. Nếu các giá trị này thay đổi đúng với giá trị từ thiết bị truyền về thì xem như quá trình đọc modbus TCP/IP trên S7-1200 đã thành công.
Lưu ý : việc kéo các ô nhớ của khối lệnh Data_LEN và Connect trước khi cho PLC chạy nhé.

Bạn cũng có thể dùng Modbus poll để kiểm tra lại xem các giá trị có được truyền thông chính xác hay chưa.

Modbus TCP/IP mang tới lợi ích gì?

Bất kỳ một công nghệ mới nào cũng cần có thời gian để mọi người tìm hiểu, học hỏi và ứng dụng vào các dự án của mình. Sau đây là các lợi ích mình nghĩ là đáng phải dùng trên MODBUS TCP/IP:

  • Truyền thông qua Ethernet RJ45 tiêu chuẩn
  • Multi Master – có nhiều Master ( Client ) đọc được Slave ( server )
  • Multi Slave – kết nối nhiều slave với nhau
  • Tốc độ max 10Mbps
  • Khoảng cách : không giới hạn

Với các ưu điểm trên Modbus TCP/IP là một lựa chọn không thể tốt hơn lúc này. Các thiết bị nên chọn theo chuẩn Modbus TCP/IP để giao tiếp với nhau. Nếu các thiết bị của bạn chỉ xuất ra Digital, Analog tiêu chuẩn. Bạn cần trang bị thêm các bộ chuyển đổi từ Digital, analog sang Modbus TCP-IP.

Với giá thành các thiết bị chuyển đổi ngày càng tốt. Việc sử dụng Modbus TCP-IP trở nên đơn giản và dễ dàng hơn rất nhiều so với trước đây. Tới đây thì tôi nghĩ rằng các bạn đã rõ modbus TCP/IP là gì rồim đúng không nào?

Chúc các bạn thành công !

Kỹ sư Cơ – Điện Tử
Nguyễn Minh Hoà

DMCA.com Protection Status