(光学工程专业论文)激光加工数控系统g代码编译器的研究与开发.pdf_第1页
(光学工程专业论文)激光加工数控系统g代码编译器的研究与开发.pdf_第2页
(光学工程专业论文)激光加工数控系统g代码编译器的研究与开发.pdf_第3页
(光学工程专业论文)激光加工数控系统g代码编译器的研究与开发.pdf_第4页
(光学工程专业论文)激光加工数控系统g代码编译器的研究与开发.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(光学工程专业论文)激光加工数控系统g代码编译器的研究与开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 本文在分析激光加工数控系统g 代码特点的基础上,研究了此系统上g 代码 的编译技术,开发出了一个独立、跨平台的g 代码编译工具,同时为了使用方便, 开发了一个图形用户界面进行仿真并且应用在一种硬件驱动上。 本文将g 代码的编译过程分成词法分析器、语法分析器、语义分析器、中间 代码生成器、符号表管理器及错误处理器等六个阶段。其中词法分析完成关键字 等标认符识别问题;语法分析调用词法分析,完成g 代码编程格式匹配、模态等 问题;语义分析根据不同的加工轨迹,完成越界判断;中间代码生成器根据自定 义的数据格式生成轨迹数据,供仿真和硬件驱动调用;符号表管理器记录了g 代码程序中使用的标识符以及相关属性,位于词法分析阶段内:错误处理器列举 了g 代码程序的常见错误,它是词法分析、语法分析、语义分析都要涉及的活动。 对于不同计算机数控系统的g 代码编译,本文定义了一个g 代码关键字表, 只要更改这个表,添加相应处理即可,方便维护和扩展。 本文的g 代码编译器是一个独立的控制台程序,用c 语言实现,w i n d o w s 和 l i n u x 系统都可运行;图形用户界面是一个可视化开发环境,它调用了g 代码编 译工具,可以编辑程序、打印错误信息、仿真运行等,用v b 6 实现。这种开发方 式,内聚性高,弹性更大。实验证明此编译系统可以稳定的运行在m p c 0 2 控制卡 e 。 关键词激光加工;计算机数字控制;编译;g 代码 a b s t r a c t a b s t r a c t t h i sp a p e rr e s e a r c h e so ngc o d ec o m p i l e ri nc n cs y s t e mf o rl a s e rp r o c e s s i n ga f t e r a n a l y z i n gt h ef e a t u r e so fg c o d e t h e ni td e v e l o p sa ni n d e p e n d e n ta n dc r o s s p l a t f o r m c o m p i l e r f u r t h e r m o r e ,ag r a p h i cu s e ri n t e r f a c ew i t hs i m u l a t i o ni sd e v e l o p e df o ri t a n di ta p p l i e st oah a r d w a r ed r i v e r t h ep a p e rd i v i d e si tw i t hs i xp h a s e s t h e ya r el e x i c a la n a l y z e r , s y n t a xa n a l y z e r , s e m a n t i ca n a l y z e r , i n t e r m e d i a t ec o d eg e n e r a t o r , s y m b o lt a b l em a n a g e ra n de r r o r p r o c e s s o r l e x i c a la n a l y z e ri s t od i s t i n g u i s ht h ek e y w o r d sa n ds o m ei d e n t i f i c a t i o n s y n t a xa n a l y z e ri st oc h e c kt h ep r o g r a mf o r m a ti n c l u d em o d u a lt r o u b l eb yi n v o k i n g l e x i c a la n a l y z e r s e m a n t i ca n a l y z e ri st oj u d g ew h e t h e rt h es i z ei sb e y o n dr a n g e a c c o r d i n gt ot h ep r o c e s st r a c e i n t e r m e d i a t ec o d eg e n e r a t o ri s t og e n e r a t ead a t a f o r m a tf o rs i m u l a t i o na n dh a r d w a r ed r i v e ri n t e r f a c e t h es y m b o lt a b l ei st or e c o r dt h e i d e n t i f i c a t i o n so fn cp r o g r a ma n da t t r i b u t e sr e l a t e d e r r o rp r o c e s s o ri st os e a r c ha n d s h o wt h ec o m m o ne r r o r so f n cp r o g r a ma n di ta c t si nt h et h r e ea n a l y s i sp h a s e s d i f f e r e n tn cs y s t e mh a sd i f f e r e n th a r d w a r ed r i v e ra n dd i f f e r e n tc o m p i l e ro fgc o d e , s o ,t h ep a p e rd e f i n e sagc o d ek e y w o r dt a b l ef o ri t o n l yi fc h a n g et h et a b l ea n da d d s o m er e s p o n s ec o d e , i ts t i l lw o r k s a n di t sb e n e f i c i a lt op r o g r a mm a i n t e n a n c ea n d t h egc o d ec o m p i l e ro ft h ep a p e ri sa ni n d e p e n d e n tc o n s o l ep r o g r a ma n di t s i m p l e m e n t e dw i t hcl a n g u a g e i tc a nr u nu n d e rw i n d o w sa n d l i n u x a n dt h eg r a p h i c f r o n ti sa ni n t e g r a t ed e v e l o pe n v i r o n m e n to fgc o d e , i tc a l li n v o k et h ec o n s o l e p r o g r a mo f c o m p i l e r , e d i tgc o d e ,s h o wt h ee r r o rm e s s a g e so ns c r e e nw h e nc o m p i l i n g a n dh a ss i m u l a t i o nf u n c t i o n i t si m p l e m e n t e dw i t hv i s u a lb a s i c6 0 t h i sd e v e l o p m o d e li sv e r yf l e x i b l ea n du s e f u l i tc a nr u no nt h eh a r d w a r ed r i v e ro fm p c 0 2c a r d a n dw o r k s s t a b l yt h o u g he x p e r i m e n t s k e yw o r d sl a s e rp r o c e s s i n g ;c n c ;c o m p i l e ;gc o d e u 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 盘名:皿导师签名:2 乞扯日期: 第t 章绪论 1 1 课题研究背景 1 1 1 激光加工 1 1 1 1 激光加工概述 第1 章绪论 激光加工是指利用激光束与物质相互作用的特性对材料( 包括金属与非金属) 进行切割、焊接、表面处理、打孔、微加工的一门综合性技术,该技术融合了光 学、机械、电子、材料以及检测等多门学科。与传统加工方法相比,激光加工的 特点是:激光束能量高度集中,加工区域小,因而热变形小,加工质量高、精度 高,加工件不受尺寸、形状限制,不需要冷却介质,而且无污染,噪声小,劳动 强度低,效率高。激光加工技术的产业化正在我国兴起【1 】。 1 1 1 2 激光加工与数控技术 制造业是一个国家工业的基础,而制造技术又是制造业的技术支柱,制造业 水平的高低是衡量一个国家工业发达程度的重要标志。以传统机电工业为代表的 制造业,正经历着深刻的变革。在这场革命中,大力发展先进的制造技术己成为 各国最重要的几大技术战略之一,先进制造技术己经是国际竞争与产品革新的一 种重要手段。数控技术是先进制造技术的基础。在现代制造技术朝着集成化、综 合化和智能化发展的今天,深入研究新一代数控技术一开放式数控系统,具有重 要的实用价值和意义。 传统的加工过程一般由各种刀具来完成,而从刀具本身来说在外形尺寸上有 很大限制,激光加工为非接触式加工,抛开了刀具外形尺寸上的限制,所以由一 般刀具加工不出来的尖角等可以由激光设备轻松完成,并且由于激光束与刀具物 理结构的不同,在传统加工过程中的刀具补偿等复杂问题则可以不予考虑。随着 计算机数控技术c n c ( c o m p u t e rn u m e r i c a lc o n t r 0 1 ) 的发展,激光加工技术与其紧 密结合日益成为为现代制造的重要部分。同时,激光加工技术在c n c 系统中的 应用也促进着数控技术的发展。 北京工q 2 大学工学硕士学位论文 1 1 1 3 激光加工设备 激光加工技术与数控技术的完美结合形成了种类繁多的数控激光加工设备, 如激光雕刻机、激光打标机、激光切割机、激光打孔机、激光焊接机等。日前, 数控激光力n - r _ 设备已经在汽车、航空航天、造船、电机、精密机械及各类板材、 模具制造业中得到了越来越广泛的使用【2 1 。 1 1 2 基于p c 的开放式数控系统 1 1 2 1 数控系统的发展 数控技术作为制造业实现自动化、柔性化【3 】、集成化生产的基础,己成为先 进制造技术的重要组成部分,是发展现代集成制造和智能制造的主体技术,是当 今各种先进制造系统的基础和前提条件。数控系统是数控技术的核心,也是数控 发展的关键技术,其功能强弱、性能优劣直接影响着数控设备的加工质量和效能 发挥,对整个制造系统的集成控制、高效运行、更新发展都具有至关重要的作用。 因此,数控系统技术不仅作为数控发展的先导技术,而且作为制造业的基础性战 略技术,越来越多的得到世界各国的高度重视和大力发展。 由文献【4 ,5 】知,数控技术发展十分迅速,从电子管数控、晶体管数控、中小 规模i c 数控,到小型计算机数控、微处理器数控,再到基于个人p c 机数控, 已有5 0 余年的历史了。它综合了计算机、通信、微电子、自动控制、传感测试、 机械制造等多门技术。p c 的引入,不仅为c n c t 6 提供了十分坚实的硬件资源和 极其丰富的软件资源,更为c n c 的开放化提供了基础。 数控技术的应用不但给传统制造业带来了革命性的变化,使制造业成为工业 化的象征,而且随着数控技术的不断发展和应用领域的扩大,它对汽车、轻工和 医疗等行业的发展起着越来越重要的作用。 1 1 2 2 基于p c 的开发体系结构模式 目前基于p c 的开放式数控系统有3 种类型: ( 1 ) p c 嵌入n c ( n u m e d c a lc o n t r 0 1 ) 模式。这种系统p c 与c n c 之间用专门的 总线连接,因而数据传输快,响应迅速。缺点是不能直接利用通用的p c ,开放 性受到限制,n c 部分仍然是传统的数控系统,具体系结构还是不开放的。这类 系统主要为一些c n c 控制器制造商所采用,其结构复杂,功能强大,价格昂贵。 ( 2 ) n c 嵌入p c 模式。这种类型的控制系统将运动控制卡插到p c 的扩展槽 中,运动控制卡利用了以d s p ( d i g i t a ls i g n a lp r o c e s s i n g ) 为核心的多轴运动控制技 第l 章绪论 术,其主要特点在于它的集成化、兼容性和高速性。这类系统中,p c 机一般处 理各种非实时性的任务,比如入机交互界面、加工图形显示等。而插补、位置控 制、速度控制等实时性要求很高的任务则由运动控制卡来完成。运动控制卡配有 开放的函数库以供其用户自行开发、构造自己的控制系统。这种类型的开放式数 控系统,可以充分利用p c 的丰富的软硬件资源,并且软件开发周期短,通用性 好。 ( 3 ) 全软件型开放式数控系统。其c n c 软件部分全部装在p c 机中,硬件 部分是插在p c 机扩展槽中的i o 板,提供给用户最大的灵活性。尽管全软件数 控系统提供了高度开放的体系结构,但由于操作系统的实时性、标准的统一性以 及系统的稳定性等一系列问题,此类系统还处于研究阶段,还没有大规模投入使 用。 1 1 2 3n c 嵌入p c 模式的数控系统 此类数控系统主要由几个部分组成:零件加工程序的输入、数据处理、伺服 机构等外围设备的控制。应用计算机的数控系统是综合了计算机技术、自动控制 技术、传感测量技术、机械制造技术等领域的最新成果发展起来的,它使机械加 工达到了更高的水平。计算机数控系统主要有硬件和软件两大部分组成,软件部 分完成加工程序的生成、纠错分析、加工数据的输出等配合硬件有条不紊的完成 加工任务。系统层次结构如图1 1 所示。 零件加工程序 i 应用软件 土 l 系统软件 土 硬件设备 完成程序纠错翻译、仿真、生成加工 数据等 控制卡驱动程序 伺服系统、机械平台等 图1 - 1c n c 系统层次结构 f i g1 - 1c n cs y s t e ms t r u c t u r e 图1 - 1 中,零件加工程序录入到应用程序中,由它来完成程序的译码以及生 成硬件所需驱动代码。译码是以一个程序段为单位进行处理,把零件的轮廓信息 北京工q e 大学工学硕上学位论文 ( 起点、终点、直线、圆弧) ,加工速度信息( f 代码) 和其他辅助信息( m 代码) 按 照一定的语法规则解释成一定的数据格式并存储起来。编译过程中还要有错误分 析,一旦有错马上报告。最终应用软件会调用系统软件提供的硬件控制接口完成 工作。之后系统软件会与操作系统一起完成硬件的控制。 1 1 2 4 数控编程 数控加工是靠编写数控程序来控制完成的。数控编程是从零件图纸到获得数 控加工程序的全过程。它的主要任务是计算加工位置。数控技术是指用数字化信 号对设备运行及其加工过程进行控制的一种自动化技术,它是自动化技术的基础 和关键技术。 控制数控加工的数控软件和程序编制系统的发展也非常迅速。大致经过了手 工编程、数控语言自动编程和交互式图形三个阶段。随着c a d c a m 的技术发 展,数控加工编程系统也由字符语言系统过渡到图形编程系统,此系统可以从 c a d 生成的几何信息中直接提取加工信息,大大提高加工效率。 1 1 2 5 基于p c 的数控系统软件 当前,以p c 为硬件平台发展分布式数控系统是数控系统的发展方向之一, 即所谓的“p c b a s e d 7 ”数控系统,简称p c 数控系统。p c 数控系统的控制软件 是基于p c 操作系统来开发的。p c 数控系统的软件平台主要包括d o s 、w i n d o w s 系列和l i n u x 系统。下面就此三个数控系统软件平台进行比较分析。 ( 1 ) d o s 是个单任务系统,可以直接和硬件打交道,实时性较强,可以直接 编写控制指令程序。但是由于d o s 平台过于简陋,软件开发复杂度提高,而且维 护性和可扩展性低,目前各个厂商提供的驱动也不在支持d o s 系统。 ( 2 ) l i n u x 作为一个性能稳定、功能强大并且具有高度可定制性的操作系统 越来越受到人们的欢迎。l i n u x 有一些变种,它们属于实时系统,如r t l i 删x 【8 】 不过与d o s 和w i n d o w s 相比,l i n u x 环境下的软件开发要求较高,而且实时性是 基于内核线程实现的,但是内核编程调试起来比较困难,处理不好容易损害系统 的稳定性,一些l i n u x 版本还没有设备厂商的支持。 ( 3 ) w i n d o w s 己成为p c 机的主流操作系统,它拥有高效易用的开发工具, 熟悉的图形用户界面以及大量的第三方设备驱动。尽管实时性一般,但可以利用 多线程技术、基于优先级的抢占式多任务调度机制以及通过外部设备和p c 端口 驱动程序的中断机制,扩展w i n d o w s 实时功能,并改造操作系统的调度管理,从 而实现数控系统软件中的实时多任务功能。 第1 章绪论 1 1 2 6 数控仿真 随着数控加工零件越来越复杂,传统的物理检验方法效率低、成本高,已不 可取,如何保证程序的正确性就成为较突出的问题。如果利用计算机技术对加工 过程进行动态仿真,不但可以获得与加工过程相似的真实感,直观的检查数控加 工程序,监视加工轨迹,而且可以校验加工轨迹的正确性。目前,数控仿真正向 模型的精确化、仿真计算实时性和图形显示的真实感方向发展【9 ,1 0 】。 1 1 3g 代码编译技术研究现状 数控系统通常使用g 代码来描述加工信息,如坐标选择、加工延时等。将g 代 码解释为数控系统能够识别的数据块是g 代码编译器的主要功能。 目前,王心光等人f l l 】在虚拟数控加工仿真中使用m i c r o s o f t 的g r e t a 正则类库, 解决了g 代码关键词分解问题,这种方法建立在m i c r o s o f t 提供的工具基础上,同 时使用了c + + 语言:付振山【l2 j 使用v ch6 0 开发,构造了有穷自动机来描述在 输入字符串中关键字识别模式的过程,但未谈及如何构造有穷自动机:张承瑞等 人【1 3 】使用c + + 语言,采用递归的方法实现了程序的解释过程;黄新燕等人【1 4 】在 语法分析中使用了静态指令语法规则表来规范每一条g 代码指令,为g 代码的语法 分析提供了有益参考,其编译器使用v b6 o 开发,使系统不具有广泛的适用性; 文献 1 3 ,1 4 3 均提及对g 代码分组的问题,而关于如何对g 代码进行分组,以解决两 条或两条以上的同组代码不能出现在一行g 代码中的问题至今仍未见有报道。吉 华等人【i5 】给出了在l i n u x 下如何实现g 代码解释器的方法。 1 2 课题来源与实际意义 基于计算机的数控加工中经常会用到某种运动控制卡,在开发运动控制系统 时一般要求用v c ,、b 等高级语言来编写程序,而数控加工是用n c 程序,它用g 代 码编写程序,由此需要一个工具把g 代码程序转换成v c 或v b 程序完成数控加工。 1 3 工作内容 本文在g 代码语言层和控制卡驱动库层之间搭建一层,用来完成它们之间 的转换。考虑到软件的独立性和复用性,开发了两个独立运行的应用程序,一个 是控制台程序,完成g 代码的编译,另一个是窗口程序,调用控制台程序,完 成仿真与实际运行。 北京1 :业大学工学硕上学位论文 1 3 1g 代码编译器 g 代码编译器是连接n c 源程序与加工运行之间的枢纽,它用来检查n c 源 程序,如果发现程序错误,g 代码编译器可以将相关错误信息反馈出来,以便做 相应修改,并最终生成加工轨迹数据,供硬件驱动调用。 本文在分析g 代码特点和研究编译原理的基础上,将g 代码编译过程分成 词法分析、语法分析、语义分析、中间代码生成、符号表管理、错误处理等六个 阶段。其中,词法分析主要读入n c 源程序,进行字符串识别,判断出关键字等 标识符并返回相关记号信息;语法分析根据词法分析返回的记号信息进行n c 程 序的编程格式匹配以及模态分析;语义分析会根据功能命令判断加工轨迹是否正 确以及尺寸大小是否越界等。在词法分析、语法分析、语义分析都正确后,中间 代码生成器会定义一种数据格式,输出加工轨迹数据,供仿真和下位机硬件驱动 调用;符号表管理器用在词法分析阶段,主要用来记录n c 程序的标识符及相关 记号;错误处理器力图判断出n c 程序中的所有错误类型,它是词法分析、语法 分析、语义分析都要涉及的活动。 1 3 2g 代码的仿真与应用 在仿真与应用时,开发了一个图形用户界面,它是一个可视化集成开发环境, 可以编辑g 代码,也可调入g 代码文本文件,可以显示编译中分析信息以及图 形仿真。在中间轨迹数据生成后,把它转换成硬件驱动库所需数据,供驱动调用 完成其运动控制。 1 4 论文结构 为便于叙述,本论文内容安排如下: 第1 章概述了激光加工及c n c 系统的相关技术,介绍了g 代码编译技术 的现状,并简要介绍了本论文的主要研究内容和实现目标。 第2 章介绍了g 代码、编译原理以及如何进行编译器设计,并在对g 代码 编译进行系统分析的基础上设计出了总体功能框架。 第3 章研究了g 代码编译器的结构组成,以及四大主要部分:词法分析器、 语法分析器、语义分析器、中间代码生成器等的详细设计与实现。 第4 章介绍了g 代码编译仿真器的设计与实现,并成功运行在m p c 0 2 运 动控制卡上。 结论指出本文的研究成果,并对g 代码编译后续工作和系统发展作了展望。 第2 章g 代码编译器的原理研究与总体设计 第2 章g 代码编译器的原理研究与总体设计 2 1g 代码介绍 2 1 1 什么是g 代码? 数控加工是靠编写数控程序来完成控制的,而数控程序由数控指令组成。数 控指令是由定义了一定功能的大写字母附上数据后组合而成的,一般每条指令完 成一个动作,若干条指令按一定结构构成一段程序。在具体的数控加工程序中, 一般是用各种准备功能的g 代码和辅助功能的m 代码来描述加工过程的各种运动 特征和操作的。g 代码和m 代码是数控加工程序的基础。由于g 代码是数控代码 中最重要的代码,整个加工过程几乎所有的功能和重要设置都由g 代码来完成, 所以数控代码也简称g 代码。 不同国家、厂家生产的数控机床在编程规则上并不完全相同,因此,同一程 序在不同的数控系统上有不同的理解,实现同程序的一致理解是数控加工系统要 解决的重要问题。我国第一机械工业部根据1 5 0 标准制订了的 b 3 2 0 8 - 8 3 标准与 1 5 0 - 1 0 5 6 - 1 9 7 5 ( e ) 等效。国际上广泛应用1 5 0 制订的g 代码和m 代码标准。 2 1 1 1 准备功能的g 代码 g 代码用来规定运动轨迹、坐标系、坐标平面的选择、加工延时等多种加工 操作。该指令由字母g 与其后的二位数字组成,共有一百种,从c 0 0 一g 9 9 。 g 代码按其有效期来分,分为模态【l8 】代码和非模态代码,模态代码表示一经 使用,直到同组的另一个g 代码被使用之前一直有效,而且可省略不写。在同一 程序段中出现非同组的几个模态代码时,并不影响g 代码的模态性。 虽然g 代码有1 0 0 种,但针对具体的数控系统,没必要都考虑在内,现根据 系统所需,将常用g 代码进行分组,详见表2 一l 。 表2 - 1 常用g 代码及分组 t a b l e2 - 1c o m m o ngc o d e s & g r o u p s 组别g 代码功能 轨迹类g 0 0 :i : 以最大速度直线插补 g 0 l 以某速度直线插补 g 0 2 顺时针圆弧插补 g 0 3 逆时针圆弧插补 输入模式 g 9 0 :i : 绝对尺寸 g 9 1 相对尺寸 表2 1 中各组g 代码均为模态代码,丰表示程序打开时每组中的初始g 代码。 2 1 1 2 辅助功能的m 代码 m 代码是控制加工开关功能的指令,如加工程序的暂停、终止等。m 代码也 分为模态代码和非模态代码。为了应用在激光加工数控系统中,定义了开关激 光的m 指令,详见表2 - 2 。其中各m 代码均为非模态代码。 表2 - 2 常用m 代码 t a b l e2 - 2c o m m o nmc o d e s m 代码功能 m o o 程序暂停 m 0 2 程序终止 m 0 3 开激光 m 0 4 关激光 2 1 1 3 坐标功能字 坐标功能字,又称尺寸字,用来设定各坐标轴移动位移量及方向。它一般使 用x 、y 、z 、u 、v 、w 、i 、j 、k 等地址符为首,在地址符后紧跟“+ ( 正) ”或“一( 负) 号以及一串数字,该数字一般以系统脉冲当量为单位,不使用小数点。为了方便 上层,也可以毫米为单位,可以为小数。 x 、y 、z 为绝对位置坐标:u 、v 、w 为相对位置坐标编,分别与x 、y 、z 对 应;i 、j 、k 为圆弧运动时相对起点的圆心坐标,也分别与x 、y 、z 对应。当一 个程序段中有多个尺寸字时,一般按上述地址符顺序排列。 第2 章g 代码编译器的原理研究与总体设计 2 1 1 4 速度功能字f 进给功能字用来指定运动的速度,其单位为单位时间上的毫米数或是脉冲 数,以地址符f 为首,其后跟一串数字代码。 2 1 1 5 其他代码 在进行圆弧插补等操作时,还有一些关键字如i 、j 、k 、r 、d 等。这些字在 不同的系统中有不同的定义,使用时根据相关手册确定即可。 2 1 2 数控程序结构和格式 2 1 2 1 数控加工程序的结构 一个完整的数控加工程序是由若干程序段组成的。所谓程序段,是指为了完 成某一动作要求所需功能“字”的组合( 可以是一个或若干个字的组成) :“字” 表示某一功能的一组代码符号,每个“字”由字母、数字和符号组成,这些字母、 数字、符号又称为字符( 或叫代码) 。一般一个数控代码程序都有一开始标号和一 个程序结束符。例如, 0 0 0 1c r n 0 0 16 0 1x 1 0 0f 1 0 0 0c r n 0 0 2y - 1 2 0c r n 0 0 3g o ox 5 0 0y 2 0 0c r n 1 0 0m 0 2 这是一个由1 0 0 条程序段按操作顺序排列而成的完整的加工程序。程序用符 号“”开头。以m 0 2 作为全程序的结束。每个程序段用序号“n ”开头,用换行 符( c r ) 结束。 在“后的0 0 0 1 表示从数控装置的存储器中调出加工程序编号为0 0 0 1 的 加工程序。目前的c n c 系统中存储器足够大,可事先存入多个加工程序,需要时 调出使用即可。 每条程序段表示一种操作。它由若干字组成,每个字表示一种功能。如第一 条程序段除程序段结束字符“c r ”外由4 个字组成:n 0 0 1 表示第一条运行的程 序段;字( 1 0 1 定义为直线插补,由准备功能g 和功能种类代码0 1 共3 个字符组 成;字x 1 0 0 表示x 轴正向位移至1 0 0 单位处,由3 个字符组成;字f 1 0 0 0 为进 北京工业大学工学硕士学位论文 给速度;n 0 0 2 程序段x 轴位置不变,y 轴反向位至1 2 0 单位处,一般规定正号“+ ” 可省略,但负号“一”不可省。最好以m 0 2 结束加工。 2 1 2 2 数控程序段的格式 程序段格式就是一个程序段中字母、数字和符号的表现形式,不同的数控机 床根据功能的多少、数控装置的复杂程度、程序编制是否简便直观等不同要求而 规定了不同的程序段格式。如果输入的程序格式不符合规定,数控装置就会报警 出错。目前国内外的数控程序几乎都用字地址程序格式,其形式如下所示: n g x 士y 士i 士j 士f 以上表达式,就是字一地址程序段格式中的一个程序段。每个程序段是由一 组开头是英文字母、后面是数字( 正号可省) 的形式组成信息单元一“字”,每个 “字”根据字母确定其意义,这样的英文字母称为“字地址”。每个字之前都标 有地址( g 、x 、y 、) 用以识别,各字的先后排列并不严格;数据的位数可多可 少( 但不得大于规定的最大允许位数) :不需要的字以及与上一程序段相同的模态 字可以不写( 如上例n 0 0 2 程序段中,g 0 1 、x 1 0 0 、f 1 0 0 0 这些模态字继续有效) 。 加工一个零件的整个数控程序就是由这样一行行的程序段组成。这种程序格 式的优点是程序简短、直观、故而应用广泛。 2 2 编译原理介绍 2 2 1 什么是编译器? 简单的说,编译器是一个程序,它读入用某种语言( 源语言) 编写的程序并将 其翻译成一个与之等价的以另一种语言( 目标语言) 编写的程序,在翻译过程中编 译器能够向用户报告被编译的源程序中出现的错误( 如图2 - l 所示) 。通常,源程 序为高级程序语言,而目标语言则是目标机器的目标代码,有时也称作机器代码。 第2 章g 代码编译器的原理研究与总体设计 源程序 错误信息 目标程序 图2 一l 编译器 f i g2 一lc o m p il e r 但从源程序到生成一个可以在计算机上执行的目标程序,除了编译程序,还 需要一些其它的程序,包括预处理程序、汇编程序、装配连接程序以及某些库 程序等。也就是说,一个编译程序的输入可能要由_ 个或多个预处理程序来产生, 而且,编译程序的输出可能仍需进一步处理,才能得到能运行的机器代码。 而在计算机上执行用高级语言编写的程序,一般要经过两个阶段:第一阶段 称为编译阶段,它的任务是由编译程序将源程序编译为目标程序,也就是机器代 码;,第二阶段称为运行阶段,其任务是在目标计算机上执行编译阶段所得到的目 标程序。编译程序的重要性在于,它使得多数计算机用户不必考虑与机器有关的 繁琐细节,使程序开发更加方便,效率更高。 2 2 2 编译器的各阶段 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的过程。从概念 上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序 的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连 接在一起的。下图给出了一个编译过程的各个阶段: 北京 :业大学1 二学硕卜学位论文 源程序 目标程序 图2 - 2 编译器的各阶段 f i g2 - 2p h a s e so f ac o m p i l e r 图2 2 中将编译器划分成了词法分析器、语法分析器、语义分析器、中间代 码生成器,代码优化器和目标代码生成器六个阶段,另外图中的符号表管理器和 错误处理器是这六个阶段都要涉及的两项活动。 2 2 2 1 符号表管理 编译器的一个基本功能是记录源程序中使用的标识符并收集与每个标识符 相关的各种属性信息,如标识符的种类、位置、作用域( 在哪段程序中有效) 等。 符号表是一个数据结构。每个标识符在符号表中都有一条记录,记录中的每 一个域对应于该标识符的一个属性。这种数据结构允许我们快速找到每个标识符 的记录,并在记录中快速的存储和搜索信息。 当源程序的一个标识符被词法分析器识别出来时,词法分析器将在符号表中 为该标识符建立一条记录,标识符的属性信息将在各阶段陆续写入符号表。 第2 章g 代码编译器的原理研究与总体设计 2 2 2 2 错误处理 每个阶段都可能遇到错误,关键是要以恰当的方式进行错误处理,使得编译 器能够继续运行,以便查出源程序中的更多错误。发现错误即停止的编译器不是 一个好的编译器。 词法分析阶段能够检测输入中不能形成源语言任何记号的错误字符串。语法 分析阶段可以确定记号流中违反源语言结构( 语法) 规则的错误。语义分析阶段试 图检测出具有正确的语法结构但对操作无意义的部分。 2 2 2 3 各分析阶段 词法分析阶段读入源程序中的字符,并将这些字符分组形成记号流,其中每 个记号表示一个字符序列,如关键字、标点符号等。这个字符序列称为词素。词 法分析器不但要生成一个记号,还要在符号表中为词素建立记录,将其写入。语 法分析又称为层次分析,它把记号流进一步分组,产生用于生成代码的语法单位。 语义分析利用语法分析阶段确定的层次结构来识别语句中的操作符和操作数并 检验操作数是否满足要求。 2 2 2 4 中间代码生成 某些编译器在完成各分析阶段后,会产生源程序的一个中间表示,我们可以 将这种中间表示看成某种抽象机的程序。源程序的中间表示应该具备两个重要性 质:一是易于产生,二是易于翻译成目标程序。 2 2 2 5 代码优化 代码优化阶段试图改进中间代码,以产生速度较快的机器代码。 2 2 2 6 目标代码生成 编译的最后一个阶段是目标代码生成,在这一阶段编译器把中间代码翻译成 完成相同任务的机器代码指令序列。 北京工业大学工学硕_ 上学位论文 2 2 3 编译器各阶段的分组 2 2 3 1 前端与后端 编译过程中阶段的划分是编译程序的逻辑组织。有时,常常把编译的过程分 成前端和后端,前端通常包括这些阶段:词法分析、语法分析、语义分析和中间 代码生成,这些阶段的工作主要依赖于源语言而与目标机无关。后端工作指那些 依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码 生成,以及相关出错处理和符号表操作。 2 2 3 2 编译器的遍 一个编译过程可由一遍、两遍或多遍完成。所谓“遍”,是对源程序或其等 价的中间语言程序从头到尾扫视并完成规定任务的过程。每一遍扫视可完成上述 一个阶段或多个阶段的工作。 在实际的编译系统的设计中,编译的几个阶段的工作究竟应该怎样组合,即 编译程序究竟分成几遍,参考的因素主要是源语言和目标机器的特点。一个多遍 的编译程序可以较之一遍的编译程序少占内存,遍数多,整个编译程序的逻辑结 构可能清晰些,但遍数多即意味着增加读写中间文件的次数,势必消耗较多时间, 显然会比一遍的编译要慢。 2 3g 代码编译器的系统分析与总体设计 2 3 1 需求分析 在实际的科研和生产活动中,g 代码编译模块主要有以下两个用途: 一个是用于p c 机做上位机驱动控制卡的数控c n c 加工机床中,由于采用 了p c 机作为上位机,所有的控制信号、轨迹计算都由p c 的c p u 完成,当然, n c 代码的生成、解释过程也是通过上位机来完成,n c 源代码的生成主要通过 两个步骤完成,首先,c a m 模块根据设计部分计算切割的轨迹,然后,n c 处 理模块根据位置文件产生具体的n c 程序,作为机器的输入控制。n c 代码的解 释以及具体的n c 代码的实现都要由g 代码编译模块来实现,由它将n c 代码转 化为实际的加工代码来驱动控制卡,进而控制机床的运动。 另一个则是用于虚拟系统的数控仿真加工中。g 代码编译器是连接n c 源代 码生成模块和仿真加工运动控制模块之间的枢纽。由于n c 程序中不可避免的存 第2 章g 代码编译器的原理研究与总体设计 在一些可能的错误如词法错误、语法错误、语义错误等。尽管有些c a d c a m 软 件也可以进行路径仿真演示,但这种演示仍然是以位置文件为基础进行的,而虚 拟数控加工则是以n c 程序代码为基础进行的仿真。在数控仿真加工中,刀具在 三维图象模块中的仿真运动是由实际机械刀具使用的n c 程序代码来控制的。g 代码编译器用来检查n c 程序,并且根据这些程序计算生成驱动虚拟刀具运动的 命令代码。如果n c 程序源代码发现错误,g 代码编译模块可以将相关的错误信 息反馈到n c 源代码生成模块中,以便于做相应的修改。 针对以上两种应用,通用g 代码编译模块的研发就具有很大的实际意义, 一个快速、通用的g 代码编译器可以对复杂的n c 程序进行检查,并生成虚拟的 加工代码驱动控制卡或者软件仿真模块,以完成数控机床运动和仿真运动的控 制。 2 3 2 功能分析 从上面介绍,我们可以确定g 代码编译器应该具有以下功能: ( 1 ) 具有词法、语法、语义分析检查功能,可以快速、准确并全面的检查 n c 程序中各种错误,并且进行错误定位,以便操作员进行修改。 ( 2 ) 具备中间代码生成功能,以便将n c 代码易于转换为所需的目标代码, 供驱动控制卡调用或者进行仿真。 ( 3 ) 具有良好的可移植性和通用性,具有高内聚低相关的软件特性,以便与 其他软件模块进行连接。 2 3 3 总体设计 考虑到不同的c n c 系统有不同的硬件驱动,所以应该把g 代码编译器的前 端和后端分开,也就是词法、语法、语义分析和中间代码生成这四个阶段分成一 组,中间代码到目标代码的生成分成另一组。为了做到软件复用性,把前端写成 一个独立的控制台程序,它的输入是n c 源程序,输出是加工数据信息( 中间代 码) 。如果n c 源程序有错,会有错误信息提示。g 代码编译器的后端为一个窗 口应用程序,它调用前端生成的加工数据,完成仿真和运行控制。当更改硬件系 统或是仿真系统时,前端这个独立的程序可以继续使用,所以这样的开发结构十 分方便。总体结构如图2 3 。 北京工业大学工学硕l 二学位论文 仿真系统1 仿真系统2 可选 n c 源程序 加工数据( 中间代码) 1r i后端 l 错误信息 图形代码1硬件驱动代码2 硬件系统l 硬件系统2 图2 - 3g 代码编译器系统结构 f i g2 - 3c o m p i l e rs t r u c t u r ef o rgc o d e 2 3 3 开发环境和工具的选择 考虑到前端是一个独立的应用程序,它能被后端程序调用,可以移植,编译 速度快;后端主要做界面。由于本文硬件驱动只支持v r m d o w s 系统,所以,选 用w i n d o w sx p 系统,前端用v c 6c o n s o l e 环境、c 语言实现;后端用v b 6 实现。 2 4 本章小结 本章主要介绍了g 代码和编译原理的相关知识和概念,通过对g 代码编译 器的系统功能分析,完成了g 代码编译器的总体设计流程,最后介绍了开发环 境和开发工具。 第3 章g 代码编译器的详细设计弓实现 第3 章g 代码编译器的详细设计与实现 3 1g 代码编译器模块结构设计 在数控系统中,g 代码编译器是连接n c 源代码生成模块和仿真加工运动控 制模块之间的枢纽。主要由词法分析器、语法分析器、语义分析器、加工数据生 成器、符号表管理器、错误处理器六部分以及g 代码关键字表【1 9 】等组成。它的 模块结构见图3 1 。 n c 源程序 加工数据 图3 1g 代码编译器的模块结构 f i g3 一lm o d u l e so f ac o m p i l e rf o rgc o d e n c 源程序通过词法分析后由语法分析调用分析语法规则,成功后进行语义 分析,正确后将n c 程序代码相应的加工信息通过中间代码生成器输出,作为编 译后端仿真和运行的输入数据流。其中,g 代码关键字表只在词法分析中起作用, 符号表管理器在词法、语法分析中都用到,而错误处理是三个分析器都要涉及的。 下面将着重介绍这几个模块和表格的设计和实现。 北京工q k 大学工学硕上学位论文 3 2 符号表 3 2 1 符号表概述 符号表【2 0 1 是一种数据结构,用于保存源语言结构的各种信息。编译器在分析 阶段收集信息存入表中,在综合阶段使用表中的信息生成目标。与符号表有关的 操作是查找和插入动作,即词法分析器通过查找操作确定某个词素是否在符号表 中存在,如果不存在插入,如果存在返回表中位置。 3 2 2 行符号表的设计与实现 在n c 程序中,基本上是一行一条功能指令,那么以行为单位定义一个行符 号表管理器,图3 - 2 给出了符号表的结构。考虑到如果固定大小可能不能保存长 标识符,而对于短标示符号可能造成浪费,所以采用动态空间来存储。在图3 2 中用一个数组存储形成标识符的字符串,每个字符串有结束符。再用一个数组定 义行符号表,表中的每项包括两个域:一个是指向词素开始位置的指针域,一个 是相应的记号域。 数组 行符号表 指针记号索引 图3 - 2 符号表结构 f i g3 - 2s y m b o lt a b l es t r u c t u r e 在图3 - 2 中,第0 项是空的,是为了词法分析器在查找没有时返回0 。第l , 第3 苹g 代码编详器的t 羊细设计与实现 2 ,3 项分别对应关键字g 0 0 ,x ,y 。当读到一个字母时,词法分析器开始把它 和接下来的数字先保存起来,然后在行符号表中查找,如果行符号表不存在这个 字符串,即返回0 值,则这个字符串为一个新标识符的词素,将它插入到表中, 并且返回相应的记号给词法分析器。 3 3g 代码关键字表 g 代码关键字表用来实现g 代码编译器的通用性和兼容性。对于不同系统 的g 代码,只需要建立一个相应的g 代码关键字表,就可以使用这种g 代码编 译器完成n c 源程序代码向加工运动驱动代码的转换。 由于词法分析中需要对关键字进行查找,如果查找成功可以返回相应的记号 信息,十分方便。所以,g 代码关键字表的结构和行符号表相同。具体如下: 图3 3g 代码关键字表的c 代码 f i g3 - 3cp r o g r a mo f k e y w o r dt a b l eo f gc o d e 1 9 北京工业大学工学硕上学化论文 3 4 词法分析器 3 4 1 词法分析器的作用 词法分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论