Hiện nay, nhiều hệ thống phân loại vẫn hoạt động thủ công hoặc sử dụng thiết bị kém tự động hóa, dẫn đến: • Hiệu suất thấp: Hạn chế khả năng theo dõi số lượng và phân loại sản phẩm 1..
TỔNG QUAN VÀ PHÂN TÍCH YÊU CẦU
Giới thiệu bài toán
1.1 Mô tả vấn đề cần giải quyết
Trong sản xuất công nghiệp, việc đếm và phân loại sản phẩm là rất quan trọng để đảm bảo chất lượng và hiệu quả Tuy nhiên, nhiều hệ thống phân loại hiện nay vẫn hoạt động thủ công hoặc sử dụng thiết bị tự động hóa kém, gây ảnh hưởng đến quy trình sản xuất.
• Hiệu suất thấp: Hạn chế khả năng theo dõi số lượng và phân loại sản phẩm một cách chính xác
• Sai sót trong quy trình: Dễ xảy ra lỗi do con người hoặc các thiết bị không đồng bộ
• Thiếu tính linh hoạt: Khó tích hợp dữ liệu vào hệ thống quản lý sản xuất
Hệ thống đề xuất sẽ tự động:
1 Đếm sản phẩm: Xác định số lượng sản phẩm trên dây chuyền
2 Phân loại sản phẩm: Phân loại dựa trên kích thước, màu sắc, hoặc đặc tính khác
3 Hiển thị số liệu trực tuyến: Thông qua giao diện website, cho phép theo dõi số lượng sản phẩm phân loại theo thời gian thực
1.2 Phạm vi và giới hạn của đề tài
• Thiết kế hệ thống điều khiển tự động dựa trên PLC để quản lý quá trình đếm và phân loại sản phẩm
• Sử dụng ESP32 làm bộ thu thập dữ liệu và truyền số liệu lên website
• Xây dựng một giao diện website đơn giản để hiển thị dữ liệu đếm và phân loại theo thời gian thực
• Thử nghiệm hệ thống trên một dây chuyền giả lập (hoặc mô hình thực tế thu nhỏ)
• Phạm vi ứng dụng cụ thể: Hệ thống chỉ phù hợp với các sản phẩm đơn giản
(như hộp, chai, hoặc sản phẩm dạng khối)
• Khả năng phân loại: Giới hạn ở một số đặc tính nhất định (chiều cao) do cảm biến sử dụng
• Tốc độ dây chuyền: Hệ thống sẽ hoạt động ổn định trong các dây chuyền có tốc độ vừa phải, không quá nhanh
1.3 Mục tiêu và yêu cầu chính
• Xây dựng một hệ thống tự động đếm và phân loại sản phẩm chính xác, ổn định
• Truyền dữ liệu từ PLC đến ESP32 và hiển thị trên website một cách trực quan
• Tăng hiệu quả sản xuất và khả năng theo dõi từ xa của người quản lý
1 Về phần cứng: o Sử dụng PLC để điều khiển cảm biến và cơ cấu phân loại (băng tải, tay đẩy sản phẩm ) o Tích hợp cảm biến đếm (như cảm biến quang) và cảm biến phân loại (cảm biến màu sắc, kích thước ) o ESP32 làm bộ điều phối và giao tiếp giữa PLC và website
2 Về phần mềm: o Lập trình PLC để điều khiển quá trình phân loại và truyền dữ liệu đếm qua giao diện truyền thông (Modbus RTU, TCP/IP ) o Lập trình ESP32 để nhận và gửi dữ liệu từ PLC lên server (REST API hoặc MQTT) o Phát triển một website hiển thị số liệu theo thời gian thực (sử dụng
HTML/CSS/JavaScript, có thể tích hợp thêm framework như Flask hoặc Node.js)
3 Yêu cầu khác: o Đảm bảo hệ thống hoạt động ổn định, chính xác và đồng bộ o Dễ dàng bảo trì và nâng cấp để phù hợp với các dây chuyền khác nhau.
Phân tích yêu cầu hệ thống
Hệ thống phải đảm bảo các chức năng chính sau:
1 Chức năng đếm sản phẩm: o Phát hiện và đếm chính xác số lượng sản phẩm đi qua cảm biến trên dây chuyền sản xuất o Xử lý tín hiệu từ cảm biến để tránh đếm lặp hoặc bỏ sót
2 Chức năng phân loại sản phẩm: o Phân loại sản phẩm theo các tiêu chí đã được định nghĩa (kích thước, màu sắc, trọng lượng ) o Điều khiển cơ cấu phân loại (như băng tải hoặc tay đẩy) để đưa sản phẩm đến đúng vị trí
3 Chức năng truyền dữ liệu: o Truyền dữ liệu từ PLC sang ESP32 thông qua giao thức phù hợp
(Modbus RTU, TCP/IP…) o ESP32 gửi dữ liệu số lượng và phân loại sản phẩm lên máy chủ
4 Chức năng hiển thị: o Hiển thị số lượng và trạng thái phân loại sản phẩm trên giao diện website theo thời gian thực o Cho phép người dùng xem thống kê và theo dõi dữ liệu
5 Chức năng thông báo lỗi:
6 o Cảnh báo khi có sự cố xảy ra, ví dụ: tín hiệu cảm biến bị lỗi, sản phẩm không được phân loại, hoặc mất kết nối mạng
2.2 Yêu cầu phi chức năng
• Hệ thống phải hoạt động ổn định với tốc độ dây chuyền sản xuất tối đa được thiết kế
• Độ trễ truyền dữ liệu từ PLC đến website phải dưới 1 giây
• Đảm bảo độ chính xác ít nhất 99% trong việc đếm và phân loại sản phẩm
• Hệ thống phải chịu được môi trường công nghiệp (bụi bẩn, rung động)
• Dễ dàng nâng cấp để tích hợp thêm các tiêu chí phân loại hoặc kết nối nhiều dây chuyền
• Dữ liệu truyền tải từ ESP32 lên máy chủ phải được mã hóa để đảm bảo an toàn
• Chỉ người được cấp quyền mới truy cập được giao diện website
5 Tính thân thiện với người dùng:
• Giao diện website đơn giản, dễ sử dụng, có thể hiển thị dữ liệu trên nhiều thiết bị (PC, điện thoại, máy tính bảng)
• Hệ thống dễ dàng bảo trì, thay thế cảm biến hoặc nâng cấp phần mềm
2.3 Các ràng buộc và giới hạn
• Hệ thống sử dụng PLC (do hãng cụ thể cung cấp), giới hạn giao thức truyền thông và khả năng xử lý
• ESP32 là vi điều khiển chính để giao tiếp và truyền dữ liệu, hạn chế tài nguyên phần cứng (bộ nhớ, tốc độ xử lý)
• Chi phí cho cảm biến, PLC, ESP32, và các cơ cấu cơ khí phải nằm trong ngân sách dự án
• Sử dụng các thành phần có giá thành hợp lý nhưng đảm bảo chất lượng
• Hệ thống phải hoạt động ổn định trong môi trường công nghiệp: nhiệt độ cao, độ ẩm, bụi bẩn
• Cảm biến và thiết bị cần được bảo vệ để tránh hỏng hóc
• Hệ thống thử nghiệm chỉ áp dụng trên dây chuyền tốc độ vừa phải
• Phân loại sản phẩm chỉ dựa trên một số tiêu chí cơ bản (màu sắc, kích thước, trọng lượng)
• Thời gian phát triển và thử nghiệm hệ thống phải hoàn thành trong một khung thời gian nhất định (ví dụ: 6 tháng).
Kiến trúc tổng thể
3.1 Sơ đồ khối hệ thống
Hình 1 Sơ đồ khối hệ thống
Hệ thống được chia thành các thành phần chính sau:
PLC S7-1200 1212C DC/DC/DC là một bộ điều khiển logic lập trình được sử dụng để điều khiển cảm biến đếm và phân loại sản phẩm, cũng như điều khiển các cơ cấu cơ khí như động cơ băng tải, tay đẩy và thanh chắn Ngoài ra, thiết bị này còn có khả năng kết nối và truyền dữ liệu đến ESP32 thông qua các giao thức như Modbus RTU hoặc TCP/IP.
Cảm biến quang 24VDC NPN có hai ứng dụng chính: đầu tiên, nó được sử dụng để đếm sản phẩm, giúp phát hiện sản phẩm di chuyển qua dây chuyền sản xuất thông qua cảm biến quang hoặc siêu âm Thứ hai, cảm biến phân loại có khả năng xác định các tiêu chí như màu sắc với cảm biến màu, kích thước với cảm biến siêu âm hoặc quang học, và trọng lượng thông qua load cell.
ESP32 là một vi điều khiển có khả năng nhận dữ liệu từ PLC thông qua các giao thức truyền thông, xử lý thông tin và gửi lên máy chủ qua Wi-Fi hoặc mạng LAN Nó hoạt động như một cầu nối giữa phần cứng và giao diện người dùng, giúp tối ưu hóa quá trình truyền tải và quản lý dữ liệu.
• Module Ethernet W5500 o Hỗ trợ giao các giao thức: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE o Nhận dữ liệu từ PLC và truyền thông qua ESP32
Hệ thống cơ khí bao gồm băng tải, giúp di chuyển sản phẩm qua các cảm biến, và cơ cấu phân loại, có nhiệm vụ đưa sản phẩm vào các vị trí tương ứng dựa trên tiêu chí phân loại.
Chương trình PLC sử dụng Tia V15.1 để lập trình logic cho cảm biến đếm, phân loại và điều khiển các cơ cấu cơ khí Đồng thời, nó cũng cho phép truyền dữ liệu về số lượng và phân loại đến ESP32.
Chương trình trên ESP32 sử dụng Arduino IDE để xử lý tín hiệu từ PLC và gửi dữ liệu đến máy chủ Phương thức HTTP được áp dụng để truyền và nhận dữ liệu từ server Flask, giúp tối ưu hóa quá trình giao tiếp Việc so sánh các lựa chọn khác nhau sẽ giúp xác định giải pháp hiệu quả nhất cho ứng dụng này.
Tiêu chí Arduino IDE PlatformIO MicroPython Độ phức tạp Thấp Trung bình - Cao Thấp
Hiệu năng Cao Cao Trung bình
Hỗ trợ thư viện Rất nhiều Rất nhiều Hạn chế hơn
Khả năng debug Hạn chế Tốt Không tích hợp
Phù hợp cho người mới Rất phù hợp Trung bình Phù hợp
• Giao diện website: o Hiển thị số liệu đếm và phân loại sản phẩm theo thời gian thực o Cho phép người dùng xem thống kê và trạng thái hệ thống
• Máy chủ (server): FLASK SERVER o Nhận và lưu trữ dữ liệu từ ESP32
Xử lý logic bao gồm việc lấy và cập nhật dữ liệu từ cơ sở dữ liệu SQLite, đồng thời cung cấp dữ liệu cho website thông qua API.
3.3 Luồng dữ liệu và tương tác
Luồng dữ liệu của hệ thống bao gồm các bước sau:
1 Từ cảm biến đến PLC:
• Khi sản phẩm di chuyển trên băng tải, các cảm biến NPN (đếm và phân loại) sẽ phát hiện và gửi tín hiệu đến PLC
PLC xử lý tín hiệu giúp cập nhật số lượng sản phẩm, xác định tiêu chí phân loại theo chiều cao và kích hoạt cơ cấu phân loại bằng động cơ Servo để đưa sản phẩm vào vị trí chính xác.
• PLC truyền dữ liệu (số lượng sản phẩm, trạng thái phân loại) đến ESP32 qua giao thức như Modbus TCP/IP
• ESP32 nhận và xử lý dữ liệu để chuẩn bị gửi lên máy chủ
3 Từ ESP32 đến máy chủ:
ESP32 có khả năng kết nối qua Wi-Fi hoặc Ethernet để gửi và nhận dữ liệu Để gửi dữ liệu lên máy chủ, ESP32 sử dụng phương thức POST, phù hợp khi cần thay đổi trạng thái hoặc thêm dữ liệu Ngược lại, phương thức GET được sử dụng để lấy dữ liệu từ máy chủ mà không làm thay đổi trạng thái hay dữ liệu hiện có trên server.
• Dữ liệu bao gồm: o Số lượng sản phẩm đã đếm o Phân loại sản phẩm theo từng tiêu chí o Cảnh báo lỗi (nếu có)
4 Từ máy chủ đến website:
• Máy chủ lưu trữ dữ liệu và cung cấp API cho website truy xuất
Website sử dụng dữ liệu này để hiển thị số lượng sản phẩm đã được phân loại, cập nhật trạng thái theo thời gian thực và cung cấp DashBoard số lượng sản phẩm cũng theo thời gian thực.
Các công nghệ sử dụng
4.1 Vi điều khiển và nền tảng phát triển
Vi điều khiển sử dụng: ESP32
ESP32 là một vi điều khiển mạnh mẽ với CPU dual-core Xtensa LX6, hoạt động ở tốc độ 240 MHz Nó được trang bị bộ nhớ 520 KB SRAM và 4 MB Flash, có thể cao hơn tùy theo từng mẫu ESP32 hỗ trợ kết nối Wi-Fi 802.11 b/g/n và Bluetooth, bao gồm cả BLE và Classic Ngoài ra, nó còn có GPIO đa chức năng, cho phép sử dụng các giao thức như UART, SPI, I2C, ADC và PWM.
ESP32 là lựa chọn lý tưởng nhờ tích hợp Wi-Fi và Bluetooth, giúp truyền dữ liệu không dây lên server hoặc website một cách hiệu quả Với giá thành hợp lý và linh kiện dễ tìm, ESP32 tương thích với nhiều nền tảng phát triển phần mềm và có cộng đồng hỗ trợ phong phú Thiết bị này hoạt động trên mọi thiết bị như điện thoại, máy tính bảng, hoặc máy tính để bàn mà không cần phần mềm đặc biệt Hơn nữa, ESP32 mang lại tính linh hoạt cao cho việc tùy chỉnh giao diện và chức năng, đồng thời dễ dàng kết nối với các hệ thống khác như cơ sở dữ liệu, server cloud, hoặc ứng dụng IoT mà không cần phần mềm bản quyền hỗ trợ.
• Arduino IDE: o Hỗ trợ lập trình ESP32 dễ dàng với nhiều thư viện tích hợp
▪ ArduinoJson để xử lý dữ liệu JSON
HTTPClient là một thư viện hữu ích để gửi dữ liệu qua giao thức HTTP, với giao diện thân thiện giúp phát triển nhanh chóng Thư viện này có sự hỗ trợ từ một cộng đồng lớn, cung cấp nhiều tài liệu hướng dẫn và ví dụ phong phú Người dùng có thể dễ dàng cài đặt thư viện này trực tiếp từ Library Manager trong Arduino IDE hoặc tải xuống từ GitHub.
1 Giao thức giữa PLC và ESP32 :
• Modbus RTU (RS485): o Đặc điểm:
▪ Giao tiếp nối tiếp (serial communication)
▪ Độ tin cậy cao, phù hợp với môi trường công nghiệp
▪ Tốc độ: 1.2 kbps đến 115 kbps o Ứng dụng:
▪ Truyền dữ liệu đếm và phân loại từ PLC đến ESP32
• Modbus TCP/IP: o Đặc điểm:
▪ Dựa trên giao thức TCP/IP qua Ethernet hoặc Wi-Fi
▪ Tốc độ truyền cao hơn so với Modbus RTU o Ứng dụng:
▪ Sử dụng khi PLC hỗ trợ cổng Ethernet hoặc Wi-Fi để kết nối trực tiếp với ESP32
2 Giao thức giữa ESP32 và máy chủ:
• HTTP/REST API: o Đặc điểm:
▪ Dữ liệu được truyền qua HTTP dưới dạng JSON hoặc XML
▪ Dễ tích hợp với các ứng dụng web hoặc server o Ứng dụng:
▪ ESP32 gửi dữ liệu số lượng và phân loại sản phẩm lên máy chủ
3 Giao thức giữa máy chủ và website:
• HTTP/HTTPS: o Dữ liệu được cung cấp qua REST API để hiển thị trên website o Bảo mật bằng HTTPS để đảm bảo an toàn dữ liệu
• Ngôn ngữ lập trình: o C/C++: Được sử dụng với Arduino IDE hoặc ESP-IDF
• Thư viện: o WiFi.h: Kết nối Wi-Fi o HTTPClient.h: Gửi yêu cầu HTTP đến server o ModbusIP_ESP8266: Giao tiếp Modbus TCP/IP với PLC
• Ngôn ngữ và framework: o Python (Flask/Django): Dễ dàng triển khai REST API
Flask là một micro-framework phổ biến, nhẹ và linh hoạt, lý tưởng cho việc phát triển ứng dụng web và API RESTful Với Flask, bạn có thể dễ dàng triển khai các API để giao tiếp với ESP32 thông qua giao thức HTTP.
SQLite là một cơ sở dữ liệu nhẹ, lý tưởng cho các hệ thống nhỏ hoặc thử nghiệm, với khả năng lưu trữ dưới dạng file mà không cần server riêng Nó cung cấp tốc độ truy cập nhanh và đủ mạnh để lưu trữ thông tin quan trọng như trạng thái PLC, giới hạn sản phẩm và lịch sử hoạt động.
• Hệ điều hành: Máy chủ có thể chạy trên bất kỳ hệ điều hành nào hỗ trợ
Python, như: o Linux (Ubuntu/Debian): Ưu tiên trong môi trường sản xuất (production) vì độ ổn định cao o Windows: Phù hợp để thử nghiệm trong môi trường phát triển
3 Website giao diện người dùng:
• Ngôn ngữ: o HTML/CSS: Tạo giao diện o JavaScript: Xử lý hiển thị động và tương tác với người dùng
For front-end framework development, utilizing React.js or Vue.js enhances interactivity and performance, while incorporating Chart.js or D3.js allows for effective visualization of product statistics through dynamic charts.
• Kết nối API: o Gọi REST API để lấy dữ liệu từ máy chủ và hiển thị trên giao diện người dùng
4.Công nghệ triển khai server
• Host server: o Máy chủ Flask được chạy trên localhost hoặc trên địa chỉ IP cụ thể o Port mặc định: 5000
• Linh hoạt: Có thể mở rộng server để hỗ trợ nhiều thiết bị ESP32 hoặc giao thức khác
• Chi phí thấp: Flask và SQLite đều miễn phí và dễ triển khai
• Dễ học và triển khai: Phù hợp với người mới bắt đầu nhưng vẫn mạnh mẽ cho các ứng dụng công nghiệp nhỏ
• Hiệu suất đủ cho các hệ thống nhỏ: Flask và SQLite đủ nhanh cho hệ thống không quá phức tạp
THIẾT KẾ VÀ CÀI ĐẶT
Thiết kế phần cứng
- PLC S7-1200 1212C DC/DC/DC: 6ES7212-1AE40-0XB0 – Compact CPU
Hình 2: PLC-S71200 1212C DC/DC/DC o Thông số kỹ thuật
▪ POWER SUPPLY: DC 20.4 – 28.8 V DC o Ưu điểm
▪ Tích hợp giao diện điều khiển I/O PROFINET
Bộ xử lý truyền thông kết nối phần mềm TeleControl Server Basic, cho phép điều khiển trung tâm qua Ethernet và giao tiếp an toàn qua mạng IP.
- Vi điều khiển sử dụng: ESP-WROOM-32
Hình 3 Kit RF thu phát wifi bluetooth esp32 o Thông số kỹ thuật:
• Bộ vi xử lý: Dual-core Xtensa LX6, tốc độ tối đa 240 MHz
• Bộ nhớ flash: 4 MB (tùy thuộc vào phiên bản)
• Tích hợp WiFi và Bluetooth BLE
• GPIO: 34 chân, hỗ trợ nhiều chuẩn giao tiếp như UART, I2C, SPI, PWM, ADC o Ưu điểm:
• Tích hợp sẵn WiFi giúp dễ dàng kết nối với máy chủ (Flask server) để trao đổi dữ liệu
• Tương thích với nhiều loại cảm biến và thiết bị ngoại vi
• Giá thành thấp, phù hợp với các ứng dụng IoT nhỏ gọn
• Tiêu thụ năng lượng thấp khi sử dụng chế độ Deep Sleep o Ứng dụng trong hệ thống:
• Đọc dữ liệu từ cảm biến sản phẩm cao/thấp
• Điều khiển động cơ servo để phân loại sản phẩm
• Gửi và nhận dữ liệu với máy chủ thông qua giao thức HTTP
- Các loại cảm biến: CẢM BIẾN VẬT CẢN HỒNG NGOẠI E3F-DS30C4
Hình 4 Cảm biến vật cản hồng ngoại E3F-DS30C4 NPN 6-36V o Thông số:
• Kích thước đường kính ngoài: 18mm (mm)(NPN)
• Khoảng cách phát hiện: 10-30cm có thể điều chỉnh
• Điện áp làm việc: DC 6-36VDC o Ưu điểm
• Phản hồi nhanh, ít bị hiễu tín hiệu
- Mạch điện và kết nối: Sau đây là sơ đồ mạch điện và kết nối o Sơ đồ nguồn và động cơ băng tải
Hình 5 Mạch điện kết nối nguồn o Sơ đồ kết nối PLC
Hình 6 Sơ đồ thiết kế đấu nối PLC
16 o Sơ đồ kết nối ESP32
Hình 7 Sơ đồ thiết kế đấu nối ESP32
- Nguồn điện và năng lượng o Nguồn cung cấp cho ESP32:
• Cấp nguồn từ: Nguồn adapter: 5V/2A qua cổng Micro-USB o Nguồn cung cấp cho cảm biến:
Cảm biến quang và hồng ngoại thường sử dụng điện áp 24V, lấy nguồn từ tổ ong riêng (24VDC / 20A) Đối với servo, nguồn cấp cần thiết vì servo tiêu thụ dòng điện cao khi hoạt động, dao động từ 0.5A đến 1A.
Sử dụng nguồn từ ESP32 5V/6V để cung cấp điện cho PLC, thường hoạt động ở mức điện áp 24V Nguồn điện cho PLC được lấy từ nguồn riêng tổ ong với điện áp 24VDC và dòng điện 20A.
ESP32 tích hợp tính năng tiết kiệm năng lượng hiệu quả, cho phép thiết bị chuyển sang chế độ Deep Sleep khi không hoạt động, giúp giảm tiêu thụ năng lượng Bên cạnh đó, việc sử dụng relay trạng thái thấp trong việc điều khiển PLC cũng góp phần tiết kiệm năng lượng tối ưu cho hệ thống.
- Topo mạng truyền thông trong hệ thống sử dụng mô hình topo hình sao với các thành phần như sau: o ESP32:
▪ Là nút giao tiếp trung gian, thu thập dữ liệu từ PLC, điều khiển thiết bị ngoại vi, và kết nối đến máy chủ qua WiFi o Máy chủ Flask:
▪ Trung tâm xử lý dữ liệu, lưu trữ thông tin trong cơ sở dữ liệu và cung cấp giao diện web để người dùng giám sát, điều khiển o PLC:
▪ Chương trình điều khiển hệ thống phân loại, đọc và ghi nhớ dữ liệu số lượng sản phẩm từ cảm biến
▪ Giao thiết với ESP32 qua W5500 sử dụng phương thức Modbus TCP/IP o Giao tiếp giữa các thành phần:
▪ ESP32 kết nối đến máy chủ qua WiFi
▪ ESP32 Lấy dữ liệu từ PLC qua ethernet(Modbus TCP/IP)
- Phương tiện truyền dẫn: Phương tiện truyền dẫn trong hệ thống bao gồm: o WiFi (802.11 b/g/n):
▪ Sử dụng mạng WiFi trong gia đình hoặc công ty để kết nối ESP32 với Flask server
▪ Tốc độ truyền tải cao, ổn định với khoảng cách ngắn (tối đa 30-50m tùy điều kiện)
▪ Ưu điểm: Không dây, dễ triển khai, hỗ trợ tốt cho IoT o Dây dẫn tín hiệu:
▪ Cảm biến được kết nối trực tiếp với PLC thông qua dây tín hiệu
▪ Sử dụng dây đồng (AWG 22-26) để đảm bảo tín hiệu ổn định o Ethernet tín hiệu:
▪ Kết nối ESP32 và PLC thông qua module W5500 sử dụng dây ethernet để ESP32 đọc dữ liệu số lượng sản phẩm được lưu trong DB của PLC
▪ Dây kết nối từ W5500 đến esp32 cần được kết nối đúng chân như sơ đồ đấu nối để đảm bảo đường truyền được đúng
- Thiết bị trung gian: Các thiết bị trung gian hỗ trợ kết nối và xử lý dữ liệu: o Router WiFi:
▪ Là trung tâm kết nối ESP32 với Flask server qua mạng nội bộ
▪ Đảm bảo tín hiệu WiFi mạnh và ổn định trong phạm vi lắp đặt o W5500:
• Hỗ trợ giao các giao thức: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
• Giúp truyền dữ liệu cảm biến từ PLC sang ESP32 qua cáp Ethernet o Nguồn cấp:
▪ Module nguồn adapter hỗ trợ cung cấp nguồn 5V/6V ổn định cho ESP32 và các thiết bị ngoại vi(Servo SG90)
▪ Module nguồn hồ trợ cung cấp nguồn 24V ổn định cho PLC và cảm biến quang NPN.
Thiết kế phần mềm
2.1 Phần mềm nút cảm biến:
- Cấu trúc chương trình: được xây dựng theo ngôn Ladder o Khởi tạo Tags sử dụng cho chương trình
Hình 8 Tags ALL Of PLC o Khởi tạo Tags server để cấu hình plc gửi dữ liệu
Hình 9 Tags Server Mosbus TCP/IP o Vòng Lặp chính:
▪ Đọc tín hiệu điều khiển ON/OFF từ nút ấn
▪ Đọc dữ liệu từ cảm biến
Dữ liệu cảm biến được sử dụng để điều khiển tín hiệu cho servo SG90, giúp cần gạt phân loại sản phẩm Bên cạnh đó, hàm cộng và trừ được áp dụng để thay đổi số lượng sản phẩm một cách hiệu quả.
Dữ liệu từ cảm biến được gửi vào Data Block của PLC, bao gồm một mảng chứa 4 giá trị số: số lượng sản phẩm thấp (Int), số lượng sản phẩm cao (Int), tổng sản phẩm (Int) và trạng thái chương trình PLC (Bool).
▪ Gửi dữ liệu từ Data Block đi qua TCP/IP đã được cấu hình
Hình 10 Khối Server gửi dữ liệu từ plc qua esp32
- Các module chính o Xử lý cảm biến:
▪ Đọc trạng thái tín hiệu từ các cảm biến sản phẩm cao/thấp
▪ Xử lý xung nhịp dùng các khối ADD, SUB để đếm số lượng sản phẩm o Gửi dữ liệu từ PLC qua ESP32:
▪ Sử dụng giao thức MB_SERVER_DB để gửi dữ liệu cảm biến ở DATA BLOCK qua ESP32 o Điều khiển cơ cấu chấp hành:
▪ Điều khiển relay để bật/tắt động cơ Băng tải o Điều khiển Servo:
▪ Servo xoay theo từng sản phẩm cao phát hiện được o Ngoài ra xây dựng chương trình chạy mô phỏng trên HMI của PLC
- Xử lý dữ liệu cảm biến o Cảm biến sản phẩm cao:
▪ Đọc tín hiệu từ chân I0.0 kết nối cảm biến
▪ Sử dụng DIGITAL: LOW -> HIGH để phát hiện sản phẩm o Cảm biến tổng sản phẩm:
▪ Tương tự sản phẩm cao nhưng xử lý tín hiệu từ cảm biến tổng o Tính toán và kiểm tra:
Để tính số lượng sản phẩm thấp, ta thực hiện phép tính tổng sản phẩm trừ đi sản phẩm cao Dữ liệu sẽ được gửi đến ESP32 bằng cách đóng gói dữ liệu cảm biến vào mảng trong DATA BLOCK và truyền đến ESP32 qua giao thức TCP/IP.
- Chương trình Code: PLC S7 1200 1212C DC/DC/DC
- Cấu trúc chương trình: Chương trình ESP32 được xây dựng theo cấu trúc dạng loop-back, với các bước chính: o Khởi tạo:
▪ Cấu hình WiFi, kết nối đến mạng
▪ Khởi tạo các biến cảm biến o Vòng lặp chính:
▪ Đọc dữ liệu cảm biến từ PLC
▪ Gửi dữ liệu cảm biến đến máy chủ Flask
- Các module chính o Kết nối WiFi:
▪ Đảm bảo ESP32 kết nối đến mạng WiFi và duy trì kết nối o Xử lý cảm biến:
▪ Đọc trạng thái tín hiệu từ PLC các dữ liệu sản phẩm cao/thấp o Gửi và nhận dữ liệu từ server:
▪ Sử dụng giao thức HTTP để gửi dữ liệu cảm biến và nhận lệnh điều khiển từ Flask server
- Thư viện sử dụng o WiFi.h:
▪ Kết nối ESP32 với mạng WiFi o HTTPClient.h:
▪ Giao tiếp với server qua giao thức HTTP o ArduinoJson.h:
▪ Phân tích cú pháp JSON từ server và tạo payload gửi đi o Ethernet.h:
Thư viện này hỗ trợ kết nối và giao tiếp qua mạng Ethernet, tương thích với các module như W5500, cho phép ESP32 kết nối mạng qua cáp Ethernet, bao gồm cả giao thức ModbusIP cho ESP8266.
Giúp các bo mạch ESP8266 và ESP32 giao tiếp hiệu quả qua giao thức Modbus TCP, cho phép chúng hoạt động linh hoạt như một master, slave hoặc cả hai.
- Xử lý cảm biến o Nhận dữ liệu được gửi từ PLC gán vào 3 biến: cao, thấp và tổng o Gửi dữ liệu đến Server:
▪ Đóng gói dữ liệu cảm biến vào JSON và gửi đến API Flask server
2.2 Phần mềm gateway/server: Flask Server
- Kiến trúc phần mềm: Flask server được xây dựng theo kiến trúc RESTful API, với các thành phần chính: o API:
▪ Xử lý yêu cầu từ ESP32 và giao diện web
▪ Cung cấp dữ liệu cảm biến o Cơ sở dữ liệu (DataBase): SQLite
▪ Lưu trữ thông tin sản phẩm và trạng thái PLC o Giao diện Web:
▪ Giám sát và điều khiển hệ thống trực tiếp từ trình duyệt
- Cơ sở dữ liệu o Loại cơ sở dữ liệu:
▪ SQLite (dễ triển khai, phù hợp hệ thống nhỏ) o Cấu trúc bảng:
• Lưu thông tin số lượng sản phẩm
• Các cột: id, timestamp, cao_count, thap_count, total_count
• Cấu hình giới hạn sản phẩm và trạng thái PLC
• Các cột: id, cao_limit, thap_limit, plc_status, last_modified
• Lưu lịch sử thay đổi giới hạn sản phẩm
• Các cột: id, cao_limit, thap_limit, last_modified
- API và giao diện o API chính:
• Cập nhật dữ liệu sản phẩm từ ESP32
• Lấy số liệu sản phẩm hiện tại
• Lấy trạng thái PLC (bật/tắt)
▪ /api/get_caolimits và /api/get_thaplimits:
• Lấy giới hạn sản phẩm cao/thấp
• Bật/tắt PLC hoặc cài đặt giới hạn mới o Giao diện web:
▪ Hiển thị số lượng sản phẩm
▪ Cài đặt giới hạn sản phẩm
▪ Điều khiển trạng thái PLC
▪ Biểu đồ hiển thị lịch sử sản phẩm
- Xử lý logic nghiệp vụ o Xử lý tự động dừng PLC:
▪ So sánh số lượng sản phẩm với giới hạn
▪ Nếu vượt giới hạn, tự động dừng PLC và ghi log o Quản lý lịch sử:
▪ Lưu lịch sử thay đổi giới hạn sản phẩm o Đồng bộ dữ liệu:
▪ Gửi phản hồi trạng thái và giới hạn đến ESP32 theo thời gian thực o An toàn và hiệu năng:
▪ Sử dụng try except để xử lý lỗi kết nối
▪ Cơ chế phản hồi HTTP mã lỗi cho ESP32.
Giao thức truyền thông
- Hệ thống sử dụng HTTP/RESTful API làm giao thức truyền thông chính giữa ESP32 và Flask server
Dữ liệu giữa ESP32 và máy chủ Flask được truyền tải theo định dạng JSON, giúp đảm bảo tính dễ đọc và khả năng mở rộng Ví dụ, gói tin gửi thông tin sản phẩm từ ESP32 đến máy chủ được định dạng theo cách này.
{ "sanpham_cao": 5, "sanpham_thap": 3, "total_sanpham": 8 } o Gói tin phản hồi từ server đến ESP32:
{ "cao_limit": 10, "thap_limit": 8, "plc_status": 1 }
- Cấu trúc gói tin: o ESP32 -> Flask Server:
▪ sanpham_cao: Số lượng sản phẩm cao
▪ sanpham_thap: Số lượng sản phẩm thấp
▪ total_sanpham: Tổng số lượng sản phẩm o Flask Server -> ESP32:
▪ cao_limit: Giới hạn sản phẩm cao
▪ thap_limit: Giới hạn sản phẩm thấp
▪ plc_status: Trạng thái PLC (1: chạy, 0: dừng)
- Truyền dữ liệu cảm biến từ ESP32 đến server: o ESP32 sử dụng HTTP POST để gửi dữ liệu sản phẩm đến API
Hình 11 Code Gửi dữ liệu từ ESP32 đến Flask o Flask server nhận và ghi dữ liệu vào cơ sở dữ liệu product_counts
Hình 12 code flask nhận số lượng sản phẩm và cập nhật vào cơ sở dữ liệu
- Nhận lệnh điều khiển từ server: o ESP32 sử dụng HTTP GET để lấy trạng thái PLC từ API
Hình 13 Code Esp32 lấy trạng thái PLC từ API
28 o Flask server phản hồi với trạng thái hiện tại của PLC và giới hạn sản phẩm
Cài đặt giới hạn sản phẩm thông qua giao diện web được thực hiện bằng cách gửi lệnh điều khiển đến API /api/plc/control qua phương thức HTTP POST Sau đó, máy chủ Flask sẽ cập nhật giới hạn và ghi lại lịch sử vào bảng plc_settings_history.
3.3 Xử lý lỗi và tối ưu
- Xử lý lỗi kết nối: o ESP32 kiểm tra trạng thái HTTP trả về từ server Nếu mã lỗi khác 200, ESP32 sẽ:
▪ Retry sau một khoảng thời gian nhất định
Hình 14 Code xử lý lỗi kết nối
- Tối ưu truyền tải: o Gửi dữ liệu chỉ khi có thay đổi trạng thái cảm biến o Giới hạn kích thước JSON để giảm tải băng thông
Để phòng ngừa lỗi cơ sở dữ liệu trên server, Flask server áp dụng cấu trúc try except nhằm xử lý hiệu quả các lỗi liên quan đến SQLite Đồng thời, việc đồng bộ hóa cơ sở dữ liệu với trạng thái của ESP32 là cần thiết để đảm bảo tính nhất quán và tránh tình trạng dữ liệu không khớp.
Nhóm chúng em nhận thấy rằng phần bảo mật chưa được tối ưu do sản phẩm ban đầu được phát triển cho mục đích nội bộ, dẫn đến việc hệ thống bảo mật dữ liệu chưa được xây dựng đầy đủ từ đầu.
TRIỂN KHAI VÀ ĐÁNH GIÁ
Triển khai hệ thống
Lắp đặt nút cảm biến yêu cầu triển khai hệ thống theo sơ đồ đấu nối đã được trình bày trong Chương 2 – Phần 1 về thiết kế phần cứng Cần kiểm tra tín hiệu để đảm bảo không có phần tử nào bị đấu nối sai, nhằm tránh hỏng hóc thiết bị, chập mạch hoặc ngắn mạch.
- Cấu hình mạng o Đối với PLC: Đảm bảo PLC hoạt động cùng lớp mạng với WIFI mà kết nối với ESP32
▪ Ví dụ: WiFi có IP là: 192.168.2.128
Hình 15 Cấu Hình IP PLC o Đối với ESP32:
• Đảm bảo ESP32 kết nối với mạng Wi-Fi được chỉ định trong mã (SSID và PASSWORD)
• Gán IP tĩnh cho ESP32 và Flask server để duy trì kết nối ổn định
Để kiểm tra kết nối, bạn có thể sử dụng lệnh ping từ máy chủ đến ESP32 và từ CMD ping đến địa chỉ của PLC Ngoài ra, hãy kiểm tra giao tiếp giữa ESP32 và máy chủ Flask bằng cách gửi yêu cầu thử nghiệm (HTTP GET).
Để triển khai server Python Flask trên máy tính hoặc Raspberry Pi, trước tiên bạn cần cài đặt Flask và các thư viện cần thiết như sqlite3 và flask-cors Sau khi hoàn tất cài đặt, khởi chạy server bằng lệnh: python Flask-server.py và đảm bảo rằng server hoạt động qua cổng 5000.
- Cài đặt firmware o Nạp chương trình:
▪ Đầu tiền nạp chương trình cấu hình phần cứng và code ladder cho PLC qua cổng Ethernet trên PLC
Sử dụng Arduino IDE để nạp mã nguồn vào ESP32 bằng cách kết nối ESP32 với máy tính qua cổng USB và nhấn Upload Hãy kiểm tra kỹ cổng COM trên máy tính để đảm bảo ESP32 và máy tính giao tiếp đúng cổng.
- Cấu hình hệ thống o Giao diện web:
▪ Truy cập giao diện qua địa chỉ IP của Flask server (http://:5000) Khi ta chạy code Flask-server thì server-ip được in ra ở terminal
Hình 16 Trạng thái run success Flask-server
▪ Cấu hình giới hạn sản phẩm (cao và thấp) và điều khiển PLC từ giao diện
Kết nối các thành phần
- Kết nối ESP32 với module W5500
- Kết nối W5500 với PLC qua ethernet
- Đảm bảo PLC với ESP32 giao tiếp thanh công qua W5500
- Đảm bảo Flask server giao tiếp được với ESP32 qua HTTP Đồng bộ dữ liệu
- Kiểm tra cơ sở dữ liệu: o Đảm bảo các bảng product_counts, plc_settings, plc_settings_history được khởi tạo đúng
- Đồng bộ trạng thái: o Kiểm tra xem giới hạn sản phẩm và trạng thái PLC được đồng bộ giữa server và ESP32
- Chạy thử nghiệm: o Kiểm tra hệ thống trong môi trường thực tế:
▪ Gửi dữ liệu từ cảm biến đến Flask server
▪ Điều khiển PLC từ giao diện web
31 o Theo dõi log từ ESP32 và server để phát hiện lỗi
- Hiệu chỉnh: o Tinh chỉnh vị trí cảm biến và giới hạn sản phẩm để đảm bảo hệ thống hoạt động chính xác.
Thử nghiệm và đánh giá
- Kiểm tra chức năng o Thử nghiệm cảm biến:
▪ Mục tiêu: Đảm bảo cảm biến đếm chính xác số lượng sản phẩm cao và tổng sản phẩm
• Bật hệ thống, cho sản phẩm đi qua cảm biến
• Kiểm tra log từ ESP32 (Serial Monitor) để xác nhận số lượng được đếm đúng
• Đối chiếu với dữ liệu được hiển thị trên giao diện web
• ESP32 nhận tín hiệu đúng từ cảm biến và cập nhật số lượng chính xác trên giao diện o Thử nghiệm giới hạn sản phẩm
▪ Mục tiêu: Đảm bảo hệ thống dừng khi đạt giới hạn đã cài đặt
• Cấu hình giới hạn sản phẩm cao và thấp trên giao diện web
• Cho sản phẩm chạy qua cảm biến để đạt giới hạn
• Quan sát log ESP32 và trạng thái plc_status trong cơ sở dữ liệu
• Hệ thống gửi tín hiệu dừng PLC khi đạt giới hạn o Thử nghiệm điều khiển từ xa
▪ Mục tiêu: Xác minh điều khiển bật/tắt PLC từ giao diện web hoạt động chính xác
• Bấm nút "Start" trên giao diện và quan sát log từ ESP32
• Bấm nút "Stop" trên giao diện và kiểm tra trạng thái PLC trong cơ sở dữ liệu
• PLC nhận lệnh chính xác và thay đổi trạng thái hoạt động
- Kiểm tra hiệu năng o Kiểm tra tốc độ truyền dữ liệu
▪ Mục tiêu: Đảm bảo dữ liệu từ ESP32 được gửi đến server với độ trễ thấp
• Gửi yêu cầu từ ESP32 đến Flask server liên tục mỗi 1 giây
• Đo thời gian phản hồi từ server (HTTP Response Time)
▪ Thời gian phản hồi trung bình dưới 500ms o Kiểm tra tải hệ thống
▪ Mục tiêu: Xác minh hệ thống hoạt động ổn định khi có tải cao
• Cho hệ thống chạy với tốc độ cao, giả lập sản phẩm đi qua cảm biến với tần suất 100 sản phẩm/phút
• Theo dõi log ESP32 và Flask server để phát hiện lỗi hoặc mất dữ liệu
• Hệ thống duy trì hoạt động ổn định, không bị gián đoạn hoặc giảm tốc độ xử lý o Kiểm tra đồng bộ hóa
▪ Mục tiêu: Đảm bảo dữ liệu giữa ESP32, PLC và server luôn nhất quán
• Thay đổi giới hạn sản phẩm trên web và kiểm tra giá trị đọc được trên ESP32 và data_block của PLC
• Gửi dữ liệu từ ESP32 lên server và kiểm tra giá trị cập nhật trong cơ sở dữ liệu
• Dữ liệu đồng bộ giữa PLC, ESP32, server, và giao diện web
- Kiểm tra độ tin cậy o Kiểm tra khôi phục sau sự cố
▪ Mục tiêu: Đảm bảo hệ thống có thể khôi phục trạng thái sau khi mất điện hoặc mất mạng
• Ngắt nguồn điện của ESP32 và server trong 5 phút
• Bật lại hệ thống và kiểm tra kết nối cũng như dữ liệu trong cơ sở dữ liệu
• Hệ thống tự động kết nối lại và đồng bộ dữ liệu sau khi khởi động lại o Kiểm tra tính chính xác của dữ liệu
▪ Mục tiêu: Đảm bảo dữ liệu từ cảm biến được ghi nhận đúng, không bị sai lệch
• Gửi 100 tín hiệu giả lập từ cảm biến đến ESP32
• Đối chiếu số liệu trên log ESP32, giao diện web, và cơ sở dữ liệu
• Tất cả số liệu được ghi nhận đúng, không mất dữ liệu
- Độ chính xác dữ liệu o Hệ thống phản hồi chính xác khi đạt giới hạn sản phẩm hoặc điều khiển PLC từ web
Thời gian đáp ứng giữa ESP32 và máy chủ Flask đạt dưới 500ms, trong khi tốc độ truyền dữ liệu từ web về Flask chỉ mất khoảng 200ms Đặc biệt, dữ liệu từ PLC qua ESP32 mất khoảng 2 giây để truyền tải.
- Độ ổn định hệ thống o Hệ thống ổn định trong 1 tiếng vì không đủ điều kiện để thử nghiệm chương trình trong 24 tiếng
- Khả năng mở rộng o Hỗ trợ thêm cảm biến hoặc chức năng mà không cần thay đổi cấu trúc chính
2.3 Phân tích và tối ưu:
Dữ liệu từ ESP32 không thành công trong việc truyền về PLC, gây khó khăn trong việc điều khiển trạng thái on/off và giới hạn sản phẩm trên trang web.
Dữ liệu điều khiển ON/OFF và giới hạn sản phẩm từ WEB đã được truyền tải thành công về Flask Việc kiểm tra dữ liệu trong SQLite cho thấy trạng thái plc_status đã thay đổi, cùng với đó là các giá trị cao_limit và thấp_limit cũng được cập nhật.
▪ Dữ liệu từ Flask trả về cho ESP32 thành công Bằng cách in ra số lượng thấp cao giới hạn, cũng như trạng thái PLC
▪ Nhưng đến giai đoạn truyền những dữ liệu đó từ ESP32 qua PLC thì không có sự thay đổi ở Data block của PLC
Giải pháp khắc phục có thể thực hiện bằng cách sử dụng điều khiển ON/OFF thông qua ESP32 Dây OUTPUT từ ESP32 sẽ được kết nối với PLC, sau đó tăng áp từ 3.3V lên 24V để điều khiển trạng thái ON/OFF tại PLC.
- Đề xuất cải tiến o Sử dụng HTTPS:
▪ Chuyển từ HTTP sang HTTPS để mã hóa dữ liệu khi truyền qua mạng o Xác thực:
▪ Thêm cơ chế xác thực token API giữa ESP32 và server o Hạn chế truy cập:
▪ Giới hạn IP hoặc sử dụng tường lửa để chỉ cho phép ESP32 và giao diện web kết nối o Xác thực người dùng:
▪ Giao diện web yêu cầu người dùng đăng nhập bằng tên đăng nhập và mật khẩu để truy cập o Kiểm tra tính toàn vẹn:
▪ Thêm mã hash hoặc checksum trong payload JSON để kiểm tra dữ liệu không bị thay đổi trong quá trình truyền.
Ứng dụng và hướng phát triển
3.1 Khả năng ứng dụng thực tế
Hệ thống điều khiển băng chuyền dựa trên ESP32 và giao diện web mang lại nhiều ứng dụng trong ngành công nghiệp và sản xuất, giúp nâng cao hiệu suất công việc, giảm thiểu sự cố và cải thiện khả năng giám sát từ xa Các ứng dụng thực tế của hệ thống này rất đa dạng, đáp ứng nhu cầu ngày càng cao trong quản lý và tự động hóa quy trình sản xuất.
Tự động hóa dây chuyền sản xuất đóng vai trò quan trọng trong việc điều khiển và giám sát quy trình sản xuất tại các nhà máy, đặc biệt là đối với những sản phẩm yêu cầu độ chính xác cao Hệ thống này cho phép theo dõi số lượng sản phẩm và tự động điều chỉnh quy trình, từ đó giảm thiểu sai sót và tối ưu hóa hiệu suất sản xuất.
Hệ thống giám sát và điều khiển từ xa cung cấp giao diện web, cho phép người dùng quản lý và theo dõi PLC từ xa Điều này đảm bảo quy trình sản xuất luôn hoạt động chính xác mà không cần có mặt trực tiếp tại nhà máy.
Quản lý kho hàng và chuỗi cung ứng đóng vai trò quan trọng trong việc theo dõi số lượng sản phẩm sản xuất Hệ thống này giúp cập nhật và điều phối kho hàng một cách chính xác, cho phép doanh nghiệp theo dõi mức độ tồn kho và đưa ra quyết định điều chỉnh sản xuất hiệu quả.
Dự báo và bảo trì phòng ngừa là yếu tố quan trọng trong quản lý dây chuyền sản xuất Việc theo dõi các thông số giúp hệ thống phát hiện sớm bất thường hoặc sự cố, từ đó thông báo kịp thời để thực hiện bảo trì Điều này không chỉ tiết kiệm chi phí mà còn giảm thiểu thời gian ngừng hoạt động của thiết bị.
3.2 Hướng phát triển tiếp theo
Hệ thống có khả năng tích hợp với nhiều thiết bị IoT khác trong nhà máy, bao gồm cảm biến nhiệt độ, độ ẩm, ánh sáng và các cảm biến thông minh khác Việc này không chỉ mở rộng khả năng giám sát mà còn nâng cao hiệu quả vận hành thông qua việc điều khiển toàn diện hơn.
Hệ thống có thể nâng cao khả năng phân tích dữ liệu và học máy, giúp đưa ra dự đoán chính xác về hiệu suất sản xuất và cảnh báo sớm các vấn đề tiềm ẩn.