搜索
写经验 领红包
 > 设计

上位机视觉是什么(上位机软件界面用什么做)

导语:机器视觉软件开发系列---上位机软件整体框架

典型的机器视觉软件应用中,典型的构造如下

视觉系统基础构造

典型应用中,下位机或者光电传感器触发上位机(视觉软件)拍照,上位机进行拍照、算法处理,处理结果给到下位机或者通过IO的方式。 上图成像系统1、3中图像数据可以通过很多种方式传输,常见的有Gige、USB3.0、1394a\1394b、CameraLink、CoaXPress等常见的接口,最常用的网口GiGe和USB3.0接口。图像数据获取成功后算法层面可以使用对应的算法,看个人习惯,我常用halcon、OpenCV或者VisionMaster。

整体框架流程

一个视觉软件(上位机)可以分为上面一个总的架构,UI层和运行流程,UI层是来进行参数配置界面展示数据的,运行流程总的流程组合,线程运行。

通常情况下,UI层我们看到的数据都是通过winform或者qt 拉取对应的控件进行设计,然后把数据保存到数据中心,这个时候数据在内存中,同时也会保存数据到本地,数据的存储格式常见的有xml、ini、数据库存储等方式。UI层设置好数据后,把数据加载到数据中心,数据中心把数据加载到运行流程,流程数据就会跟着改变的参数运行。

运行流程中通常是对流程的组合,初始化连接的时候会把相机、数据库、IO、PLC、MES等各种相关的资源进行连接,初始化OK后,运行取流线程、算法线程、存图线程。

在取流线程中,这里面就会跟下位机打交道了,在这里下位机通过读写寄存器的方式,取流线程会一直读PLC的寄存器来进行获取拍照信号。大概流程我以伪代码表示

while(true)

{

sleep(10);

If(!m_bExit)

Break;

Bool bCapture = m_Plc.ReadCaptureSignal();

If(!bCapture)

Continue;

//拍照

Image img = m_Camera.GetCaptureTimeout();

//其他队列

}

m_plc是封装的一个PLC通信的模块,接口ReadCaptureSignal读取拍照寄存器,如果获取到了就返回值,立即置位寄存器

当然,这只是一个总体的架构,细致的工作还有很多,我大大小小参与过上百个项目,有标准项目、非标项目、还有VisionMaster也有参与过开发,整体来看,只是每个软件复杂度不一样,拆开模块看,都是一样的。

本文内容由小春整理编辑!