潘建峰,方映,吴胜旗,张素颖
(杭州职业技术学院,浙江杭州310018)
基于运动控制的开放式数控系统在3个层面体现了开放性。在硬件层面,系统硬件的接口采用统一标准,各模块可以根据实际生产需求组配伺服驱动器、伺服电机、主轴单元;在操作系统层面,系统的构建都基于标准的操作系统及其提供的API 标准接口函数。当硬件模块改变后只需更新相应驱动就可以在操作系统上运行;最后是数控功能软件层面上,用户可以在上位机上使用高级语言编制所需的人机交互、系统管理等非实时性功能模块,在下位机利用其自带语言编写速度预处理、插补计算等强实时性模块。在开放式数控雕刻机系统上,3个层面的内容无论如何变化,其信息流都是从雕刻图像到最后执行伺服加工的。而信息流的预处理对于数控系统的运行速度、加工精度等关键指标有着决定性影响。文中以基于GE-400-SV 运动控制器的开放式雕刻机数控系统为对象,研究了数控加工代码信息流预处理技术。
基于GE-400-SV 运动控制器的开放式数控雕刻机系统,以工控机为上位机,以运动控制器为下位机,通过PCI总线完成数据通讯。数控系统的任务就是对数控加工程序进行处理,以便使其转化为伺服执行机构可以识别的相应控制指令。在该系统中,利用工控机海量计算能力来完成零件程序生成、代码识别、功能码译码、半径补偿等非强实时性功能。利用运动控制器实时控制能力来完成速度预处理、插补计算、反馈控制等强实时性任务。零件加工程序信息在数控系统中处理过程见图1。
图1 数控程序信息流预处理模块流程图
数控雕刻机加工对象往往是具有物体特征的二维或三维数字图像,上位机预处理模块主要任务是将雕刻图纸中的数控加工程序要素提取出来,形成程序实体段。将加工程序段按约定规则编译成计算机能识别的数据形式,并按内码格式存放在译码结果缓冲器中。上位机从零件程序输入缓冲器内将加工信息以字符的形式逐个读入,识别出其中的文字码,编译出文字码所代表的功能,映射到相应译码结果缓冲器中。然后识别数字码,将其送到相应文字码的缓冲器单元中。因此,上位机预处理模块处理过程可以分为雕刻图形加工程序提取、代码识别和功能代码的译码三大部分。
数控雕刻图像一般都比较复杂,基本都是通过AutoCAD或Pro/E 等雕刻造型软件生成的。在该模块中,原始NC程序提取分为二维和三维两个部分。
(1)二维图形往往以AutoCAD 格式存在。Auto-CAD 提供一种数据交换文件DXF,它包含了对应的DWG文件所有信息,是一种ASCII 文本格式文件,可读性强,易于被其他程序处理,其实体段记录了图形中所有几何实体的几何信息。在上位机上,用Visual C++语言面向AutoCAD 进行DXF文件中实体段的读取,这些信息被提取出来后进行路径设置就形成了加工原始代码,其流程如图2所示。
图2 二维雕刻图像原始NC程序提取流程图
(2)三维零件的加工由于数据量大,加工路径复杂,可以充分利用上位机强大的运算能力进行三维造型和路径生成,在操作平台上配装三维软件专用后处理模块即可生成加工原始代码。
代码识别就是通过软件将取出的字符与NC代码字相比较,若相等则说明输入了该字符,并设置相应标志或转相应处理。所以首先要在上位机上建立一个NC代码字库。数控加工程序由多个程序段组成,程序段由一组程序字组成,而程序字则由地址符和数字符号组成。地址符和数字符号在计算机内一般是以ISO代码存储,但是ISO代码的排列规律不明显,不利于后面的译码处理。所以在设计时,先将ISO代码转换成具有一定规律的数控内部代码,形成一个内码集。这样识别代码时,首先将代码转化为内码,然后再到内码集中比较识别。在设计内码集时,先根据平时的经验将字符出现频率大致排个序,在比较时可按出现频率高低的顺序进行。同时将文字码与数字码分开处理,这样可以利用数字码内码在数值上等于该数字的BCD 码值的这个特性来提高识别速度。另外,在雕刻机系统中,都是采用CAD/CAM 后处理技术来形成数控加工程序的,其基本插补指令都是通过直线插补G01 来完成。所以在保留G01指令和手工编程下的圆弧插补G02、G03 基础上,可以省去大量的循环加工指令代码。通过这种处理,识别速度得到很大提高。代码识别部分的流程图如图3所示。
图3 数控加工代码识别流程图
2.3.1 译码结果缓冲区设计
数控程序字符经过代码识别建立了各功能代码的标志后,通过译码模块对各功能码进行编译处理。译码程序采用串行译码法逐个编译,而规定在数控系统运行前必须要预读两段加工程序才能正式加工,尤其在半径补偿方面,否则将导致加工零件直接报废。所以首先要在上位机上建立一个与数控加工程序缓冲器相对应的译码结果缓冲器。任何数控系统对各自的编程格式都有规定,并不是每个数控系统都具有ISO 标准给出的所有命令,一般情况下只具有其中的一个子集。该雕刻机数控系统中,由于数控雕刻本身加工特性,平面选择指令、螺纹加工指令、固定循环指令等都没必要设置缓冲区。同时,某些G代码不可能同时出现在一个数控加工程序段中,没有必要在译码结果缓冲器中同时为那些互相排斥的G代码设置单独的内存单元,可将它们进行合并,然后依不同的特征字来以区分。通过这样分组整理后,可以进一步缩小缓冲器的容量。在该系统中,将常用G代码分组为GA、GB、GC 三组,常用M代码分组为MX、MY 两组,在译码结果缓区中只要为每一组定义一个内存单元即可。这样,在后续处理过程中,只需到相对应的内存单元中取出数控加工程序信息就可以执行。
2.3.2 功能码译码与诊断
在译码过程中,要对数控加工程序进行集中检查诊断,只允许合法的程序段进入后续处理过程。诊断主要包括语法错误和逻辑错误两方面。其中语法错误主要指某个功能代码的错误,如N代码后数值超过CNC系统所规定的范围、F代码设定的进给速度越界等。而逻辑错误主要指一个数控加工程序段或者整个数控加工程序内功能代码之间互相矛盾的错误,如在同一个数控加工程序段中先后编入了互相矛盾的零件尺寸代码。在设计错误库时,一般先将常规错误预先写入,同时在实现过程中还会遇到许许多多的错误现象,这时要及时归类存库。在译码结果缓冲区和译码诊断库的基础上设计出诊断模块。在诊断过程中,通过变址方式完成各个内存单元的寻址。同时在ROM区中对应设置了一个格式字表,表中规定了译码结果缓冲器中各个地址码对应的地址偏移量、字节数和数据位数等,以此来提高寻址速度。
由于刀具总有一定的半径,在进行外轮廓加工时,要使刀具中心偏移零件的外轮廓表面一个刀具半径值,这就要在上位机开发出半径补偿功能。通常来说半径补偿有B功能刀具补偿法和C功能刀具补偿法两种。该系统采用补偿机能较高的C功能刀具补偿。
CNC系统所处理补偿方向有左补偿和右补偿两种,处理的基本轮廓线型是直线、顺时针圆弧和逆时针圆弧,各自组合后有共有9类程编轨迹的连接方式。同时,根据轮廓线型转接角α的不同,可以将C刀补的各种转接过渡形式划分为缩短型、伸长型和插入型。所以上位机半径补偿模块总共有54种刀具中心轨迹转接类型的判断和计算。
在切削过程中,刀具半径补偿的执行过程分为刀补建立、刀补进行、刀补撤消3个步骤。在刀补执行过程中,需要提取上一段代码和当前段代码的加工状态,以判断出目前所处的补偿阶段。同时需要预读后两段程序以便判断加工平面内的补偿方向,从而对当前段的刀具中心轨迹作出及时的修正。所以在C功能刀补处理过程中,设置两组刀补数据缓冲器,以便让至少两个数控加工程序段的信息同时在系统内部被处理。因此,在刀补时需要掌握3段代码的加工信息才可以进行刀补,半径补偿流程如图4所示。
图4 C功能刀具半径补偿流程图
在传统数控系统中,对每一段零件程序的加工都需要经历加速和减速两个过程,若加工的路径较短,其进给速度难以达到指令速度。在雕刻加工领域中,由于曲面形状复杂,频繁变化的进给速度必将导致机床各轴进给速度的不断变化,当由此引起的各进给轴速度变化过大时,将产生较大的几何轨迹误差。同时,由于机械运动部件存在惯性,速度频繁变化产生运动冲击将严重影响加工精度,并缩短机床和刀具的寿命。为解决此矛盾,GE-400-SV 运动控制器提供基于前瞻预处理的速度规划策略,在从上位机模块得到零件轮廓信息、刀具轨迹及加工信息的基础上,实时修正进给速度。图5所示为使用前瞻预处理功能模块规划速度前后的速度对比,可以看出:在同样加工精度的情况下,使用加减速前瞻性处理模块后执行速度有了较大的提高。
图5 加减速前瞻处理技术对加工速度提升效果示意图
通过设定机床的工艺特征参数,主要包括进给速度、最大加速度、允许拐弯时间等,结合GE-400-SV运动控制器速度规划预处理功能,可实现小线段连续轨迹加工。运动控制器前瞻预处理功能主要分以下3个子模块:
(1)参数初始化模块。调用GT_InitLookAhead函数,设置前瞻预处理功能模块的初始化参数,在该模块中,允许拐弯时间的设定是关键。时间常数越大,计算出来的终点速度越大,但会降低加工精度,在确保加工精度的情况下尽量减小允许拐弯时间。
(2)轨迹特征数据预处理模块。在该模块中,通过调用GT_AddLookData函数将轨迹特征数据载入预处理缓冲区,主要包括快速进给指令、直线插补指令、圆弧插补指令的终点坐标位置信息和圆心坐标位置信息,以及当前段所允许的进给速度值。
(3)终点速度计算模块。GE-400-SV 从预处理缓冲区提取轨迹特征数据后,依据参数设定要求,通过调用GT_Calvel 计算当前轨迹段的终点速度。该速度值经插补模块进一步处理后将输出给伺服驱动模块。
对于雕刻机数控系统而言,插补功能是其关键功能,控制系统其他任务大多都是围绕着插补进行的。GE-400-SV 内部已经封装了直线插补和圆弧插补算法,这些算法允许被外部高级语言调用。通过变量参数的传递使插补得到执行,这使得所设计的系统在易用性和实时控制等级两方面得到提高。
GE-400-SV 提供了多维直线插补指令、二维圆弧插补指令各6个,这些指令都封装在基于Windows的动态链接库ges.dll 内,该链接库可用C 语言调用。在开发上位机程序时,将ges.dll 头文件、ges.h 库文件复制到工程文件夹中,并添加库文件到工程中。同时在应用程序中加入函数库头文件的声明#include“ges.h”,便可将这些插补函数与数控系统标准插补指令G01、G02、G03功能一一对应。在该雕刻机数控系统中,调用GT_LnXYG0 执行二维直线插补,调用GT_LnXYZG0 执行三维直线插补,调用GT_ArcXY执行xy 平面内以圆心位置和角度为输入参数的圆弧插补,调用GT_ArcXYP 执行xy 平面内以终点位置和半径为输入参数的圆弧插补。
基于运动控制器的开放式数控雕刻机系统采用上、下位机分别实现原始NC程序提取、代码的识别和译码、半径补偿、加减速前瞻性处理、插补计算等功能,将操作系统的智能化和伺服加工的实时性有效结合在一起。在文中研究的基础上,可以根据雕刻需求的变化增加相应的信息预处理模块,如上位机可以再增加粗插补模块、下位机增加S 加减速模块等。
【1】郑华林,马建禄,潘盛湖,等.基于PC 运动控制卡的数控系统NC代码编译技术研究[J].机床与液压,2011,39(10):94-96.
【2】陈婵娟,刘海超.开放式数控系统软件译码模块的研究及实际开发[J].机床与液压,2010,38(1):47-50.
【3】罗青.数控代码光顺预处理方法研究[D].广州:广东工业大学,2007.
【4】邹小刚.高速数控系统研究平台构建及其预处理技术研究[D].扬州:扬州大学,2005.
【5】沙智华,张生芳,葛研军.通用数控代码编译系统研究与实现[J].中国机械工程,2003(5):763-766.
【6】固高GE系列运动控制器用户手册[M],2010.