APP下载

基于PMAC的微铣床数控系统中G代码编译研究*

2012-11-24卢晓红王鑫鑫贾振元

组合机床与自动化加工技术 2012年3期
关键词:数控系统校验代码

贾 旭,卢晓红,王鑫鑫,贾振元

(大连理工大学精密与特种加工教育部重点实验室,辽宁大连 116024)

0 引言

目前,随着PC硬件水平和数控软件设计水平的提高,PC在数控领域的应用不断增多,出现了多种基于PC机的开放式数控系统体系,其中PC+NC型数控系统以其灵活的扩展方式、良好的兼容性和开放的开发环境应用最为广泛[1]。所研发的微铣床在硬件结构上采用“PC+运动控制器”型开放式数控系统,即利用工控机作为主体,选用Visual C++作为上位机系统软件平台,将PMAC运动控制卡作为下位机插在PCI总线插槽上,通过专用电缆与各伺服单元和I/O单元连接,X、Y、Z轴方向采用伺服电机加滚珠丝杠的方式进行驱动,实现对三轴的精确控制。数控加工系统以代码为依据进行数控加工,数控代码是数控系统中的主要信息流,对数控代码进行译码的方式最主要有两种:解释和编译。解释即直接解释执行代码,或者将代码翻译成某种中间表示形式后再加以执行,速度较慢,且译码效果十分有限;编译则是将NC代码转换成数据流,并在计算机上运行该数据流,最终由控制系统直接读取并执行,速度快,译码效果理想[2]。在“PC+运动控制器”型开放式数控系统中,G代码需要被翻译成可供PMAC卡直接执行的目标程序格式,即完成数控代码功能的识别,并将提取的关键字转换为运动控制器中对应的运动函数中的参数,也就是将所有的命令转化为圆弧和直线插补。本文基于编译原理技术及软件工程思想,实现了基于PMAC的微型数控铣床控制系统中G代码接口编译功能,并通过具有复杂几何特征的微小零件加工对所实现的G代码编译功能进行了验证。

1 零件加工G代码的生成

数控编程作为数控加工准备阶段的主要内容之一,是指从零件图纸到获得数控加工程序的全过程,其主要任务是通过计算加工过程中的刀位点,来确定刀具运动的运动轨迹。目前数控编程主要包括手工编程和自动编程两种方法[3]。

手动编程主要用于几何形状比较简单(如平面、方形槽)的零件加工,而对于具有空间自由曲面、复杂型腔的零件,刀具轨迹数据计算相当繁琐,工作量大而且容易出错。自动编程,编程人员只需根据零件图样的要求,使用数控语言,由计算机自动地进行数值计算及后置处理,编写出零件加工程序单,加工程序通过直接通信的方式送入数控机床,指挥机床工作。自动编程使得一些计算繁琐、手工编程困难或无法编出的程序能够顺利地完成。实现自动编程的 CAM软件常用的有 UG,Pro/E,MASTERCAM等[4],可以实现多轴联动的自动编程并进行仿真模拟。对于微铣削加工,由于所加工的零件几何尺寸较小,形状较复杂,宜采用自动编程。

本文加工的零件首先在Pro/E平台上,根据其实际结构、尺寸建立三维模型,然后通过数控加工模块(Pro/NC)自动生成刀具轨迹和刀位数据文件。但所搭建的微铣床的数控系统并不能识别Pro/E生成的刀具轨迹和刀位数据文件,因此,还需要利用Pro/NC模块中的G_post后置处理器将刀位数据文件转化为数控系统能识别的G代码程序,进而完成零件数控加工程序的编制。

使用Pro/NC模块设计加工程序的流程如图1所示,具体流程说明如下[5]:

(1)建立制造模型:一般由设计模型和工件装配组成。

(2)设置制造数据库:包括机床设置、刀具设置、夹具设置等项目。

(3)定义操作:一般包括定义机床、定义CL输出坐标系、操作注释、定义起始点和返回点等。

图1 Pro/NC模块加工流程图

(4)定义NC序列:通过定义NC序列的类型、切削参数和制造参数,由系统自动生成刀具轨迹。

(5)校验及生成NC代码文件:通过仿真操作刀具轨迹,如果符合要求,则可以通过后置处理,生成G代码文件。

2 G代码编译的实现

为了完成微铣削加工,要求PMAC卡必须能够识别Pro/E生成的G代码,因此,需要对G代码进行编译。

本文利用VC++6.0开发的数控系统控制软件包含代码处理模块,如图2所示。编译时首先载入Pro/E生成的G代码文件并对其进行语法、语义检查,然后将其转换成符合PMAC要求的加工文件(.PMC文件),只有检查无误的代码才能进行转换,因此所设计的G代码编译程序包括两部分功能,即输入代码的校验功能和代码转换功能。

图2 控制软件代码处理模块

2.1 代码校验功能的实现

2.1.1 G代码的分类存储

待处理的G代码一般都是以文件格式存储的,这种形式不便于在程序中的处理使用。因此,本文采用结构体链表技术,利用命令结构体对读入的G代码进行分类存储,有效地节省了内存。

根据微铣床的设计需求和数控加工程序的特点,将所用到的G代码分为四组:G00~G04:加工类指令;G17~G19:半径补偿平面选择类指令;G54~G59,G92:坐标系选择指令;G90,G91:坐标方式设定指令。M代码仅用到M03,M04主轴方向指令和M00~M02程序停止及结束指令。最终设计的结构体如下:

2.1.2 G代码的校验规则

G代码的校验主要满足两项功能:①对出错的类型及修改方式进行精确定位;②给出错误提示,方便用户修改。代码的校验主要从语法、语义两方面进行检查。首先去除其中的无效字符,如注释信息、空格、N指令等;然后再按设定的规则对代码进行处理。为了满足微铣床加工的要求,最终遵循的校验规则如下:

(1)语法方面:要求每一命令行必须有指令且不能出现NGXYZ[IJ/R]HDFSTM以外的未知指令,同时要求指令应大写。

(2)语义方面:

①指令需按如下顺序排列:NGXYZ[IJ/R]HDFSTM;

②对指令的赋值应满足约定的数值类型且数值不可超量程;

③同组G指令不可重复;

④对N指令应逐行递增;

⑤对G02-03指令要求半径R不可为零且圆心应在起点与终点的垂直平分线上。

在上述校验规则的基础上,校验的流程图如图3所示。

2.2 代码转换功能的实现

PMAC卡允许执行机床类型的RS-274(G代码)程序,为了使PMAC能够运行标准G代码来控制机床运行,须根据加工需要编写特定的解释程序——PROG 1000,并将其下载到PMAC内存中。在此过程中,PMAC卡将G代码作为子例程来调用,指令Gnn是指调用PROG 1000的nn000行程序。Gnn随后的数值作为nn000行指令的参数对待,然后返回,执行该行G代码的余下部分[6]。

根据所搭建的微铣床系统需要满足的加工能力,编写了几种常见的 G 代码(G00,G01,G02,G03,G90,G91)编译程序(其他G代码的编译程序,还有待进一步开发)。编写的PROG 1000程序如下:

为了让PMAC卡能够识别校验后的G代码,编写的上位机软件还应具备如下功能:

(1)在经过校验的G代码开头添加坐标系、坐标轴定义并为该段G代码在PMAC卡内存中开辟缓冲区[7]。程序开头添加清空缓冲区(CLEAR)指令,末尾添加关闭缓冲区(CLOSE)指令,转换后的G代码如图4所示。

图3 代码校验流程图

(2)将转换后的G代码程序存储到PMAC加工文件(.PMC)中。

(3)调用PamcDownloadA()函数下载上述加工文件到PMAC卡中。

图4 转换后的G代码

3 加工实例验证

为对所设计的G代码编译程序进行验证,在搭建的微型数控铣床上开展微小零件的微铣削试验。首先在Pro/E中建立包含直线、圆弧等加工轨迹的三维零件模型并生成数控G代码,经过代码校验、转换等编译环节后,将其下载到PMAC卡内存中,完成微小零件的自动加工。

采用直径为0.2mm的铣刀在黄铜件上加工阿基米德螺旋线的超景深显微镜观察图片如图5所示。螺旋线中心起始圆半径0.5mm,每圈增量3mm,切削深度为100μm,螺旋线圆弧轮廓清晰,成型质量较高。加工实例证明了所设计的G代码校验程序及其与PMAC的接口实现方法达到了预期要求。

图5 加工阿基米德螺旋线实例图片

4 结束语

本文针对“PC+运动控制器”型开放式数控系统,利用编译原理、软件工程的思想及VC++6.0软件,设计实现了G代码编译模块程序。将G代码的编译过程分成代码的校验功能和代码转换功能。所设计实现的G代码编译模块程序为用户提供柔性化和集成化的现代控制;同时具有良好的通用性和较高的开放性。加工实例证明该方法能够实现具有复杂几何特征的微小零件的自动加工。

[1]周凯.PC数控原理、系统与应用[M].北京:机械工业出版社,2006.

[2]张学飞,李健.开放式数控系统G代码的编译模块设计[J].机械设计与制造,2010(10):87-88.

[3]桂艳,周建来,田桂祥.基于PC机的数控系统G代码的编译设计[J].淮海工学院学报,2009,18(4):14-17.

[4]张庆,姚锡凡.一种开放式数控系统NC代码解释器设计与实现[J].组合机床与自动化加工技术,2010(2):59-61.

[5]白晶,胡仁喜,陶春生.精通Pro/ENGINEER野火版3.0数控加工[M].北京:电子工业出版社,2007.

[6]PMAC User Manual.Delta Tau Data Systems Inc.1998.

[7]罗先全,黄学良,王伟,等.基于PMAC卡数控的G代码自动生成[J].现代制造工程,2007(7):14-16.

猜你喜欢

数控系统校验代码
创世代码
创世代码
创世代码
创世代码
炉温均匀性校验在铸锻企业的应用
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
电子式互感器校验方式研究