数控系统G代码解释器的设计与实现--控制网



数控系统G代码解释器的设计与实现
企业:控制网 日期:2006-07-22
领域:电气联接 点击数:7285



0 
引言:

  
数控机床可以保证产品达到很高的精度和稳定的加工质量,生产效率高,准备周期短。可以大大节省专用工艺设备,适应产品快速更新换代的要求,已经得到广泛的应用。


    数控程序记录了数控加工的一切必要信息:零件加工的工艺顺序,运动轨迹与方位,工艺参数(转速,进给量和切削速度)以及辅助功能(换刀,变速,切削液的开启)。在CNC系统中,
无论是自动生成还是手工编制的数控程序,计算机都无法直接根据数控程序进行加工,必须通过解释程序提取数据,转换为计算机可以执行的程序,以供计算机进行加工仿真或控制机床加工零件。因此数控代码解释器也就成为CNC系统的一个重要模块。


    对程序进行译码的方式主要由两种:编译和解释,编译系统速度快,结构复杂;解释系统速度慢,结构简单。目前,绝大多数的数控系统都采用解释方式对数控加工程序进行译码。因为数控系统虽然是一个对系统的实时性要求比较高的应用程序,但其主要的实时性任务是插补及位置控制,译码并不需要非常快的速度,尽管越快越好。考虑到解释程序结构简单,且足够满足系统需要,本系统采用解释的方式进行译码,相应的程序称为G代码解释器。


1 数控加工程序的组成和特点


1
1 数控程序的组成

   
国际标准化组织制定了字地址程序段格式ISO-6983-1-1982标准,其形式如下:

N...G...X...Y...Z...I..J..K...M...S...T...F...<CR>

   
其中,N是程序段的顺序号,G是准备功能字,X,Y,Z,I,J,K后为机床的运动坐标尺寸,第三部分是一些加工时的工艺参数(主轴转速,进给速度,刀具号等)。数控程序是由这样一组字地址组成的指令集,它包含加工时所需的一切信息,提供了数控机床实际加工零件时所需的一切信息。


1
2 数控程序的特点

   
分析数控程序的组成,可知数控程序如下的一些结构特点:


(1)
每一个数控程序段由若干个字组成


(2)
每个字由表示地址的英文字母及数字集合而成


(3)
每个程序段表示机床的位移或功能指令


(4)
在同一个程序段内,同一个字不能重复出现

 

 
依据ISO的标准的G代码,经分析后可以总结出G代码的文法和语法特点


(1)
数控程序段为典型的上下文无关文法,即语法单位可完全独立于其可能出现的环境。


(2)
数控代码语法规则简单,数量较少。


2 数控程序解释器的功能


(1)
语法检查,词法检查和逻辑检查:

   
语法检查主要是检查数控指令是否符合数控系统的语法规则。例如G代码中一般要求字母要大写,指令的某些参数必须要明确指定。程序开始有程序开始字符,结束有程序结束字符等。

   
词法检查主要是检查G代码中每一指令字中的地址符,及其后面的数字类型,数字范围是否符合G代码中的规则,如在程序中不能出现未定义的地址符号,地址符后的X,Y,Z的坐标值不能超过机床本身最大的工作行程

   
逻辑检查就是检查G代码指令必须符合逻辑,如圆弧插补指令中指定要插补的圆弧必须要存在。另外,加工过程中不得发生过切,干涉碰撞等


    (2)数据格式转换:

    
读入程序行,提取运动信息,将所有的程序行转化为机床运动的坐标信息和机床辅助功能指令


    (3)处理变量表达式:

    
支持变量和表达式,可以使用户编程更具灵活性,从而为用户带来更多方便。


    (4)控制结构处理:

    
解释器可以根据用户设定的具体条件来选择合适的执行路径以实现预定的控制逻辑。


    (5)处理子程序和宏程序调用


     子程序和宏程序的实现可以方便用户重用程序,提高效率。


3 数控程序解释器的实现

    
NC程序的解释思路是建立一个与数控代码程序行相对应的类对象,将此对象作为一个临时的数据缓冲区,将程序段的数控加工程序依次读出,经解释变换后写入类对象数组,这样,所有的NC信息文件就全部保存在类对象数组中,其中存放着加工时所需的一切指令和坐标信息。


    NC信息的结构如下:

struct Dot

{  

    int       command;     //G代码命令

    int       LineNumber;  //代码行号

    int       MyLineNumber;//解释行号

int       assitantcode;//辅助功能字

double    XPosition;   //相对于机械坐标原点的X轴绝对位置

    double    YPosition;   //相对于机械坐标原点的Y轴绝对位置

    double    ZPosition;   //相对于机械坐标原点的Z轴绝对位置

double    OXPosition;  //原始X轴位置

    double    OYPosition;  //原始Y轴位置

    double    OZPosition;  //原始Z轴位置

 

double    DXPosition;   //两点的X轴相对位置

    double    DYPosition;   //两点的Y轴相对位置

    double    DZPosition;   //两点的Z轴相对位置

double    IPosition;   //圆弧插补时的I值

    double    JPosition;   //圆弧插补时的J值

    double    KPosition;   //圆弧插补时的K值

double    angle;       //圆弧插补时的角度值

    double    radius ;     //圆弧插补半径

. . . . . .

 

    double    advancespeed; //进给速度

    double    rotatespeed;  //主轴转速

    BYTE      byMoveAxis;   //移动轴

};

    
另外对于子程序,它被主程序调用,执行结束后回到主程序中指定的位置,且子程序又可以调用自身或其它子程序,当每次完成子程序后,它又得回到相应的主程序中,其先进后出的特点,可以用栈来实现,因此在其被调用时建立一个子程序栈,其数据结构:

struct programme

{

int     name;    /子程序名

int     beginaddress /子程序的起始地址

int     endaddress   /子程序的返回地址

int     loop         /子程序的执行次数

};



其具体解释过程如下:

     (1)
逐行读入NC程序,进行预处理,过滤去除注释文字及空格,得到有效的字符程序段


(2)
执行语法检查,词法检查和逻辑结构检查。
 
 对依次读入的每一程序行,与G代码的词法规则,语法规则,逻辑结构进行比较检查。


     如果产生冲突,则显示出相应的错误信息,指出其错误性质和错误所在的位置。(1)(2)步软件流程图如图1所示。如所有的检查都已通过,整个G代码无任何词法,语法和逻辑错误,则进入第(3)步。

   
(3)从有效的字符段中提取相应命令和数据。

    
在确认整个程序没有任何错误之后,逐行读入G代码,从字符行中提取有效信息,把所有命令和相应的参数放在前面所定义的Dot类型中。如存在子程序调用或跳转时,就转入相应的子程序或跳转,逐行解释,然后再回到主程序中或跳转指令所指定的行号,继续逐行读入,逐行解释,这样整个G代码就展开为转化为Dot类的对象数组。其软件流程图如图2所示。

   
(4)执行语义分析,将所有命令转化为圆弧和直线插补。

   
读入Dot类对象的数组,将所有的非圆弧和直线插补的动作指令转化为圆弧和直线插补,其中的回参考点指令,固定循环等。如固定循环,就是一系列圆弧插补和直线插补的组合,根据其指令中的参数,完全可以计算出转化为直线插补时的每一步的进给量和圆弧插补的参数。

   
在最后所得到的一系列的类对象数组中,所有的动作命令全部都已转化为圆弧插补和直线插补这两种指令,所有的功能指令也都存放在相应的标志位中,所有的X,Y,Z的坐标都已转化为相对于机械坐标原点的值。


    总而言之,整个G代码解释的过程就是通过词法检查,语发检查,逻辑检查,然后提取命令和数据。最后是对具体命令进一步解释为圆弧和直线插补指令。



4 实际加工和仿真


    笔者用Visual C++ 6.0 语言在windows平台下开发了一套与运动控制卡相配套的数控雕刻软件.已经基本实现数控软件的基本功能,同时通过实际加工和图形仿真,充分验证了G代

码解释的正确性和可靠性。下面两张图分别为用雕刻机实际加工的飞机模型的相片和计算机

读入G代码,通过解释得到数据,传送给仿真程序而生成的图像

 

图3为实际加工飞机的图像。


图4为仿真图像和整个软件界面:                 


5 结论


    本文分析了G代码的形式,结构和特点,设计和实现了G代码解释器,并经过实践证明,代码解释器实现了对数控机床各种指令和功能的正确解释,完全可以用于计算机实际加工和仿真。


参考文献:

【1】王爱玲 沈兴全 吴淑琴 彭彬彬 编著 现代数控编程技术和应用 国防工业出版社

【2】   迈克 马特森 CNC编程原理与应用  机械工业出版社

【3】   Kenneth Louden 编译原理技术与实践 机械工业出版社

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: