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 占用较高,需要优化接收端
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 占用 | 较高 | 较低(硬件加速) |
| 典型应用 | 长距离、多相机 | 高速、近距离 |
3.2 触发模式:软触发 vs 硬触发
触发模式决定了相机什么时候开始采集图像。我把它分成两类:软触发(软件控制)和硬触发(硬件信号)。
3.2.1 软触发
软触发就是通过软件指令让相机拍照。比如在 C# 里调用 Camera.StartCapture(),或者发送一个 UDP 命令。优点是灵活,缺点是延迟不稳定——因为要经过操作系统调度。
// 软触发示例(C#)
camera.TriggerMode = TriggerMode.Software;
camera.SoftwareTrigger.Execute(); // 发送软触发信号
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(需压缩) |
3.4 知识体系总览
下面这张图是我自己整理的,把本章的核心逻辑串起来了。你一看就明白:
嗯,这一章的内容就这些。协议选型、触发配置、带宽计算,这三块是视觉定位项目的基础。我建议你拿到项目后,先按这张图的逻辑走一遍,基本不会出大错。