NC代码编译器的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;