锅炉筒节匹配算法系统设计和实现
2021-03-15余芸
余 芸
(上海工业自动化仪表研究院有限公司,上海 200233)
0 引言
目前使用的筒节匹配算法,主要是在要匹配的筒节端面上选取几个常用的点,工人手工测量该点所处端面的直径;测量完成后,依据经验,对相近的筒节进行焊接。显然,这种方法还是比较“粗放的”,主要依靠工人的经验完成,所选取的测量点与测出的直径值有一定的误差。
随着近年制造执行系统(manufacturing execution system,MES)在工厂应用的普及,锅炉筒节匹配需要往智能化方向发展,并提供便捷的查询方法。本文根据锅炉筒节多测点的特点,利用激光测距仪、平板计算机,设计了一套能精确进行筒节匹配的系统。
1 系统总体设计
根据筒节匹配算法的特点,本系统主要包括激光测距仪、平板计算机、MES服务器及客户端等部分。激光测距仪主要用于测量筒节端面直径,并通过蓝牙向平板计算机传递数据。平板计算机用于接收激光测距仪的数据,并通过WiFi传递给MES服务器。MES端服务器接收完数据,通过一系列匹配算法,把筒节匹配顺序通过网页形式展示给用户。系统结构图如图1所示。
图1 系统结构图
2 平板计算机软件设计
平板计算机程序流程如图2所示。
图2 平板计算机程序流程图
2003年,Android系统开始研发。2007年,Android 1.0上线。2018年,Android P测试版发布。经历短短15年发展,目前Android系统在智能手机市场的占有率高达90%以上[1-3]。为此,本系统采用Android studio作为开发工具,开发一款作为中间站作用的应用程序(application,APP)。Android studio作为谷歌官方推荐的开发工具,与eclipse开发平台相比,具有更高的开发效率[4]。
系统采用JAVA作为开发语言,以数据自动录入为核心[5],实现数据采集、数据传输、数据处理等功能。系统主要包括五个模块:用户登录模块、蓝牙通信模块、数据保存模块、数据显示模块、数据传输模块。这些模块协同工作,完成APP数据采集和传输任务。系统工作流程如下。首先,平板计算机和激光测距仪的蓝牙功能同时开启并能互相找到对方;然后,平板计算机接收激光测距仪发来的测距数据,保存在一个数组中;当一个筒节的两个端面的直径都测量完毕后,再将这组数据通过WiFi发送给MES服务器。MES服务器接收到数据后发送一个数据给平板计算机表示数据已经接收到,可以准备发送下一组数据。如果平板计算机超过一定的时间未收到反馈值,则重新发送数据给MES服务器。
3 锅炉激光对中软件设计
锅炉激光对中软件设计是整个系统设计的核心,由通信程序、匹配算法程序、界面显示程序等部分组成。系统首先接收平板计算机传来的数据,并把它保存在数据库中。然后,根据工号和筒节编号,从数据库中取出相应筒节两个端面的直径数据,进行匹配计算。
计算完成后,在界面上显示出匹配结果,并列出匹配角度。
3.1 MES端匹配计算算法
MES端匹配计算算法是软件设计的关键部分。筒节横截面的测量点设置如图3所示。
图3 筒节横截面的测量点设置图
两个筒节的匹配流程如图4所示。
图4 两个筒节的匹配流程图
具体的算法如下。以焊接纵缝线为0点,依次取7个点,分别测量直径。假设t0是0点位置测得的直径、t1是1点位置测得的直径,以此类推,t7是7点位置测得的直径,则t0,t1,…,t7是第一个筒节所测得的所有直径值。
类似地,w0是 0点位置测得的直径、w1是 1点位置测得的直径,以此类推,w7是7点位置测得的直径,则w0,w1,…,w7是第二个筒节所测得的所有直径值。
由于0和0′是一直线,测得的直径长度是一样的,即t0=t0′,t1=t1′,…,t7=t7′;w0=w0′,w1=w1′,…,w7=w7′。
系统首先从第一个筒节的匹配面0点位置和第二个筒节的匹配面0位置处匹配,计算数值代表两个筒节的8个内径差值之和。
s0=(t0-w0)+ (t1-w1)+ (t2-w2)+…+
(t7-w7)
如果任意两个位置的直径差大于5 mm,例如t0-w0>5 mm,则表示这次匹配不成功,直接退出开始下一个位置的匹配。
下一个位置从第一个筒节匹配面的纵缝线0点位置与第二个筒节匹配面的1点位置处开始匹配,计算数值代表两个筒节的8个内径差值之和:
s1=(t0-w1)+ (t1-w2)+ (t2-w3)+…+
(t6-w7)+(t7-w0)
类似地,如果任意两个位置的直径差大于5 mm,表示匹配不成功。
按此规律匹配计算8次,最后一次计算值为第一个筒节匹配面的纵缝线0点位置与第二个筒节匹配面的7点位置开始匹配:
s7=(t0-w7)+ (t1-w0)+ (t2-w1)+…+
(t6-w5)+(t7-w6)
取s0,s1,…,s7的有效值进行排序,得出的最小值对应的匹配位置就是两个筒节合适的匹配角度。为了防止应力集中,两个筒节焊接纵缝线是不能焊接在一起的,要有一定的角度偏移。所以当得出的排序结果s0、s1或s2为最小值时,焊接位置为第一个筒节的0点位置和第二个筒节的0′位置、1′位置或2′位置。
3.2 多个筒节的排序算法
一个锅炉至少要用3~4个筒节进行焊接。在选好要焊接在一起的筒节后,要对这些筒节按匹配算法循环进行匹配计算。对计算得到的最小值再次进行排序,得到筒节之间的匹配顺序以及匹配角度。n个筒节要进行2×n×(n-1)次循环匹配。多个筒节的匹配流程如图5所示。
图5 多个筒节的匹配流程图
3.3 锅炉激光对中软件实现
比起本地服务,Web Service服务具有平台无关性、跨越防火墙以及编程语言无关性等优势[5]。所以系统使用Tomcat服务器端进行MES的Web服务。采用JSON作为网络传输协议[6-9],SQL Server作为数据库存储测量到的筒节直径数据。MES端在进行与Android平台的通信传输中,使用JSON进行数据封装,创建Java Bean对象,把数据填充到对象中,转为字符串进行传输。考虑到系统的安全性、稳定性和可维护性,本系统采用分层架构开发,可以降低层与层之间的耦合度,减少数据互相干扰。本系统架构分为数据层和应用层。
①数据层:即系统后端,采用SQL Server存储数据。
②应用层:即系统前端,采用HTML实现静态页面的设计与布局;采用JavaScript 创建动态页面效果并与后端进行数据交互。
本系统主要实现筒节信息显示、匹配顺序显示和特定筒节匹配显示三大功能模块。
①筒节信息显示:输入工号信息后,根据工号查询数据库,得到该工号下的筒节编号以及每个筒节的两个端面所测得的直径数据。
②匹配顺序显示:选择要匹配的筒节编号后(大于2根),系统显示筒节的匹配顺序、匹配面以及匹配的角度。
③特定筒节的匹配显示:界面提供选择筒节编号和匹配面的选项,用于查询特定两个筒节是否合适匹配以及匹配的角度。
该系统用到的数据库表是筒节信息表,包含字段是工件编号、筒节编号、A0~A7(筒节A端面测得的8个直径值)、B0~B7(筒节B端面测得的直径值)。
4 系统测试
系统测试在锅炉焊接车间进行。首先打开平板计算机,出现登录界面;输入正确的用户名和密码后,进入主界面。打开激光测距仪,同时开启激光测距仪和平板计算机的蓝牙功能,平板计算机会出现蓝牙配对界面。
当激光测距仪和平板计算机蓝牙配对成功后,平板计算机的控制软件首先等待用户输入工号和筒节编号。输入完成后,激光测距仪把测得的筒节的直径值传递给平板计算机的控制软件。平板计算机控制软件接收到数据,并在界面显示。当所有数据接收完成后,点击发送按钮,把数据发送给MES服务器,然后清空界面。
MES端接收到平板计算机传来的数据,保存到数据库中。首先,选择工号,点击查询按钮,界面会显示
出该工号下所有的筒节编号以及每个筒节两个端面所测得的所有直径值。选择要进行匹配的筒节编号,点击匹配排序按钮后,界面的匹配排序表格栏里会显示适合进行匹配的筒节编号以及匹配的面,并列出每个角度的匹配计算得出的值。当用户想要了解特定两个筒节的匹配情况,可以在筒节选择下拉框选择要匹配的筒节,并点击匹配按钮,界面显示两个筒节每个角度按匹配算法计算出的值。
5 结论
系统采用激光测距仪测量筒节的直径,以代替传统的人工测量方法,减少了测量误差;在Android系统上开发了平板计算机控制软件,接收激光测距仪的数据并发送到MES服务器。服务器端采用Sping框架,开发了基于Java语言的激光对中软件,接收平板计算机传来的数据保存到数据库中,用排序、寻求最小值等算法进行匹配计算,并把结果显示在页面上。该系统已经在锅炉筒节车间进行现场测试,运行稳定,基本功能满足设计要求,可降低匹配误差,为进行筒节焊接的用户提供参考,减少工作量。