NC代码编译器的设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西北工业大学

硕士学位论文

NC代码编译器的设计与实现

姓名:任松涛

申请学位级别:硕士

专业:机械电子工程

指导教师:秦现生

20070301

西北工业大学硕士学位论文第四章Nc代码编译器的设计与实现

解释了。

对于一个Nc程序,其出错原因往往是多方面的,这给错误处理带来很大困难。对编译程序来讲,当遇到一个错误时,一般不希望就此停止工作,而希望准确确定出错位置和错误类型,在整个编译工作完成后打印出来,让程序员从总体上把握NC程序的错误及各个错误的类型,并加以校正.

在错误校正方面,由于编译器不能完全确定程序员的意图,有时编译器自动修改错误,或许错上加错,影响了编译效率。因此,本系统只进行错误定位,错误校正工作则留给程序员手动改正。举例如下:

NOOlG90G17GOOGOlX10YlO:

N002G01GOOX30Y20F100:

N003(Ⅺ3X40Y20:

N004G02X30Y3010J-10:

N005G01X10Y20:

N006Y10:

N007GoOX-10V10M02:

这一组程序,遂程序每一行进行语法分析,会发现:

N001.GOO和G01同时出现在同一行,错误类型属于第一种。

N002;G01和G00同时出现在同一行,错误类型属于第一种。

N003:G02或G03后应有I、J、K数值段,错误类型属于第三种。

其他程序段均没有出现语法错误。

输出结果如图4-3所示:

图4_3实例语法分析结果

4.4代码生成和处理

对于高级程序语言来说,编译过程的后三个阶段分别为中间代码生成、代码优化和目标代码生成,最终生成的目标代码是特定机器的机器语言或汇编语言。

西北工业大学硕士学位论文

第四章NC代码编译器的设计与实现

4.4.4代码生成和处理的实现

图4-5实例的输出结果

我们己经获得了一个完全有效的数据结构Line’-Da_ca,但仅有这些结点中的值仍不能实现刀具运动的仿真,因为没有进行插补运算,刀具轨迹上除NC程序段中

所含的刀具坐标值以外其他坐标值仍是未知数。本模块的作用是根据LiIle』Ia_ca各

节点中的插补指令值和起点和坐标值来完成插补运算,主要完成了直线插补和圆

弧插补功能。

所有工作分为两部分:(1)完成对Line_Da_ca每一插补指令的解释,从每个节点中的刀具中心坐标值、插补命令值等信息中获得插补运算所需的各种值(诸如象限判断、终点从判别等信急)。(2)完成Nc程序的插补运算,从而获得刀具运动轨迹上每一点从的坐标值。这里我们采用逐点比较法进行插补运算。一是因为这种方法本身的运算简单插补精度较高;二是因为这种方法的象限转换和终点判别也是非常简单的。

这里设计了一个重要的数据结构一一Cmd_.Data单向链表H”。

typedefs仃uct

Cmd_pa诅{

uIlsi印ed

imG00-04,G17-19;

瑚i∞XYZ{

stnlct{unsigIledintx,y;}G17;strIIct{u∞ignedintz,x;)G18;stmct{uIlsiglledint

y,z;}G19;

)xyz;

蛐ionUK{

stmct{111lsignedimij;}G17;

stnJct{吼sigIledintl【,i;}G1

8;

相关文档
最新文档