3、图像采集与传输:GigE Vision与USB3 Vision协议对比、触发模式(软触发/硬触发)、帧率与带宽计算

各位工程师朋友,这一章我们来聊聊图像采集与传输。说白了,就是相机拍完照片后,怎么把数据又快又稳地送到工控机里。我见过太多项目,算法调得再好,结果图像传不过来,整个产线直接卡死。嗯,这里面的门道,咱们得好好捋一捋。

3.1 两大主流协议:GigE Vision 与 USB3 Vision

目前工业相机用得最多的,就是 GigE Vision 和 USB3 Vision。我个人习惯,选型时先看传输距离和带宽需求。你想想看,一个产线动不动几十米,USB3 的线缆长度限制就很头疼。

3.1.1 GigE Vision

GigE Vision 基于千兆以太网,理论带宽 1000 Mbps(实际有效带宽约 900-950 Mbps)。它的最大优势是传输距离远——用普通网线能到 100 米,加交换机还能级联。我在项目中遇到过一条 80 米长的产线,用 GigE 相机一点问题没有。

核心特点:
  • 传输距离:100 米(标准网线)
  • 理论带宽:1000 Mbps(约 125 MB/s)
  • 支持 PoE(Power over Ethernet),一根线供电+传输
  • CPU 占用较高,需要优化接收端
我的经验:GigE 相机一定要用高质量网线,尤其是长距离传输。我曾经贪便宜用了普通五类线,结果丢包率飙到 5%,图像花得没法看。后来换成六类屏蔽线,问题全解决。

3.1.2 USB3 Vision

USB3 Vision 基于 USB 3.0 接口,理论带宽 5 Gbps(实际约 3.2 Gbps)。说白了,它比 GigE 快得多,但传输距离只有 3-5 米(加延长线最多 10 米)。适合相机离工控机很近的场景。

对比项 GigE Vision USB3 Vision
理论带宽 1000 Mbps 5 Gbps
实际有效带宽 ~900 Mbps ~3.2 Gbps
传输距离 100 米 3-5 米
供电方式 PoE 或外部供电 USB 总线供电
CPU 占用 较高 较低(硬件加速)
典型应用 长距离、多相机 高速、近距离
注意:USB3 线缆质量差会导致带宽骤降。我见过有人用 2 米长的劣质线,实际带宽只有 1.5 Gbps,白白浪费了相机性能。建议用认证过的 USB3.0 线缆,长度尽量控制在 3 米以内。

3.2 触发模式:软触发 vs 硬触发

触发模式决定了相机什么时候开始采集图像。我把它分成两类:软触发(软件控制)和硬触发(硬件信号)。

3.2.1 软触发

软触发就是通过软件指令让相机拍照。比如在 C# 里调用 Camera.StartCapture(),或者发送一个 UDP 命令。优点是灵活,缺点是延迟不稳定——因为要经过操作系统调度。

// 软触发示例(C#)
camera.TriggerMode = TriggerMode.Software;
camera.SoftwareTrigger.Execute();  // 发送软触发信号
什么时候用软触发?我一般只在测试或低速场景用软触发。比如人工上料,操作员按一下按钮,软件触发拍照。产线速度超过 10 件/分钟,我就改用硬触发了。

3.2.2 硬触发

硬触发是用外部信号(通常是光电传感器或 PLC 的 24V 脉冲)直接触发相机。延迟在微秒级,非常稳定。我做过一个项目,产线速度 120 件/分钟,用硬触发一点问题没有。

// 硬触发配置示例(C++)
camera.TriggerSource = TriggerSource.Line0;  // 使用 Line0 作为触发源
camera.TriggerActivation = TriggerActivation.RisingEdge;  // 上升沿触发
camera.TriggerMode = TriggerMode.On;
硬触发接线要点:
  • 信号线用屏蔽双绞线,远离动力线
  • 触发信号电压 5-24V,注意相机 I/O 口耐压
  • 建议加光电隔离,防止干扰
我曾经踩过的坑:有一次硬触发信号线跟变频器线走同一个线槽,结果变频器一启动,相机就乱触发。后来把信号线单独走管,加磁环滤波,才搞定。记住,信号线一定要跟动力线分开走。

3.3 帧率与带宽计算

帧率(FPS)和带宽是选型的关键。你想想看,如果带宽不够,帧率再高也白搭。我一般按这个公式算:

带宽需求 = 图像宽度 × 图像高度 × 像素深度 × 帧率

举个例子:

  • 图像:1920 × 1080
  • 像素深度:8 bit(1 byte)
  • 帧率:30 FPS
  • 带宽需求 = 1920 × 1080 × 1 × 30 = 62,208,000 bytes/s ≈ 59.3 MB/s

换算成 Mbps:59.3 MB/s × 8 = 474.4 Mbps。用 GigE Vision(有效带宽约 900 Mbps)完全够用。但如果帧率提到 60 FPS,带宽需求就变成 118.6 MB/s(948.8 Mbps),GigE 就快撑不住了。

分辨率 像素深度 帧率 带宽需求 推荐协议
640 × 480 8 bit 60 FPS 18.4 MB/s GigE / USB3
1920 × 1080 8 bit 30 FPS 59.3 MB/s GigE / USB3
1920 × 1080 8 bit 60 FPS 118.6 MB/s USB3
4096 × 2160 10 bit 30 FPS 265.4 MB/s USB3(需压缩)
我的建议:实际选型时,带宽要留 20-30% 余量。比如计算出来需要 500 Mbps,那就选能跑 650 Mbps 以上的方案。因为网络开销、CPU 处理延迟都会吃掉一部分带宽。

3.4 知识体系总览

下面这张图是我自己整理的,把本章的核心逻辑串起来了。你一看就明白:

图像采集与传输知识体系 协议对比 GigE Vision - 距离远(100m) - 带宽 1 Gbps - 支持 PoE USB3 Vision - 距离近(3-5m) - 带宽 5 Gbps 触发模式 软触发 - 软件指令控制 - 延迟不稳定 - 适合低速/测试 硬触发 - 外部信号触发 - 微秒级延迟 - 适合高速产线 帧率与带宽 计算公式 带宽 = 宽×高×深度×帧率 选型要点 - 留 20-30% 余量 - 考虑网络开销 - 注意 CPU 负载 核心逻辑:根据距离选协议,根据速度选触发,根据分辨率算带宽 三者相互制约,需要综合权衡 典型应用场景 🔹 长距离产线 → GigE + 硬触发 🔹 高速近距离 → USB3 + 硬触发 🔹 测试/调试 → 任意协议 + 软触发 🔹 多相机系统 → GigE + 交换机

嗯,这一章的内容就这些。协议选型、触发配置、带宽计算,这三块是视觉定位项目的基础。我建议你拿到项目后,先按这张图的逻辑走一遍,基本不会出大错。

专注资料整理