蔡 昆,吴文江
(中国科学院 沈阳计算技术研究所,沈阳 110168)
蓝天数控系统已很好的实现了对G 代码的解释与执行的功能,然而当需要加工新的工件时,用户需要现场编制G 代码,然后才能加工出理想的工件成品。这不仅费时费力,而且要求用户有较好的G 代码编程经验与水平。针对这一实际问题,文献[1]将图形编程和宏编程相结合,用图形化的方法形成对宏程序的调用指令,以辅助用户编程。不过此方法仅调用宏程序,在实际应用中有一定的局限性。
本文基于零件加工库,提出了一种流程化编程机制。该机制的主要任务是将零件加工库、流程化加工队列和数控系统三部分联系起来,进而实现一个简单的编程方法,以提高用户编程操作体验。同时该机制实现的刀具轨迹三维显示功能可以在一些情况下帮助用户及时发现程序错误,以避免浪费昂贵的加工工件、损坏刀具或夹具等情况的发生[2]。
通过对数控系统加工过程的分析,可将其按照加工工艺划分为多个步骤。例如:等高粗加工、曲面区域加工和精加工等。而多个加工工艺又可以组成一个更加复杂的加工过程。基于以上分析,本文将每个工艺步骤作为一个加工动作,然后组合多个加工动作生成一个加工队列。如果可以解释处理该加工队列,便能够以简洁明了的方式实现复杂工件的加工。而如何利用现有零件加工库和蓝天系列数控系统设计并实现这个思想便是本文流程化编程机制研究的重点。
流程化编程机制基于零件加工库中的零件库、辅助库和现有程序三部分。零件库中的零件加工动作是可配置参数的G 代码程序,比如一个加工圆孔的程序,可设置圆孔的半径和深度等参数值;辅助库中的辅助动作一般是几句G/M 代码,比如冷却液关闭、打开,主轴停止等;现有程序是已有的G 代码程序。
流程化编程机制创建了两个表:动作显示列表和G 代码程序文件路径列表,并形成一一对应关系。流程化加工队列就是由这两个表组成的。动作显示列表供用户了解当前队列的组成排列情况,文件路径列表是顺序生成G 代码文件,然后进行验证、执行的必要条件。
对于用户,流程化编程机制将G 代码程序透明化,取而代之的是一个流程化加工队列。队列中的动作元素是零件加工库中已有加工实例的有序子集。利用人机操作界面,用户可以简单方便的向加工队列中添加删除动作元素。通过解释处理加工队列,该机制能够按序生成相应G 代码程序,并逐个交给数控系统进行验证或执行,然后三维显示刀具轨迹,进而实现用户可视的流程化编程。
1.3.1 确定加工流程
为准确的完成工件加工,用户需首先制定一个合理的加工流程,即确定用到了零件加工库中的哪些零件加工动作、辅助动作和现有程序动作,并将其正确排序。
1.3.2 添加加工实例
零件加工库是以树状目录形式显示的,其中每一个底层目录项代表一个零件对象,每一个文件项都代表一个加工实例。用户可以在零件库中添加加工动作,并实例化:利用零件参数帮助信息,用户可以准确方便的设置零件各项参数,并根据参数间限定条件完成参数合法性检查。
1.3.3 生成加工队列
用户可以通过鼠标拖拽操作方便的将零件加工库中的加工实例添加到动作显示列表中,也可以通过双击将其从列表中删除或通过拖拽调整其在列表中的位置。同时G 代码文件路径列表也会做相应的添加删除调整操作。
经过以上三个步骤,用户便轻松的完成了流程化编程。
流程化加工队列相当于一个按顺序播放的音乐列表。利用队列中的文件路径列表和零件加工库,流程化编程机制可以生成相应G 代码文件:
(1)当处理现有程序中的动作实例时,只需简单的复制其内容到指定文件即可;
(2)当处理辅助库中的动作实例时,需要按序提取其中的G/M 代码并添加到指定文件中;
(3)当处理零件库中的动作实例时,需先将零件对应G 代码文件中的参数名替换成用户设置的值,再将其写到指定文件中。这里为便于定位参数名,零件库统一用G 代码中未用到的尖括号符号将参数名嵌在其中。这样就可以利用正则表达式" <[^<][^>]* >"方便地进行匹配。
图1 流程化加工队列处理流程
为了方便用户操作并避免对蓝天数控系统增加过大的负荷,流程化编程机制利用网络套接字对数控主机进行远程操作:G 代码程序验证与执行。为达到这一目标,该机制在数控系统中创建了一个联络员进程,该进程主要负责两台主机间的通信。
流程化编程机制将经过解释处理加工动作后生成的G 代码文件发送给联络员进程。同时为区分验证与执行操作,在传送G 代码文件后会继续发送字符’ ’或’1’来代表其正在运行的操作,并标示文件传送完毕。
联络员进程每成功接收一个G 代码文件,便会向数控系统人机操作界面进程发送一个信号。接收到该信号后,人机操作界面向任务控制器写命令。任务控制器通过周期的检测是否有新命令以做到及时响应处理。当任务控制器执行程序验证命令时会调用其内部的解释器模块生成命令队列。通过修改任务控制器代码,使其处理命令队列中的轨迹信息从而获得刀具轨迹点,并动态的向共享内存中添加。任务控制器处理程序执行命令时会周期的向共享内存中添加当前刀具轨迹点信息。
联络员进程负责将这些动态增加的轨迹点和在程序验证或执行过程中数控系统人机操作界面显示的错误信息发送给流程化编程系统,进而实现刀具轨迹显示和错误信息提示功能。
图2 流程化编程机制数据流图
在程序验证或执行过程中,人机操作界面会以选中的方式提示当前正在处理的加工动作,并高亮显示该加工动作对应G 代码程序的当前行,以便用户了解程序的验证或执行情况。例如,当程序验证出错时,用户可以快速定位错误位置,并根据错误信息做及时修改。
图3 显示的是一个正在执行程序验证操作的效果图。通过解释处理该程序对应的流程化加工队列可以完成四枚齿轮的加工。
图3 流程化编程人机操作界面
图4 是图3 中的流程化加工队列经过仿真后得到的刀具轨迹图。该轨迹图是在程序验证或执行过程中动态生成的,因此用户可以通过观察轨迹路线及时发现程序错误。
图4 程序仿真效果图
本文基于零件加工库和蓝天系列数控系统提出了一种流程化编程机制。该机制为用户提供了一个简单方便并且可视的流程化编程方法。利用刀具轨迹的三维仿真验证和即时显示功能,用户可以获得更好的编程操作体验,并有效减少错误的发生。当前流程化编程机制只是顺序处理流程化加工队列,而没有跳转、暂停和循环等命令动作。因此添加一个类似批处理的机制是今后工作的重点。
[1]高慧,吴文江,王品. CNC 系统中图形辅助宏编程的设计与实现[J]. 制造技术与机床,2007(8):68-71.
[2]Zongmin Chen. Development of OpenGL Based 3D Simulator for Computer Numerical Control,International Conference on Artificial Intelligence and Computational Intelligence,2010:319-321.
[3]彭健钧,郭锐锋,张世民,等. 数控加工仿真系统的研究与应用[J]. 小型微型计算机系统,2010,6(6):1241-1244.
[4]刘有余,王立涛,付立新,等. 虚拟数控轨迹仿真系统研究与开发[J]. 组合机床与自动化加工技术,2009(5):66-69.
[5]李琳茹,游林儒,刘少君. 利用OpenGL 实现数控系统加工过程的三维动态仿真[J]. 组合机床与自动化加工技术,2012(1):62-65.
[6]吴晶,史步海. 基于EMC2 的数控系统软件架构及通信机制分析[J]. 组合机床与自动化加工技术,2010(10):48-51.
[7]高杉,吴文江. 数控系统宏程序会话编程设计与实现[J]. 辽宁省交通高等专科学校学报,2010,12(5):19-22.
[8]周峰,宿超,刘敏. 远程数控仿真系统的设计与实现[J].计算机仿真,2006,23(8):236-239.
[9]方建忠,尹显明. 基于QT OpenGL 的轨迹仿真模块的设计[J]. 组合机床与自动化加工技术,2009(2):75-78.
[10][加]Jasmin Blanchette,[英]Mark Summerfield. C+ +GUI Programming with Qt4,Second Edition[M]. 闫锋欣等译. 北京:电子工业出版社,2008.