车间数据缺失怎么办?机床零件在线识别
本文针对车间MDC系统和MES系统在获取制品信息时存在的数据缺失以及不准确、不及时的问题,提出了一种基于物联网的数控机床零件识别系统。通过建立机床加工程序库和零件标准程序库,运用正则表达式和有穷自动机对机床NC程序进行识别,从而间接实现加工零件识别。经验证,此系统具有准确性高、时效性强和维护成本低等特点。
1 序言
随着以数控机床为主体的物联网在航空制造领域的普遍应用,车间已经基本具备数控程序的在线下发、数控机床运行状态的在线监控以及设备运行效率的分析等能力。然而,工业物联网对在制品的识别仍缺乏高效且实用的方法,无法准确获取机床正在加工什么零件这一重要信息,而在制品信息对于生产线生产能力的计算、现场在制品的统计、作业时间的分析、零件质量过程的追溯等十分必要。
目前,对于机床在线零件识别技术,国内外主要是通过图像识别或RFID射频技术来实现,通过在机床上安装视频设备或RFID读取设备,对零件进行识别。但两种方法都需要安装硬件设备,安装维护成本较高;而且当零件外形相似或加工原材料时,会无法准确识别;另外,RFID标签在零件加工过程中会脱落,需要在加工完成后重新粘贴。为能够快速准确地获取机床加工零件信息,需要研究设计一套机床加工零件的识别系统,可以实现机床加工零件的在线高效识别判断,同时能够实时获得机床加工零件信息。
2 零件识别系统设计及数据流分析
(1)系统结构设计 数控机床零件识别系统按功能划分,分为7个子模块,即系统登录管理、机床综合信息管理、机床网络管理、机床程序库、标准程序库、程序对比分析和数据存储。系统登录管理包括登录验证和登录系统,机床综合信息管理包括机床信息显示和机床信息更新,机床网络管理包括机床网络开关和机床网络异常处理,机床程序库包括机床程序获取激活和机床程序传输与保存,标准程序库包括标准程序读取激活和标准程序同步,程序对比分析包括程序对比分析和程序遍历,数据存储包括分析结果存储和分析结果查询。系统总体结构如图1所示。
图1 系统总体结构
(2)系统数据流程分析 系统总体数据输入输出如图2顶层数据流所示。系统总体数据输入包括数控机床信息、数控机床当前加工程序、MDC系统标准NC程序、MDC系统服务器信息以及对比分析参数;系统输出的是对比分析结果。系统内部数据流程分析如图3一层数据流所示,由4部分组成,包括机床程序读取模块向机床程序库提供机床程序,标准程序读取模块向标准程序库提供标准程序数据,程序对比分析模块从机床程序库和标准程序库获取机床加工程序数据和标准程序数据,以及对比分析模块向数据存储模块提供分析结果。对比分析模块是系统核心模块,其内部核心数据流如图4二层数据流所示,对比分析模块分为4个进程,包括机床加工程序分解、标准程序库程序遍历与程序选取、标准程序分解和指令单元对比分析。主要数据流包括机床加工程序分解后向程序分析模块提供分解后的指令单元,标准程序库遍历程序后向分解程序提供标准程序文件,标准程序分解后向程序对比分析模块提供指令单元数据,对比分析模块技术结果并输出。
3 程序对比方法及识别算法
3.1 程序对比分析
运用标准程序库和机床的在加工程序进行比对和识别,判断机床当前加工程序对应的标准程序库中的程序以及这个程序对应的零件编号,主要对比方法是文件的遍历查找和正则表达式对比运算。
表1是常用的数控机床NC程序结构,主要由三部分组成,即程序头、主程序和程序结尾。其中程序头中包含了程序名称、路径和机床等信息,这些信息大部分为注释信息,对机床实际加工没有具体作用,并且可以随意更改,不能作为零件识别的依据,因此在程序对比识别中不包含程序头部分。
表1 NC程序结构
主程序部分是机床加工零件的指令部分,包括对机床主轴转速、刀具的运动、主轴的进给和床身的各轴向运动的指令。目前,数控加工程序编制都是通过CAD/CAM自动编制的,每行程序都带有行号,如N1、N2、N3……Nn,通过行号建立程序内容索引,根据索引进行逐行比对。
标准程序库内部存储结构如图6所示,包括4层:根目录、机床节点、零件、程序节点。其中机床节点包含机床名称信息,该节点与实际机床也是一一对应关系;零件节点包含历史加工的零件编号,此节点下的程序节点是历史加工的程序文件。
文本对比时,将机床加工程序库中MachineN下ProgramN节点的程序文件,与标准程序库中MachineN下Program1~N节点的所有程序文件进行遍历对比,最终将文本相似度最高的标准程序库中Program的父节点PartN的零件编号信息返回,其内容就是零件编号。
3.2 正则表达式对比算法设计
正则表达式可匹配一组满足要求的精确字符串,而不仅是单条精确字符串。因此运用正则表达式对数控机床NC程序进行识别,可以实现准确判断。
数控机床NC程序是运用G代码编写的,其语法特点是每个指令都是由字母和数字组成,根据G代码程序特点,将NC程序主程序部分按照行号分成n行,将每一行按照指令(代码+数字)分成u个单元。将标准程序的n行与机床加工程序的n行的u个指令单元进行逐一对比,每行中有d个不匹配单元,从第一行开始,到最后一行结束,得到最终的相似度S,具体算法如下
按照标准程序库索引完成比对计算后,得到若干个相似度S,取最大值SMAX,此时SMAX所对应的程序并不能完全确定与机床加工程序是同一零件的加工程序,只能表明是标准程序库所有程序中最接近机床加工程序的。假设标准程序库中没有与机床加工程序一致的程序,SMAX对应的程序虽然是最接近机床加工程序的,但不应被认定为是机床在加工
零件所用的程序,更不能将标准程序库中此程序对应的零件编号作为比对结果进行反馈。为了避免此类错误情况,系统设计增加验证机制,经过大量实验,对于完全不同零件的程序比对结果,其相似度S总会低于50%,因此当相似度值S<50%时,系统将判定为无效值,并扩大比对范围或终止比对计算。正则表达式对程序行号识别:程序行号标准写法为大写N与数字序号组合,使用正则表达式识别方案时,首先判断每行首字符是否是N,其正则表达式为^N,如果结果为真,则继续判断N后字符是否为数字,如果结果仍为真,则继续判断下一字符是否为数字,直到判断字符不是数字为止,q2为接受状态。行号识别用有穷自动机表达,如图7所示。图7 行号识别
正则表达式对指令单元的识别:NC程序是由G代码、M代码、F代码、D代码、I代码、J代码、K代码、L代码、S代码、Y代码、X代码、Y代码及Z代码等编写,基本规则都是指令代码与数字组合,运用正则表达式先判断指令代码再判断数字。指令单元识别用自动机表达,如图8所示。
图8 指令单元识别
4 系统开发及性能分析
由于C语言与Windows系统兼容性好,而且具有更丰富的.net类库,因此选择C语言进行系统开发。开发工具选择Microsoft Visual Studio 2010版本,.net框架选择Framework4.5版本,运行环境要求Windows7以上版本,数据库使用ORACLE10G版本。
通过测试零件在线识别系统,证明其可以实现对物联网机床当前加工零件的在线识别。对于标准程序库和机床加工程序库中记录的程序,零件识别率可以实现100%。分析系统运行性能,由于系统主要采用的是异步多线程结构,对每台机床单独建立线程,线程间相互独立,互不影响,所以可以确保系统的整体性能。单台机床程序识别响应时间受实际程序行数影响,平均在5s左右,由于机床更换数控程序周期取决于零件加工周期,而零件加工周期最少在30min以上,所以5s响应时间对系统不造成影响。
- prev: 数控铣床切削力在加工时,生产效率低下受哪些影响?
- next: 干数控怎样才能提高工件加工精度和加工效率?