机器视觉技术在工业领域的应用日益广泛,其上位机软件需要强大的架构设计来满足功能需求和性能要求。本文详细介绍了机器视觉上位机的模块设计、模块衔接方式以及代码设计思路,并补充了 UML 类图以展示模块的层次结构和衔接关系。
一、系统架构设计概述
机器视觉上位机的核心功能包括图像采集、图像处理、下位机通信、数据记录以及用户交互界面。为满足工业场景下的高性能、高可靠性需求,采用模块化设计,并通过事件驱动的方式将各模块连接。
主要模块划分
- 相机模块:采集图像。
- 视觉处理模块:分析图像并输出检测结果。
- 下位机通讯模块:将结果发送给硬件设备,完成控制。
- 数据记录模块:记录图像和检测结果到本地或云端。
- 界面模块:与用户交互,显示实时信息并提供控制功能。
二、各模块设计
2.1 相机模块
功能
相机模块是系统的入口,负责与工业相机通信,采集实时图像并将图像传递给视觉处理模块。
UML 类图
+------------------+
| CameraModule |
+------------------+
| - cameraSDK | // 相机SDK接口
+------------------+
| + initCamera() | // 初始化相机
| + startCapture() | // 开始图像采集
| + stopCapture() | // 停止采集
+------------------+
| + imageCaptured | // 信号:图像采集完成
+------------------+
衔接关系
- 输出信号:
imageCaptured
,将图像发送给视觉处理模块。 - 接收事件:用户界面可能通过调用
startCapture
和stopCapture
控制采集。
2.2 视觉处理模块
功能
视觉处理模块负责接收相机模块采集的图像,利用图像处理算法对图像进行分析,提取检测结果(如目标位置、检测是否合格等)。
UML 类图
+--------------------------+
| VisionProcessingModule |
+--------------------------+
| - algorithmLibrary | // 算法库 (如 OpenCV, Halcon)
+--------------------------+
| + processImage(image) | // 图像处理
+--------------------------+
| + processingFinished | // 信号:处理完成,返回结果
+--------------------------+
衔接关系
- 输入信号:接收相机模块发出的
imageCaptured
信号。 - 输出信号:
processingFinished
,将处理结果发送给数据记录模块、下位机通讯模块以及界面模块。
2.3 下位机通讯模块
功能
下位机通讯模块负责接收视觉处理模块输出的结果,并将结果转化为指令,发送给下位机设备(如机械臂、PLC)。
UML 类图
+-------------------------+
| CommunicationModule |
+-------------------------+
| - communicationProtocol | // 通讯协议(Modbus/TCP等)
+-------------------------+
| + sendCommand(result) | // 发送控制指令
+-------------------------+
| + commandSent | // 信号:指令发送完成
+-------------------------+
衔接关系
- 输入信号:接收视觉处理模块发出的
processingFinished
信号。 - 输出信号:
commandSent
,将指令状态反馈给界面模块。
2.4 数据记录模块
功能
数据记录模块负责将图像和处理结果保存到本地或上传至云端,便于追溯和分析。
UML 类图
+------------------------+
| DataRecordingModule |
+------------------------+
| - database | // 数据库接口
| - cloudAPI | // 云端API接口
+------------------------+
| + saveData(image, res) | // 保存本地
| + uploadData(result) | // 上传云端
+------------------------+
衔接关系
- 输入信号:接收视觉处理模块发出的
processingFinished
信号。 - 无输出信号:与界面模块共享记录状态。
2.5 界面模块
功能
界面模块是用户与系统交互的窗口,显示实时图像、处理结果和下位机状态,允许用户控制采集或调整参数。
UML 类图
+------------------+
| MainWindow |
+------------------+
| - uiComponents | // 用户界面元素
+------------------+
| + displayImage() | // 显示图像
| + displayResult()| // 显示结果
| + displayStatus()| // 显示状态
+------------------+
衔接关系
- 输入信号:
- 从相机模块接收图像。
- 从视觉处理模块接收处理结果。
- 从下位机通讯模块接收设备状态。
- 输出事件:用户交互事件(如开始/停止采集、设置参数)。
三、模块间衔接关系
模块间通信流程图
+------------------+ 图像采集信号 +---------------------+
| 相机模块 |--------------------->| 视觉处理模块 |
+------------------+ +---------------------+
| |
| | 处理完成信号
| v
| +---------------------+
| | 下位机通讯模块 |
| +---------------------+
| |
| | 指令状态信号
v v
+------------------+ +---------------------+
| 数据记录模块 | | 界面模块 |
+------------------+ +---------------------+
四、模块衔接
- 相机模块采集图像后,通过
imageCaptured
信号传递给 视觉处理模块。 - 视觉处理模块处理图像,输出结果后:
- 将处理结果存储至 数据记录模块。
- 将结果转化为指令,发送给 下位机通讯模块。
- 将图像和结果传递到 界面模块,实时显示。
- 下位机通讯模块的状态信号反馈到 界面模块,显示执行结果。