乐于分享
好东西不私藏

工业视觉检测设备的标准软件架构

工业视觉检测设备的标准软件架构

很多设备出现卡顿、漏检、节拍不稳定,其实不是算法问题,而是软件线程架构设计不合理。工业视觉设备里最常见的一种架构是:多线程流水线架构(Pipeline Architecture

核心思想:采集 → 处理 → 控制 → 显示,各线程并行运行

一、工业视觉软件整体架构

典型系统结构如下:

相机线程图像队列图像处理线程结果队列运动控制线程设备动作

同时还有:UI线程/日志线程/通信线程

所有模块并行工作。

二、视觉软件线程结构

工业视觉系统通常至少有5个线程:

1.相机采集线程

2.图像处理线程

3.运动控制线程

4.UI显示线程

5.通信线程

这样可以避免:相机采集被算法阻塞

三、线程功能分工

1.相机采集线程

负责:相机触发、图像采集、缓存图像

典型流程:

等待触发采集图像写入队列

关键原则:采集线程必须非常轻量,只负责采集,不做算法。

2.图像处理线程

负责:图像算法、特征提取、定位计算

流程:

从队列取图像执行算法输出检测结果

如果设备有多相机:通常一个相机一个线程

3.运动控制线程

负责:发送运动指令、触发设备动作

例如:

视觉识别 → 坐标运动控制线程伺服轴运动

这样视觉和运动不会互相阻塞。

4.UI线程

负责:界面显示、参数设置、图像显示

原则:UI线程不能做算法,否则界面会卡死。

5.通信线程

负责:PLC通信、IO通信、设备状态

常见通信方式:TCPModbusEtherCAT

四、线程之间的数据传递

通常使用:线程安全队列(Queue

例如:ConcurrentQueueBlockingQueue

数据流:

采集线程 → 图像队列

图像队列 → 处理线程

处理线程 → 结果队列

结果队列 → 控制线程

这样可以保证,线程互不干扰

五、视觉软件流水线

工业视觉系统通常采用流水线结构:

Frame1 → 采集

Frame2 → 处理

Frame3 → 控制

Frame4 → 输出

不同帧在不同阶段运行。

优点:系统吞吐量最大

六、工业视觉典型处理时间

一个典型设备:

模块

时间

相机曝光

2 ms

图像传输

3 ms

图像处理

10 ms

运动控制

5 ms

总延迟:≈ 20 ms

如果多线程设计合理:设备节拍可以 < 50 ms

七、工业视觉常见错误

很多设备软件架构会犯这些错误:

错误1:单线程系统

采集 → 算法 → 控制

结果:系统卡顿

错误2UI做算法

界面线程执行图像处理

结果:界面卡死

错误3:线程无队列

直接共享变量:线程冲突

容易出现:数据错误

八、工业视觉软件推荐架构

设备厂常用架构:

采集线程图像缓存队列算法线程结果队列运动控制线程

UI线程独立。

九、C#视觉系统典型结构

如果用 C# WinForms/WPF,通常是:

Main UI Thread

Camera Thread

Vision Thread

Motion Thread

IO Thread

常用技术:TaskThreadConcurrentQueueasync/await

十、工业视觉软件设计原则

视觉工程师常用一个原则:视觉系统 = 实时流水线

也就是每个模块独立运行,这样系统最稳定。


往期热门文章:

机器视觉的经验核心:打光方法设计

三菱FX5U与西门子S7-1200谁更强(性能、通信、运控、软件等方面)

为什么中国90%的自动化设备不用CC-Link,而是EtherCAT?

海康VM基于颜色识别模块的分拣类项目实际操作分享(一)(附详细步骤解释)

你能分清CC-Link和CC-Link IE的区别么(附原理及应用场景)?

国产HMI触摸屏主要品牌有哪些,各自有哪些优缺点