问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

从零搭建机器视觉上位机:架构与模块设计详解(含UML类图)

创作时间:
作者:
@小白创作中心

从零搭建机器视觉上位机:架构与模块设计详解(含UML类图)

引用
CSDN
1.
https://blog.csdn.net/chenai886/article/details/144748280

机器视觉技术在工业领域的应用日益广泛,其上位机软件需要强大的架构设计来满足功能需求和性能要求。本文详细介绍了机器视觉上位机的模块设计、模块衔接方式以及代码设计思路,并补充了 UML 类图以展示模块的层次结构和衔接关系。

一、系统架构设计概述

机器视觉上位机的核心功能包括图像采集、图像处理、下位机通信、数据记录以及用户交互界面。为满足工业场景下的高性能、高可靠性需求,采用模块化设计,并通过事件驱动的方式将各模块连接。

主要模块划分

  1. 相机模块:采集图像。
  2. 视觉处理模块:分析图像并输出检测结果。
  3. 下位机通讯模块:将结果发送给硬件设备,完成控制。
  4. 数据记录模块:记录图像和检测结果到本地或云端。
  5. 界面模块:与用户交互,显示实时信息并提供控制功能。

二、各模块设计

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
+------------------+                      +---------------------+
| 数据记录模块      |                      |     界面模块         |
+------------------+                      +---------------------+
  

四、模块衔接

  1. 相机模块采集图像后,通过
    imageCaptured
    信号传递给视觉处理模块
  2. 视觉处理模块处理图像,输出结果后:
  • 将处理结果存储至数据记录模块
  • 将结果转化为指令,发送给下位机通讯模块
  • 将图像和结果传递到界面模块,实时显示。
  1. 下位机通讯模块的状态信号反馈到界面模块,显示执行结果。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号