Lập trình arduino giao tiếp PLC qua chuẩn RS 485 .Trong nền công nghiệp hiện nay, việc ứng dụng mạng công nghiệp để điều khiển và giám sát các thiết bị, các cơ cấp chấp hành ngày càng được sử dụng nhiều trong các nhà máy, xí nghiệp, và các dây chuyền sản xuất . Việc điều khiển một hệ thống bởi một máy tính giúp cho việc lưu giữ các giá trị hiện tại được thuận tiện hơn… Một điều thuận lợi là càng ngày càng có nhiều thiết bị chấp hành hoặc thiết bị điều khiển như PLC, biến tần,…được tích hợp các giao thức mạng như: Profibus, Can, Modbus,…Từ những giao thức mạng tích hợp có sẵn trên các thiết bị trên, nhóm đã thực hiện việc tìm hiểu về mạng truyền thông công nghiệp theo giao thức Modbus, từ đó ứng dụng để xây dựng một mô hình truyền thông giữa PLC và Arduino theo chuẩn RS485. Việc xây dựng nên mô hình, vừa có mục đích tìm hiểu, vừa mang lại môt cái nhìn trực quan về một hệ thống mạng công nghiệp. Việc thực hiện đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và nguồn tài liệu khác nên không tránh khỏi thiếu sót. Vì vậy em rất mong được sự góp ý của thầy cô. Em xin chân thành cảm ơn
MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH LỜI NÓI ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ PLC S7 200 VÀ ARDUINO UNO .4 1.1 PLC S7- 1200 1.1.1.Giới thiệu chung PLC 1.1.2.PLC S7-200 1.1.3.Phân loại 1.1.3.1 Phân loại theo CPU .7 1.1.3.2 Phân loại theo cấp điện áp 1.1.4 Cấu trúc bên 1.1.5 Phương pháp lập trình điều khiển 1.2 Arduino Uno 10 1.3 Mạch Chuyển Giao Tiếp UART TTL sang RS485 13 CHƯƠNG : TÌM HIỂU GIAO THỨC MODBUS 15 2.1 Giao thức modbus 15 2.1.1 Khái niệm tổng quát 15 2.1.2 Phân loại 15 2.1.4 Ứng dụng 15 2.1.5 Cách Modbus hoạt động .16 2.1.6 Modbus RTU .16 2.1.7 Hàm khởi tạo MBUS_CTRL 17 2.1.8 Hàm truyền nhận liệu MBUS_MSG 18 CHƯƠNG : XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN 19 3.1 Mục đích .19 3.2 Sơ đồ đấu nối phần cứng 19 3.3 Nguyên lý hoạt động 21 3.4 Thuật toán điều khiển 22 3.5 Chương trình PLC 23 3.6 Chương trình Arduino 25 3.7 Kết thực .26 KẾT LUẬN .28 TÀI LIỆU THAM KHẢO 29 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 30 DANH MỤC HÌNH ẢN Hình 1.1 Các dòng PLC Siemen Hình 1.2 Sơ đồ cấu tạo Hình 1.3 Các thành phần CPU S7-200 Hình 1.4 Cấu trúc bên .10 Hình 1.5 Phương pháp lập trình điều khiển 11 Hình 1.5 Arduino uno R3 11 Hình 1.6 Vi điều khiển Atmega 328 12 Hình 1.7: Mạch Chuyển Giao Tiếp UART TTL sang RS485 .14 Hình 2.1: Cấu trúc tin Modbus RTU 17 Hình 3.1: Sơ đồ đấu nối phần cứng 20 Hình 3.2: Sơ đồ nối dây RS-485 PLC 21 Hình 3.2: Sơ đồ nối dây RS-485 Arduino .21 Hình 3.3 Sơ đồ nối dây Arduino với biến trở 22 Hình 3.4: Lưu đồ thuật tốn .23 Hình 3.5: Sơ đồ nguyên lý lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 27 Hình 3.6: Sơ đồ mạch in lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 27 Hình 3.7: Sơ đồ mạch mơ 3D lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 28 Hình 3.8: Sơ đồ nối dây hồn chỉnh lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 28 LỜI NĨI ĐẦU Trong cơng nghiệp nay, việc ứng dụng mạng công nghiệp để điều khiển giám sát thiết bị, cấp chấp hành ngày sử dụng nhiều nhà máy, xí nghiệp, dây chuyền sản xuất Việc điều khiển hệ thống máy tính giúp cho việc lưu giữ giá trị thuận tiện hơn… Một điều thuận lợi ngày có nhiều thiết bị chấp hành thiết bị điều khiển PLC, biến tần,…được tích hợp giao thức mạng như: Profibus, Can, Modbus,…Từ giao thức mạng tích hợp có sẵn thiết bị trên, nhóm thực việc tìm hiểu mạng truyền thơng cơng nghiệp theo giao thức Modbus, từ ứng dụng để xây dựng mơ hình truyền thơng PLC Arduino theo chuẩn RS485 Việc xây dựng nên mô hình, vừa có mục đích tìm hiểu, vừa mang lại mơt nhìn trực quan hệ thống mạng công nghiệp Việc thực đồ án môn học kiến thức học, số sách tham khảo nguồn tài liệu khác nên không tránh khỏi thiếu sót Vì em mong góp ý thầy cô Em xin chân thành cảm ơn! CHƯƠNG 1: TỔNG QUAN VỀ PLC S7 200 VÀ ARDUINO UNO 1.1 PLC S7- 1200 1.1.1 Giới thiệu chung PLC PLC viết tắt Programmable Logic Controller, thiết bị điều khiển lập trình cho phép thực linh hoạt thuật tốn điều khiển logic thơng qua ngơn ngữ lập trình Người sử dụng lập trình để thực loạt trình tự kiện Các kiện đươc kích hoạt tác nhân kích thích (ngõ vào) tác động vào PLC qua hoạt động có trễ thời gian định hay kiện đếm Một kiện kích hoạt thật sự, bật ON hay OFF thiết bị điều khiển bên gọi thiết bị vật lý Một điều khiển lập trình liên tục "lặp" chương trình "người sử dụng lập ra" chờ tín hiệu ngõ vào xuất tín hiệu ngõ thời điểm lập trình Để khắc phục nhược điểm điều khiển dùng dây nối người ta chế tạo PLC nhằm thỏa mãn yêu cầu sau: + Lập trình dễ dàng, ngơn ngữ lập trình dễ học + Gọn nhẹ, dễ dàng bảo quản, sửa chữa + Dung lượng nhớ lớn để chứa chương trình phức tạp + Hồn tồn tin cậy mơi trường cơng nghiệp + Giao tiếp với thiết bị thông minh khác : máy tính, nối mạng, mơ Modul mở rộng Các thiết kế nhằm thay cho phần cứng Relay dây nối Logic thời gian.Tuy nhiên,bên cạnh việc đòi hỏi tăng cường dung lượng nhớ tính dễ dàng cho PLC mà bảo đảm tốc độ xử lý giá … Chính điều gây quan tâm sâu sắc đến việc sử dụng PLC công nghiệp Các tập lệnh nhanh chóng từ lệnh logic đơn giản đến lệnh đếm, định thời, ghi dịch … sau chức làm tốn máy lớn Sự phát triển máy tính dẫn đến PLC có dung lượng lớn, số lượng I/O nhiều Trong PLC, phần cứng CPU chương trình đơn vị cho trình điều khiển xử lý hệ thống Chức mà điều khiển cần thực xác định chương trình Chương trình nạp sẵn vào nhớ PLC, PLC thực việc điều khiển dựa vào chương trình Như muốn thay đổi hay mở rộng chức quy trình cơng nghệ, ta cần thay đổi chương trình bên nhớ PLC Việc thay đổi hay mở rộng chức thực cách dễ dàng mà không cần can thiệp vật lý so với sử dụng dây nối hay Relay Hình 1.1 Các dòng PLC Siemen Hình 1.2 Sơ đồ cấu tạo 1.1.2 PLC S7-200 PLC S7-200 thiết bị điều khiển logic lập trình loại nhỏ hãng Siemens, có cấu trúc theo kiểu module có module mở rộng Các module sử dụng cho nhiều ứng dụng lập trình khác S7-200 thuộc nhóm PLC loại nhỏ, quản lý số lượng đầu vào/ra tương đối Có từ đầu vào/ đầu số (CPU221) đến 24 đầu vào/ 16 đầu số (CPU226) Có thể mở rộng đầu vào/ra số module mở rộng Kiểu đầu vào IEC 1131-2 SIMATIC Đầu vào sử dụng mức điện áp 24VDC, thích hợp với cảm biến Có kiểu ngõ Relay Transitor cấp dòng Tích hợp sẵn cổng Profibus hay sử dụng module mở rộng, cho phép tham gia vào mạng Profibus Slave thơng minh Có cổng truyền thơng nối tiếp RS485 vơi đầu nối chân Tốc độ truyền cho máy lập trình kiểu PPI 9600 bauds, theo kiểu tự 300 – 38.400 bauds Tập lệnh có đủ lệnh bit logic, so sánh, đếm, dịch/quay ghi, timer cho phép lập trình điều khiển Logic dễ dàng Ngơn ngữ lập trình: LAD, STL, FBD Ứng dụng: Dùng cho ứng dụng điều khiển logic, điều khiển tuần tự, liên động…trong công nghiệp ứng dụng vừa nhỏ CPU S7-200 kết hợp vi xử lý, nguồn, mạch đầu vào mạch đầu thiết kế nhỏ gọn Hình 1.3 Các thành phần CPU S7-200 1.1.3 Phân loại 1.1.3.1 Phân loại theo CPU S7-200 có dòng CPU 221, CPU 222, CPU 224, CPU 226… Bảng trình bày số đặc tính số CPU Bảng 1.1 Các dòng PLC S7-200 Siemen 1.1.3.2 Phân loại theo cấp điện áp Loại PLC S7-200 cấp điện áp 220VAC : + Ngõ vào: Tích cực mức cấp điện áp +24VDC ( 15VDC – 30VDC) +Ngõ ra: Rơ le Ưu điểm loại ngõ rơ le, sử dụng ngõ nhiều cấp điện áp (có thể sử dụng ngõ 0V,24V,220V… ) Tuy nhiên, nhược điểm : ngõ rơ le nên thời gian đáp ứng rơ le không nhanh cho ứng dụng điều chỉnh độ rộng xung , output tốc độ cao Loại PLC S7-200 dùng nguồn 24VDC : + Ngõ vào: Tích cực mức cấp điện áp +24VDC ( 15VDC – 30VDC) + Ngõ : Ngõ transistor Ưu điểm loại ngõ Transistor, sử dụng ngõ để điều chỉnh độ rộng xung, output0V,24V,220V… ) Tuy nhiên, nhược điểm : ngõ transistor nên ngõ có cấp điện +24VDC, gặp rắc rối ứng dụng có cấp điện áp la 0VDC, Trong trường hợp buộc ta phải thông qua rơ le 24Vdc đệm 1.1.4 Cấu trúc bên Cũng giống PLC họ khác, PLC S7-200 gồm phận bản: xử lý, nhớ, nguồn, giao tiếp xuất/nhập Bộ xử lý gọi xử lý trung tâm (CPU), chứa vi xử lý, biên dịch tín hiệu nhập thực hoạt động điều khiển theo chương trình lưu nhớ PLC Truyền định dạng tín hiệu hoạt động đến thiết bị xuất Bộ nguồn có nhiệm vụ chuyển đổi điện áp AC thành điện áp DC (24V) cần thiết cho xử lý mạch điện module giao tiếp nhập xuất Bộ nhớ nơi lưu trữ chương trình sử dụng cho hoạt động điều khiển kiểm soát vi xử lý Các thành phần nhập xuất (Input/Output) nơi nhớ nhận thông tin từ thiết bị ngoại vi truyền thơng tin đến thiết bị điều khiển Tín hiệu nhập từ cơng tắc, cảm biến,… Các thiết bị xuất cuộn dây khởi động động cơ, van solenoid,… Chương trình điều khiển nạp vào nhớ nhờ trợ giúp lập trình hay máy vi tính Hình 1.4 Cấu trúc bên Giải thích sơ đồ : tín hiệu sensor, cơng tắc, cảm biến,… vào đầu vào (input) PLC đưa đến CPU để xử lý đưa vào nhớ CPU nhận tín hiệu tiến hành điều khiển thiết bị đầu cuộn dây khởi động động cơ, van solenoid,… 1.1.5 Phương pháp lập trình điều khiển Khác với phương pháp điều khiển cứng, hệ thống điều khiển có lập trình, cấu trúc điều khiển cách đấu dây độc lập với chương trình Chương trình định nghĩa hoạt động điều khiển viết nhờ giúp đỡ máy vi tính Để thay đổi tiến trình điều khiển, cần thay đổi nội dung nhớ điều khiển, không cần thay đổi cách nối dây bên ngồi Qua đó, ta thấy ưu điểm phương pháp điều khiển lập trình so với phương pháp điều khiển cứng Do đó, phương pháp sử dụng rộng rãi lĩnh vực điều khiển 10 - Byte địa chỉ: xác định thiết bị mang địa nhận liệu (đối với Slave) liệu nhận từ địa (đối với Master) Địa quy định từ – 254 - Byte mã hàm: quy định từ Master, xác định yêu cầu liệu từ thiết bị Slave Ví dụ mã 01: đọc liệu lưu trữ dạng Bit, 03: đọc liệu tức thời dạng Byte, 05: ghi liệu bit vào Slave, 15: ghi liệu nhiều bit vào Slave - Byte liệu: xác định liệu trao đổi Master Slave o Đọc liệu: Master: byte địa liệu - byte độ dài liệu Slave: byte địa liệu - byte độ dài liệu - n byte liệu đọc o Ghi liệu: Master: byte địa liệu - byte độ dài liệu - n byte liệu cần ghi Slave: byte địa liệu - byte độ dài liệu Byte CRC: byte kiểm tra lỗi hàm truyền cách tính giá trị Byte CRC 16 Bit 2.1.7 Hàm khởi tạo MBUS_CTRL Hàm MBUS_CTRL Các tham số ngõ vào hàm khởi tạo + EN: Cho phép truyền nhận + Mode: Chọn giao thức truyền thông cho cổng giao tiếp PLC, mode cho phép truyền thơng cổng nạp + Baud: Tốc độ truyền thông + Parity: Kiểm tra chẵn lẻ + Timeout: Thời gian đáp ứng từ slave 19 + Done: Ngõ tín hiệu việc ghi hay đọc hoàn tất + Error: Byte báo lỗi trường hợp xảy lỗi 2.1.8 Hàm truyền nhận liệu MBUS_MSG Các tham số ngõ vào hàm MBUS_MSG: + En: Cho phép hàm hoạt động + First: Kích hoạt truyền nhận liệu + Slave: Địa slave đến 247 + Rw: Ngõ vào điều khiển đọc ghi liêu: Rw = 0: Đọc liệu từ slave master Rw = 1: Đọc liệu từ master slave + Address: Địa modbus slave + Count: Số lượng bit hay word liệu đọc hay ghi + DataPtr: Con trỏ địa chỉ vùng nhớ PLC S7-200 + Done: Ngõ tín hiệu việc ghi hay đọc hồn tất + Error: Byte báo lỗi trường hợp lỗi xảy 20 CHƯƠNG : XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN 3.1 Mục đích Trong dòng PLC nói chung đầu vào Analog ONBOARD đọc tín hiệu điện áp Cảm biến trả mức điện áp từ - 10V đọc Còn khơng trả mức điện áp khơng đọc Để giải vấn đề ta cần sử dụng mạch giao tiếp với PLC Ta sử dụng Arduino để đọc liệu từ cảm biến trả dạng điện áp – 10V, sau lấy áp -10V đưa vào ngõ vào Analog PLC Trên thực tế sử dụng nhiều loại vi điều khiển để đọc liệu từ loại cảm biến Nhưng ta sử dụng Arduino giao tiếp với PLC theo chuẩn RS485 3.2 Sơ đồ đấu nối phần cứng Sơ đồ đấu nối phần cứng Hình 3.1: Sơ đồ đấu nối phần cứng Kết nối Module RS-485 PLC: Chân VCC RS- 485 nối với nguồn dương 5V Chân GND RS- 485 nối với nguồn âm Chân B RS- 485 nối với chân số dây DB9 Chân A RS- 485 nối với chân số dây DB9 Ở ta sử dụng mạch cầu phân áp để cấp lượng cho trình truyền liệu từ Arduino sang PLC 21 Hình 3.2: Sơ đồ nối dây RS-485 PLC Kết nối Module RS-485 Arduino: Chân DI RS-485 nối với chân TX arduino Chân R0 RS-485 nối với chân RX arduino Chân DE RE RS-485 nối chung với nối chân số Arduino Hình 3.3: Sơ đồ nối dây RS-485 Arduino Kết nối arduino biến trở Hai số biến trở 1, nối chung với nối nguồn dương 5V Arduino Hai số biến trở 1, nối chung với nối nguồn âm chân GND Arduino Hai chân số biến trở 1, nối với chân A0, A1 Arduino 22 Hình 3.4: Sơ đồ nối dây Arduino với biến trở 3.3 Nguyên lý hoạt động Để tiến hành trình bật tắt đầu PLC S7 200 ta sử dụng hai biến trở - Biến trở số để điều khiển đầu PLC từ Q0.0 đến Q0.7 - Biến trở số để điều khiển đầu PLC từ Q1.0 đến Q1.7 Tín hiệu điện áp từ biến trở đưa vào arduino chân A0, tín hiệu gửi lên PLC lưu ghi 30001 Trong chương trình PLC ta sử dụng chia DIV_I liệu xử lý khối đem so sánh Kết so sánh: - Nếu kết >= bật Q0.0 - Nếu kết >= bật Q0.1 - Nếu kết >= bật Q0.2 - Nếu kết >= bật Q0.3 - Nếu kết >= bật Q0.4 - Nếu kết >= bật Q0.5 - Nếu kết >= bật Q0.6 - Nếu kết >= bật Q0.7 Tín hiệu điện áp từ biến trở đưa vào arduino chân A0, tín hiệu gửi lên PLC lưu ghi 30002 trình Dữ liệu xử lý khối DIV_I đem so sánh Khi kết lớn giá trị từ đến đầu Q bật tương tự từ Q1.0 đến Q1.7 23 24 3.4 Thuật toán điều khiển Bắt đầu VW10, VW12 >=8 Q0.7, Q1.7 =1 Khởi tạo VW10, VW12 >=7 Q0.6, Q1.6 =1 Đo điện áp chân A0, A1 Arduino VW10, VW12 >=6 Q0.5, Q1.5 =1 VW10, VW12 >=5 Q0.4, Q1.4 =1 VW10, VW12 >=4 Q0.3, Q1.3 =1 VW10, VW12 >=3 Q0.2, Q1.2 =1 VW10, VW12 >=2 Q0.1, Q1.1 =1 VW10, VW12 >=1 Q0.0, Q1.0 =1 Giá trị điện áp gửi lên PLC ghi vào ghi 30001 30002 Bộ chia DIV_I nhận giá trị từ ghi 30001 30002 lấy giá trị chia cho 127 xuất đầu VW10, VW12 Hình 3.5: Lưu đồ thuật tốn 25 3.5 Chương trình PLC 26 27 3.6 Chương trình Arduino Dữ liệu tương tự từ biến trở biến trở cho ghi Modbus 30001 30002 #include #include #include #include modbusDevice regBank; modbusSlave slave; #define RS485TxEnablePin #define RS485Baud 9600 #define RS485Format SERIAL_8E1 void setup() { regBank.setId(1); regBank.add(30001); regBank.add(30002); slave._device = ®Bank; slave.setBaud(&Serial,RS485Baud,RS485Format,RS485TxEnablePin); } void loop() { regBank.set(30001, (word) analogRead(A0)); //from - 1023 regBank.set(30002, (word) analogRead(A1)); //from - 1023 slave.run(); } 28 3.7 Kết thực Hình 3.6: Sơ đồ nguyên lý lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 Hình 3.7: Sơ đồ mạch in lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 29 Hình 3.8: Sơ đồ mạch mơ 3D lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 Hình 3.9: Sơ đồ nối dây hồn chỉnh lập trình Arduino giao tiếp với PLC theo chuẩn RS-485 Với kết thực nghiệm mơ hình, việc điều khiển PLC qua mạng MODBUS thực tốt Khi vặn biến trở liệu gửi tín hiệu đầu PLC bật/ tắt q trình có độ trễ định đảm bảo độ xác tín hiệu gửi từ Arduino 30 KẾT LUẬN Trong trình thực đề tài, hướng dẫn tận tình thầy Vũ Thạch Dương giúp em hồn thành đề tài:”Lập trình Arduino giao tiếp PLC qua chuẩn RS- 485 ” Thông qua trình làm đồ án em trang bị thêm cho vốn kiến thức vững PLC, Arduino để phục vụ cho mục đích khác biết thêm giao thức kết nối với PLC Giao thức MODBUS giúp PLC truyền thơng trức tiếp với arduino quan chuẩn RS-485 đọc liệu từ Arduino gửi Sử dụng giao thức ta dùng Arduino để điều khiển nhiều PLC, loại hình truyền thơng dần trở nên phổ biến sau thực xong đề tài em nhận thấy tầm quan trọng Mặc dù có nhiều cố gắng kiến thức thực tế thân có hạn nên báo cáo em có số hạn chế Mong nhận ý kiến đóng góp xây dựng thầy, cô 31 TÀI LIỆU THAM KHẢO [1].Mạng truyền thông Cơng Nghiệp TS Hồng Minh Sơn [2] Châu Chí Đức (2008), Kỹ thuật điều khiển lập trình PLC SIMATIC S7-200, NXB TP Hồ Chí Minh [3] https://en.wikipedia.org/wiki/Modbus [4] http://linhkienagv.com/lap-trinh-modbus-arduino/ [5] https://tailieu.vn [6] http://plcprovn.com [7] http://doc.edu.vn [8] https://123doc.org [9] https://luanvan.co 32 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… Thái Nguyên, Ngày …… Tháng …… Năm …… GÍAO VIÊN HƯỚNG DẪN 33 ... lý lập trình Arduino giao tiếp với PLC theo chuẩn RS-4 85 27 Hình 3.6: Sơ đồ mạch in lập trình Arduino giao tiếp với PLC theo chuẩn RS-4 85 27 Hình 3.7: Sơ đồ mạch mơ 3D lập trình Arduino giao tiếp. .. lý lập trình Arduino giao tiếp với PLC theo chuẩn RS-4 85 Hình 3.7: Sơ đồ mạch in lập trình Arduino giao tiếp với PLC theo chuẩn RS-4 85 29 Hình 3.8: Sơ đồ mạch mơ 3D lập trình Arduino giao tiếp. .. Sơ đồ nối dây RS-4 85 PLC Kết nối Module RS-4 85 Arduino: Chân DI RS-4 85 nối với chân TX arduino Chân R0 RS-4 85 nối với chân RX arduino Chân DE RE RS-4 85 nối chung với nối chân số Arduino Hình 3.3: