收藏 分享(赏)

机电一体化柔性实验平台nc代码编译系统的设计与实现.doc

上传人:cjc2202537 文档编号:1719707 上传时间:2018-08-19 格式:DOC 页数:5 大小:91.50KB
下载 相关 举报
机电一体化柔性实验平台nc代码编译系统的设计与实现.doc_第1页
第1页 / 共5页
机电一体化柔性实验平台nc代码编译系统的设计与实现.doc_第2页
第2页 / 共5页
机电一体化柔性实验平台nc代码编译系统的设计与实现.doc_第3页
第3页 / 共5页
机电一体化柔性实验平台nc代码编译系统的设计与实现.doc_第4页
第4页 / 共5页
机电一体化柔性实验平台nc代码编译系统的设计与实现.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、机电一体化柔性实验平台 NC 代码编译系统的设计与实现摘要:针对机电一体化柔性实验柔性平台的总体要求 ,在数控实验设备的软件系统中开发设计了 NC 代码编译系统.在分析 NC 代码特点和编译需求的基础上,综合正则表达式和数据库技术,构造了编译系统的设计模型.采用 Visual Basic 语言开发,分别从词法分析、语法分析、信息提取和处理三方面实现了对 NC 代码的编译,采用数字积分法,实现了 NC 代码执行模块的直线插补和圆弧插补.实际运行结果表明,该编译系统能快速、准确的编译 NC 代码,具有很好的实用性和开放性.关键词: NC 代码;编译;正则表达式; 数据库;数字积分法Design a

2、nd Realization of NC Code Interpreter System for theMechatronics flexible platformAbstract: In order to consummate the software of the flexible platform for Mechatronics design and experiment, design the NC code interpreter system. Based on analyzed the characteristics of numerical control program a

3、nd compiler requirement, a design model of NC code complier was presented by the technology of formula expressions library and database. With the language of Visual Basic, the design and realization of interpreter system were described from three aspect lexical analysis, syntax analysis, information

4、 draws and manages. Then use the DDA interpolation algorithm, complete line and circular interpolation by software. Application of the system indicates that the model can compile the NC code faster and correctly, and has high practicalability.Keywords NC(Numerical Control) Code;Interpreter;Regular E

5、xpressions;Database;DDA(Digital differential analyzer)0 引言随着科学技术的高速发展,我国数控技术的推广应用进入了快速发展阶段,需要大量从事此方面技术研究应用的人才.而目前教学用数控设备多都开放性较差,无二次开发能力,缺乏柔性,且不适合于多人实验.为了改善当前实验教学的环境,设计开发了集机、电、液为一体的机电一体化创新设计与实验柔性平台.通过客户机/服务器/ 工作台的网络工作模式 ,利用网络技术、仿真技术、CAN 总线技术等,实现了数控平台仿真及实际机床控制操作.本文针对本柔性实验平台中的数控代码编译系统进行了研究和设计.1 编译系统需求分

6、析与总体结构在本柔性实验平台中,NC 代码编译模块主要有两个用途:用于上位机中的柔性实验平台控制系统中.采用 PC 机作上位机,所有的控制信号、轨迹计算都由 PC 机的 CPU 完成,因此需要通过 NC 代码编译模块将通用的数控代码转变为系统所需要的控制信号;用于客户机的数控模拟仿真系统中.编译系统将输入的 NC 代码转化为一系列运动坐标,以控制模拟仿真系统中的机床运动.NC 代码编译系统的主要功能主要为查错和翻译.查错,即按照数控系统的编程规则对 NC 代码进行词法分析、语法分析、语义分析,以便及时更正错误代码.翻译,即从 NC 代码中提出控制机床运动的指令,计算出机床各坐标的位移,并转换为

7、仿真系统和下位机控制系统可以识别的命令,从而驱动仿真系统的模拟机床和实验平台的真实机床运动1.根据系统需求及对 NC 代码编译主要工作的分析,构造了总体结构如图 1 所示的编译系统.图 1 编译系统总体功能结构图2 编译系统的研究与设计在 Visual Basic6.0 开发环境下,采用面向对象的软件设计方法,利用正则表达式类库函数作为匹配和分析工具,结合数据库技术,设计了该柔性实验平台编译系统.编译系统分为词法分析、语法分析、加工信息提取及处理三个模块.2.1 词法分析模块词法分析的主要任务是:去除 NC 程序的空格及注释语句,检查数控程序中的非法字符,整理数控程序源代码格式.从而构造正确的

8、语法分析模块输入流.2.1.1 词法类错误分析NC 程序中出现非法字符主要有两种情况:含有系统无法识别的字符,即 NC 代码中通常使用的字符 N、G、X、Y、Z、I、J、K 、R 、T、S 、M、F、阿拉伯数字之外的字符.如 NC程序中出现“C“ 则被判为非法字符 2.由系统可识别字符组成的系统无法识别的字符串,此错误一般由用户编程错误造成,如“M270“、“GF01“等.2.1.2 词法分析程序设计本模块采用逐行读入分析方式,利用正则表达式模板类库检查词法.通过与所建立的描述规则匹配字符串进行对比匹配,识别程序中是否存在非法字符,即无法匹配的字符.词法分析程序设计步骤如下:读入一行 NC 程

9、序代码,对其进行预处理操作.剔出其中的无用信息(例如空格,注释);为 NC 代码中可能出现的字符建立关键字符匹配函数,利用RegExp 对象属性 Pattern 为每一关键字符建立一个描述匹配规则的字符串;读入预处理后的 NC 代码,利用 Test 方法将其与规则字符串匹配,若匹配成功则使用 Replace 方法将相匹配的字符用空格替换.当所有关键字符表都匹配完成后,判断进行匹配的一行程序中剩余字符是否为空,“是“,表示词法格式正确 ;“否“, 则在错误信息表中显示剩余无法识别的字符.词法检查程序流程如图 2 所示.图 2 词法分析流程图以词法分析中字符“G“分析为例,其正则表达式匹配函数设计

10、如下:Private Function MatchG(word As String) Dim objRegExp As RegExpDim objMatch As MatchSet objRegExp = New RegExpobjRegExp.Pattern = “Gdd“ 设置匹配表达式objRegExp.IgnoreCase = True 忽略英文大小的匹配objRegExp.Global = True 匹配所有搜索项If (objRegExp.Test(word) = True) ThenMatchG = objRegExp.Replace(word, “) 匹配成功后将能够匹配字符用

11、空格替换Else:MatchG = “The “ word “ must be as the format of Ga integer between 0099“ 错误提示End IfEnd Function2.2 语法分析模块语法分析是编译程序的核心,其作用是识别词法分析给出的单词序列是否符合给定的文法形式.2.2.1 语法类错误分析语法错误是指程序字格式虽然正确,但在程序段或程序的结构中不符合系统文法规则.语法错误主要有以下情况:指令错误 ,即指令格式虽然正确,但不符合代码规则; 结构错误,即程序段格式不符合语法规则,如地址字 X、Y 、Z 不能与 R 同时出现;指令搭配错误,如多个同一组

12、 G 代码出现于同一行,G00 或 G01 后无 X、Y 、Z 数值段 ,G02 或 G03 后无 I、J、K 数值段,00 后出现进给速度 F 等3.2.2.2 语法分析程序设计不同类型数控系统的 NC 代码略有不同,如刀具返回参考点指令,SIEMENS 系统使用 G74 指令,FANUC 系统使用 G28 指令 .不同系统部分语法规则也不同.为提高系统的开放性和通用性,将数据库技术引入语法分析程序中.通过建立数据库关键字符表、语法规则表来实现 NC程序的语法分析,实验人员可通过修改数据库内容来识别和编译不同类型的数控代码.(1)G 代码、M 代码识别在数据库中分别建立 G 代码、 M 代码

13、规则表,其表格如图 3 所示.图 3 G 代码规则表在代码规则表中检索加工程序中的 G 代码、M 代码.如果检索到相应的程序字,则对其识别,反之报错.一行程序字中允许出现多个不同组 G 代码( 本系统最多为 3 个),因此在 G 规则表中对其进行组别分类.当检索到某一 G 指令时 ,同时读出其组别并记录,当一行代码中出现同组 G 代码时则报错4.(2)数控代码加工指令搭配及结构检查按照常用的指令书写顺序,建立语法格式检查数组 C(14),如表 1 所示.表 1 语法格式检查数组元素分布表数组 0 1 2 3 4 5 6 7元素 N G G G X Y Z I数组 8 9 10 11 12 13

14、 14元素 J K R F S T M按照属性类别归约和识别经过词法分析的程序字,如果在程序中出现某个程序字,那么其对应的属性数组元素值为 1,否则为 0.例如,加工指令代码为 N10 G90 G01 Z40.0 F2000;则归约出的字符串为 111000100001000.在数据库的代码规则表中,检索归约出的字符串.如果检索到相应的字符串,说明此行程序符合语法结构,否则报错.2.3 加工信息提取及处理模块2.3.1 加工信息存储经过词法检查和语法检查后即进入加工信息提取及处理阶段,主要提取运动控制指令和数据参数,通过处理生成加工指令序列.加工信息提取及处理过程: 建立一多维动态数组保存命令

15、控制字和命令功能值.通过识别直线、圆弧、非执行指令三类命令控制字,获得加工轨迹的主要代码.读出命令控制字后的数据参数并存储在相应的变量中,传递给加工处理函数.以几个常用 G 代码为例处理如下:Dim Gcode As String 存放 G 关键字数值Dim AimX As String 存放数据点 X 坐标数值信息Dim AimY As sting 存放数据点 Y 坐标数值信息读命令控制字(如 G)后的功能字符串,X、Y 等数据参数后的目标坐标值Gcode = Right(NCstr(i, 1), Len(NCstr(i, 1) - 1) AimX = Right(NCstr(i, 4),

16、Len(NCstr(i, 4) - 1)Select Case GcodeCase “00“ 快速定位Call LinePoint(AimX, AimY, AimZ) 调用快速移动函数Case “01“ 直线插补Call Line(AimX, AimY, AimZ) 调直线插补函数Case “02“ 顺时针方向圆弧插补Call RoundR(AimX, AimY, AimI, AimJ)2.3.2 插补算法研究本系统既包括虚拟仿真系统也有真实机床环境.在虚拟数控系统中,插补过程由软件生成,真实机床控制中采用了上位机粗插补和下位机精插补的模式.因此,需要编制直线插补程序和圆弧插补程序.本系统采用

17、了数字积分法(DDA)进行插补计算.(1)数字积分法直线插补算法以第一象限直线插补为例:设直线起点为 (0,0),终点为(xe,ye),插补合成速度为 v,动点在 X 轴和 Y 轴方向的速度分量分别为 vx 和 vy,则在 t 时间内,x 和 y 的位置增量参数方程为:其中 (1)设从起点到终点经过 m 个长度为 t 的单位时间,则(2)由式(2)中的 mK=1,有 K=1/m.即在加工直线时,将终点坐标值 xe、ye 缩小为 K xe、K ye,而后经 m 次累加就可得到符合直线轨迹的坐标值 .其算法为:取各方向位移最大值 P,设 P= xe,则 x 轴为参考轴,插补步数为 P.设置一积分累

18、加寄存器 J,其最大容量为 xe.设初值 J=ye,每插补一次 J=J+ ye,若 Jxe,则沿 x、y 轴分别进给一步,并使J= J xe;若 Jxe,则只沿 x 轴进给一步,累加器值不变.直至插补完 P 次结束.(2)数字积分法圆弧插补算法圆弧插补时,要求刀具沿圆弧切线等速运动.设在第一象限逆圆圆弧某一点 A(xi,yi)的速度为v,圆弧半径为 R,则它在 X、Y 坐标方向的分速度为:(3)其中 K=v/R.某一时刻的动点坐标为:(4)其算法是:设积分累加寄存器 Jx、Jy,比较寄存器,R 亦为动点 xi,yi 的极值.插补运算时,Jx= Jx+ xi,若 JxR,则 y 向进给;Jy=

19、Jy+ yi,若 JyR,则 x 向进给5.和直线插补不同的是圆弧插补的插补次数不定,其判终条件是判断动点是否与目标点重合,即 x、y 两个方向的坐标值都必须分别和目标点 x 和 y 坐标吻合,当一个方向到达终点后,则停止该方向的插补运算,直至所有方向都与总店重合时插补结束.3 结束语NC 代码的编译是所研制的柔性实验平台系统中的重要组成部分.本文在分析了 NC 代码特点的基础上,运用编译原理的基本知识,设计开发了适合本柔性实验平台的 NC 代码编译系统.以正则表达式作为 NC 程序词法分析和语法分析的基本工具,使程序模块简洁易读,具有很好的可修改性.利用数据库技术,进行语法分析,充分利用了数

20、据库便于修改的优点,可实现不同类型数控系统关键字的识别,以及不同语法规则的代码识别.从而满足不同实验人员的要求.通过编制软件进行轨迹插补.减少了下位机 CPU 的工作量,而且可以减少硬件系统成本,经济高效.通过该编译系统,为实验平台中的数控虚拟加工和真实机床加工提供了驱动数据,为实验平台的正常工作提供了软件支持.参考文献1任松涛,秦现生,白晶. NC 代码编译器的设计与实现 J. 中国制造业信息化. 2007(3):54-572RidaT.Farouki,Jairam Manjunathaiah,Guo-FengYuan.G codes for the specication of Pytha

21、gorean-hodograph tool paths and associated federate functions on open-architecture CNC machinesJ. machine tools manufacturer. 1999(11)3禹丹,严宏志,王继娜. 基于 ANTLR 的 NC 代码编译器的设计与实现J. 计算机应用. 2008(2):522-5244许宇胜,杨文通,王蕾. 一个 NC 代码翻译模块的设计与开发 J. 机床与液压. 2005(7):55-565许良元. DDA 法圆弧插补软件的设计研究 J. 机械工程与自动化.2005(8):74-75

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报