Giới thiệu dự án

Trong bối cảnh cuộc Cách mạng Công nghiệp 4.0, tự động hóa quy trình sản xuất và đóng gói đã trở thành yêu cầu sống còn nhằm nâng cao năng suất, cắt giảm chi phí nhân công và tối thiểu hóa tỷ lệ sai sót. Theo các báo cáo công nghiệp về dây chuyền sản xuất hiện đại, công đoạn phân loại sản phẩm thủ công chiếm tới 30-40% chi phí lao động trực tiếp nhưng lại có tỷ lệ sai sót dao động từ 5-8% do yếu tố mệt mỏi thị giác và sự thiếu tập trung của con người qua thời gian làm việc kéo dài.

Đề tài "Ứng dụng xử lý ảnh để phân loại sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC" được phát triển nhằm giải quyết triệt để bài toán phân loại tự động tốc độ cao trong công nghiệp bằng cách kết hợp sức mạnh xử lý thị giác máy tính của máy tính nhúng và tính ổn định, độ tin cậy chuẩn công nghiệp của bộ điều khiển logic khả trình (PLC).

[Camera thu hình] ──> [Raspberry Pi 4 (OpenCV)] ──(Ethernet / Snap7)──> [Siemens S7-1200]
                                                                               │
       [WinCC SCADA Giám sát & Lưu trữ] <────────(PROFINET / S7 Protocol)──────┴──> [Băng tải & Cơ cấu Xi lanh Khí nén]

Problem Statement và Pain Points

Phương pháp phân loại truyền thống trong các nhà xưởng vừa và nhỏ thường gặp các vấn đề nghiêm trọng:

  • Hạn chế của cảm biến quang/tiệm cận thông thường: Không thể nhận diện được hình học phức tạp (phân biệt hình tròn, tam giác, vuông, chữ nhật) nếu kích thước bao ngoài tương đương nhau.
  • Chi phí đầu tư cảm biến thị giác công nghiệp (Smart Camera) quá cao: Các giải pháp Vision Sensor chuyên dụng từ Cognex hay Keyence có giá thành từ 3.000 - 8.000 USD/hệ thống, khó tiếp cận cho các doanh nghiệp quy mô vừa và nhỏ.
  • Độ trễ và thiếu tính đồng bộ: Khó tích hợp dữ liệu nhận dạng thời gian thực vào hệ thống điều hành sản xuất và giao diện giám sát SCADA.

Mục tiêu dự án

  1. Thiết kế và chế tạo mô hình cơ điện tử phân loại sản phẩm hoàn chỉnh với băng tải công nghiệp, hệ thống camera thị giác và cơ cấu chấp hành khí nén.
  2. Xây dựng thuật toán xử lý ảnh trên nền tảng Python và OpenCV để nhận diện chính xác 4 nhóm hình dạng sản phẩm: Hình tròn, hình vuông, hình chữ nhật và hình tam giác.
  3. Thiết lập giao thức truyền thông dữ liệu hai chiều tốc độ cao giữa Kit nhúng Raspberry Pi 4B và PLC Siemens S7-1200 qua chuẩn Ethernet TCP/IP sử dụng thư viện Snap7.
  4. Lập trình logic điều khiển tuần tự, tự động trên TIA Portal V16 và thiết kế giao diện HMI/SCADA trên WinCC Runtime Advanced để giám sát số lượng, trạng thái lỗi và điều khiển hệ thống thời gian thực.

Phương pháp tiếp cận và kết quả kỳ vọng

  • Phương pháp tiếp cận: Sử dụng kiến trúc xử lý phân tán biên (Edge Computing Architecture). Máy tính nhúng Raspberry Pi đóng vai trò Edge Vision Node đảm nhận tác vụ tính toán thị giác nặng, sau đó gửi tín hiệu kết quả tinh gọn (trigger bits/data bytes) sang PLC S7-1200 để kích hoạt bộ chấp hành xilanh khí nén tương ứng.
  • Chỉ số đo lường kỳ vọng (Measurable Metrics):
    • Tỷ lệ nhận dạng chính xác hình dạng: $\ge 95%$ trong điều kiện ánh sáng tiêu chuẩn ($300 - 500\text{ lux}$).
    • Thời gian xử lý ảnh trung bình: $\le 60\text{ ms/sản phẩm}$.
    • Năng suất phân loại hệ thống: $30 - 45\text{ sản phẩm/phút}$.
    • Độ trễ truyền thông Snap7 giữa Raspberry Pi và PLC: $\le 15\text{ ms}$.

Phạm vi và giới hạn

  • Phạm vi: Phân loại các khối sản phẩm hình học cơ bản (tròn, tam giác, vuông, chữ nhật) đơn sắc, di chuyển liên tục trên một mặt phẳng băng tải đơn làn.
  • Giới hạn kỹ thuật: Hệ thống chưa xử lý các trường hợp vật thể bị xếp chồng lấn (overlapping), sản phẩm biến dạng 3D phức tạp hoặc môi trường ánh sáng thay đổi đột ngột ngoài dải bù sáng của thuật toán tiền xử lý.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí Thị giác máy tính PC + Matlab Hệ thống nhúng LabVIEW NI Smart Camera Công nghiệp (Cognex/Keyence) Giải pháp đề xuất (Raspberry Pi + PLC S7-1200)
Chi phí phần cứng Trung bình - Cao Rất cao ($> 5.000\text{ USD}$) Cực cao ($> 4.000\text{ USD}$) Thấp - Tối ưu ($< 600\text{ USD}$)
Độ ổn định công nghiệp Kém (PC thông thường) Rất cao (Chuẩn cRIO) Tuyệt đối Rất cao (PLC S7-1200 điều khiển chấp hành)
Tính mở rộng mã nguồn Bản quyền đắt đỏ Bản quyền đắt đỏ Đóng kín (Proprietary) Mã nguồn mở hoàn toàn (Python/OpenCV)
Khả năng tích hợp SCADA Phức tạp qua OPC Server Native LabVIEW DSC Hỗ trợ chuẩn Profinet Tích hợp trực tiếp qua WinCC/TIA Portal
Kích thước hệ thống Cồng kềnh Gọn Cực kỳ tinh gọn Gọn nhẹ, gắn trực tiếp tủ điện

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must-have: Nhận diện đúng 4 loại hình dạng; kích hoạt đúng xilanh đẩy vào ô chứa; đếm số lượng từng loại; nút dừng khẩn cấp E-Stop phản hồi tức thì ($< 10\text{ ms}$).
  • Should-have: Giao diện SCADA hiển thị trực quan trạng thái Run/Stop, số lượng từng sản phẩm và đồ thị năng suất trên WinCC.
  • Could-have: Chế độ vận hành Manual cho phép kích từng xilanh độc lập từ tủ điện hoặc từ WinCC screen.
  • Won't-have (giai đoạn này): Tích hợp cánh tay robot gắp sản phẩm delta picker hoặc phân loại đa luồng song song.

Thiết kế hệ thống

Kiến trúc hệ thống

Hệ thống vận hành theo cấu trúc điều khiển phân tầng tự động hóa:

  1. Tầng cảm biến & Chấp hành (Field Level): Camera USB Full HD 1080p, 03 Cảm biến hồng ngoại PNP E3F-DS30P1, 03 Van điện từ khí nén 5/2, 03 Xilanh khí nén tác động kép, Động cơ DC 24V kéo băng tải.
  2. Tầng điều khiển & Xử lý biên (Control & Edge Level):
    • Kit Raspberry Pi 4 Model B (Quad-core ARM Cortex-A72 @ 1.5GHz, 4GB RAM) chạy hệ điều hành Raspberry Pi OS.
    • PLC Siemens SIMATIC S7-1200 CPU 1214C DC/DC/DC (Mã đặt hàng: 6ES7214-1AG40-0XB0) tích hợp 14 Digital Input (24VDC), 10 Digital Output (24VDC), 2 Analog Input ($0-10\text{V}$).
  3. Tầng giám sát và điều hành (Supervisory Level): Trạm SCADA chạy WinCC Runtime Advanced V16 kết nối PLC qua giao thức Industrial Ethernet PROFINET.

Danh mục công nghệ và phiên bản (Technology Stack)

  • Xử lý ảnh: Python 3.8.10, OpenCV Library v4.5.3 (cv2), NumPy v1.21.2.
  • Truyền thông công nghiệp: python-snap7 v1.1, Giao thức Siemens S7 Communication (S7comm over ISO-on-TCP, RFC 1006, TCP Port 102).
  • Điều khiển & SCADA: TIA Portal V16, SIMATIC STEP 7 Professional V16, SIMATIC WinCC Advanced V16.
  • Phần cứng điều khiển: Siemens S7-1200 Firmware v4.4.

Thiết kế liên kết dữ liệu bộ nhớ PLC (Memory & Tag Mapping)

Để đảm bảo tính toàn vẹn và đồng bộ dữ liệu giữa Raspberry Pi và PLC, một Data Block chuyên dụng (DB1 - "Vision_Data") hoặc các vùng nhớ Merker được ánh xạ trực tiếp:

Địa chỉ PLC Tên Tag Kiểu dữ liệu Chiều truyền Chức năng
M10.0 Trig_Cam BOOL PLC $\rightarrow$ Raspberry PLC báo sản phẩm đã vào vùng chụp
M10.1 Shape_Circle BOOL Raspberry $\rightarrow$ PLC Kết quả nhận diện: Hình tròn
M10.2 Shape_Square BOOL Raspberry $\rightarrow$ PLC Kết quả nhận diện: Hình vuông
M10.3 Shape_Rect BOOL Raspberry $\rightarrow$ PLC Kết quả nhận diện: Hình chữ nhật
M10.4 Shape_Triangle BOOL Raspberry $\rightarrow$ PLC Kết quả nhận diện: Hình tam giác
MW20 Total_Count INT PLC $\rightarrow$ WinCC Tổng số lượng sản phẩm đã phân loại
MW22 Circle_Count INT PLC $\rightarrow$ WinCC Số lượng sản phẩm hình tròn
MW24 Square_Count INT PLC $\rightarrow$ WinCC Số lượng sản phẩm hình vuông

An toàn và Bảo mật công nghiệp (Security Considerations)

  • Thiết lập cơ chế phân quyền bảo mật trên CPU 1214C: Kích hoạt chế độ "Full access (no protection)" có kiểm soát cho dải IP tĩnh của Raspberry Pi (192.168.0.10) và trạm SCADA (192.168.0.20).
  • Bắt buộc bật tính năng "Permit access with PUT/GET communication from remote partner" trong phần Protection & Security của cấu hình phần cứng CPU trong TIA Portal để cho phép thư viện Snap7 đọc/ghi vùng nhớ.
  • Thiết kế mạch phần cứng dừng khẩn cấp cấp độ 1 (E-Stop Circuit) ngắt trực tiếp nguồn 24VDC điều khiển van khí nén và rơ-le trung gian động cơ, không phụ thuộc hoàn toàn vào phần mềm PLC.

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển hệ thống nhúng V-Model, kết hợp các chu kỳ lặp Agile ngắn:

  1. Giai đoạn 1 (Tuần 1 - 3): Phân tích bài toán, lập phương trình toán học nhận diện hình học, tính toán công suất động cơ băng tải, áp lực khí nén xilanh ($P = 6\text{ bar}$) và lựa chọn thiết bị.
  2. Giai đoạn 2 (Tuần 4 - 7): Thi công khung cơ khí ($1200 \times 600 \times 400\text{ mm}$), lắp ráp băng tải, lắp đặt tủ điện điều khiển, đi dây tín hiệu I/O và nguồn theo chuẩn công nghiệp.
  3. Giai đoạn 3 (Tuần 8 - 11): Lập trình thuật toán thị giác trên Python, kiểm thử trên tập dữ liệu mẫu tĩnh, lập trình khối logic điều khiển OB1/FC/FB trên TIA Portal V16.
  4. Giai đoạn 4 (Tuần 12 - 14): Tích hợp truyền thông Snap7, ghép nối thời gian thực giữa camera, băng tải và cơ cấu gạt khí nén.
  5. Giai đoạn 5 (Tuần 15 - 16): Thiết kế giao diện WinCC, chạy nghiệm thu tải liên tục (Stress test), tối ưu tham số và đóng băng sản phẩm.

Implementation và kết quả

Quy trình phát triển phần mềm và Thuật toán cốt lõi

1. Pipeline xử lý ảnh thời gian thực (Computer Vision Pipeline)

Quy trình xử lý ảnh trên Raspberry Pi 4 trải qua 6 công đoạn tiền xử lý và trích xuất đặc trưng:

  1. Thu nhận ảnh (Image Acquisition & ROI Cropping): Camera chụp ảnh độ phân giải gốc $1920 \times 1080$, cắt vùng quan tâm (ROI - Region of Interest) kích thước $640 \times 480$ ngay trên mặt băng tải để giảm tải tính toán.
  2. Chuyển đổi không gian màu (Color Conversion): Chuyển ảnh RGB sang ảnh mức xám (Grayscale) theo công thức chuẩn: $$Y = 0.299R + 0.587G + 0.114B$$
  3. Lọc nhiễu (Gaussian / Median Filtering): Sử dụng bộ lọc làm mịn trung vị với kích thước Kernel $5 \times 5$ nhằm loại bỏ nhiễu hạt do bề mặt băng tải mà vẫn bảo toàn độ sắc nét của đường biên.
  4. Phân đoạn nhị phân (Binary Thresholding): Áp dụng ngưỡng cố định kết hợp thuật toán Otsu để tách biệt hoàn toàn sản phẩm ($Pixel = 255$, màu trắng) khỏi nền băng tải ($Pixel = 0$, màu đen).
  5. Tìm đường bao liên thông (Contour Extraction): Sử dụng hàm cv2.findContours dựa trên thuật toán Suzuki-Abe để truy xuất tập hợp tọa độ các điểm biên khép kín.
  6. Xấp xỉ đa giác Ramer-Douglas-Peucker: Sử dụng hàm cv2.approxPolyDP để tối giản số lượng điểm biên dựa trên khoảng cách ngưỡng sai số $\epsilon$: $$\epsilon = 0.04 \times \text{ArcLength}(\text{contour})$$
[Ảnh Camera ROI] ──> [Grayscale] ──> [Median Blur 5x5] ──> [Otsu Threshold] ──> [findContours] ──> [approxPolyDP]
                                                                                                           │
      ┌────────────────────┬───────────────────────────────┴───────────────────────────────┬────────────────┘
      ▼                    ▼                                                               ▼
 [3 Đỉnh/Cạnh]       [4 Đỉnh/Cạnh]                                                   [> 6 Đỉnh & Bán kính đều]
      │                    │                                                               │
      ▼                    ├───────────────────────────────┐                               ▼
(Hình Tam Giác)            ▼                               ▼                          (Hình Tròn)
                   |Cạnh 1 - Cạnh 2| <= Delta      |Cạnh 1 - Cạnh 2| > Delta
                           │                               │
                           ▼                               ▼
                      (Hình Vuông)                  (Hình Chữ Nhật)

2. Logic phân loại hình học và Mã nguồn xử lý

  • Tam giác: Đa giác sau xấp xỉ có đúng 3 đỉnh ($len(\text{approx}) = 3$).
  • Hình vuông & Hình chữ nhật: Đa giác có 4 đỉnh ($len(\text{approx}) = 4$). Để phân biệt:
    • Tính toán độ dài 2 cạnh kề bằng công thức khoảng cách Euclid giữa 2 đỉnh $A(x_A, y_A)$ và $B(x_B, y_B)$: $$d(A, B) = \sqrt{(x_B - x_A)^2 + (y_B - y_A)^2}$$
    • So sánh tỷ lệ cạnh hoặc hiệu độ dài $|d_1 - d_2|$: Nếu sai lệch $\le 10%$ kích thước thì xác định là Hình vuông, ngược lại là Hình chữ nhật.
  • Hình tròn: Đa giác có số đỉnh $> 6$ hoặc $> 8$, đồng thời hệ số tròn (Circularity Metric) $C = \frac{4\pi \times \text{Area}}{\text{Perimeter}^2} \approx 1.0 \pm 0.15$.

Dưới đây là đoạn mã nguồn Python tiêu biểu triển khai trên Raspberry Pi 4B kết nối với PLC qua Snap7:

import cv2
import numpy as np
import snap7
from snap7.util import set_bool

# Khởi tạo kết nối PLC Siemens S7-1200
PLC_IP = '192.168.0.1'
RACK = 0
SLOT = 1

client = snap7.client.Client()
try:
    client.connect(PLC_IP, RACK, SLOT)
    print(f"[INFO] Đã kết nối thành công tới PLC tại {PLC_IP}")
except Exception as e:
    print(f"[ERROR] Không thể kết nối PLC: {e}")

def write_trigger_to_plc(shape_code):
    """
    Ghi tín hiệu phân loại vào Merker byte MB10 của PLC S7-1200
    M10.1: Tròn, M10.2: Vuông, M10.3: Chữ nhật, M10.4: Tam giác
    """
    try:
        # Đọc 1 byte từ vùng nhớ M (Merker) tại địa chỉ byte 10
        m_data = client.read_area(snap7.types.Areas.MK, 0, 10, 1)
        
        # Reset toàn bộ các bit cờ phân loại
        for bit in range(1, 5):
            set_bool(m_data, 0, bit, False)
            
        # Set bit tương ứng với hình dạng nhận diện
        if shape_code == 'circle':
            set_bool(m_data, 0, 1, True)
        elif shape_code == 'square':
            set_bool(m_data, 0, 2, True)
        elif shape_code == 'rectangle':
            set_bool(m_data, 0, 3, True)
        elif shape_code == 'triangle':
            set_bool(m_data, 0, 4, True)
            
        client.write_area(snap7.types.Areas.MK, 0, 10, m_data)
        print(f"[LOG] Đã gửi tín hiệu phân loại '{shape_code}' sang PLC.")
    except Exception as ex:
        print(f"[ERROR] Lỗi truyền dữ liệu Snap7: {ex}")

def process_frame(frame):
    # Cắt vùng làm việc (ROI)
    roi = frame[100:420, 150:500]
    gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    blurred = cv2.medianBlur(gray, 5)
    _, thresh = cv2.threshold(blurred, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
    
    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area < 1000:  # Lọc bỏ nhiễu diện tích nhỏ
            continue
            
        peri = cv2.arcLength(cnt, True)
        approx = cv2.approxPolyDP(cnt, 0.04 * peri, True)
        num_vertices = len(approx)
        
        shape = "Unknown"
        if num_vertices == 3:
            shape = "triangle"
        elif num_vertices == 4:
            x, y, w, h = cv2.boundingRect(approx)
            aspect_ratio = float(w) / h
            shape = "square" if 0.9 <= aspect_ratio <= 1.1 else "rectangle"
        elif num_vertices > 6:
            shape = "circle"
            
        if shape != "Unknown":
            write_trigger_to_plc(shape)
            cv2.drawContours(roi, [approx], -1, (0, 255, 0), 2)
            cv2.putText(roi, shape, (approx[0][0][0], approx[0][0][1] - 10),
                        cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2)
            break
            
    return roi

Kiểm thử và Đánh giá hiệu năng (Testing & Benchmarks)

Hệ thống được thử nghiệm với 400 mẫu sản phẩm thực nghiệm (100 mẫu cho mỗi loại hình dạng) di chuyển trên băng tải với vận tốc $0.15\text{ m/s}$.

Ma trận nhầm lẫn (Confusion Matrix)

Hình dạng thực tế Mẫu thử Nhận diện Tròn Nhận diện Vuông Nhận diện Chữ nhật Nhận diện Tam giác Độ chính xác (%)
Hình tròn 100 98 0 0 2 98.0%
Hình vuông 100 1 95 4 0 95.0%
Hình chữ nhật 100 0 3 96 1 96.0%
Hình tam giác 100 2 0 1 97 97.0%
Tổng cộng / TB 400 -- -- -- -- 96.5%

Benchmark hiệu năng xử lý hệ thống

  • Thời gian xử lý ảnh trung bình: $42.6\text{ ms}$ trên Raspberry Pi 4B (FPS đạt $\approx 23.5\text{ fps}$).
  • Thời gian trễ truyền thông Snap7 (Round-trip): $8.4\text{ ms}$ qua switch mạng chuẩn 100 Mbps.
  • Thời gian đáp ứng xilanh khí nén: $120\text{ ms}$ (từ khi PLC phát xung đến khi xilanh chạm cữ giới hạn hành trình).
  • Chu kỳ quét chương trình PLC (PLC Scan Time): Trung bình $2.1\text{ ms}$ trên CPU 1214C.
  • Tổng thời gian phân loại 1 sản phẩm: $\approx 1.8\text{ giây}$ (tính cả thời gian di chuyển từ camera đến vị trí xilanh phân loại tương ứng).

Đổi mới và đóng góp

Điểm đổi mới kỹ thuật nổi bật

  1. Kiến trúc tích hợp lai Edge-PLC tối ưu chi phí: Thay vì đầu tư máy tính công nghiệp (IPC) đắt tiền hoặc camera thông minh chuyên dụng, đề tài đã kết hợp thành công máy tính nhúng Linux giá rẻ ($< 45\text{ USD}$) với PLC chuẩn công nghiệp thông qua giao thức Ethernet S7 Communication native không cần thêm module chuyển đổi trung gian.
  2. Khắc phục triệt để bài toán nhận dạng biên đa giác 3D: Trong thực tế, các khối hình 3D khi chụp từ trên xuống thường bị phản xạ ánh sáng ở các cạnh bên, gây sinh thêm đỉnh giả ($len(\text{approx}) > 4$). Nhóm đã cải tiến giải thuật bằng cách kết hợp giữa xấp xỉ đa giác approxPolyDP và kiểm định tỷ lệ diện tích khung bao bao ngoài boundingRect để triệt tiêu lỗi nhận diện sai giữa hình vuông và hình chữ nhật.
  3. Đồng bộ hóa thời gian thực lên SCADA WinCC: Toàn bộ thông số hoạt động, trạng thái logic I/O của PLC và số liệu thống kê được hiển thị trực tiếp trên WinCC Runtime Advanced qua bảng HMI Tag động, mang lại trải nghiệm điều hành chuẩn công nghiệp.
+-----------------------------------------------------------------------------+
| BẢNG SO SÁNH GIẢI PHÁP KỸ THUẬT VÀ CHI PHÍ ĐẦU TƯ                         |
+------------------------------------+--------------------+-------------------+
| Tiêu chí so sánh                   | Smart Camera CN    | Giải pháp đề tài  |
+------------------------------------+--------------------+-------------------+
| Chi phí phần cứng thị giác         | 3.500 - 6.000 USD  | 85 - 120 USD      |
| Khả năng tùy biến thuật toán       | Hạn chế theo hãng  | Không giới hạn    |
| Giao thức kết nối PLC S7           | PROFINET License   | Snap7 (Open-source|
| Chi phí thay thế linh kiện         | Rất cao, chờ nhập  | Có sẵn trên TT    |
| Tỷ lệ phân loại chính xác          | 99.2%              | 96.5%             |
+------------------------------------+--------------------+-------------------+

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Ngành công nghiệp thực phẩm & Bánh kẹo: Tự động phân loại bánh theo khuôn mẫu (tròn, vuông, chữ nhật, tam giác) trước khi vào máy đóng gói màng co tự động.
  • Ngành sản xuất gạch men & Gốm sứ: Kiểm định hình dạng phôi gạch, phát hiện các cạnh bị sứt mẻ hoặc sai lệch hình học so với khuôn chuẩn.
  • Ngành gia công cơ khí chính xác: Phân loại bu-lông, đai ốc, long đền và các phôi kim loại dập nổi theo hình dạng tiết diện trên băng chuyền gia công.
[Phôi nguyên liệu] ──> [Băng tải chuyền] ──> [Trạm Vision AI] ──> [Phân loại tự động] ──> [Đóng hộp theo loại]
                                                      │
                                                      └──> [Phát hiện phôi lỗi/mẻ] ──> [Thải loại]

Phân tích hiệu quả kinh tế (ROI Analysis)

  • Chi phí đầu tư ước tính (CAPEX):
    • PLC Siemens S7-1200 CPU 1214C đã qua sử dụng/mới: $\approx 250 - 350\text{ USD}$.
    • Kit Raspberry Pi 4B + Camera HD + Phụ kiện: $\approx 85\text{ USD}$.
    • Khung cơ khí, băng tải, động cơ DC, xilanh khí nén, van điện từ: $\approx 200\text{ USD}$.
    • Tủ điện, rơ-le, cảm biến, nguồn 24V: $\approx 100\text{ USD}$.
    • Tổng chi phí chế tạo: $\approx 650 - 750\text{ USD}$ (chỉ bằng $15 - 20%$ so với việc mua một cụm camera thị giác công nghiệp đơn lẻ).
  • Thời gian hoàn vốn (Payback Period): Thay thế 01 nhân công phân loại thủ công tại xưởng quy mô nhỏ (mức lương trung bình $350\text{ USD/tháng}$). Thời gian thu hồi vốn đầu tư toàn bộ hệ thống ước tính chỉ từ 2.5 đến 3.5 tháng.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Độ nhạy sáng: Thuật toán nhị phân hóa cố định và Otsu vẫn phụ thuộc vào nguồn sáng chiếu sáng đồng đều. Nếu môi trường làm việc bị thay đổi cường độ sáng đột ngột ($< 150\text{ lux}$ hoặc ánh sáng mặt trời chiếu trực tiếp), biên dạng trích xuất có thể bị đứt nét.
  • Góc đặt sản phẩm: Sản phẩm bị xoay nghiêng quá nhiều góc hoặc chồng lấn lên nhau chưa được tách rời bằng giải pháp xử lý ảnh 2D thông thường.
  • Giao thức Snap7: Sử dụng cơ chế Polling đọc/ghi trực tiếp vùng nhớ PLC, chưa triển khai chuẩn công nghiệp hướng đối tượng hiện đại OPC UA Server tích hợp sẵn trên firmware mới của S7-1200.

Hướng phát triển trong tương lai

  1. Nâng cấp sang Deep Learning Object Detection: Tích hợp mô hình YOLOv8-Nano tối ưu hóa bằng TensorRT chạy trên Nvidia Jetson Nano hoặc Raspberry Pi 5 kết hợp Google Coral USB Accelerator để nhận diện sản phẩm đa tiêu chí (vừa nhận diện hình dạng, vừa phân loại màu sắc và phát hiện khuyết tật nứt vỡ).
  2. Chuẩn hóa truyền thông OPC UA & MQTT: Chuyển đổi kiến trúc giao tiếp từ Snap7 sang OPC UA Server chuẩn hóa công nghiệp và đẩy dữ liệu lên Cloud Dashboard (AWS IoT Core / ThingsBoard) phục vụ quản lý sản xuất từ xa.
  3. Cơ cấu chấp hành thông minh: Tích hợp cánh tay robot Delta hoặc Scara Robot sử dụng thuật toán Visual Servoing để gắp thả sản phẩm chính xác theo góc xoay thực tế của vật thể trên băng tải.

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG                                     |
+-----------------------------------------------------------------------------+
| 🎓 SINH VIÊN & NGHIÊN CỨU SINH                                             |
|  - Tài liệu tham khảo hoàn chỉnh tích hợp liên ngành IT & Automation.       |
|  - Mã nguồn mẫu Python - Snap7 - S7-1200 thực chiến, dễ tái sử dụng.      |
+-----------------------------------------------------------------------------+
| 💻 KỸ SƯ LẬP TRÌNH & TỰ ĐỘNG HÓA                                            |
|  - Phương pháp kết nối máy tính nhúng với PLC qua Ethernet không mất phí.  |
|  - Kỹ thuật tối ưu hóa thuật toán OpenCV trên vi xử lý ARM nhúng.          |
+-----------------------------------------------------------------------------+
| 🏭 DOANH NGHIỆP SẢN XUẤT VỪA VÀ NHỎ (SMEs)                                 |
|  - Giải pháp tự động hóa chi phí thấp, thời gian hoàn vốn dưới 4 tháng.    |
|  - Khả năng làm chủ công nghệ, dễ bảo trì và mở rộng tính năng.            |
+-----------------------------------------------------------------------------+

Câu hỏi thường gặp

1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai lại hệ thống này là gì?

Hệ thống yêu cầu tối thiểu một PLC Siemens S7-1200 (bất kỳ CPU nào từ 1211C, 1212C đến 1214C), một máy tính nhúng Raspberry Pi 3B+ hoặc 4B (khuyến nghị 4B 2GB/4GB RAM), camera USB có độ phân giải tối thiểu 720p, hệ thống khí nén áp lực từ $4 - 6\text{ bar}$ và máy tính cài đặt TIA Portal V15/V16/V17 cùng môi trường Python 3.7 trở lên.

2. Giới hạn tốc độ phân loại tối đa của hệ thống là bao nhiêu?

Với phần cứng Raspberry Pi 4B và thuật toán xấp xỉ đa giác trong đề tài, thời gian xử lý ảnh mất $\approx 42\text{ ms}$, tốc độ băng tải tối ưu đạt $0.2 - 0.3\text{ m/s}$. Năng suất phân loại tối đa an toàn của mô hình đạt khoảng $40 - 50\text{ sản phẩm/phút}$. Để tăng tốc độ lên $> 100\text{ sản phẩm/phút}$, cần nâng cấp camera công nghiệp Global Shutter (chống nhòe chuyển động) và van khí nén tốc độ cao.

3. Có thể thay thế Raspberry Pi bằng máy tính cá nhân (PC/Laptop) được không?

Hoàn toàn được. Mã nguồn Python và thư viện Snap7 có tính đa nền tảng (Cross-platform). Bạn có thể chạy trực tiếp script Python trên máy tính Windows hoặc Linux, chỉ cần cấu hình đúng địa chỉ IP card mạng cùng dải mạng Ethernet với PLC S7-1200.

4. Tại sao thư viện Snap7 không thể kết nối hoặc ghi được dữ liệu vào PLC S7-1200?

Đây là lỗi phổ biến nhất khi mới tích hợp. Cần kiểm tra 3 điểm trong TIA Portal:

  • Trong phần CPU Properties $\rightarrow$ Protection & Security $\rightarrow$ Connection mechanisms, bắt buộc tích chọn "Permit access with PUT/GET communication from remote partner".
  • Nếu đọc/ghi Data Block (DB), khối DB đó phải bỏ chọn thuộc tính "Optimized block access" trong DB Properties để truy cập theo địa chỉ Offset tiêu chuẩn.
  • Kiểm tra kết nối vật lý cáp mạng RJ45 và đảm bảo tắt tường lửa (Firewall) trên máy tính nếu đang test qua PC.

5. Chi phí bảo trì và độ bền của hệ thống như thế nào trong môi trường nhà xưởng?

PLC S7-1200 có tuổi thọ công nghiệp (MTBF) trên 10 năm với khả năng chống nhiễu điện từ vượt trội. Cần lưu ý bảo vệ Raspberry Pi trong hộp bảo vệ chuẩn IP54/IP65 có quạt tản nhiệt khí và trang bị nguồn cách ly 24V-to-5V DC-DC công nghiệp (Meanwell) để tránh sốc áp do đóng cắt cuộn hút van điện từ.


Kết luận

Đề tài tốt nghiệp "Ứng dụng xử lý ảnh để phân loại sản phẩm theo hình dạng, điều khiển và giám sát qua WinCC" đã hoàn thành xuất sắc toàn bộ các mục tiêu đặt ra từ lý thuyết thiết kế đến chế tạo mô hình thực nghiệm:

  • Xây dựng thành công giải pháp thị giác máy tính chi phí thấp trên nền tảng Raspberry Pi 4 và OpenCV với độ chính xác nhận diện đạt 96.5%.
  • Tích hợp liền mạch hệ thống điều khiển công nghiệp PLC S7-1200 qua giao thức Ethernet S7comm/Snap7 thời gian thực với độ trễ thấp ($< 10\text{ ms}$).
  • Xây dựng hoàn chỉnh hệ thống SCADA giám sát, điều khiển và thống kê sản lượng chuyên nghiệp trên nền tảng Siemens WinCC Runtime.

Mô hình là minh chứng rõ nét cho xu hướng kết hợp linh hoạt giữa Công nghệ thông tin (IT - Python, Computer Vision, Edge Computing)Công nghệ vận hành (OT - PLC, SCADA, Cơ điện tử), mở ra hướng đi khả thi và tiết kiệm cho các doanh nghiệp đang tìm kiếm giải pháp chuyển đổi số và tự động hóa dây chuyền sản xuất trong kỷ nguyên Công nghiệp 4.0.