在 3C 电子、锂电、食品药品包装产线上,外观缺陷检测长期是自动化的一道坎:人眼易疲劳、漏检率高,传统基于 X86 工控机 + 独立 GPU 的方案又贵又占空间、功耗动辄上百瓦,难以塞进紧凑的电控柜。边缘化的"视觉控制器"正成为主流解法——把相机接入、推理、IO 触发三件事收拢到一块板卡上。本文以 Rockchip RK3588 平台为例,拆解一套可落地的工业机器视觉控制器方案,并给出固件主循环伪代码。

一、为什么是 RK3588

RK3588 是一颗 8nm 八核 SoC:4×Cortex-A76 + 4×Cortex-A55,主频最高 2.4GHz;内置独立 NPU,整型算力 6TOPS,支持 INT4/INT8/INT16 混合精度,能直接跑 RKNN 量化的检测/分类模型。对机器视觉来说,它的几个点刚好卡在甜区:

  • 多路视频输入:原生 MIPI-CSI,配合 USB3.0 可扩展多相机同步采集,单板带 2~4 路 1080p@30fps 推理不成问题。
  • 6TOPS 本地推理:缺陷检测这类轻量模型(YOLO 系列、MobileNet 类)在本地闭环跑,时延可以压到几十毫秒,不必上云。
  • 工业接口齐全:UART、CAN、千兆以太网、PCIe(可挂 NVMe 存图或扩展采集卡),配合载板能直接对接产线 PLC 与光电传感器。
  • 软件生态成熟:Ubuntu / Debian / Buildroot 均有 BSP,RKNN Toolkit2 把 PyTorch / ONNX / TensorFlow 模型量化部署到 NPU 的路径很顺。

二、参考方案拓扑

[工业相机×N]──MIPI-CSI / USB3.0──┐
[光电/编码器]──GPIO / RS485───────┤
                                   ▼
                       ┌── 载板(接口/电源/IO)──┐
                       │  RS485  CAN  千兆  GPIO  │
                       └──────────┬───────────────┘
                             板对板连接器(2×50pin)
                                   ▼
                       ┌── EFISH-CORE-RK3588 核心板 ──┐
                       │  RK3588 4×A76+4×A55         │
                       │  6TOPS NPU (RKNN)            │
                       │  LPDDR4 8/16GB eMMC 64/128GB │
                       └──────────┬──────────────────┘
                                   ▼
        ┌──────────────┬──────────┴───────────┬──────────────┐
    [产线 PLC/IO]   [上位机 MES]          [本地 HMI]      [告警/剔除执行]
    (RS485/CAN)    (千兆以太/ModbusTCP)   (HDMI/MIPI DSI)

核心思路:核心板只做"采-算-判",所有工业接口和电源沉到载板。核心板通过 2×50pin 板对板连接器与载板咬合,这样视觉算法迭代升级时只换核心板,载板上的相机、IO、供电不动,整机认证也不用重做——这正是核心板+载板分离架构在视觉设备里最大的价值。

三、软件栈

  • 系统:Ubuntu 22.04(ARM64),实时性要求高的触发逻辑可叠 PREEMPT_RT 补丁。
  • 推理:RKNN Toolkit2 将训练好的模型转 .rknn,NPU 跑 INT8 量化版。
  • 采集:libcamera / V4L2 取 MIPI 流,USB 相机走 libusb 或 GStreamer。
  • 调度:主循环用 Python(快速验证)或 C++(产线稳定版),多路用线程池。

四、固件主循环伪代码

# 运行环境: Ubuntu + RKNN, RK3588 NPU, 节拍由编码器/定时器触发
import rknn, cv2, threading, plc

npu  = rknn.RKNN()                       # 加载量化后的缺陷检测模型
npu.load_rknn("defect_yolo_int8.rknn")
npu.init_runtime(target="rk3588")

cams = [open_cam(i) for i in range(N_CAM)]   # MIPI/USB 多相机句柄
io   = plc.open("ttyUSB0", baud=115200)       # 对接产线 PLC/剔除气缸

def grab_and_infer(cam, trigger_ts):
    frame = cam.read(timeout_ms=20)           # 光电触发后抓帧
    if frame is None: return
    boxes = npu.inference(frame)              # NPU 本地推理, 数十 ms
    for b in boxes:
        if b.score > THRESH:                  # 超阈值 = 缺陷
            io.push_defect(trigger_ts, b.cls) # 通知 PLC 标记/剔除
            log_defect(trigger_ts, b)         # 落盘供追溯

while running:
    ts = wait_trigger()                       # 等光电/编码器上升沿
    # 多相机并行推理, 不等串行
    tasks = [threading.Thread(target=grab_and_infer, args=(c, ts)) for c in cams]
    [t.start() for t in tasks]; [t.join() for t in tasks]
    io.ack(ts)                                # 回告产线: 本帧处理完

三个"真实要点"值得强调:① 推理本地闭环——缺陷判定在 NPU 完成,超阈值毫秒级通知 PLC,不依赖网络;② 多相机并行——线程池而非逐个串行,避免节拍拖拍;③ 触发式抓帧——由产线光电/编码器边沿驱动,而非盲采,减少无效计算与漏检。

五、产品落地

电鱼智能的 RK3588 平台提供了从核心到整机的完整选择:

  • EFISH-CORE-RK3588 核心板:RK3588/3588J,6TOPS NPU,8/16GB LPDDR4,eMMC 64/128GB,板对板连接器对接载板,适合做视觉控制器的"算力心脏"。
  • EFISH-SBC-RK3588 单板机:核心板 + 载板一体化,自带 HDMI2.1、MIPI CSI、MIPI DSI、5G、千兆/2.5G 网、USB3.0,相机和网的接口都齐,适合中小视觉站直接上。
  • AI-BOX 系列算力盒(如 AI-BOX-RK3576):整机形态,带壳带散热,可直接挂产线电柜,省去结构件设计。
  • 若算力需求低一档,eFish-SBC-RK3568 同平台生态可平滑降配,BSP 与模型迁移成本低。

六、典型场景

  1. 3C 电子外观检测:手机中框划痕、PCB 焊点虚焊,多相机环拍,RK3588 本地跑检测模型,NG 件由 IO 推剔除。
  2. 锂电极片缺陷:涂布孔洞、划痕,产线速度快,靠触发式抓帧 + NPU 低时延闭环不掉拍。
  3. 食品药品包装 OCR:生产日期、批号字符识别,RKNN 量化分类/检测模型在边缘跑,结果经 ModbusTCP 回 MES。

小结

用 RK3588 做视觉控制器,本质是把"相机接入 + 本地推理 + IO 闭环"收进一块板:6TOPS NPU 扛推理、多路 MIPI/USB 扛接入、CAN/RS485/千兆扛对接。核心板与载板分离后,算法升级不碰接口与认证,整机交付更稳。上述方案已可在电鱼智能 RK3588 平台(EFISH-CORE-RK3588 / EFISH-SBC-RK3588)及 AI-BOX 系列整机上验证,具体型号参数以官方 ARM 产品手册为准。

更多推荐