0 引言
数控 NC代码驱动机床运动实现加工的自动化 ,能够大大提高加工性能。但不正确的 NC代码会造成过切或欠切加工出废品 ,也可能发生零件与刀具、 刀具与夹具、 刀具与工作台之间的干涉碰撞 ,这显然十分危险。因此 ,迫切需要一种虚拟的仿真加工平台来检验 NC代码的正确性 ,NC代码编译器是组成数控虚拟仿真平台的核心部分之一。
国内外的 NC代码翻译技术已经比较成熟[ 1, 2 ]。针对数控代码标准的多样性 ,文献 [ 3 ]中提出独立的“NC代码规则库 ” 和“处理引擎 ” 的概念 ,并通过 TCL ( Tool CommandLanguage)来实现 EBNF定义的 NC程序语法规则 ,提高了 NC代码编译器的通用性[ 4 ]。本系统采用高级语言 Java开发 ,具有良好的平台无关性 ,通过 EBNF定义 NC程序语法规则 ,并以 ANT LR为底层分析工具 ,开发出一个通用性、 开放性强 ,效率高的 NC代码编译器。
1 NC代码编译器的技术基础
1 . 1 数控程序的组成及特点
一个完整的数控加工程序由若干程序段组成 ,而数控程序段又由若干条数控指令按照一定的结构构成。数控程序结构如图 1所示。
图 1中各个标号的含义如下: 1— 起始符; 2— 程序名; 3—程序主体; 4— 程序结束语; 5— 功能字; 6— 程序段。目前数控程序段常采用字地址程序段格式 ,上述功能代码 G、 M、 S即为“ 字地址 ” 。每个“ 字 ” 由“ 字地址 ” 和其后面的数字 (有的带有符号 )组成。G、 M及 F、 S、 T指令描述数控机床的运动方式、 加工类型、 主轴状态、 冷却液的开关、 进给速率、 主轴转速的设置和刀具的选择等。X、 Y、 Z、I、 J、 K为坐标指令字 ,分别描述刀心位置及加工轨迹中圆弧的圆心坐标等。数控程序段为典型的上下文无关文法 ,而且语法规则简单、 数量较少 ,可以通过 EBNF定义其语法规则。
1 . 2 ANT LR技术简介
ANT LR[ 5 ]能够简化编译器的构建。ANT LR是 LL ( k)文法的语法分析器生成器 ,其生成的目标程序非常直观且易于调试 ,文法表述能力相对强于 LEX/YACC。ANT LR通过让用户自定义词法分析器和语法分析器的规则 ,来生成相应词法分析器和语法分析器的程序。利用生成的词法分析器 ,先将输入的字符流转换成由短语组成的流 ,再作为语法分析器的输入 ,从而得出最终的结果 — — — 语法树。有了语法树便可以根据实际的应用要求求得执行结果。生成的分析器是以类的形式出现 (一个分析器就是一个类 ,所有功能都封装在类中 ) ,能方便地嵌入到应用程序中。
ANT LR总体框架如图 2所示。在使用 Antlr时 ,要先创建一个称为语法文件的文本文件 (. g文件 ) , 将自定义的词法分析器和语法分析器的规则全部写在里面。Antlr就是通过读取分析语法文件中的规则来生成词法分析器与语法分析器的。Antlr语法文件的工作过程如下:首先 ,定义词法分析器 Lexer类 ,在类中定义各种 Token;然后 ,定义语法分析器Parser类 ,在类中使用 EBNF语法 ,递归定义各种句子 , Parser类负责把读入的 Token串匹配成句子 ,翻译出 AST(抽象语法树 ) ;最后 ,定义用于处理 AST的 TreeParser类 ,根据 Parser类分析出来的 AST(抽象语法树 )进行动作。Antlr语法文件具体组成部分及规则解析参见文献 [ 6 ]。
2 NC代码编译器体系结构
NC代码编译器的首要作业归纳起来有两个:检错和翻译。检错 ,即依照该数控系统的编程规则和有关数控加工的知识 ,对 NC代码进行词法剖析、 语法剖析、 语义剖析 ,然后检查出该 NC代码的词法过错、 语法过错、 逻辑过错 (其间包含数据不合理 ,加工状况不合理等 )。通过检错期间 ,若 NC代码未被查出过错 ,则进入翻译期间。翻译 ,即从NC代码中提取操控机床部件运动的有关指令动作和状况信息 ,将运动的数据依照位移和速度的改变划分红一系列时刻片段[ 7 ],计算出各时刻片段的机床各坐标的位移 ,如:各种零件轮廓信息(起点、 结尾、 直线或圆弧等 )、 加工速度信息 ( F代码 )和其他辅助信息 (M, S, T代码等 )等 ,然后驱动机床模型的运动 ,完成 NC代码驱动的加工进程仿真。
根据以上对 NC代码编译器主要工作的分析 ,设计本系统体系结构如图 2所示。
3 NC代码编译器的研究与设计
根据面向对象的软件设计方法 ,该编译器可细分为词法分析、 语法与语义分析、 信息提取三个模块。
3 . 1 词法分析模块
词法分析的主要功能是将输入的 NC程序由字符串序列分解为单词序列[8 ]。词法分析的任务包括两个方面:检查数控程序内是否有非法字符;对数控程序的源代码进行格式整理。
数控程序中出现非法字符主要指以下两种情况:第一种情况为含有系统无法识别的字符。在本编译系统中 ,系统可识别的字符集为 { G, X, Y, Z, H, D, F, O, N, I , J, K,M, S, T,R. , ; , % } ,阿拉伯数字 0~99,若数控程序内出现“A” 等字符集所不包含的字符时 ,则认为数控程序含有非法字符。第二种情况是由系统可识别字符集组成的系统无法识别的字符串。这种错误一般是由于用户的误操作造成的 ,包括以下两种: 1)没有相应的数控功能与字符串相匹配 ,如“7100” ,“M890” ,“MFO 1” 等均属于这种情况; 2)数值格式输入有误 ,如 150正确的表达应为“150 . ” ,但若用户在中间输入空格则变成“1 5 0 . ” ,这种情况在本编译系统中也被视为是数值格式输入错误的一种。
对数控程序的源代码进行格式整理的主要任务是删除数控程序中的空白字符、 回车符、 程序注释等非加工信息字符 ,并将数控程序转换成便于代码编译程序进行处理的内部格式。在 ANT LR定义的. g语法文件中通过下面的代码来实现词法分析器的功能。
ANT LR中 的 规 则 分 为 公 有 型 ( public ) 和 保 护 型(p r otected)两类。上述 D IGIT规则定义了一个数字 ,其为p r otected类型 ,该规则不能单独使用 ,只能嵌套到其他规则中。该规则被 NUMER I C规则调用 ,定义任意整数。WS规则中的“ $setType ( Token . SKIP) ” 是代码调用一个 ANT LR的内置函数 ,告诉词法分析器 ,前面定义的这四种字符都一律跳过。完成该文件后 ,运行 ANT LR便可以生成相应的词法分析器 ,然后通过以下的循环可以依次将 NC文件的短语读出来。
3 . 2 语法分析和语义分析模块
数控语法分析模块的任务是在词法分析基础上将数控加通过线程及 Java 3D 对动画效果、 交互式操作、 形体组合、复杂的应用程序的支持等来实现仿真 (模型显示于界面右部 ) ,并可通过按钮和菜单对仿真的过程进行控制。图 6为系统运行实例。
本文由 伯特利数控文章 整理发表,文章来自网络仅参考学习,本站不承担任何法律责任。
2015-10
描述 本实用新型涉及一种吸尘系统,特别是一种应用于石墨机的吸尘系统。 背景 石墨机是一种加工石墨t旲具的机床。目如石墨加工方法有两种:机加工法和 压制烧结法。其中,机加工法是最常用的,这是因为石墨的可加工性能好,把石墨棒或 块用机械加工的方法制成所需要的各种模具形状非常灵活… [了解更多]
2015-10
1机床设计方案 1.1机床情况简介 该机床有X、F、Z这3个进给轴,1个主轴,1个容 量为12把刀的刀库,进给轴采用G0NA交流伺服电动 机驱动,主轴采用超同步异步伺服电动机,具体设计指 标见表1。 表1 … [了解更多]
2015-10
研究者采用虚拟样机对产品分析时,绝大多数都是对多刚体系统 进行分析,所获得的仿真结果是一种理想预测状态。为了提高对车铣加工中心的仿真准确度,更接近于实际情况,将有限元方法和虚拟样机相结合,对车铣加工中心的关键部件进行有限元分析,产生柔性体,与 机床其他部件形成刚柔耦合系统… [了解更多]
2015-09
现代生产过程中,数控加工中心被广泛的运用于自动生产 线中,数控加工中心的研制和生产应用已成为高技术邻域内迅 速发展起来的一门新兴的技术,为模具制造和精密加工提供了 前所未有的广阔应用空间,无论是模具设计者还是模具加工活 动参与者都需要对模具的加工性和设备应用情况有一定的了 解,充… [了解更多]
2015-09
当前人类随着社会的发展,各方面技术 都在不断的更新和完善,而数字化技术虽然是 近些年才逐渐兴起的,但在人们的工作生活中 己经发挥着巨大的作用。在机械制造方面,工 业革命的一次又一次推进使得该方面的发展己 经在不断的达到全新的高度。而机械制造本来 就属于工业化半自动产业,将数字化技… [了解更多]