刘 薇
(佛山市顺德工业与信息技术研究中心有限公司,顺德 528300)
目前,国内风扇叶焊接企业基本采用人工操作超声波焊接机,需要通过人眼识别定位缺口来将风叶固定到位,然后启动焊接机进行焊接。这些工作靠人工完成存在着劳动强度大、效率低、定位精度低、产品合格率低等问题。焊接机数字化是现代焊接发展的必由之路[1],但在如何实现贯流风叶超声波焊接自动化上,国内仍处于空白,被视为难以攻破的关键技术难题。为了满足焊接机自动检测的需求,视觉检测作为一种非接触式的检测技术被应用于贯流风叶焊接机中。
贯流风叶焊接机主要由超声波发生器、模具、电气系统组成。电气系统是开环控制,由PLC输出脉冲串,控制电机系统,驱动丝杆转动[2]。
视觉系统硬件主要包括相机组、光源、光源控制器、工控机等。相机组由相机和镜头组成,主要完成采集图像功能。根据焊机工艺要求,本系统采用两套相机组,中节和产品分别对应一组。本系统中被检测风叶半径47mm,运动速度8圈/分钟,精度要求为0.5mm,视场大小为400mm×300mm,选用130万像素相机,采用8mm的镜头,光源采用白色环形光源,通过GIGE千兆网实现图像数据传输,在VC6.0环境中基于MIL9视觉软件开发库进行软件开发。系统组成如图1所示。该系统用户操作界面如图2所示,主要功能模块包括操作功能模块、模板操作功能模块及显示功能模块。
图1 系统组成
图2 用户操作界面
焊接机分为上下两个工位,端盖、产品、中节三种不同的被检测对象。两组相机工作流程完全相同,以单个相机组工作流程为例其流程图如图3所示。
2.2.1 图像采集实现
1)利用Pylon相机提供的函数,实现图像采集功能,系统中两个相机分别对应一个图像采集线程,在系统初始化时将两个线程挂起
m_pImageProcessThread0->ResumeThread();
m_pImageProcessThread1->ResumeThread();
图3 流程图
2)当启动连续采集功能时则注册线程并启动线程
SetEvent(m_hLiveDispThreadOn0);SetEvent(m_hLiveDispThreadOn1);
3)在GrabImag0()和函数GrabImage1()中分别调用Pylon的采集函数PylonStreamGrabberQueueBuffer(),实现图像采集。
2.2.2 多线程同步
为解决图像采集与处理之间同步的问题,本文采用多线程同步技术,软件中设置四个变量IfFind、IfGrab和IfFind2、IfGrab2,分别用于上相机和下相机线程同步。以上相机系统为例阐述同步原理:在图像采集函数中只有当IfFind=true时才将显示缓存区中的图像数据拷入处理缓存区中,如果IfFind=flase则只采集图像并不处理图像。在模板匹配函数中,只有当IfGrab =true即图像已经采集完毕了,才进行模板匹配。
2.3.1 参数设置
在进行模板匹配之前,需要对相关参数进行设置来优化模板匹配算法,主要参数如下[3]:
1)MIL显示设置
MdispControl(MilDisplay1,M_OVERLAY_CLEAR, M_DEFAULT);
2)设置寻找模板的区域,提高效率
MpatSetPosition(ModelUp[i],0,110,710,100);3)设置模板匹配的匹配率
MpatSetAcceptance(ModelUp[i], 58);
4)设置模板匹配精度
MpatSetAccuracy(ModelUp[i],M_MEDIUM );5)设置模板匹配速度MpatSetSpeed(ModelUp[i],M_VERY_HIGH);6)用于模板匹配函数前和参数设置后,可整体优化模板匹配函数
MpatPreprocModel(MilImage1,ModelUp[i], M_DEFAULT);
2.3.2 多模板匹配
由于被检测物体是圆柱体的侧面,因此在视场范围内会有光照不均匀现象,不能用一个模板来匹配整个区域,因此需要采用多模板匹配技术,MIL9提供了多模板匹配函数,但是此函数具有局限性,其要求每个模板的大小必须一致,在实际建模中很难做到这点,因此本文采用了另外一种多模板匹配实现方法。从第一个模板到第N个模板,进行循环检测,遇到第一个匹配成功的模板则终止匹配,并显示模板匹配结果。这样不但解决了多模板匹配的问题,也能提高模板匹配的整体效率。
2.3.3 效率提升和数据转换
采用Pylon提供的函数,利用抠图技术,将采集图像的大小设置为640×480,这种方法既不损失精度又能提高图像处理的速度。在相同条件下,模版匹配速度由130ms~150ms缩短到50ms~ 70ms。
模板匹配后获得的数据是以像素为单位,需要经过标定转化为以毫米为单位的实际长度;标定后的数据为十进制,通过调用DecToHex()函数将其转化为串口通讯所需的十六进制。
本系统利用微软提供的串口编程控件MSComm实现串口通信[4]。
2.4.1 串口初始化
在串口初始化函数中,对MSComm控件的属性进行设置[5]
1)选择COM2:SetCommPort(2);
2)接收缓冲区:SetInBufferSize(1024);
3)发送缓冲区: SetOutBufferSize(1024);
4)设置当前接收区数据长度为0,表示全部读取:SetInputLen(0);
5)接收缓冲区有10个及10个以上字符时,将引发接收数据的OnComm事件: SetRThreshold(9);
6)波特率115200无检验位,8个数据位,偶校验,1个停止位:
SetSettings("115200,o,8,1");2.4.2 串口读写数据实现
通过OnComm事件来捕捉并检查通信事件,但是这种机制存在缺点,不论读还是写信号都会做出响应,为区分读与写的信号,在软件中设定如果检测到第4位字符为“R”,则判定是读信号的反馈数据;如果检测到第4位字符为“W”,则判定是写信号的反馈数据。设定信号中的6,7,8,9位分别对应上相机的连拍,上相机重拍,下相机连拍,下相机重拍四个信号,当判定为读信号的反馈数据后才对6到9位数据进行分解。系统通过判断这四位的状态来控制整个图像处理流程。
本系统采用松下FP系列PLC,所有的数据必须按照松下专用通讯协议MEWTOCOL来实现,主要用到的命令格式有:读取多触点状态RCP、写入多触点状态WCP、写入单触点状态WCS、数据写入PLC控制器WD[6]。
当被测缺口在不同位置出现时,本系统都能够快速精确的在可视区域内对其进行识别并返回角度偏差值,定位结果如图4、图5所示。
图4 上相机检测结果
图5 下相机检测结果
视觉系统应用于焊接机后,检测精度小于0.5mm,产能提高5%,产品合格率提高了1.5%,每6秒焊接一个中节,合格率超过99%,实现了自动化操作,最大程度上降低对人员身体健康的损害,项目技术处于国内领先水平,具有较高的工程应用价值和生产推广价值。
[1] 刘皓春, 黄伟, 杨敏, 等. 单片机控制的超声波焊接机研究[J]. 武汉理工大学学报, 2006(7): 121-124.
[2] 钟雪盼. 贯流风叶超声波焊接机伺服定位系统改造[J].机电信息, 2010(6): 106-108.
[3] 徐珂, 朱煜. 一种在线检测实时图像处理系统的实现[J].计算机系统应用2009, 18(4): 7-10.
[4] 龚建伟, 熊光明. Visual C+/Turbo C 串口通信编程实践[M]. 北京: 电子工业出版社, 2004.
[5] 章辉, 叶建芳, 叶建威. 基于MSComm 控件串口通信的实现[J]. 电子测量技术, 2011, 34(8): 126-129.
[6] 姚健, 宋志兵, 等. 计算机与松下PLC之间通讯接口软件设计[J]. 微计算机信息, 2002, 18(3): 47-48.