数控系统程序预处理技术研究*

2014-07-18 11:59李海英杨东升
组合机床与自动化加工技术 2014年1期
关键词:子程序数控系统调用

李海英, 杨东升,张 力

(1.中国科学院 研究生院,北京 100049; 2.中国科学院 沈阳计算技术研究所,沈阳 110168)



数控系统程序预处理技术研究*

李海英1,2, 杨东升1,张 力1,2

(1.中国科学院 研究生院,北京 100049; 2.中国科学院 沈阳计算技术研究所,沈阳 110168)

现代制造业对数控系统高精度和工件光洁度的要求日益增加,使数控程序复杂庞大,程序解码时间也随之增加。数控系统的程序预处理技术减少了程序的解码时间,保证程序执行的连续性,这就保证了机床加工的连续性和及时性。论文分别对循环预处理和程序预扫描这两项预处理技术做了较为详细的研究。首先阐述了一种对数控程序中固定循环进行预处理的方法,介绍了该方法的基本概念、原理和技术概要。然后详细介绍了数控程序预扫描的实现过程。并给出了拥有这两项预处理功能的数控系统对工件程序的解码过程。

解码时间;连续性;循环预处理;程序预扫描

0 引言

现代制造业对数控系统生产效率、加工精度以及工件的光洁度的要求越来越高,如果在耗时较多的解码和插补计算上处理速度不够快,加工过程会出现暂停,造成实际与编程进给不一致[1]。这就要求做为数控制造业的核心的数控系统有高速解码的能力,程序的预处理技术对减少数控程序的解码时间有一定的作用。因此,深入研究预处理相关技术有十分重要的意义。

循环预处理和程序的预扫描是对程序文件在真正解码前所做的预编译和相关处理。循环预处理是在系统上电后对系统里固有的循环代码做预编译,而预扫描则是对正在加载的程序文件作扫描和相关处理,通过这些处理来减少程序真正解码时的工作量从而减少解码的时间,保证为译码后续模块,即插补模块,提供足够的操作数据,避免加工过程中的暂停或实际进给与编程进给不一致。

目前,国内外数控系统生产商已经对预处理进行了研究,形成了多样化的程序预处理方式。本文着重介绍对循环(包括系统标准循环和用户循环)的上电后预处理和对工件程序文件的加载时预扫描,分别阐述了两种预处理技术的原理及具体实现方法,给出了加入这两种预处理功能后程序的运行过程。

1 循环预处理技术

循环是一种工艺子程序,是数控系统的一种简化编程功能。借助这些循环,可以有效实现特定的加工过程。这种编程方式可有效减少编程的重复劳动及因重复劳动引起的出错机率,提高编程的效率,可以最快的速度实现再次投产[2]。很多常用的数控系统如FANUC、SIEMENS、A-B公司等都为用户提供了循环调用功能,这一功能为用户编制相似或相近加工工艺带来了极大的方便,利用这一功能,用户就可以在相同的孔加工及相似的轮廓加工中进行方便的加工[3]。循环包括标准循环,用户循环,其中标准循环是系统生产商嵌入系统内的一些封闭的子程序,这些子程序实现固定的功能。用户循环是由最终用户自己编制的一些方便使用或需要重复使用的子程序或宏程序。

本文循环预处理的研究基于SINUMERIK 840D系统架构。SINUMERIK 840D具有高度模块化及规范化结构,其钻削、铣削和车削加工工艺的各种标准循环大大简化了频繁的重复加工操作[4]。

1.1 程序编译技术

现代数控系统的编译系统多采用解释方式,即每译完一个程序段时,直接将该段的译码结果作为输入量传给数控系统后续的插补模块进行处理,译码与后序模块是串行方式。由于循环包含的加工信息较为复杂,译码时间较长,在单一的解释方式译码环境中可能因后续模块所需数据不足而产生程序暂停。针对该问题,文献[5]提出了局部编译的解释方式,具体解码过程为:译码整体使用解释方式,而对于循环部分局部采用编译方式实现。这种方法解决了对循环大量信息进行编译时所可能造成的程序暂停现象。但这种方法将两种译码方式同时应用到一个程序的编译,在编译过程中需要一定的时间实现编译方式转换。

本文中的循环预处理借鉴了局部编译的解释方式,不同的是将编译方式从插入到解释方式过程中移出到系统上电后的空闲时间。如图1a显示了文献[5]中的所描述的编译过程,图1b显示了循环预处理编译过程。

图1 不同方式的解码过程

如图1b所示:系统每次上电后,首先预编译固有的循环文件,将编译后生成的中间文件存储到指定的位置,在西门子系统中,存放固定循环的目录为_N_CYCLE_SPF,存放预编译后中间文件的目录为_N_CYCLE_CYC。当在程序中调用某个循环时,再从中间文件里把编译后的循环调到缓冲区,供给插补模块。本文主要研究对标准循环的预处理。

1.2 循环预处理的实现

标准循环根据参数的不同可以分为如下三类:

(1)无参数循环;

(2)参数中不含轮廓子程序的循环;

(3)参数中包含轮廓子程序的循环。

下面分别说明循环预处理对这三类循环所做的处理。

1.2.1 无参数循环

此类循环没有参数,不需要外部传参,因此预处理简单,只需将_N_CYCLE_SPF中无参数循环指令群编译好,放入_N_CYCLE_CYC中,等待程序调用[6]。如图2所示。

表1 CYCLE81参数说明

1.2.2 参数中不包含子程序的循环

钻削循环和部分铣削、车削循环的参数不包含轮廓子程序,这类循环的参数的实际值必须在调用时才能得到,也即循环的具体轨迹必须由程序调用循环时的状态信息和循环参数具体值共同决定。因此预编译时需要用部分变量来暂时代替所需的状态信息和参数,在主程序调用时再将确定的状态信息和参数值传入已经预处理的循环程序,确定运行轨迹。

如CYCLE81 (RTP, RFP, SDIS, DP, DPR),各参数含义如表1所示[7]

图2 无参数的循环预处理

该循环实现的功能是:刀具以编程的主轴转速和进给速度钻削,直至输入的最终钻削深度。如图3所示。

图3 CYCLE81钻削定中心循环加工过程

该循环产生以下的运动过程[7]:

①以 G0 返回到相隔安全距离的基准面

②以在所调用程序中编程的进给率(G1)运行到最终钻削深度

③以G0 返回到退回平面

其中每个参数的具体数值是不确定的,在预处理所做的编译和上面所示的运动过程是一致的:

①以G0返回到W坐标RFP+SDIS的UV基准面。其中W、U、V由具体主程序调用循环程序之前的代码确定。

②以在所调用程序中的编程进给率运行到最终钻削深度DP,进给速度由主程序确定。

③以G0返回到RTP。

循环中包含上面三步的指令群,预处理编译指令群中的代码,其中的参数只能用变量代替,为所需的变量开辟内存。当主程序调用循环时,将所需参数的值传给上面开辟的内存对应的变量。在真正调用时生成供插补模块的轨迹信息。

1.2.3 参数中包含轮廓子程序的循环

参数中包含轮廓子程序的循环预处理较难,下面以SINUMERIK 840D中的CYCLE95为例详细介绍这类循环的预处理。

CYCLE95切削循环为典型的参数中包含轮廓子程序的循环。切削循环相比普通的固定循环指令,其指令中并不直接给出加工轨迹以及供插补模块的定位点坐标,该指令仅仅提供了生成实际加工轨迹的特征参数。通过这些特征参量,该类指令可以转化为若干由基本插补指令、功能指令所组成的指令群,而这些指令则包含基本的走刀路径以及特征点信息, 从而被系统所识别。它可以极大地减少编制程序的工作量, 但同时, 由于其所需参量较多, 轨迹复杂, 因此对该类循环的译码分析存在一定难度[8]。

CYCLE95 (NPP, MID, FALZ, FALX, FAL, FF1, FF2, FF3, VARI, DT, DAM,_VRT),该指令可以对由精车路线定义的轮廓进行粗精加工。

参数具体含义如表2所示。

表2 CYCLE95参数含义说明

在预处理时,因为没有轮廓子程序的信息,没有特征点的坐标信息,因此无法知道粗加工和精加工的运行轨迹。预处理的编译只能做将循环的指令群编译到不需要子程序轮廓信息的中间文件。更进一步的预处理需要配合程序预扫描过程。具体见程序预扫描和预处理的结合部分。

2 程序预扫描

2.1 程序预扫描技术

一些高级的数控系统,为了减少手工编程的工作量或提高数控加工程序的智能性,增加了具有高级语言特点的数控宏程序(以德国的 Siemens 和日本的 Fanuc 系统的宏程序最为典型)[9],宏程序的一大特点是具有转移和循环功能,包括 GOTO、IF、WHILE 语句,可方便地实现语句的无条件、有条件跳转和重复多次循环,减少编程语句[10]。同时,在数控程序中会调用子程序或外部子程序,这样可以减少重复编写代码,实现代码的重用,减少操作人员工作量。无论是跳转语句或者子程序调用,都要中断顺序执行,跳转到指定的代码执行。

在有程序跳转时,系统面临这样的问题:

(1)将要跳转到的代码在哪,怎样快速定位到要跳转的目标处,怎样的寻址才能保证程序的执行时间。

(2)可能将调用的子程序并不在内存,而在外存,这时就必须访问低速的外设[1]怎样才能减少这个访问的时间,保证程序的运行连续性。

在此可以应用程序的预扫描功能来解决这些问题,“预扫描”设计思想就是在工件程序解释执行前,先将整个程序扫描一遍,按顺序记录下所有程序的分支点[1],并调用系统服务找到分支跳转目标的地址记录下来,当程序解释执行遇到程序跳转时,它将根据预存内容,通过调用系统服务迅速恢复现场和调整文件指针,并将程序段内容读入内部工作区[1]。

2.1 预扫描的系统要求

在预扫描过程中需要程序通过系统调用访问低速外设,所以系统的文件管理系统必须提供两个系统服务,用来快速访问一个特定记录,包括内存记录或磁盘记录。其中一个服务为快速查询指定记录系统服务,另一个为快速访问指定地址内容系统服务。为了方便数据结构的设计,我们将快速查询系统服务称为IOFileFind,将快速访问指定地址的系统服务称为IOFileRead。

同时,必须在内存中开辟专门的内存块保存跳转标记号和跳转地址记录。称为程序分支表。每个表项由跳转标记号和跳转目的地址两项组成。

关键数据结构为:

Typedef struct{

int id;//跳转标记号

(file *)IOFileFInd(char filename);//调用第一个系统服务查找跳转目的地址,返回文件指针

}

2.2 具体预扫描过程

有了这两个系统服务和关键数据结构,就可以在打开程序文件时做预扫描处理。具体步骤如下:

(1)打开程序文件,同时扫描文件,在有程序跳转的代码行标号,标号递增且和数据结构中的id相对应。按顺序记录下所有程序的分支定位点。

(2)每记录一个跳转标号时,调用系统服务IOFileFind找到跳转地址,返回地址重定位指针。

(3)当程序执行时,遇到跳转标号时,直接到程序分支表中的数据结构中查询相应的id号,根据对应的指针找到目的地址。调用系统服务IOFileRead访问目标段。

如上,这样省去了在解释过程中扫描整个内存甚至外存寻找目标代码的时间,保证程序解释的快速及时 。图4分别给出了没有预扫描和有预扫描的程序编译过程,不考虑程序中断和恢复过程。

图4 不同的程序编译流程图

如上流程图可见,具有预扫描功能的系统把对跳转地址的查询放到了编译前,这样就节省了在正式编译时多次扫描内存甚至多次扫描整个外存的情况,减少了编译的时间。

3 预扫描和循环预处理的结合

对参数有轮廓子程序的固定循环的预处理中需要由轮廓子程序确定加工轨迹。这些循环需要循环预处理和程序预扫描结合来进行预处理。如典型的切削循环CYCLE95。该指令可以对由精车路线定义的轮廓进行粗精加工。

图5 切削循环粗精加工示意

CYCLE95 (NPP, MID, FALZ, FALX, FAL, FF1, FF2, FF3, VARI, DT, DAM,_VRT),NPP为轮廓子程序名,由NPP是代码确定精加工的轮廓。如图5,为CYCLE95循环加工示意图。

(1)下面为该粗精加工的步骤:

①刀具快速定位到“A”点。该点系统自动计算,等于最大(小)轮廓±精车余量±VRT。

②刀具以G00方式平行X轴由“A”点进到“B”点(轨迹1),切削深度由MID定义。

③刀具以G01方式和FF1指定速度由“B”点(轨迹2)加工到“C”点。

④刀具以G01/G02/G03/方式和FF1指定速度由“C”点加工到“D”点(轨迹3),切出工件轮廓。

⑤刀具以G00速度和轨迹快速由“D”返回“A”点(轨迹4),完成一个加工循环。

⑥重复以上过程,分5次进刀完成粗车加工。

(2)在预扫描阶段做的工作为:

①查找轮廓子程序。

②读取子程序,分析轮廓轨迹坐标点。

③根据子程序轮廓轨迹坐标点和循环参数,结合在循环预处理里已完成的工作,确定粗精加工的具体轨迹, 在程序调用该循环时再根据系统状态确定可供插补直接使用的数据。

这样,一个有循环轮廓子程序的循环在预扫描和循环预处理的结合处理下,减少了在真正编译时的大量工作,从而保证译码的及时性。

加上这两种预处理功能后的系统的程序执行过程为图6

图6 带两项预处理功能的程序执行过程

4 实验结果及分析

本实验PC机具有2.93GHz CPU、1.96G内存、Ubuntu 10.04操作系统。对LinuxCNC2.5.2中的RS274 G-code interpreter做预处理功能添加及程序解释实验。

将RS274 G-code interpreter单独编译,即SAI,原项目运行GUI为图7(a),加入预处理功能后运行的GUI为图7(b)。运行解释器后选择0可以对系统固定循环进行预处理,选项1是加载工程文件时同时预扫描工程文件。

(a) 原运行后GUI

(b) 更改后运行GUI图7 程序运行

本实验输入为RS274/NGC语言数控工件代码文件,输出为Canonical Machining Functions。将输入文件所含代码行数固定为10000。通过改变所含循环代码和跳转代码的行数来观察所需时间的变化。

设原解释器为SAI0,加入循环预处理功能的解释器为SAI1,加入预扫描功能的解释器为SAI2,实验结果如表3、表4:

表3 SAI0和SAI1执行时间对比表

表4 SAI0和SAI2执行时间对比表

执行时间坐标图如图8所示:

图8 (a)SAI0和SAI1执行时间对比图

图8 (b)SAI0和SAI2执行时间对比图

由对比实验可知,循环预扫描和程序预扫描功能能够正确添加到已有的解释器上。具有这两项预处理功能的解释器比原解释器的解释时间在一定程度上有所减少,减少的时间随程序的循环代码、跳转代码占总代码的比例不同而有所不同,一般而言,程序越复杂,即循环和跳转越多,预处理减少的编译时间越明显。此外,减少的时间也与系统的文件结构有关。

5 结束语

数控系统程序预处理技术的应用可以减少程序编译的时间,尤其对大型复杂的程序,保证了编译模块为插补模块提供足够的数据,从而保证程序的连续性。本文参考现在的数控编译技术和西门子数控系统的预处理技术,详细分析了循环预处理和程序预扫描技术的设计和实现。对复杂的固定切削循环同时应用了循环预处理和程序预扫描技术,最大程度的利用上电后的空闲时间和加载文件时的空闲时间来减少编译时间。这两项预处理技术已在LinuxCNC EMC2解释器上做了初步的实现,验证了其正确性和可行性。

[1]黄金庆. 数控系统中的软件预处理技术[J].机械与电子 1995(6):10-11.

[2]徐海峰,华闰祺. SINUMERIK 840D用户循环程序的编程方法[J].制造材料2012(5):59-60.

[3]王占领.基于子程序调用的数控加工技术[J].数控技术2005(7):139-141:65-66

[4]杨东涛. SINUMERIK 840D标准循环在实际加工中的灵活运用[J].机电一体化, 2010(17):66-67.

[5]曹宇男, 陈友东, 王田苗,等.数控系统复合工序车削固定循环的译码分析[J].机床与液压,2006(1):31-35

[6]SINUMERIK 840D FB_3. SINUMERIK 840D/840Di SINUMERIK 810D Special Functions (Part 3),2004,Siemens

[7]SINUMERIK 840D使用手册(循环编程手册),2004, Siemens

[8]程慎,阎威武,汤季安.数控车床复合固定循环的译码实现[J].机械制造 2009(6):46-48.

[9]刘春来.Siemens 802D数控教学系统数控程序解释器的开发[D]. 哈尔滨:哈尔滨工业大学, 2001

[10]徐巍. 高档数控系统的功能规划和关键技术研究[D]. 上海:上海交通大学, 2009.

(编辑 李秀敏)

申请优先审稿须知

为振兴我国机械装备制造业,弘扬民族科学文化精神,提升期刊质量,本刊从即日起,凡是符合本刊报道范围且同时受到“国家863计划资助项目”、“国家自然科学基金资助项目”、“国家重点科技攻关资助项目”等国家级基金资助项目的原创论文,可申请优先审稿,一经录用,优先发表,欢迎业内人事、专家、学者踊跃投稿(来稿注明:“优先审稿”字样)。

注:1.本刊正常审稿时间一般为一个月,优先审稿时间为15-20天; 2.本刊正常发表文章周期为来稿后6-8个月,优先发表文章周期为5-6个月。

——本刊编辑部

Research of NC Program Preprocessing

LI Hai-ying1,2, YANG Dong-sheng1, ZHANG Li1,2

(1. Graduate University of Chinese Academy of Sciences, Beijing 100049, China; 2. Shenyang Institute of Computing Technology, Chinese Academy of Science, Shenyang 110168, China)

Modern manufacturing has an increasing demands of high-precision of Numerical Control (NC) system and work piece surface finishing, it make the NC programs more complex and huge, also increase the decoding time. The preprocessing technology reduce the decoding time of NC code, it guarantees the continuity of the execution of the program as well the continuity and timeliness of machine tool. This paper made a detailed study of cycle preprocessing and program pre-scan. First elaborates a method of how to preprocess fixed cycles of NC system, it introduces the basic concepts, principles and technology overview of preprocessing. Then it introduces the Implementation of pre-scan. Last it shows how to decoding with these two preprocess method.

decoding time; continuity; cycle preprocessing; program pre-scan

1001-2265(2014)01-0075-05

10.13462/j.cnki.mmtamt.2014.01.021

2013-05-29;

2013-06-28

“核高基”国家科技重大专项(2012ZX01029-001-002);“高档数控机床与基础制造装备”国家科技重大专项(2013ZX04007031)

李海英(1987—),女,河北张家口人,中国科学院研究生院,硕士研究生,研究方向为数控技术,(E-mail) lhylovegy@163.com。

TH165,TG65

A

猜你喜欢
子程序数控系统调用
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
利用RFC技术实现SAP系统接口通信