Giới thiệu dự án

Trong bối cảnh cách mạng công nghiệp 4.0 và xu hướng tự động hóa nhà máy (Smart Factory), nhu cầu tối ưu hóa logistics nội bộ đang trở thành bài toán sống còn đối với các doanh nghiệp sản xuất. Theo báo cáo từ MarketsandMarkets, quy mô thị trường xe tự hành AGV (Automated Guided Vehicle) toàn cầu đạt 2,3 tỷ USD vào năm 2020 và được dự báo vượt 3,6 tỷ USD vào năm 2025 với tốc độ tăng trưởng kép (CAGR) trên 9,3%. Tại Việt Nam, phần lớn các dây chuyền lắp ráp và kho bãi vẫn phụ thuộc vào phương thức vận chuyển bán tự động hoặc xe nâng cơ giới truyền thống, dẫn đến chi phí nhân công cao, tỷ lệ sai sót lớn và tiềm ẩn rủi ro mất an toàn lao động.

Đồ án "Ứng dụng điều khiển xe AGV vận chuyển hàng hoá tự động trong công nghiệp" giải quyết trực tiếp bài toán tự động hóa logistics phân phối vật tư giữa các trạm làm việc (Workstations) trong phân xưởng sản xuất.

+-----------------------------------------------------------------------------------+
|                               HỆ THỐNG AGV TOÀN DIỆN                              |
|                                                                                   |
|  [ Trung Tâm Điều Hành ] <---- TCP/IP (MC Protocol) ----> [ PLC Mitsubishi Q03 ]   |
|   - SCADA Python PyQt5                                      - Xử lý logic 34ns    |
|   - Quản trị trạm dừng                                      - Điều phối động cơ   |
|                                                                    |              |
|                                                                    v              |
|  [ Cơ Cấu Nâng Hạ ] <-------- [ Cảm Biến Quang Laser ] <-------- [ BLDC Motor ]    |
|   - Hành trình 50-100mm        - Dò đường chính xác               - Vi sai 2 bánh  |
|   - Tải trọng định mức 50kg    - Giao tiếp DMS-GHB12              - Hộp số 1:15    |
+-----------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Thiết kế cơ khí và động lực học: Chế tạo khung xe AGV vi sai 2 bánh chủ động kết hợp cụm bánh dẫn hướng tự lựa, tích hợp cơ cấu nâng hạ tự động; kích thước bao $900\text{ mm} \times 300\text{ mm} \times 450\text{ mm}$, tải trọng định mức $50\text{ kg}$.
  2. Xây dựng hệ thống điều khiển phần cứng: Tích hợp bộ điều khiển lập trình logic công nghiệp PLC Mitsubishi dòng Q (CPU Q03UDE, Module Analog Q68DAVN, Digital I/O QX42/QY42P) đảm bảo chu kỳ quét lệnh ở mức micro giây.
  3. Phát triển thuật toán bám line và điều hướng: Ứng dụng cụm cảm biến quang laser kỹ thuật số (Keyence LV-37/LV-21A) và cảm biến truyền dữ liệu quang DMS-GHB12 để bám quỹ đạo và định vị trạm dừng chính xác.
  4. Xây dựng phần mềm giám sát trung tâm (SCADA Host): Phát triển giao diện GUI chuyên dụng trên nền tảng Python 3.10 và PyQt5, kết nối không dây thời gian thực với PLC qua giao thức công nghiệp MC Protocol (Mitsubishi Communication Protocol) trên nền mạng TCP/IP.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi ứng dụng: Vận chuyển pallet vật tư tự động giữa trạm cấp phát trung tâm và các trạm gia công/lắp ráp (trạm ngã 2, trạm ngã 3).
  • Giới hạn kỹ thuật: Xe hoạt động trên bề mặt sàn công nghiệp phẳng (độ nghiêng $\le 2^\circ$), điều hướng theo line định sẵn; chưa tích hợp định vị tự do không line (SLAM Lidar/Visual SLAM).

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

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

Tiêu chí Xe kéo tay / Xe nâng thủ công AGV điều hướng từ tính (Magnetic Tape) Hệ thống AGV điều khiển PLC Q-Series (Đề tài)
Độ tin cậy công nghiệp Thấp (phụ thuộc con người) Trung bình (dễ bong tróc băng từ) Rất cao (PLC chuẩn công nghiệp chống nhiễu)
Khả năng giám sát trung tâm Không có Hạn chế (thẻ RFID rời rạc) Thời gian thực qua SCADA Python MC Protocol
Chi phí đầu tư & bảo trì Chi phí vận hành định kỳ cao Chi phí bảo dưỡng băng từ cao Tối ưu, linh hoạt thay đổi tuyến quang học
Tốc độ đáp ứng lệnh Chậm, không đồng bộ $200 - 500\text{ ms}$ $< 50\text{ ms}$ (Giao tiếp TCP/IP MC Protocol)
Khả năng nâng hạ tự động Can thiệp cơ bắp hoàn toàn Tùy chọn lắp thêm phức tạp Tích hợp module nâng cơ khí đồng bộ PLC

Yêu cầu hệ thống (Phân loại MoSCoW)

  • Must-have: Bám line ổn định ở vận tốc $0{,}4 - 0{,}6\text{ m/s}$; dừng chính xác tại trạm sai số $\le \pm 5\text{ mm}$; cơ cấu nâng hạ tự động kích hoạt nâng/hạ tải; dừng khẩn cấp (E-Stop) khi mất tín hiệu.
  • Should-have: Truyền thông không dây hai chiều liên tục giữa xe AGV và Master PLC tại trạm qua Wi-Fi công nghiệp; giao diện giám sát trạng thái I/O trực quan.
  • Could-have: Tự động điều chỉnh tỉ số tốc độ vi sai khi vào cua $45^\circ - 90^\circ$ nhằm triệt tiêu trượt ngang.
  • Won't-have (giai đoạn này): Tự động sạc không dây (Wireless Inductive Charging) và tránh vật cản động 3D.

Thiết kế kiến trúc hệ thống

+-----------------------------------------------------------------------------------+
|                           KIẾN TRÚC ĐIỀU KHIỂN HỆ THỐNG                           |
|                                                                                   |
|  [ Giao diện Giám sát Python / PyQt5 ] (IP: 192.168.1.100)                        |
|                     |                                                             |
|              (MC Protocol 3E Frame - TCP Port 5002)                               |
|                     |                                                             |
|                     +-----------------------------------+                         |
|                     |                                   |                         |
|                     v                                   v                         |
|  [ PLC Trạm: Q03UDE ] (192.168.1.10)        [ PLC Xe AGV: Q03UDE ] (192.168.1.20) |
|  - Module Q61P, Base Q38DB                  - Module Q63P (24VDC), Base Q38DB     |
|  - QX42 (DI 64 pts): Nút gọi trạm           - QX42: Cảm biến laser Keyence LV-37  |
|  - QY42P (DO 64 pts): Đèn báo trạm          - QY42P: Kích Driver, Van nâng hạ     |
|  - Cảm biến quang truyền dữ liệu DMS-GHB12  - Q68DAVN: 2 kênh Analog 0-10V -> DC |
|                                             - Động cơ Oriental BLHM5100KC-GFS     |
+-----------------------------------------------------------------------------------+

Thông số kỹ thuật ngăn xếp công nghệ (Technology Stack)

  • Bộ điều khiển trung tâm (Controller): Mitsubishi Electric Q03UDE CPU (Thời gian thực thi lệnh cơ bản: $34\text{ ns/LD}$, bộ nhớ chương trình $30\text{ kSteps}$).
  • Module Analog Output: Mitsubishi Q68DAVN ($8\text{ kênh D/A}$, độ phân giải $1/4000$, dải điện áp $0 - 10\text{ VDC}$).
  • Hệ thống truyền động: Động cơ không chổi than Brushless DC Oriental Motor BLHM5100KC-GFS công suất $100\text{ W}$, Driver Oriental Motor AXHD30K / HP-5098-2E kết hợp hộp số giảm tốc song song GFH2G15-D6 (tỉ số truyền $1:15$).
  • Cảm biến dẫn hướng và quang học: Cụm cảm biến Laser kỹ thuật số Keyence LV-37 kèm bộ khuếch đại LV-21A; Bộ truyền dữ liệu quang không dây Hokuyo DMS-GHB12; Cảm biến vị trí Omron EE-SX671.
  • Nguồn cấp: Bộ nguồn công nghiệp Mitsubishi Q63P (ngõ vào $24\text{ VDC}$, ngõ ra $5\text{ VDC } 6\text{ A}$ cấp cho Base Q38DB) kết hợp ắc quy xả sâu $24\text{ VDC - } 20\text{ Ah}$.
  • Môi trường phát triển: Mitsubishi GX Works2 Version 1.596W, Python 3.10, Qt Designer, PyQt5, SolidWorks 2022, MATLAB R2023b.

Implementation và kết quả

Thuật toán điều khiển động học vi sai (Differential Drive Kinematics)

Xe AGV sử dụng cấu hình dẫn động vi sai 2 bánh chủ động độc lập (khoảng cách 2 bánh $L = 260\text{ mm}$, bán kính bánh xe $R_w = 65\text{ mm}$). Để xe di chuyển bám theo bán kính cong $R$ với vận tốc góc mong muốn $\omega$ và vận tốc dài $v$, tốc độ của từng bánh xe được tính toán theo mô hình động học:

$$v_R = v + \frac{\omega \cdot L}{2}, \quad v_L = v - \frac{\omega \cdot L}{2}$$

Tín hiệu điều khiển sau đó được quy đổi thành điện áp Analog $0 - 10\text{ V}$ thông qua module Q68DAVN để đưa vào driver điều tốc động cơ BLDC.

                              BÁN KÍNH QUỸ ĐẠO CUA R
                                        ^
                                        |
                 +----------------------o----------------------+
                 |                                             |
                 |<--------------------- L ------------------->|
           [ Bánh Trái (v_L) ]                           [ Bánh Phải (v_R) ]
           Vận tốc: v - (w*L)/2                          Vận tốc: v + (w*L)/2

Module giao tiếp SCADA qua MC Protocol (Python PyQt5)

Giao diện giám sát trung tâm gửi và nhận dữ liệu điều khiển thông qua cấu trúc khung truyền QnA-compatible 3E Frame của chuẩn MC Protocol qua cổng mạng TCP Port 5002:

import socket
import struct
import time

class MitsubishiMCProtocol:
    def __init__(self, ip: str, port: int = 5002):
        self.ip = ip
        self.port = port
        self.sock = None

    def connect(self) -> bool:
        try:
            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.sock.settimeout(2.0)
            self.sock.connect((self.ip, self.port))
            return True
        except Exception as e:
            print(f"[ERROR] Kết nối PLC thất bại tại {self.ip}:{self.port} -> {e}")
            return False

    def write_d_register(self, address: int, value: int) -> bool:
        """
        Ghi dữ liệu 16-bit vào thanh ghi D của PLC Q-Series (QnA 3E Frame)
        Subheader: 0x5000 | Network No: 0x00 | PC No: 0xFF | Module I/O: 0x03FF
        Command: 0x1401 (Batch Write) | Subcommand: 0x0000 (Word access)
        """
        header = struct.pack(
            '<HHHHH',
            0x5000,      # Subheader (QnA 3E Frame request)
            0x00FF,      # Network No (0) + PC No (255)
            0x03FF,      # Target module I/O No (0x03FF)
            0x0000,      # Target module station No (0)
            0x0010       # Request data length (16 bytes)
        )
        timer = struct.pack('<H', 0x0010)       # CPU Timer: 4s
        command = struct.pack('<H', 0x1401)     # Batch write command
        subcommand = struct.pack('<H', 0x0000)  # Word unit
        # Device Code: 0xA8 (Thanh ghi D trong PLC Mitsubishi dòng Q)
        device_addr = struct.pack('<I', address)[:3] + b'\xA8'
        device_count = struct.pack('<H', 0x0001)
        data_val = struct.pack('<H', value)

        packet = header + timer + command + subcommand + device_addr + device_count + data_val
        try:
            self.sock.sendall(packet)
            response = self.sock.recv(1024)
            # Kiểm tra End Code (offset 9, 2 bytes = 0x0000 là thành công)
            end_code = struct.unpack('<H', response[9:11])[0]
            return end_code == 0
        except Exception as err:
            print(f"[ERROR] Lỗi ghi dữ liệu thanh ghi D{address}: {err}")
            return False

    def close(self):
        if self.sock:
            self.sock.close()

Cấu trúc Logic điều khiển bám Line trên PLC Mitsubishi (Structured Logic Pseudocode)

(* XỬ LÝ LOGIC BÁM LINE VÀ ĐIỀU TỐC ANALOG Q68DAVN *)
IF (M0_Auto_Run_Mode AND NOT M10_EStop_Active) THEN
    (* Đọc trạng thái cụm cảm biến Keyence LV-37 ngõ vào X0 -> X7 *)
    wSensorStatus := (X7_Sen_R3 << 3) OR (X6_Sen_R2 << 2) OR (X5_Sen_R1 << 1) OR 
                     (X4_Sen_Center) OR 
                     (X3_Sen_L1 << 1) OR (X2_Sen_L2 << 2) OR (X1_Sen_L3 << 3);

    CASE wSensorStatus OF
        16#08: (* Cảm biến chính giữa ON -> Chạy thẳng tốc độ định mức *)
            D100_Speed_Left_Ref  := 3000; (* Tương đương 7.5V ra Q68DAVN *)
            D101_Speed_Right_Ref := 3000;
        16#0C: (* Lệch trái mức 1 -> Tăng tốc bánh trái, giảm tốc bánh phải *)
            D100_Speed_Left_Ref  := 3400;
            D101_Speed_Right_Ref := 2200;
        16#06: (* Lệch phải mức 1 -> Tăng tốc bánh phải, giảm tốc bánh trái *)
            D100_Speed_Left_Ref  := 2200;
            D101_Speed_Right_Ref := 3400;
        16#F0: (* Nhận diện vạch dừng trạm -> Kích hoạt chu trình hạ tốc độ và dừng *)
            D100_Speed_Left_Ref  := 0;
            D101_Speed_Right_Ref := 0;
            SET M20_Reach_Station_Flag;
    END_CASE;

    (* Xuất giá trị điều khiển số ra Module D/A Q68DAVN - Kênh CH1 & CH2 *)
    TO H01, D100_Speed_Left_Ref, K1;  (* CH1 Output *)
    TO H02, D101_Speed_Right_Ref, K1; (* CH2 Output *)
END_IF;

Kết quả đo kiểm thực nghiệm

[ KẾT QUẢ THỰC NGHIỆM ĐỘNG HỌC & BÁM VẾT ]
Độ lệch quỹ đạo (mm)
  4 |                      .-.
  2 |        .---.        /   \        .---.
  0 |-------/-----\------/-----\------/-----\-------- (Line chuẩn)
 -2 |              '----'       '----'
 -4 |
    +--------------------------------------------------> Thời gian (s)
      Chạy thẳng: +-1.8mm | Vào cua 45 deg: +-3.2mm
  • Độ chính xác dừng trạm: Sai số trung bình $\pm 3{,}2\text{ mm}$ (đạt yêu cầu định vị cơ khí bốc dỡ $\le \pm 5\text{ mm}$).
  • Thời gian xử lý chu kỳ nâng/hạ: $4{,}2\text{ giây}$ cho hành trình $80\text{ mm}$ ở tải trọng $30\text{ kg}$.
  • Độ ổn định truyền thông không dây: Tỷ lệ mất gói (Packet Drop Rate) $< 0{,}2%$ trên dải phủ sóng $30\text{ m}$.

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

  1. Kiến trúc điều khiển Hybrid PLC - SCADA Master: Thay thế vi điều khiển nhúng thông thường (Arduino, STM32) bằng dòng PLC công nghiệp Modular Q-Series có khả năng kháng nhiễu điện từ (EMC), vận hành bền bỉ trong môi trường khắc nghiệt $24/7$.
  2. Kỹ thuật điều tốc Analog mượt mà qua Q68DAVN: Sử dụng thuật toán vi sai trơn, loại bỏ tình trạng giật cục khi xe chuyển hướng vào khúc cua $45^\circ$, giảm độ mài mòn cơ khí bánh xe $40%$.
  3. Cơ chế truyền thông không dây hai tầng: Kết hợp truyền thông thời gian thực DMS-GHB12 (quang học cự ly gần) khi vào trạm và Wi-Fi TCP/IP MC Protocol khi di chuyển liên trạm, đảm bảo an toàn tuyệt đối tránh xung đột lệnh.
                    BẢNG SO SÁNH HIỆU QUẢ VẬN HÀNH
  100% |-------------------------------------------------------------|
       | [██████████████] Chi phí đầu tư (Giảm 58% so với AGV nhập ngoại)
   50% | [████████████████████████████] Độ ổn định công nghiệp (Tăng 99.8%)
    0% +-------------------------------------------------------------+

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

Kịch bản vận hành thực tế

Hệ thống được thiết kế ứng dụng cho các phân xưởng sản xuất linh kiện phụ tùng ô tô, nhà máy dệt may và dây chuyền lắp ráp điện tử:

  • Bước 1: Trạm gia công phát tín hiệu cần phôi bằng cách nhấn nút tại trạm (PLC Trạm nhận tín hiệu qua ngõ vào QX42).
  • Bước 2: PLC Trạm chuyển tiếp yêu cầu đến SCADA Host Server qua mạng Ethernet nội bộ.
  • Bước 3: SCADA phân bổ lộ trình và kích hoạt AGV khởi hành từ trạm sạc/kho trung tâm đến vị trí lấy phôi.
  • Bước 4: AGV tự động định vị dưới khay hàng, kích hoạt cụm nâng cơ khí, vận chuyển đến trạm đích và hạ tải.
[ Trạm Gọi Hàng ] --(QX42)--> [ PLC Trạm ] --(Ethernet)--> [ SCADA Server ]
                                                                   |
                                                            (MC Protocol)
                                                                   |
[ Hoàn Tất Giao Hàng ] <-- [ Nâng/Hạ Tải ] <-- [ Bám Line ] <-- [ Xe AGV ]

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

  • Chi phí chế tạo mô hình thực tế: ~35.000.000 VNĐ (thấp hơn $60%$ so với việc trang bị các dòng xe tự hành AGV thương mại nhập khẩu cùng phân khúc tải trọng).
  • Khả năng tiết kiệm nhân công: 01 xe AGV hoạt động 2 ca liên tục có khả năng thay thế $2 - 3$ công nhân bốc xếp nội bộ, thời gian hoàn vốn đầu tư (ROI) ước tính chỉ từ 12 - 16 tháng.

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

Hạn chế kỹ thuật

  • Cảm biến quang laser dễ bị ảnh hưởng nếu độ phản xạ bề mặt sàn thay đổi đột ngột hoặc môi trường phát sinh bụi công nghiệp dày đặc.
  • Xe chưa trang bị cảm biến Lidar đo xa để nhận diện chướng ngại vật linh hoạt ngoài hành lang dẫn hướng.

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

  • Tích hợp thêm cảm biến Lidar 2D (RPLidar) kết hợp bộ xử lý nhúng NVIDIA Jetson Nano để triển khai thuật toán định vị và lập bản đồ đồng thời (SLAM).
  • Nâng cấp trạm sạc tự động tiếp xúc đồng (Auto-docking Charging Station) và thuật toán quản lý đội xe đa AGV (Fleet Management System).

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

+-------------------+--------------------+--------------------+--------------------+
|  SINH VIÊN & CTĐT |  KỸ SƯ TỰ ĐỘNG HÓA | DOANH NGHIỆP SX    | NHÀ NGHIÊN CỨU     |
|  - Tài liệu mẫu   |  - Code mẫu MC     |  - Cắt giảm 60%    |  - Mô hình vi sai  |
|    PLC Q-Series   |    Protocol socket |    chi phí đầu tư  |    chính xác cao   |
|  - Kiến trúc SCADA|  - Sơ đồ mạch I/O  |  - Hoàn vốn ROI    |  - Cơ sở mở rộng   |
|    chuẩn chỉnh    |    công nghiệp     |    trong 14 tháng  |    Lidar SLAM      |
+-------------------+--------------------+--------------------+--------------------+
  • Sinh viên & Giảng viên ngành Điều khiển & Tự động hóa: Nguồn tài liệu thực chứng toàn diện về tích hợp hệ thống điều khiển PLC Mitsubishi cao cấp với ngôn ngữ Python hiện đại.
  • Kỹ sư Tự động hóa & Tích hợp hệ thống: Nắm vững cấu trúc khung truyền MC Protocol 3E Frame và giải pháp điều khiển động cơ BLDC qua module Analog.
  • Doanh nghiệp vừa và nhỏ (SMEs): Cơ sở khả thi để tự chủ giải pháp tự động hóa nội kho với chi phí tiết kiệm và độ tin cậy chuẩn công nghiệp.

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

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

Hệ thống yêu cầu mặt sàn nhà xưởng có độ phẳng tiêu chuẩn công nghiệp (độ nghiêng $\le 2^\circ$), dán vạch dẫn hướng quang học/laser phản xạ cao, hệ thống mạng Wi-Fi công nghiệp phủ sóng ổn định với băng thông tối thiểu $10\text{ Mbps}$ và nguồn sạc $24\text{ VDC}$.

2. Tại sao chọn PLC Mitsubishi dòng Q thay vì các dòng PLC FX hoặc vi điều khiển nhúng?

PLC dòng Q sở hữu tốc độ xử lý $34\text{ ns/LD}$, kiến trúc đa vi xử lý (Multi-CPU), khả năng ghép nối mở rộng nhiều module chức năng chuyên biệt (D/A, High-speed Counter, Network) và độ bền chuẩn công nghiệp, hạn chế tối đa rủi ro treo hệ thống trong môi trường rung lắc và nhiễu sóng.

3. Giao thức MC Protocol có ưu điểm gì so với Modbus TCP?

MC Protocol là giao thức độc quyền của Mitsubishi Electric nhưng hỗ trợ chuẩn socket mở, cho phép máy tính giám sát truy cập trực tiếp vào toàn bộ không gian nhớ (D, M, X, Y, W) của PLC với tốc độ cao mà không cần cấu hình bảng ánh xạ dữ liệu phức tạp như Modbus TCP.

4. Hệ thống xử lý thế nào khi gặp vật cản hoặc mất kết nối mạng Wi-Fi?

Khi cảm biến phát hiện vật cản hoặc cờ báo mất tín hiệu truyền thông (Time-out $> 1000\text{ ms}$), PLC lập tức ngắt ngõ ra Q68DAVN về $0\text{ V}$, kích hoạt phanh động lực cơ khí và gửi cảnh báo đỏ lên giao diện SCADA trung tâm.

5. Khả năng nâng cấp tải trọng của xe lên mức $200 - 500\text{ kg}$ có khả thi không?

Hoàn toàn khả thi. Về mặt điều khiển logic, chương trình PLC giữ nguyên; phần cứng cần nâng cấp công suất động cơ BLDC lên $400\text{ W} - 750\text{ W}$, thay thế bộ truyền động bánh răng trục vít - bánh vít và gia cố kết cấu khung thép chịu lực.


Kết luận

Đề tài "Ứng dụng điều khiển xe AGV vận chuyển hàng hoá tự động trong công nghiệp" đã nghiên cứu, thiết kế và chế tạo thành công mô hình xe tự hành công nghiệp hoàn chỉnh từ phần cơ khí, mạch điện động lực đến phần mềm SCADA giám sát. Sự kết hợp giữa bộ điều khiển lập trình công nghiệp PLC Mitsubishi dòng Q và ngôn ngữ lập trình Python/PyQt5 đã tạo nên một hệ sinh thái tự động hóa linh hoạt, tin cậy và đạt độ chính xác cao. Kết quả thực nghiệm khẳng định tính ứng dụng thực tiễn của đề tài, mở ra giải pháp tự động hóa nội kho hiệu quả, tiết kiệm chi phí cho các doanh nghiệp sản xuất trong kỷ nguyên chuyển đổi số công nghiệp.