数控代码编译器的构造方法

文档序号:6295351阅读:208来源:国知局
数控代码编译器的构造方法
【专利摘要】本发明公开了一种数控代码编译器的构造方法,包括以下步骤:定义数控指令的中间语言格式;根据G代码、M代码格式,制定对应数控指令的词法规则和语法规则;编写数控代码编译器框架程序,编译G代码、M代码生成中间语言,将中间语言保存到目标文件中。本发明通过采用中间语言和ANTLR语言识别工具,数控代码一次编译可以多次使用,减少了程序运行时的计算工作量;在程序实际执行前完成编译,可以提前发现代码中的错误,避免了程序执行过程中发现错误造成的零件报销;通过定义语法规则、词法规则文件,可自动生成语法分析算法、词法分析算法,不需要开发人员编写;对于不同的代码规则,只需要修改规则文件,重新编译即可。
【专利说明】数控代码编译器的构造方法

【技术领域】
[0001] 本发明涉及一种代码编译方法,具体地说,涉及一种编译器的构造方法。

【背景技术】
[0002] 目前,数控机床通过执行数控代码完成对零件的加工,用户利用G代码、Μ代码控 制机床的运动,执行辅助操作。数控内核程序无法直接读取数控代码对零件进行加工,必须 先由预处理程序模块对零件加工程序进行预处理和译码转化为相应的加工指令,让数控系 统进行零件的加工,这一部分通常叫做数控代码编译器。数控代码编译器作为数控系统核 心模块之一,需要处理大量的数据,其运行效率直接影响整个系统运行的稳定性。
[0003] 常用的数据预处理方法有两种:解释方法和编译方法。解释方法对零件加工程 序逐条进行译码,在插补中断的同时,解释程序预先解释下一条程序,等本条程序插补完成 后,再将下一条预先解释好的程序的结果放到插补模块中。如果对一个程序段的解释过程 较慢而使机床具有一定的等待时间,那么加工出来的工件就会出现明显的粗糙度,且加工 效率低,不易处理各程序段间的转接,易形成加工停顿与过切,程序在中间部分出现的错误 将使尚未加工完成的零件报废。编译方法预先对要加工的零件加工程序全部编译,将结果 放入缓冲区中,当开始加工时,直接启动插补程序,从缓冲区中取出编译好的零件程序,进 行计算并控制程序加工。但是,这种加工方法需要较大的内存。
[0004] 现有的数控系统,加工程序每次执行都需要重新编译,增加数控系统运行时的计 算工作量;代码程序较大时,需要较大内存,影响数控系统的总体性能;程序执行时才会发 现代码中的错误,对模具加工程序、雕刻程序等大型数控程序,执行过程中才发现错误会造 成零件报销;不同的数控系统使用的数控代码规则不是完全相同,在不同的数控系统中需 要重复编写语法分析算法、词法分析算法。


【发明内容】

[0005] 本发明的目的在于提供一种数控代码编译器的构造方法,采用中间语言和ANTLR 语言识别工具,实现数控代码的一次编译多次使用,减少运行时的计算工作量;在程序执行 前发现数控代码中的错误,避免了程序执行过程中发现错误造成的零件报销。
[0006] 为了实现上述目的,本发明所采用的技术方案如下:
[0007] -种数控代码编译器的构造方法,包括以下步骤:定义数控指令的中间语言格式; 根据G代码、Μ代码格式,制定对应数控指令的词法规则和语法规则;编写数控代码编译器 框架程序,编译G代码、Μ代码生成中间语言,将中间语言保存到目标文件中。
[0008] 进一步,中间语言采用连续的字节流,通过定义固定数据长度进行分割。
[0009] 进一步,采用ANTLR语言识别工具。
[0010] 进一步,ANTLR通过语法描述自动构造自定义语言。
[0011] 进一步,ANTLR根据用户提供的语法文件自动生成相应的词法分析器、语法分析器 和树分析器。
[0012] 进一步,框架程序调用ANTLR生成的词法分析算法、语法分析算法,编译G代码、Μ 代码生成中间语言。
[0013] 进一步,ANTLR的词法分析和语法分析用同一个文件说明。
[0014] 进一步,词法分析时,将G准备字分为两类:一类是无参数的G指令,类型为G_ SINGLE的模态指令;另一类是有参数的G指令,类型为G_MULTI的运动指令。
[0015] 进一步,词法规则中用坐标字(C00RD)统一表示坐标的符号,用参数字(PARAM)统 一表不参数的符号。
[0016] 进一步,词法规则中定义数控代码中的数据只处理整数(INTEGER)和浮点数 (FLOAT)。
[0017] 与现有技术相比,本发明通过采用中间语言和ANTLR语言识别工具,数控代码一 次编译可以多次使用,减少了程序运行时的计算工作量;在程序实际执行前完成编译,可以 提前发现代码中的错误,避免了程序执行过程中发现错误造成的零件报销;通过定义语法 规则、词法规则文件,可自动生成语法分析算法、词法分析算法,不需要开发人员编写;对于 不同的代码规则,只需要修改规则文件,重新编译即可,不需要重写编写语法分析算法、词 法分析算法,能实现在不同的数控系统中的快速应用。

【专利附图】

【附图说明】
[0018] 图1为本发明的数控代码编译器对数控代码的处理流程示意图。

【具体实施方式】
[0019] 下面结合附图和具体实施例对本发明数控代码编译器的构造方法作进一步说明。
[0020] 本发明公开了一种数控代码编译器的构造方法,包括以下步骤:
[0021] 首先,根据实际数控系统需求,定义数控指令的中间语言格式。
[0022] 中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译 程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码, 即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种 形式,常见的有逆波兰记号、四元式、三元式和树。
[0023] 本发明中间语言采用连续的字节流,通过定义固定数据长度进行分割。中间语言 的基本格式为:(N PreG*T ? SM? ST? F? U? PreM*MoveG ? PostM*) +
[0024] 其中,各符号含义如下:
[0025] * :表示零个或多个。
[0026] ?:表示零个或一个。
[0027] + :表示一个或多个。
[0028] N:所在源代码行号。
[0029] PreG :为运动指令前执行的G指令,一个块中可以包含零个或多个。
[0030] T :为刀具设置指令,通常在运动指令执行前完成,一个块中可以包含零或一个。
[0031] SM :为主轴速度设置指令,一个块中可以包含零个或一个。
[0032] ST :为刀具速度设置指令,一个块中可以包含零个或一个。
[0033] F :为主轴速度设置指令,一个块中可以包含零个或一个。
[0034] PreM :为运动指令前或同时执行的Μ指令,一个块中可以包含零或多个。
[0035] MoveG :为运动指令或固定循环,一个块中可以包含零或一个。
[0036] PostM :为运动指令完成后执彳丁的Μ指令,个块中可以包含零或多个。
[0037] 下面将具体描述了中间语言的编码格式,如下表1至表5所示。
[0038] 表1代码Ν的编码格式
[0039]

【权利要求】
1. 一种数控代码编译器的构造方法,其特征在于,包括以下步骤: 定义数控指令的中间语言格式; 根据G代码、Μ代码格式,制定对应数控指令的词法规则和语法规则; 编写数控代码编译器框架程序,编译G代码、Μ代码生成中间语言,将中间语言保存到 目标文件中。
2. 如权利要求1所述的数控代码编译器的构造方法,其特征在于:中间语言采用连续 的字节流,通过定义固定数据长度进行分割。
3. 如权利要求1所述的数控代码编译器的构造方法,其特征在于:采用ANTLR语言识 别工具。
4. 如权利要求3所述的数控代码编译器的构造方法,其特征在于:ANTLR通过语法描述 自动构造自定义语言。
5. 如权利要求4所述的数控代码编译器的构造方法,其特征在于:ANTLR根据用户提供 的语法文件自动生成相应的词法分析器、语法分析器和树分析器。
6. 如权利要求5所述的数控代码编译器的构造方法,其特征在于:框架程序调用ANTLR 生成的词法分析算法、语法分析算法,编译G代码、Μ代码生成中间语言。
7. 如权利要求5所述的数控代码编译器的构造方法,其特征在于:ANTLR的词法分析和 语法分析用同一个文件说明。
8. 如权利要求7所述的数控代码编译器的构造方法,其特征在于:词法分析时,将G准 备字分为两类:一类是无参数的G指令,类型为G_SINGLE的模态指令;另一类是有参数的G 指令,类型为G_MULTI的运动指令。
9. 如权利要求1所述的数控代码编译器的构造方法,其特征在于:词法规则中用坐标 字(COORD)统一表不坐标的符号,用参数字(PARAM)统一表不参数的符号。
10. 如权利要求1所述的数控代码编译器的构造方法,其特征在于:词法规则中定义数 控代码中的数据只处理整数(INTEGER)和浮点数(FLOAT)。
【文档编号】G05B19/4093GK104281096SQ201310284869
【公开日】2015年1月14日 申请日期:2013年7月8日 优先权日:2013年7月8日
【发明者】孙克争, 周雪峰, 陈贤帅 申请人:广州中国科学院先进技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1