典型的机器视觉软件应用中,典型的构造如下
视觉系统基础构造
典型应用中,下位机或者光电传感器触发上位机(视觉软件)拍照,上位机进行拍照、算法处理,处理结果给到下位机或者通过IO的方式。 上图成像系统1、3中图像数据可以通过很多种方式传输,常见的有Gige、USB3.0、1394a1394b、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也有参与过开发,整体来看,只是每个软件复杂度不一样,拆开模块看,都是一样的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。