tuenhi.n2012 gửi vào
- 26459 lượt xem
DẪN NHẬP
Hôm nay cuối tuần, mình sẽ dành thời gian làm một PLC & ARDUINO DEMO KIT và chia sẻ với các bạn cách kết nối Arduino với PLC S7-300 thông qua Ethernet, và thậm chí Read/Write vào PLC S7-300™ ở chế độ bảo mật cao nhất của CPU. Sau khi đọc bài viết này, các kỹ sư tự động có lý do để phải dè chừng khi tự dưng thấy một anh chàng điện tử cầm một Arduino có gắn Ethernet Shield và đang lúi húi kết nối vào hệ thống mạng Ethernet của nhà máy.........
Thực tế, mình cũng có tham khảo một số thư viện có thể đảm nhận việc giao tiếp này, ví như:
- MQTT library block written in Siemens SCL for S7-300 PLC with CP343-1.
Source link: https://github.com/RoanBrand/MQTT-Siemens-S7-300
- Settimino ARDUINO™ / NodeMCU™ Ethernet communication library for S7 Siemens™ PLC.
Source link: http://settimino.sourceforge.net/
Mình sẽ dùng thư viện settimino kiểm tra giao tiếp giữa Arduino & PLC vì cảm thấy nó pro hơn, có hướng dẫn rõ ràng & dễ hiểu. Để có được thử nghiệm này, các bạn phải có kiến thức nhất định về PLC Siemens và cũng phải tiêu tốn kha khá tiền đấy….....
I. GIỚI THIỆU
Tác giả Dave Nardella (người Ý, Trưởng phòng quản lý phần mềm công ty MASMEC SPA) là tác giả của 2 thư viện rất hay về giao tiếp giữa các vi xử lý ARM Linux/ MIPS và PLC Siemens S7 ™:
1.1. THƯ VIỆN SNAP7
Link thư viện: http://snap7.sourceforge.net/.
1.2. THƯ VIỆN SETTIMINO
Link thư viện settimino: http://settimino.sourceforge.net/.
1.3. THAM KHẢO VỀ PLC SIEMENS™
Các bạn có thể tham khảo tại website của Siemens: https://www.siemens.com
II. PHẦN CỨNG
2.1. LIST THIẾT BỊ PLC & ARDUINO DEMO KIT
Lưu ý quan trọng về Ethernet Shield
Giá trị điện trở tại khung đỏ hình chữ nhật hình dưới phải là 49R9 hay 510 (khoảng 50~51 ohm), có một số Ethernet Shield ghi 511 (510 ohm). Mình bị dính 1 con với điện trở 511 nên không thể kết nối được với PLC & cuối cùng phải tìm mua con khác mới kết nối được. Nếu bạn có một Ethernet Shield đang được sử dụng, hãy kiểm tra lại điện trở trên cũng như độ ổn định của nó.
2.2. SƠ ĐỒ MẠCH & CẤU HÌNH PHẦN CỨNG
Giải thích cấu hình
III. CHƯƠNG TRÌNH
3.1. THƯ VIỆN SETTIMINO
Trong file hướng dẫn, các bạn lưu ý đến thuật ngữ “Big-Endian” và “Little-Endian” để diễn tả sự khác nhau về cách đọc và ghi dữ liệu giữa ARDUINO ™ (Little -Endian ) và PLC Siemens S7 ™ (Big -Endian ).
0x4C
0x21
0x11
0x2F
0x2F
0x11
0x21
0x4C
Trên trang STDIO: https://www.stdio.vn/articles/read/10/little-endian-va-big-endian, tác giả Rye Nguyen nói rất rõ về cấu trúc dữ liệu này và có cả chương trình chuyển đổi qua lại giữa Little-Endian và Big-Endian.
3.2. CHƯƠNG TRÌNH PLC
CPU
300
400
WinAC
1200
1500
LOGO
S7200
DB Read/Write
O
O
O
O(1)
O(1)
O(2)
O(2)
EB Read/Write
O
O
O
O
O
AB Read/Write
O
O
O
O
O
MK Read/Write
O
O
O
O
O
TM Read/Write
O
O
O
-
-
-
-
CT Read/Write
O
O
O
-
-
-
-
Get DB Size
O
O
O
-
-
-
-
DB Get
O
O
O
-
-
-
-
Control Run/Stop
O
O
O
-
-
-
-
3.3. CHƯƠNG TRÌNH ARDUINO
a. Đọc vào Data Block của PLC
b. Ghi vào Data Block của PLC ở mức bảo mật Level 3
Chi tiết các bạn có thể xem tại:
VI. LỜI KẾT