Trong lĩnh vực tự động hóa công nghiệp ngày nay, mạng truyền thông luôn đóng một vai trò quan trọng bậc nhất. Vì nó như là một ngôn ngữ để các thiết bị trong hệ thống có thể giao tiếp được với nhau.Truyền thông PLC không còn là một khái niệm xa lạ đối với kĩ sư lập trình tự động hóa.

Trong thời đại ngày nay nếu kĩ sư nào mạnh về truyền thông, nghĩa là người đó có khả năng lập trình để giao tiếp với nhiều thiết bị của các hãng khác nhau. Chỉ cần nắm các thông số kĩ thuật và đặc tính của hãng, kết hợp với việc bạn hiểu về mạng truyền thông; thì việc mở rộng hệ thống tự động hóa để đáp ứng các yêu cầu xử lý nhiều chức năng sẽ dễ dàng hơn rất nhiều.

Nhưng bên cạnh mạng truyền thông còn một vấn đề bạn cần quan tâm hơn nữa đó là số lượng input và output hạn hẹp mà các PLC sẵn có. Lúc này bạn sẽ nghĩ việc tích hợp thêm các module I/O của hãng sẽ là điều tất yếu. Bù lại chi phí để tích hợp thêm mỗi module rời của hãng sẽ rất cao; nhưng mỗi module chỉ đem lại theo một chức năng riêng biệt như Analog Input Module, Digital Input Module,..

Nhưng còn một lựa chọn rất tuyệt vời để mở rộng input/output mà bạn muốn biết; đó chính là module Remote I/O R-32DIDO của Seneca.

Nếu bạn là một người lập trình PLC Siemens và đang muốn tiếp cận với truyền thông PLC kết hợp mở rộng I/O hệ thống bằng Remote I/O Module, thì bài viết này chính là dành cho bạn!

Remote I/O là gì?

Một hệ thống tự động hóa lớn yêu cầu số lượng ngõ vào ngõ ra rất lớn. Và một hệ thống tự động hóa của một nhà máy lớn sẽ gồm rất nhiều trạm sản xuất nhỏ; yêu cầu đặt ra lúc này khi muốn mở rộng số lượng I/O cho từng trạm sẽ rất khó khăn do tín hiệu truyền về trạm chính sẽ rất xa. Vì vậy mà khái niệm Remote I/O đã ra đời để đáp ứng yêu cầu đó. Vậy Remote I/O là gì?

Remote I/O thay thế cho các module local I/O
Remote I/O thay thế cho các module local I/O

Remote I/O hay còn được gọi là I/O phân tán. Nghĩa là các bộ I/O lắp đặt cách xa với PLC, kết nối với PLC bằng kết nối Ethernet/IP. Giao tiếp giữa các Remote I/O và PLC thông qua các giao thức riêng của từng hãng sản xuất hoặc bằng các giao thức thông dụng như Modbus, Profinet, Profibus, EtherCAT…

R-32DIDO có gì đặc biệt?

Nhắc đến Remote I/O module, không thể không nhắc đến module R-32DIDO, một Remote I/O do Seneca sản xuất. Đây sẽ là một thiết bị tuyệt vời đối với yêu cầu mở rộng hệ thống điều khiển của bạn nhờ vào ưu điểm mạnh mẽ của nó.

Như tên mã thiết bị bạn đã thấy – R- 32DIDO, là thiết bị thuộc series R-LINE được Seneca tạo ra với mục đích mở rộng I/O cho hệ thống thêm 32 Digital Input/ Digital Output. Bạn sẽ không nghe nhầm đâu, 1 Module I/O mở rộng đến 32 DI/DO.

Thiết kế bên ngoài của R-32DIDO
Thiết kế bên ngoài của R-32DIDO

Thông số kĩ thuật của R-32DIDO

  • Nguồn cấp: 10 – 40 Vdc; 19 – 28 Vac
  • Công suất tối đa: tiêu thụ 3W; tỏa nhiệt 6.5W
  • Nhiệt độ hoạt động: -250C đến 650C
  • Cài đặt cấu hình: Thông qua WebServer
  • Giao tiếp: Kết nối qua terminal 3.5mm, tiết diện dây tối đa 1.5mm2. Có 2 cổng Ethernet cổng RJ45, và một port giao tiếp RS485
  • Digital Inputs: 32 channels với điện áp ngưỡng mức cao > 11V, mức thấp < 4V; Vmax 24V.
  • Digital Outputs: 32 channels với dạng ngõ ra Mosfet, PNP với điện áp/ dòng điện 24V/ 0.2A
  • Counters: 32 counters với 32 bit, tốc độ tối đa đến 500Hz

Như khái niệm Remote I/O sử dụng truyền thông ở trên đầu bài mình đã đề cập; thì R-32DIDO của Seneca cho phép khả năng truyền thông rất linh hoạt gồm: Modbus RTU, Modbus TCP/IP, Profinet IO. Vừa mở rộng số lượng I/O lên đến 32 ngõ, vừa cấu hình linh hoạt ngõ vào ngõ ra tùy ý, vừa đa dạng về khả năng truyền thông theo nhiều giao thức khác nhau, thật tuyệt vời phải không nào!

Sơ đồ chân R-32DIDO

Sơ đồ chân kết nối của R-32DIDO-P
Sơ đồ chân kết nối của R-32DIDO-P

Nhìn vào sơ đồ chân của R-32DIDO đã thể hiện rất rõ để người đấu nối dễ dàng kết nối nguồn vào, các ngõ vào/ra Digital, cổng RS485. Các bạn chỉ cần xem cẩn thận Manual là đã có thể dễ dàng kết nối với các thiết bị trong hệ thống của mình rồi!

Kết nối với R-32DIDO truyền thông PLC S7-1200 thông qua Modbus TCP/IP và Modbus RS485

Như mình đã đề cập về chức năng của R-32DIDO, đây là thiết bị rất linh hoạt vì nó hoạt động như một bộ chuyển đổi Modbus TCP-IPModbus RS485. Cụ thể để các bạn dễ hình dung hơn, mình sẽ giải thích các bước kết nối truyền thông PLC S7-1200 và R-32DIDO.

Giả sử như R-32DIDO đang đọc 1 tín hiệu Sensor PNP tại hiện trường vào DI8 ( ngõ vào digital số 8) và gửi tín hiệu về PLC S7-1200, từ đó PLC S7-1200 sẽ xuất tín hiệu ngõ DO5 ( ngõ ra digital số 5) để điều khiển Relay thông qua giao thức TCP/IP. Và R-32DIDO cũng sẽ đưa xuất dữ liệu ra cổng RS485 cho các thiết bị khác trong hệ thống để cùng giám sát trạng thái ngõ DI/O.

Bước 1: Kết nối hệ thống

Sơ đồ kết nối hệ thống truyền thông PLC và R-32DIDO
Sơ đồ kết nối hệ thống truyền thông PLC và R-32DIDO

Nhìn vào cách kết nối trên sơ đồ đang thể hiện rất đơn giản. Đó là ưu điểm khi bạn có cho mình giao tiếp mạng truyền thông để tối ưu trong việc đi dây dẫn truyền thống. Việc cần làm chỉ là ta sẽ đấu nguồn cho các thiết bị, kết nối PLC và R-32DIDO với nhau qua cáp Ethernet RJ45; và kết nối chân A B của Port RS485 của R-32DIDO với thiết bị đọc Modbus RS485. Ở đây mình đang sử dụng R-KEY-LT, cũng là dòng R-LINE do seneca tạo ra. Trong ứng dụng này, R-KEY-LT mình sử dụng là để đọc RS485 của R-32DIDO.

Bước 2: Cài đặt R-32DIDO thông qua Web Server

Đầu tiên ta phải quét địa chỉ của R-32DIDO qua Seneca Discovery Device. Đây là phần mềm Seneca tạo ra để quét thông số địa chỉ IP sử dụng trong hệ thống. Nhấn Scan để hiện ra địa chỉ IP của R-32DIDO, sau đó nhấn Open Web Server để đi vào phần giao diện cài đặt của R-32DIDO

Giao diện Seneca Discovery Device

Ta sẽ thấy được giao diện Web Server của R-32DIDO rất trực quan đúng không nào? Trên Web Server của R-32DIDO sẽ bao gồm trạng thái thiết bị, thông số cài đặt cho việc truyền thông; cấu hình linh hoạt ngõ vào ngõ ra và chức năng counters; Test Counter, Test Digital I/O.

Giao diện web server R-32DIDO
Giao diện web server R-32DIDO

Tab Setup: Cài đặt các thông số truyền thông

Truy cập vào tab Setup, ta sẽ thấy giao diện như hình minh họa bên dưới. Các thông số ta cần quan tâm cấu hình cho Modbus TCP-IP và Modbus RS485 bao gồm: địa chỉ IP, Port kết nối TCP-IP, và địa chỉ Server của R-32DIDO; ta chọn thông số Baudrate và vẫn giữ nguyên các thông số setup mặc định cho RTU.

Thông số cài đặt Tab SetUp
Thông số cài đặt Tab SetUp

Một điều bạn cần lưu ý ở đây là R-32DIDO sẽ có định danh Server của nó. Nghĩa là có thể trong hệ thống của bạn sẽ có rất nhiều Remote I/O, bạn cần phải set cho nó 1 địa chỉ để PLC có thể biết nơi truyền nhận dữ liệu TCP-IP.

Địa chỉ Server R-32DIDO
Địa chỉ Server R-32DIDO

Có lẽ bạn sẽ thấy thông số gì quan trọng nhưng lại thiếu ở Modbus RTU. Đó chính là địa chỉ ID của RTU. Việc bạn cần làm lúc này là phải Disable chế độ Modbus Passthrough để có thể bắt đầu truyền thông RTU và hiệu chỉnh địa chỉ ID của nó như hình minh họa bên dưới:

Modbus Passthrough và địa chỉ RTU
Modbus Passthrough và địa chỉ RTU

Nhấn Apply là bạn đã Config xong R-32DIDO để bắt đầu truyền thông với PLC qua giao thức Modbus TCP-IP và Modbus RTU rồi đó.

Setup Digital I/O: Cấu hình ngõ vào ngõ ra R-32DIDO

Cấu hình ngõ vào/ra theo mong muốn
Cấu hình ngõ vào/ra theo mong muốn

Ta có thể dễ dàng cấu hình cho ngõ digital đó là input hoặc output trong tab Setup Digital I/O. Sau khi cấu hình xong ta cũng sẽ nhấn Apply để R-32DIDO đọc được cài đặt.

Bước 3: Lập trình truyền thông TCP-IP giữa S7-1200 và R-32DIDO

Đầu tiên cũng như tất cả các Project của S7-1200, bạn sẽ khởi động TIA PORTAL và tạo mới project cho mình. Sau đó là vào phần Add new device và chọn đến hardware PLC mà bạn sẵn có. Tiếp theo là vào phần Properties của thiết bị để cấu hình địa chỉ IP cho nó:

Add PLC Device và set địa chỉ IP
Add PLC Device và set địa chỉ IP

Cách Read TCP-IP từ R-32DIDO cho PLC S7-1200

Trong giao thức TCP-IP, S7-1200 trường hợp này mình sẽ sử dụng là 1 Client để ReadWrite dữ liệu xuống R-32DIDO, và R-32DIDO lúc này sẽ là 1 Server. Việc ta cần làm là lập trình khối MB_CLIENT trong thư viện có sẵn của TIA Portal; Siemens đã đóng gói trong mục Communication/ Others và chọn đến Modbus TCP để lấy khối MB_CLIENT ra.

Lập trình khối Modbus TCP-IP
Lập trình khối Modbus TCP-IP
Ý nghĩa các biến ngõ vào, ngõ ra khối MB_Client

REQ: là ngõ vào Request, ta cần nhịp xung cho chân này để tiến hành truyền nhận liên tục.

Disconnect: Mức 0, đang kết nối TCP/IP. Mức 1 là khối đang cho dừng TCP/IP

MB_Mode: Khối này đang sử dụng để lập trình Read nên ta cần chọn Mode Read theo function trong Manual của Siemens quy ước sẵn là 0 tương ứng với chế độ Read

Chọn chế độ Read
Chọn chế độ Read

MB_ Data ADDR: địa chỉ ô nhớ ta đọc trên thiết bị Server qua TCP/IP.

MB _ Data Len: Độ dài của dữ liệu mà ta truyền hoặc nhận qua TCP/IP

MB_DATA PTR:dữ liệu bạn tạo ra để trỏ đến địa chỉ ô nhớ của thiết bị đang được truy xuất; dùng để read dữ liệu từ ô nhớ đó về PLC hoặc write dữ liệu từ MB_ Data PTR từ PLC đè lên ô nhớ đó.

Connect: Là biến dùng để ta kết nối với thiết bị khác trong giao thức TCP/IP bao gồm các thông số như địa chỉ IP, cấu hình port giao tiếp cũng như kiểu kết nối

Nhập biến tạo sẵn từ khối MB_Client
Nhập biến tạo sẵn từ khối MB_Client
Cấu hình và gọi biến ra chương trình:

Với các biến tại khối MB_ Client, ta sẽ sử dụng vùng nhớ của khối đã tạo ra sẵn và chỉ cần lấy biến đó ra để sử dụng. Việc làm này sẽ tiết kiệm thời gian cho bạn nhờ vào biến được tạo sẵn từ khối Modbus; và các biến này đã được define vùng nhớ riêng nên bạn sẽ không cần lo trùng vùng nhớ với các biến khác, đồng thời tiết kiệm vùng nhớ cho PLC.

Còn 2 biến MB_DATA PTRConnect ta sẽ phải tạo biến trong Data Block đễ thuận tiện cho việc lập trình.

Cấu hình biến Connect:

Với biến Connect, ta cấu hình như sau:

Cấu hình biến Connect của khối MB_Client
Cấu hình biến Connect của khối MB_Client

Tạo 1 biến tên bất kì trong khối DB với kiểu dữ liệu là TCON_IP_v4. Đây là kiểu Siemens tích hợp sẵn chứa các biến kết nối TCP-IP. Các thông số mặc định như Interfaceld , ID, ConnectionType, ActiveEstablished sẽ cấu hình lần lượt như sau:

  • Interfaceld: Ta chọn là 64 do kết nối Port Ethernet của modude S7-1200 định danh như vậy. Ta có thể quan sát trong phần Properties của PLC
    Properties của PLC
    Properties của PLC
  • ID: Với từng khối MB_Client ta sử dụng, ta sẽ phải xác định ID cho khối đó để không bị trùng với ID của khối khác. Vì vậy ở khối đầu tiên ta sẽ để là 1
  • Connection Type: Kiểu kết nối TCP/IP được Siemens chỉ định là 11
  • Active Established: Để mặc định là 1
    Cấu hình Remote Address của biến
    Cấu hình Remote Address của biến

Tại mục Remote Address, mình sẽ nhập địa chỉ R-32DIDO đã Config trước đó tại web server và cổng port server 502. Như vậy biến này đã hoàn tất việc cấu hình để kết nối với R-32DIDO để gán vào Connection của khối Modbus.

Cấu hình biến MB_DATA PTR

Với biến MB_DATA PTR, ta cần cấu hình như sau:

Search địa chỉ ô nhớ trạng thái 16 DI/O của R-32DIDO
Search địa chỉ ô nhớ trạng thái 16 DI/O của R-32DIDO

Ví dụ, trường hợp ta đang đọc trạng thái của 16 DI/DO đầu tiên, đối chiếu với manual của R-32DIDO, ta sẽ có vị trí ô nhớ tại 40021 kiểu 16 bit không dấu.

Việc còn lại là tạo thêm 1 Data Block để chứa data gán cho MB_ DATA PTR để trỏ đến ô nhớ của R-32DIDO. Ta sẽ tạo một biến kiểu Array 16 phần tử kiểu Bool. Với kiểu dữ liệu này, ta có thể truy vấn đến từng phần tử của biến; từ đó có thể thay đổi trạng thái của một bit tương ứng với 16 ngõ DI/O.

Biến MB_DATA PTR tạo trong khối Data Block
Biến MB_DATA PTR tạo trong khối Data Block

Tiếp theo, ta sẽ phải tắt option “Optimized Block Access” để khi sử dụng biến trong data block lên khối MB_Client; nhờ vậy biến trong DataBlock đó sẽ thể hiện địa chỉ tuyệt đối của nó và tránh trường hợp báo lỗi khi download chương trình.

Tắt option " Optimized Block Access "
Tắt option ” Optimized Block Access “

Sau khi cấu hình xong 2 biến ConnectMB_DATA PTR, việc ta cần làm là kéo đúng biến trong khối Data Block ta đã tạo vào khối MB_Client, như sau:

Liên kết biến tạo từ khối DB sang MB_Client
Liên kết biến tạo từ khối DB sang MB_Client

Cuối cùng, ta sẽ có chương trình đọc TCP-IP giữa PLC S7-1200 và R-32DIDO, và các network tiếp theo để nhịp xung cho REQ sau 1 chu trình đọc dữ liệu; kiểm tra trạng thái của quá trình Read TCP/IP qua biến ERROR và Status; và hiệu chỉnh server ID đối chiếu từ R-32DIDO:

Chương trình Read TCP-IP
Chương trình Read TCP-IP

Cách Write TCP-IP lên R-32DIDO từ PLC S7-1200

Như vậy, bạn đã lập trình xong phần Read TCP-IP. Với việc Write TCP-IP bạn sẽ chỉ làm tương tự, nhưng sẽ có một số thay đổi về thông số cài đặt MB_MODE và Connect.

MB_MODE: Nếu ta sử dụng write lên một thanh ghi, biến này sẽ phải thay đổi lên 1

Chọn chế độ Write TCP-IP
Chọn chế độ Write TCP-IP

Ở đây sẽ có thêm một lưu ý khi cấu hình biến Connect cho khối MB_Client bạn tạo thêm cho việc Write. Đó là việc bạn phải hiệu chỉnh lại thông số ID trong biến kiểu TCON_IP_V4. Vì khi bạn muốn lập trình thêm khối MB_Client khác, bạn cần định danh lại cho khối với ID khác không lặp với các khối trước đó.

Hiệu chỉnh ID biến Connect
Hiệu chỉnh ID biến Connect

Sau khi quá trình Read Write đã hoàn tất, việc còn lại là test xem S7-1200 và R-32DIDO đã giao tiếp qua TCP-IP được hay chưa qua đoạn code như sau:

Chương trình kiểm tra truyền nhận TCP-IP giữa S7-1200 và R-32DIDO
Chương trình kiểm tra truyền nhận TCP-IP giữa S7-1200 và R-32DIDO

Mình sẽ giả lập ngõ ra DQ0.1 của PLC để kích 1 ngõ vào của R-32DIDO là DI8; để PLC có thể read về qua 1 biến trước đó đã tạo trong data block dùng cho việc đọc TCP/IP. Nếu đọc thành công sẽ tiến hành write ngõ DO5 của R-32DIDO. Đó là mục đích của đoạn code trên

Bước 4: Download hiệu chỉnh chương trình và giám sát điều khiển

Đầu tiên, ta phải download cả Hardware và Software xuống PLC S7-1200 và bắt đầu Go Online để tiến hành kết nối điều khiển và giám sát TCP/IP.

Download Chương trình xuống PLC
Download Chương trình xuống PLC

Sau khi Go online thành công, việc còn lại rất đơn giản. Ta chỉ cần hiệu chỉnh lại MB_ Data ADDR40021 ( Là địa chỉ ô nhớ ta search để đọc trạng thái 16 DI/O) tại khối MB_ Client, và Data Lens là 1 (đọc kiểu Uint 16 bit). Ngõ ra Status của khối MB_Client bắt đầu chuyển sang 16#700516#7006 nghĩa là tín hiệu Modbus TCP/IP của bạn đã truyền nhận thành công rồi đó.

Hiệu chỉnh MB_DATA ADDR, MB_DATA LEN và Run chương trình
Hiệu chỉnh MB_DATA ADDR, MB_DATA LEN và Run chương trình

Còn một việc nữa quyết định bạn có đọc được hay không; đó chính là địa chỉ Server của R-32DIDO. Như đã cấu hình trên web server của R-32DIDO, ta đã cấu hình là địa chỉ Server số 6. Việc cần làm lúc này là hiệu chỉnh lại MB_UNIT_ID của khối MB_Client để PLC có thể trỏ đúng đến vị trí Server của R-32DIDO

Modify MB_Unit_ID theo ID Server của R-32DIDO
Modify MB_Unit_ID theo ID Server của R-32DIDO

Để kiểm tra xem đã Read và write được TCP/IP lên R-32DIDO chưa ta chỉ cần kích bằng bit nhớ của PLC xuất ngõ ra Q0.1 tín hiệu 24V đang đấu về DI8 R-32DIDO (như việc DI8 của R-32DIDO đang đọc tín hiệu PNP ) và write lên ngõ DO5.

Trạng thái chương trình khi Read Write TCP-IP thành công
Trạng thái chương trình khi Read Write TCP-IP thành công

 

Bước 5: Truyền tín hiệu RS485 từ R-32DIDO cho R-KEY-LT đọc qua tag trên Web Server của R-KEY-LT

Để đọc tín hiệu RS485 của R-32DIDO, với R-KEY-LT ta sẽ truy cập vào Web Server để tạo tag và trỏ đến địa chỉ ID modbus RTU của R-32DIDO.

Truy cập IP R-KEY-LT và cài đặt tag lấy data RS485 của R-32DIDO
Truy cập IP R-KEY-LT và cài đặt tag lấy data RS485 của R-32DIDO

Tag của R-KEY-LT cho phép ta set up tên của Tag; địa chỉ ô nhớ ta muốn lưu dữ liệu về; chọn thiết bị Slave RTU, địa chỉ ID của nó và trỏ đến ô nhớ cần lấy dữ liệu. Để đọc đúng được ô nhớ đó đang bằng bao nhiêu ta cần phải chọn đúng kiểu dữ liệu của ô nhớ đó.

Cài đặt tag đọc RS485 trỏ đến R-32DIDO
Cài đặt tag đọc RS485 trỏ đến R-32DIDO

Ví dụ trong trường hợp này mình cần biết trạng thái của DI8 của R-32DIDO thông qua tag R-KEY-LT-P bằng giao tiếp RS485. Mình sẽ trỏ đến địa chỉ ID số 6 là ID RTU của R32DID0; Ô nhớ lưu data DI8 trên R-32DIDO nằm ở ô 10008 nên mình sẽ chọn 8 và chọn kiểu đọc là discrete input với kiểu dữ liệu là Bool.

Search địa chỉ ô nhớ kiểu Bit lưu trạng thái của Digital I/O

Lúc này bạn hãy quay trở về tab Status để xem R-32DIDO đã truyền RS485 cho R-KEY-LT được hay chưa. Nếu được tag R-KEY-LT sẽ cập nhập 0 1 khi ta thay đổi  trạng thái trên R-32DIDO và Status của tag đó sẽ báo là “ OK ”.

Giám sát trạng thái Digital I/O R-32DIDO trên R-KEY-LT qua RS485
Giám sát trạng thái Digital I/O R-32DIDO trên R-KEY-LT qua RS485

Như vậy qua ví dụ trên, ta có thể thấy được R-32DIDO linh hoạt như thế nào. PLC S71200 vừa đọc ghi lên R-32DIDO từ xa qua TCP-IP; và R-KEY-LT có thể đọc được trạng thái của R-32DIDO qua RS485.

Lời kết

Thật sự R-32DIDO chính là giải pháp tối ưu nhất khi hệ thống của bạn đang muốn truyền thông PLC với TCP/IP và RS485 mà có thể mở rộng đến 32DIDO cấu hình linh hoạt; đồng thời giám sát 32 ngõ I/O đó chỉ bằng 1 cáp Ethernet truyền tối đa 1200m.

Thông qua bài viết, bạn có thể sẽ hiểu được hơn một Remote I/O hoạt động như thế nào và tại sao lựa chọn R-32DIDO là 1 Remote I/O cho hệ thống của mình khi sử dụng truyền thông PLC TCP-IP và RS485.

Cảm ơn các bạn đã theo dõi bài viết. Chúc các bạn thành công.

Có thể bạn muốn tìm đọc thêm: https://huphaco.vn/bay-gio-la-thoi-dai-cua-remote-io-profinet/

DMCA.com Protection Status