KẾT NỐI PROFIBUS-DP GIỮA ARDUINO VÀ PLC

I. GIỚI THIỆU

Hôm nay, tôi xin chia sẻ cách Arduino giao tiếp với PLC thông qua kết nối Profibus-DP. Với kết quả đạt được, chúng ta có thể thực hiện một số dự án IoT hoặc IIoT với sự kết hợp giữa PLC và Arduino cộng với các SHIELD mở rộng của của Arduino với chi phí thấp.

Dưới đây là một số thử nghiệm mà tôi đã áp dụng giao tiếp Profibus-DP cho Arduino Mega 2560 + PLC Siemens S7-300:

  • Điều khiển và thu thập dữ liệu đến / từ PLC bằng BLYNK trên điện thoại thông minh thông qua Arduino Mega 2560 + Ethernet Shield + Module RS-485. Thông thường, để kết nối mạng Ethernet công nghiệp, PLC của Siemens phải có card giao tiếp Ethernet tích hợp trên CPU, chẳng hạn như 6ES7315-2EH14-0AB0 ... hoặc được trang bị một module giao tiếp Ethernet rời, như CP343, CP443 .... Với video bên dưới, Arduino sẽ đảm nhận hai vai trò vừa kết nối Ethernet vừa trao đổi dữ liệu với PLC thông qua giao thức Profibus.

  • Biến các cảm biến như cảm biến chuyển động PIR, cảm biến khoảng cách siêu âm SRF05, cảm biến gia tốc và con quay hồi chuyển MPU6050.... thành các thiết bị Profibus có thể kết nối với hệ thống tự động hóa công nghiệp. Video dưới đây cho thấy PLC có thể đọc giá trị của cảm biến khoảng cách siêu âm để bật / tắt relay 24V.

  • Tự làm một màn hình cảm ứng HMI để điều khiển / giám sát hệ thống PLC thông qua Touch Screen TFT LCD Module. Như video dưới đây, màn hình LCD cảm ứng 3,2 inch có thể giao tiếp với PLC thông qua Profibus và điều khiển rơle 4 x 24V cũng như hiển thị giá trị nhiệt độ được thu thập từ PLC.

Về chi phí, với một số thử nghiệm ở trên, chúng ta sẽ tiết kiệm một khoản tiền kha khá vì giá của module truyền thông công nghiệp hoặc màn hình cảm ứng công nghiệp HMI rất đắt. Ngoài ra, chúng ta có thể mở rộng Input và Output của PLC thông qua giao thức Profibus - DP. Điều đó có nghĩa là Arduino có thể hoạt động tương tự như DP/DP Coupler của Siemens để kết nối hai mạng Profibus - DP với nhau. Và giá DP / DP Coupler này cũng rất chát. Chúng ta có thể tham khảo giá của các module này như sau:

Tôi hi vọng với dự án này, nó sẽ truyền cảm hứng cho các bạn, nhất là các bạn sinh viên, có thể có các ý tưởng kết hợp giữa hai lĩnh vực điện tử và điện tự động công nghiệp với chi phí thấp.

II. PHẦN CỨNG

III. PHẦN MỀM

IV. TÀI LIỆU THAM KHẢO

  • UART, Timer.

V. SƠ LƯỢC VỀ PROFIBUS – DP

Mạng PROFIBUS-DP dựa trên giao tiếp vật lý RS-485 và tiêu chuẩn Châu Âu EN-50170. Hậu tố “DP” đề cập đến thiết bị ngoại vi phân tán (Decentralized Periphery) được sử dụng để vận hành các cảm biến và cơ cấu chấp hành thông qua một bộ điều khiển tập trung trong các ứng dụng sản xuất tự động hóa.

Profibus là một giao thức truyền thông khá phức tạp nhưng được ứng dụng rất rộng rãi trong hệ thống tự động công nghiệp. Trước tiên, các bạn phải bỏ thời gian đọc và nghiền ngẫm kỹ về giao thức này. Tài liệu hay nhất và chi tiết nhất về Profibus của Max Felser tại địa chỉ:

https://www.felser.ch/profibus-manual/index.html

VI. FILE *.GSD

File *.GSD là một bảng thông số kỹ thuật của thiết bị dưới dạng file điện tử hay là tập tin lưu trữ cơ sở dữ liệu để nhận dạng thiết bị Profibus. Tất cả các thiết bị Profibus (class 1 masters and slaves) đều có tệp *.GSD riêng. GSD là viết tắt của "General Station Description ". Đó là tệp văn bản ASCII chứa dữ liệu cụ thể và riêng biệt của mỗi thiết bị, như thông tin nhận dạng nhà cung cấp, tốc độ truyền, độ dài tin nhắn, số lượng dữ liệu đầu vào / đầu ra, ý nghĩa của các thông báo chẩn đoán ….

Các bạn hình dung thế này: Khi chúng ta muốn cấu hình phần cứng một hệ thống bao gồm PLC Siemens giao tiếp với biến tần ABB hay các cảm biến của Endress + Hauser thông qua mạng Profibus thì việc đầu tiên chúng ta làm là phải cài đặt các file *GSD tương ứng vào HARDWARE CONFIG.

Để thương mại hóa các thiết bị Profibus, các nhà sản xuất thiết bị tự động phải đăng ký các mã định danh(Ident Numbers) cho từng thiết bị và nó cũng được chứa trong file *.GSD này. Các bạn có thể tham khảo tại:

https://www.profibus.com/products/ident-numbers/

VII. SƠ ĐỒ MẠCH

Arduino Mega 2560 + Module RS-485 (MAX485) có thể giao tiếp với PLC S7-300 thông qua giao thức Profibus-DP như sơ đồ dưới đây:

Dưới đây là một số sơ đồ mà tôi đã thử nghiệm cho dự án này:

  • Sơ đồ 1 – PLC Siemens đọc cảm biến khoảng cách siêu âm SRF05 qua Arduino Mega 2560 +Module RS-485.

  • Sơ đồ 2 – Smartphone Blynk Siemens PLC thông qua Arduino Mega 2560 + Ethernet Shield + Module RS-485.

VIII. HÀN MẠCH

  • Hàn Shield trung gian bao gồm Ethernet Shield và Module RS-485.

  • Gắn Ethernet Shield và Module RS-485 lên Adapter Shield, sau đó cắm Adapter Shield này lên Arduino Mega 2560.

  • Đấu nối các đầu ra Output của PLC tới 4 x relay 24V.

  • Đấu nối cáp Profibus vào PLC. Lưu ý là GND của hai hệ thống PLC và Arduino phải được nối với nhau.

IX. CẤU HÌNH PHẦN CỨNG

  • Cài đặt file *.GSD: Trong chương trình Simatic Step 7 (HW CONFIG), như đã nói ở trên đầu tiên chúng ta phải cài đặt tệp * .GSD của Arduino và cập nhật Hardware Catalog "Options --> Update catalog". Các bạn có thể tham khảo GSD file của Siemens DP/DP Coupler tại:

https://support.industry.siemens.com/cs/document/113602/profibus-gsd-files-%3A-link?dti=0&lc=en-WW

  • Với Arduino Mega 2560 - 16 MHz, mạng Profibus hoạt động tốt ở tốc độ 45,45 Kbps.

  • Cài đặt số lượng byte được truyền và nhận thông qua kết nối Profibus.

X. LẬP TRÌNH TRÊN ARDUINO, PLC - TẠO GIAO DIỆN HMI TRÊN BLYNK

  • CHƯƠNG TRÌNH PLC

  • CHƯƠNG TRÌNH ARDUINO

  • GIAO DIỆN ĐIỀU KHIỂN TRÊN BLYNK

Code Blynk:

void myTimerEvent()

{
  Blynk.virtualWrite(V8, temperature);
}

BLYNK_WRITE(0)
{
  if (param.asInt())
    {       
      Control_State[0]=1;
    } 
  else 
    {
     Control_State[0]=0;
    }
}

BLYNK_WRITE(1)
{
  if (param.asInt())
    {       
      Control_State[1]=1;
    } 
  else 
    {
     Control_State[1]=0;
    }
}

BLYNK_WRITE(2)
{
  if (param.asInt())
    {       
      Control_State[2]=1;
    } 
  else 
    {
      Control_State[2]=0;
    }
}

BLYNK_WRITE(3)
{
  if (param.asInt())
    {       
      Control_State[3]=1;
    }
  else 
    {
      Control_State[3]=0;
    }
}

BLYNK_WRITE(4)
{
  if (param.asInt())
    {       
      Control_State[4]=1;
    } 
  else 
    {
      Control_State[4]=0;
    }
}

BLYNK_WRITE(5)
{
  if (param.asInt())
    {       
      Control_State[5]=1;
    }
  else 
    {
      Control_State[5]=0;
    }
}

BLYNK_WRITE(6)
{
  if (param.asInt())
    {       
      Control_State[6]=1;
    } 
  else 
    {
      Control_State[6]=0;
    }
}

BLYNK_WRITE(7)
{
  if (param.asInt())
    {       
      Control_State[7]=1;
    }
  else 
    {
      Control_State[7]=0;
    }
}

GHI CHÚ: Mô tả bên dưới cho thấy cách thức hoạt động của dự án:

  • ĐIỀU KHIỂN THIẾT BỊ CỦA PLC THÔNG QUA BLYNK:

§. Trên ứng dụng Blynk, chúng ta tạo một bảng điều khiển với 8 nút nhấn V0 ~ V7.

§. Khi nút ấn được chạm, trạng thái nút nhấn (BẬT / TẮT) sẽ được ghi vào Arduino Mega 2560 qua Ethernet Shield và được lưu trong bộ đệm truyền.

§. Arduino Mega 2560 sẽ truyền các trạng thái nút này đến PLC S7-300 thông qua giao tiếp Profibus (Module RS-485). Ở phía PLC, như cấu hình phần cứng ở bước trước, trạng thái các nút nhấn sẽ được nhận tại đầu vào Input I0.0 ~ I0.7 của PLC.

§. Đầu ra Output của PLC Q124.0 ~ Q124.7 sẽ BẬT hoặc TẮT các relays 24 V theo trạng thái của đầu vào I0.0 ~ I0.7 nhận được.

  • THU THẬP VÀ HIỂN THỊ DỮ LIỆU NHIỆT ĐỘ NHẬN ĐƯỢC TỪ PLC SỬ DỤNG BLYNK

Vì không có cảm biến nhiệt độ như Thermocouples, PT-100 ..., nên tôi đã mô phỏng việc thu thập dữ liệu nhiệt độ từ PLC bằng cách gửi ngược lại các giá trị trạng thái của các nút ấn nhận được từ Blynk. Giá trị nhiệt độ được gửi ở đầu ra PQB0 của PLC (Q0.0 ~ Q0.7) thông qua giao thức Profibus và được hiển thị trên giao diện của Blynk.

XI. KẾT QUẢ ĐẠT ĐƯỢC

Theo thông tin từ PROFIBUS & PROFINET International (PI) - một cộng đồng tự động hóa lớn, hiện tại cộng đồng này có khoảng 1.700 thành viên là các nhà sản xuất và có hơn 60 triệu nút PROFIBUS được cài đặt trên toàn thế giới.

Đây chỉ là các thử nghiệm sơ khai ban đầu, nhưng thật tuyệt vời nếu chúng ta có thể triển khai và tích hợp Arduino vào trong mạng Industrial Internet of Things (IIoT) bằng giao thức Profibus-DP. Và một khi Arduino có thể giao tiếp với PLC / hệ thống tự động hóa công nghiệp thông qua Profibus - DP, chúng ta có thể làm được rất nhiều điều hay hơn nữa.

XII. CÁC HÌNH ẢNH CỦA DỰ ÁN

Những hình ảnh bên dưới là kết quả của 3 thí nghiệm mà tôi đã thực hiện cho dự án này, bao gồm:

  1. PLC đọc cảm biến khoảng cách siêu âm SRF05 qua Module Arduino Mega 2560 + Module RS-485.

  2. D.I.Y một màn hình cảm ứng HMI để điều khiển / giám sát hệ thống PLC thông qua Arduino Mega 2560 + Màn hình cảm ứng TFT LCD 3.2” + Module RS-485.

  3. Điều khiển và thu thập dữ liệu PLC bằng BLYNK trên điện thoại thông minh thông qua Arduino Mega 2560 + Ethernet Shield + Module RS-485.

Những hình ảnh về dự án: 
Youtube: 
lên
18 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

ROBOT HAI BÁNH TỰ CÂN BẰNG - 2 WHEEL SELF BALANCING ROBOT

Hôm nay mình xin chia sẻ với các bạn cách làm một robot tự cân bằng trên hai bánh xe bằng Arduino từ xe đồ chơi bị hỏng của thằng nhóc ở nhà. Tất nhiên, hai động cơ và hai bánh xe chưa bị hỏng nhé. laugh. Để robot tự cân bằng trên hai bánh xe thì chuyển động của nó tương tự như việc giữ thăng bằng một cây gậy trên ngón tay. Điều này chắc các bạn cũng đã từng thử trước đây.

lên
16 thành viên đã đánh giá bài viết này hữu ích.

ĐIỀU KHIỂN BẢNG LED BICOLOR 32x32 BẰNG B.A.M

Về LED ma trận, mình thấy trên diễn đàn cũng đã có rất nhiều bài viết. Để tiếp tục chuỗi bài về B.A.M, mình sẽ chia sẻ các bạn cách để Bicolor Led Matrix có thể hiển thị 256 màu riêng biệt với phương pháp B.A.M – 4 bit, tất nhiên nếu mắt người có thể phân biệt được sự khác biệt này...

lên
4 thành viên đã đánh giá bài viết này hữu ích.