毕业设计-邓阳

更新时间:2023-03-08 18:01:30 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数控技术及应用专业

毕 业 设 计 任 务 书

武汉职业技术学院机电工程学院

二〇〇八年四月

武汉职业技术学院机电学院

毕 业 设 计 任 务 书

专业: 数控技术及应用 班级: SK06204 学号: 06023609 姓名: 邓阳

一、设计题目:《宏编程技术探索及其在数控车床中的应用》 二、主要内容:

1、 以华中数控系统为基础,了解掌握宏编程的技术基础及编程规则。

(1) 了解宏变量的概念、设置及其赋值运算、算术运算等基本规则。 (2) 熟悉宏程序的顺序、分支选择和循环控制的三大基本结构。 (3) 了解在数控加工中使用宏编程的意义。 2、 利用宏编程技术解决数控加工中的实际问题。 (1) 利用宏编程技术简化加工程序。

(2) 利用宏编程技术实现车削加工的粗、精车削加工。 (3) 利用宏编程技术实现非圆方程曲线轮廓的加工。 (4) 利用宏编程技术扩充数控系统的编程加工功能。 (5) 撰写毕业设计论文。

三、考核及评分标准

1、 熟悉宏编程规则占30%

2、 利用宏编程解决数控加工中的实际问题30% 3、 毕业论文占20% 4、 毕业答辩占15% 5、 其他占5%

四、设计时间和学分:

6周、6学分。

指导教师: 李艳华

教研室主任: 姜新桥

. 2008年4月5日

目录

绪论…………………………………………….…………………………….………1

第一章 概述

1.1 变量…………………………………………………………………………2

1.2 算术运算、逻辑运算与赋值………………………………………………3

1.3分支和循环……………………………………………………………….…8

1.4宏程序的应用……………………………………………………………...10

第二章 宏程序车削循环…………………………………………………………..…10

2.1数学分析………………………………………………………………..….11

2.2数学建摸……………………………………………………………….….12

2.3变量设置…………………………………………………………… ….…12

2.4宏程序编制思路……………………………………………………….… 13

第三章结论与展望…………………………………………………………………….….16

3.1宏编程的优点……………………………………………………………………..16

3.2宏程序编制不足…………………………………………………………………..19

后记…………………………………………………………………….. …………………..….20

参考文献………………….. ……………………….. ……………………….. ……..…........21

数控技术及应用专业 毕业设计任务书

绪论

21世纪,机械制造业的竞争,其实质就是数控技术的竞争,也就是数控人才

的竞争。市场急需数控人才,为此各职业院校都加大了数控人才的培养力度,对数控专业教学的课程体系和教学方式也进行了有益的探索和实践。

数控机床是采用数控技术进行控制的机床或者说是装备了数控系统的机床。它是一种综合应用了计算机技术、自动控制技术、精密测量技术、通信技术和精密机械技术等先进技术的典型的机电一体化产品。数控技术是利用数字化信息对机械运动及加工过程进行控制的一种方法。数控系统是由用来实现数字化信息控制的硬件和软件组成的系统。软件在硬件的支持下运行,而离开软件,硬件无法工作,两者缺一不可。数控机床和普通机床不同,整个加工过程中不需要人的操作,而由程序来进行控制。在数控机床上加工零件,是给定一系列的指令,形成数控程序,经机床的数控系统进行寄存运算和处理,以此控制数控机床完成工件的全部加工过程。在数控机床中零件加工程序的编制也就是数控编程一般分为手工编程和自动编程两种。而宏程序就是手工编程。

宏程序是程序编制的高级形式,程序编制的质量与编程人员的素质息息相关,宏程序里应用了大量的编程技巧,例如数学模型的建立、数学关系的表达、加工刀具的选择、走刀方式的取舍等,这些使得宏程序的精度很高。特别是对于中等难度的零件,使用宏程序进行编程加工要比自动编程加工快得多,有时自动编程的程序长度可能是宏程序的几十倍几百倍甚至更悬殊,加工时间也会大大增加。宏程序是手工编程,CAD/CAM软件编程是自动编程,手工编程是自动编程的基础,在任何时候手工编程都是必须掌握的,特别是其精髓—宏程序。

1

数控技术及应用专业 毕业设计任务书

第一章 概 述

§1.1变量

1、宏变量的定义(variables)

普通加工程序中指定G代码和移动距离时,直接使用数字值,如:G100和X 100.0。而在自定义宏程序中,数字值可直接指定或使用变量号(称宏变量)。当采用宏变量时,其值可在程序中修改或利用MDI面板操作进行修改。

2、变量的表示

一个变量由#符号和变量号组成, 如: #i ( i=1,2,3, ?) , 也可用表达式来表示变量, 如: #[〈表达式〉]。

例:#[#100] #[#9/3] #[1001-1]

在地址号后可使用变量, 如: F#1 若#1=100.0则表示F100 Z-#12 若#12=10.0则表示Z-10.0 G#13 若#13=1.0则表示G01

3不同数控系统的宏变量

1.HNC-22数控系统的宏变量

HNC数控系统中的宏变量都是以带#的数字作为变量名,如#0,#10,#500等。变量不需要进行数据类型的预定义,根据赋值和运算结果决定变量数据的类型。变量使用范围受到系统分配区段的限制,这主要取决于该变量性质是局部变量还是全局变量。

局部变量:赋值定义的变量的有效范围仅局限于本程序内使用,同样的变量名在主、子程序中使用不同的寄存器地址,是互相独立的变量。HNC系统中,#0~#49为当前局部变量,#200~#899分别为0~7层局部变量。

全局变量:同一变量名在主、子程序中使用同一寄存器地址,可任意调用并因重新赋值而有相互影响的变量。HNC系统中,#50~#199为全局变量。

HNC系统中,#600~#899为刀具补偿和刀具寿命使用的变量,#1000以上为系统变量,大多为只读性质的变量。HNC系统定义的常量主要有:PI(圆周率)、TRUE (真值1)、FALSE(假0)

2.FANUC数控系统的宏变量

FANUC-0i数控系统在变量规定方面,FANUC的#0为不能赋值的空变量,#1~#33为局部变量,#100~#199为全局变量且断电后不保存,#500~#999为断电也不丢失的全局变量,#1000以上为系统变量。

2

数控技术及应用专业 毕业设计任务书

4、宏变量的类型(FANUC系统中)

1、在宏指令中,通常使用变量来代替数值,FANUC数控系统中使用#i表示变量。例如:#1、#100等。其中“1”、“100”称为变量号。变量根据变量号可以分为四种类型。

如下:

a、在FANUC系统中,#0为空变量。该变量总是空,任何值都不能赋给该变量。 b、在宏程序中存储数据,例如运算结果。当断电时,局部变量被初始化为空调用宏序时,自变量对局部变量赋值。FANUC系统中#1到#33为局部变量。

c、公共变量,在不同的宏程序中的意义相同,如#100到#109、#500到#999。其中变量#500到#999即使断电时,存储的数据也不会丢失。

d、系统变量,用于读CNC运行时的各种数据,例如,刀具当前位置和补偿等。#1000以上的变量均为系统变量。

2、在宏指令中,HNC数控系统中可以分为四种类型。 如下:

a、 当前局部变量,为#0~#49 b、 全局变量,为#50~#199

c、 0~7层局部变量,为#200~#899 d、系统变量,为#1000以上

§ 1.2算术运算、逻辑运算与赋值

1、算术运算: 主要是指加、减、乘、除、乘方、函数等。

在宏程序中经常使用的算术运算有: + (加) ∕ (除) COS (余弦) ATAN (反正切) ROUND (舍入) FIX (上取整) ― (减) SIN (正弦) ACOS (反余弦) SQRT (平方根) EXP (指数) FUP (下取整) * (乘) ASIN (反正弦) TAN (正切) ABS (绝对值) LN (对数) MOD (取余)

2、数学和逻辑运算: 可以理解为比较运算,它通常是指两个数值的比较或者关系。

在宏程序中,主要是对两个数值的大小进行比较,常用的运算有: EQ (等于) GE (大于且等于) AND (与)

3

NE (不等于) LT (小于) OR (或) GT (大于) LE (小于且等于) NOT (非) 数控技术及应用专业 毕业设计任务书

函 数 赋值 Definition 求和 Sum 求差 difference 乘积 Product 求商 Quotient 正弦 sine 余弦 cosine 正切 tangent 反正切 arctangent ] 平方根 Square root 绝对值 Absolute value 四舍五入 Rounding off 向下取整 Rounding down 向上取整 rounding up 或 OR 异或 XOR 与 AND 十——二进制转换 二——十进制转换 格 式 #i=#j #i=#j+#k #i=#j-#k #i=#j*#k #i=#j/#k #i=SIN[#j] #i=COS[#j] #i=TAN[#j] #i=ATAN[#J]/[#k#i=SQRT[#j] #i=ABS[#J] #I=ROUND[#J] #I=FIX[#J] #I=FUP[#J] #I=#J OR #K #I=#J XOR #K #I=#J #I=BIN[#J] #I=BCD[#J] 备 注remarks 角度用十进制度表示。 逻辑运算用二进制数按位操作 用于转换发送到PMC的信号或从PMC 接收的信号 3、赋值

1、赋值

赋值是指将一个数据赋予给一个变量。如:#1=0,则表示#1的值是0。其中#1代表变量,“#”是变量符号(注:根据数控系统不同,它的表示方法可能有差别),0就是给变量#1赋的值。这里的“=”号是赋值符号,起语句定义作用。

赋值的规律有:

赋值号两边内容不能随意互换,左边只能是变量,右边只能是表达式。 (1) (2) (3) (4)

一个赋值语句只能给一个变量赋值。

可以多次向同一个变量赋值,新变量值取代原变量值。 赋值语句具有运算功能,它的一般形式为:变量=表达式。

在赋值运算中,表达式可以是变量自身与其它数据的运算结果,如:

#1=#1+100,则表示#1的值为#1+100,这一点与数学运算是有所不同的。 (5) 赋值表达式的运算顺序与数学运算顺序相同。

(7) 角度的单位要用浮点表示法。如:30o30’用30.5来表示。 (8) 不能用变量代表的地址符有:O、N、:、/。其次,辅助功能的变量有最大值限制,比如

将M30赋值=300显然是不合理的。

4

数控技术及应用专业 毕业设计任务书

§1.3分支和循环 branch and repetition

在程序中可用GOTO语句和IF语句改变控制执行顺序。分支和循环操作共有三种类

型:

GOTO 语句——无条件分支(转移) IF语句——条件分支;if?,then? LE语句—— 循环;while?

HNC-22系统宏指令运算符及其结构语句

主 要 函 数 比较符 / 逻辑符 比较符 SIN--正弦 COS--余弦 TAN--正切 ATAN--反正切 ABS--求绝对值 INT--取整 SIGN--取符号 SQRT--求平方根 EXP--指数函数 = -- EQ ? -- NE > -- GT ? -- GE < -- LT ? -- LE 逻辑运算符 AND 与 OR 或 NOT 非 条件判断语句格式 ① IF 条件表达式 . . . (满足条件时执行的程序行) ELSE . . . (不满足条件时执行 . . . 的程序行) ENDIF ② IF 条件表达式 . . . (满足条件时执行的程序行) ------------------------------------------ ③无条件转向语句 GO TO n n 为指定的程序行号 WHILE 条件表达式 . . . . . . ( 循环体 ) . . . ENDW . . . 循环体内通常包含改变循环变量值的语句 循环语句格式 对结构语句的分析具体如下: 1无条件分支GOTO语句

控制转移(分支)到顺序号n所在位置。当顺序号超出1~9999的范围时,产生128号报警。顺序号可用表达式指定。

格式:GOTO n;

n ——(转移到的程序段)顺序号

例:GOTO1;-------转移到第一行程序段

GOTO#10;-----转移到第#10行程序段

2 条件分支IF语句

在IF后指定一条B件,当条件满足时,转移到顺序号为n的程序段,不满足则执行下一程序段。

格式:

IF [表达式] GOTOn;

5

数控技术及应用专业 毕业设计任务书

处理; Nn ?;

例如:IF[#10 LT 25] GOTO 190;如果变量#10小于25,则转至程序段号为190的程序段,否则执行下一个程序段,即当变量#10大于25时,则执行下一个程序段。

1)条件表达式

条件表达式由两变量或一变量一常数中间夹比较运算符组成,条件表达式必需包含在一对方括号内。条件表达式可直接用变量代替。

2)比较运算符

比较运算符由两个字母组成,用于比较两个值,来判断它们是相等,或一个值比另一个小或大。注意不能用不等号。 表2.5.2 比较运算符 运算符 EQ NE GT G LT LE 含义 相等 equal to (=) 不等于 not equal to (≠) 大于 Greater than (>) 大于等于greater than or equal to(≥) 小于 less than (<) 小于等于less than or equal to (≤) 3)例程

求1~10的和。 O9500; #1=0; #2=1;

和 加数

N1 IF[#2 GT 10] GOTO2; 相加条件 #1=#1+#2; 相加 #2=#2+1; 下一加数 GOTO1 返回1 N2 M30; 结束

3 循环WHILE 语句

在WHILE 后指定一条件表达式,当条件满足时,执行DO到END之间的程序,(然后返回到WHILE 重新判断条件,)不满足则执行END后的下一程序段。

格式:

6

数控技术及应用专业 毕业设计任务书

WHILE [条件表达式] DO m; (m=1, 2, 3) 处理; END m;

While的嵌套

对单重DO-END循环体来说,识别号(1~3)可随意使用且可多次使用。但当程序中出现循环交叉(DO范围重叠)时,产生124号报警。

(1)、识别号(1~3)可随意使用且可多次使用 WHILE [?] DO1; Processing END1; ?

WHILE [?] DO1; Processing END1;

(2)、DO范围不能重叠 WHILE [?] DO1; Processing

WHILE [?] DO2; ? END1;

Processing END2;

(3)、DO循环体最大嵌套深度为三重 WHILE [?] DO1; ?

WHILE [?] DO2; ?

WHILE [?]DO3; Processing END3; ? END2; ? END1;

(4)、控制不能跳转到循环体外 WHILE [?] DO1; ?

IF [?] GOTO n; ? END1; Nn ? ;

7

数控技术及应用专业 毕业设计任务书

(5)、分支不能直接跳转到循环体内 WHILE [?] DO1; ?

IF [?] GOTO n; ? END1; Nn ? ;

§1.4宏程序的应用

1、 通过下边的程序来看宏程序的应用方法

主程序:O0010 G40 G90 G92 X0 Y0 Z0 ; 确定坐标系;

N10 G65 P0002 A60 B80 C100 ; 调用宏程序并赋初值; N20 M30 ; 程序结束; 子程序:O0020 G01 X#1 Y#2 F[#3+#1] ; 子程序运行; N10 M99 ; 返回主程序;

上边的程序是将宏程序以调用子程序的方式来实现。在主程序第N10段使用调用宏程序指令G65,并为变量赋初值。A、B、C都是子程序中的变量,A代表子程序中的变量#1,#1赋值为60,B代表子程序中的变量#2,#2赋值为80,C为子程序中的变量#3,#3赋值为100。当程序执行到主程序中G65时,会自动执行子程序,当执行到子程序中X#1时,为自动调用主程序中为其赋的值60,X#1也就相当于X60,Y和F也同样。

在使用表达式代表变量时,要用括号将表达式括起来,如以上程序中的F[#3+#1]。 2、 用自变量的自加功能实现循环

对于一个程序中某些程序段,因需要进行循环时,只用一个自变量自加功能及IF语句配合跳转语句即可完成。比如下边的程序:

N10 G90 G01 X10 ; N20 G91 Y10 ; N30 X15 Y50 ; N40 G90 X0 Y0 ;

如果想要将第N20和N30段作为循环体进行循环,只用在第N30段与第N40段加入以下程序段:

#1=#1+1 ;

IF[#1LT2]GOTO20 ;

即可实现循环。如果要循环10次,只用更改IF语句为: IF[#1LT10]GOTO20

就可以轻松的实现循环10次,其中#1的初值可以省略。IF的意思为“如果”。上面IF语句的中文意思为:‘如果变量#1的值小于10,那么跳转到第N20段程序’,如果不小于10,那么程序向下执行。

3、 加工一椭圆,来说明宏程序的优越性。椭圆长轴为100,短轴为50(如图1)。

8

数控技术及应用专业 毕业设计任务书

Y50-XOX-Y100 图1

加工路线为O → X → Y → -X → -Y → X → O,假如现在要加工内形,它的刀具轨迹如下图(图2)

图2

用普通算点的方法来加工这个椭圆显然是不科学的,如果采用编程软件(如MASTERCAM)来生成这个程序的话(设使用Φ10的铣刀,步距取1mm),那么程序长度将在400段左右,对于程序本身的阅读和修改都不是很方便 ,而且也会过多的占用计算机的内存。使用宏程序的话,那么很轻意的就可以解决这个问题,程序如下:

O0001 G92 X0 Y0 Z0 S1200 M03 ; 确定坐标系; N10 G01 G41 X50 ; 图1中OX距离;

N20 #1=0 ; 将角度设为自变量,赋初值为0; N30 X[50*COS[#1]] Y[25*SIN[#1]] F200 ; XY轴联动的步距; N40 #1=#1+1 ; 自变量每次自加1O;

N50 IF[#1LT360]GOTO30 ; 如果变量自加后不足360度,则 转到第30段执行,否则执行下一段;

(30前不用加行号N)

N60 GO G40 X0 ; 撤消刀补,回到起点 N70 M30 ; 程序结束。

只用很简单的几段程序就可以完成椭圆的加工,在程序中第N20段其实也可以省略,通过上例可以看出,改变刀具流向的程序只有第N30段,这一段也就是椭圆的参数方程。在这个程序中,角度是自变量,每执行到第N40段时,角度自加一度,直至到达360度自动跳转到第N60段。如果我们将自变量的角度改变为0.1度,那么只用改变第N40段为:#1= #1+0.1,椭圆的精度提高了很多,步距减小了很多,可它的程序长度并没有因此而改变。即使要将此椭圆轮廓加工多次,至多也只用加两循环语句而已。

9

数控技术及应用专业 毕业设计任务书

上面的程序是依照椭圆的标准参数方程得到,如果依照标准参数方程编写宏程序,那么同样只用短短的几段程序即可以加工出另外的一些曲线。比如:正圆、渐开线、摆线等。有一些非圆曲线虽然没有标准的参数方程,但我们仍可以利用作图法的规律很容易的求出最接近它们的形状,如抛物线,阿基米德螺旋线、正弦曲线等。还有,比如加工圆球类、锥台类、大面积渐近去余量等等都可以使用宏程序,这里不再一一举出。特别值得一提的是,目前有许多回转工作台不支持刀具补偿功能,但是如果运用宏程序,很轻松的就可以弥补这个制造缺陷。

第二章 宏程序车削循环

数控车削加工编程的对象是简单的二维图形,车削系统已经提供了非常全面的从粗

车到精车的各类功能指令,指令格式简单且实用。对于边廓以直线、圆弧为主的常规零件加工,大多采用手工编程的方法,宏编程技术的优势在车削加工中主要表现在非圆曲线边廓的处理上。

FANUC的宏编程只能在非圆曲线轮廓的精车时独立使用,且不能为G71~G73的粗车

提供参考边廓数据,而HNC精车的程序段若用宏编程,其计算的数据可提供给G71~G73作边廓参考依据,这使得HNC的车削宏编程技术更具实用性。

使用主、子程序调用的宏编程技术,在调用子程序时可通过宏变量传递参数的功能,

易于实现子程序的模块化,整个程序修改起来更简单,程序通用性得到了增强。

利用宏编程技术实现如图2-2所示的零件的加工

图2-2

10

数控技术及应用专业 毕业设计任务书

§2.1 数学分析

建立工件坐标系及相应参数设置如图2-1所示:

抛物线直线椭圆图2-1

1.求直线方程

X2由抛物线方程Z=-得:X=+2?Z

4故A点X坐标值XA=+2?U 又B点坐标(X,Z)为(D,V) 则直线AB斜率K为:K=

XB?XAD?2?U=

V?UZB?ZA设AB直线方程为:X=KZ+h

坐标(X,Z)为(D,V)得:D=KV+h 所以:h=D-KV=D-

D?2?UV

V?U2. 求椭圆方程 椭圆中心坐标为:(V,D+b)

Z2X2由椭圆方程:2?2=1

ab(Z?V)2(X?D?b)2得椭圆在图2-1所示坐标系中方程为:??1 22ab

11

数控技术及应用专业 毕业设计任务书

§2.2数学建模

根据零件图,我们用数学的方式来分析一下,本利利用宏编程技术的编程思路是用无数段直线逼近轮廓线,把零件划分为四段,此程序以Z为变量,X为函数,各段数模求法如下:

1. 当U?Z?0时由抛物方程得:X=2?Z

2. 当V?Z

(Z?V)2(X?D?b)23. 当V-a?Z

a2b2故 : X=-b1?(Z?V2)?D?b a4. W?Z

§2.3变量设置

1、为了使程序变量与子程序变量协调起来,即使系统能将当前程序段各字段的内容拷贝到宏执行的局部变量,故在变量设置时,一定要满足宏程序子程序的调用的参数传递规则。

本程序在编写过程中所用到的主要宏程序调用传递的字段参数如下: 宏程序局部变量 #20 #21 #22 #3 #0 #1 #2 宏程序调用时所传送的字段名或系统变量 U V W D A B C 2、此程序中所用到的主要变量及其表达意义如下: 变量名称 #10 #11 #41 #42 #40 Z坐标 X坐标 直线AB的斜率K 直线AB的截距h A点X坐标值 即2?U 变量意义 12

本文来源:https://www.bwwdw.com/article/bjj6.html

Top