基于HALCON的激光打标机读码_第1页
基于HALCON的激光打标机读码_第2页
基于HALCON的激光打标机读码_第3页
基于HALCON的激光打标机读码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于HALCON的激光打标机读码    摘要:激光加工在世界范围内得到了广泛的应用, 印刷电路板(PCB)行业亦如此,很多产品每一快PCB板上打上唯一的序列号以进行标记以便于在后续工序中对产品进行辨识,这种序列号往往为二维码或者条码。在激光加工具有高精度高效率的同时采用机器视觉对PCB板进行定位以及其打标内容的读取,使得这种方式具有极高的效率。 关键词:机器视觉 PCB 读码 激光 中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2013)03-0085-02 随着整个社会电子化程度的不断加深,越来越高的需求也带来了PCB行业的飞速

2、发展,对其生产率的要求也是越来越高,最具代表性的就是以表面贴片技术(SMT)为主导的PCB制造业1。如今整条SMT工艺生产线已经完全实现了自动化,在实现这种自动化的过程当中,需要对每一块PCB板进行一个唯一的标识,具有快速高效等优势的激光打标机能很好地满足这种需求以适应SMT行业的自动化。 1 典型激光打标机的基本结构 激光打标机结构如图1所示:7 整个设备软件基于Windows XP平台,采用Visual Studio2005作为开发工具,机器视觉使用HALCON9.0所提供的 C+库所提供的算子完成。硬件部分使用运动控制卡以及数字IO对电机以及气动元件进行控制,机器视觉部分的硬件主要是工业

3、相机、图像采集卡、光源以及光源控制器等构成。工作流程简化为PCB板由传送带上料之后被固定住,再由XY工作台根据所输入的坐标将PCB板送到相应的点,由激光器打标,之后再由工业相机读取所打内容。 2 HALCON以及其与Visual C+(VC+)的混合开发环境 2.1 HALCON简介以及其特点 HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包它灵活的架构便于机器视觉、医学图像和图像分析应用的快速开发。在欧洲以及日本的工业界已经是公认具有最佳效能的Machine Vision软件。HALCON有一千多个各自独立的函数,以及底层的数据管理核心构成。其中包括了各类滤波、色彩以及几

4、何、数学转换、形态学计算分析、校正、分类辨识、形状搜寻等等基本的几何以及影像计算功能。应用涵盖医学、遥感探测、监控到工业上的各类自动化检测。HALCON支持Windows,Linux和Mac OS X操作系统。整个函数库可以用C,C+,C#,Visual Basic和Delphi等多种普通编程语言访问。具有很好的硬件兼容性。 2.2 HALCON与VC+混合开发软件的基本流程 HALCON和Visual C+的混合编程是将Visual Studio作为整个视觉系统应用程序开发环境,通过函数调用使用HALCON图像处理函数库实现视觉系统核心处理功能,从而完成读码工作。程序设计流程为: (1)利用

5、HDevelop环境检查分析图像,建立视觉读码计算模型,开发视觉读码核心算法代码,对程序功能进行验证; (2)由HDevelop导出视觉测量程序代码,生成C+代码; (3)配置HALCON和VC+混合编程开发环境; (4)在VC+环境中通过程序语言的功能来开发整个读码程序以及界面的构建,完成程序功能的验证。 (5)编译、链接生成应用程序。 要在VC+中调用HALCON函数空,首先要在VC+中配置相应的交互编程环境:在project->settings的Link属性页中添加halconcpp.lib;在project->settings的C/C+属性页Preprocessor中添加目

6、录$(HALCONROOT)include,$(HALCONROOT)includecpp;在project->settings的Link属性页input下拉菜单中添加路径$(HALCONROOT)lib$halconarch。 3 软件开发 HALCON/C+接口提供了两种不同方式在C+中调用HALCON函数库:子程序调用法和面向对象调用法。子程序调用法就是在VC+环境下直接调用HALCON算子。面向对象调用法则是通过一系列类来调用HALCON算子。C+作为一种面向对象的语言,在使用是通常倾向于使用面向对象的方式来调用,因此必须对HALCON库中的算子进行封装。 在该读码系统中,图像采

7、集与现实主要在工业摄像机提供的二次开发函数库的基础上,采用VC+进行测量图像采集与显示功能的开发,实现工业相机参数控制、测量图像采集与显示等功能。而读码主要是通过采集到的图像进行读取,主要包括感兴趣区域ROI(Region of Interest)和读码函数两个功能模块2。 3.1 HALCON C+库所提供的读码相关算子 利用读取二维码的算子所写程序如下: create_data_code_2d_model(QR Code,DataCodeHandle); set_data_code_2d_param(DataCodeHandle,default_parameters,enhanced_re

8、cognition); find_data_code_2d(Image,SymbolXLDs,DataCodeHandle,ResultHandles,DecodedDataStrings); 所用到的在HALCON中为类型HObject的图像文件即通过相机所提供的API函数所提供。 在该激光打标机中,由激光机打完条码就立刻用工业相机读取所打的二维码值,PCB板由打标机上的夹具固定之后送到所要求的特定点进行打标,而每次打标点在相机视野中的像素坐标是固定的,因而在去读二维码时不用在整个相机视野中对二维码进行查找,只需在打标点在相机视野附近的一个区域内进行读码,这样做可以在很大程度上提升读码速度并

9、且防止误读。因而在读码前应在传入的HObject类型的图像数据截取以打标点在相机视野中像素点为中心,适当大于所打条码所占范围区域读码,即获取所需要的ROI,利用算子gen_rectang2、reduce_domain可实现该功能。即在所传入的HObject类型图像文件中截取所需要的区域34。 3.2 面向对象的开发方式 首先要将HALCON的C+库中所提供的算子封装成类,创建一个名为CUserHalcon的类, class CUserHalcon public: CUserHalcon(); CUserHalcon(); BOOL Read2DCode_(const HObject Image

10、,char* DecodeDataString); private: inline BOOL CheckHalconValue(int errcode) return errcode=H_MSG_TRUE; /通过HALCON算子的返回值判断视觉系统运行是否正常 int m_halcon_errcode; ; BOOL CUserHalcon:Read2DCode(const HObject Image,char* DecodeDataString) HLong DataCodeHandle,ResultHandle;HObject SymbolXLDs,Rectangle,ImageRedu

11、ced; HTuple row,column,phi,length1,length2; m_halcon_errcode=gen_rectangle2(&Rectangle,row,column,phi,length1,length2); /生成所要读码的举行区域 m_halcon_errcode=reduce_domain(Image,Rectangle,&ImageReduced); /将相机传入图片对象对应的举行区域截出用以读码 m_halcon_errcode=create_data_code_2d_model(QRCode,DataCodeHandle); m_hal

12、con_errcode=set_data_code_2d_param(DataCodeHandle,default_parameters,enhanced_recognition); m_halcon_errcode=find_data_code_2d(ImageReduced,SymbolXLDs,DataCodeHandle,ResultHandles,DecodedDataStrings); return CheckHalconValue(m_halcon_errcode); 开发基于MFC的应用的时候,只需添加一个CUserHalcon类的全局对象halcon即可调用其成员函数,实现读

13、码功能。如果需要用到HALCON C+库中其他算子的功能,如读一维码,则可把相应的算子封装在在CUserHalcon类中,以public成员函数的形式提供出来。与直接调用HALCON算子相比,减少了大量繁琐的参输入,提高了代码的复用率,通过不断将其他功能的算子封装进该类,也能方便地用在其他程序上,这能极大地提高软件开发的效率,体现出了C+作为面向对象语言的优势5。 读取条码只是该设备的功能之一,最终完成的界面读码状态以及显示部分如图2所示,读码的在读码的同事用GDI函数对读码位置以及范围在软件运行时进行了动态的标示,能更加直观地查看设备的读码状态。 4 结语 采用机器是觉得方法,设计开发的读码系统由硬件和软件两部分组成,激光打标机在对PCB板打标之前需利用工业相机捕捉PCB板上的MARK点以进行定位以及校准,实现该功能即可将学习MARK点模板,寻找MARK点模板的相关函数封装进CUserHalcon类中,便于使用。采用这种方案通过机器视觉来定位以及读取条码,尽可能大的发挥了相机的作用。将打标和读码无缝结合起来。 参考文献 1周德俭.SMT组装质量检测中的AOI技术与系统J.电子工业专用设备,2002(6):87-91. 2宿鸣明.电路板元器件的检测与识别D.大连:大连理工大学,2005. 3MVTec Software GmbH. H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论