数 控 编 程 讲 义
1
共享知识 分享快乐
第一篇 铣工篇 ....................................................................................................... 1
专题一 行切和环切 ................................................................................................................. 1
1.1环切 ................................................................................................................................... 1
1.1.1环切刀具半径补偿值的计算 .................................................................................... 2
1.1.2环切刀补程序工步起点(下刀点)的确定 ............................................................ 4
1.1.3在程序中修改刀具半径补偿值 ................................................................................ 5
1.1.4 环切宏程序 ............................................................................................................. 7
1.2 行切 .................................................................................................................................. 8
1.2.1 矩形区域的行切计算 ............................................................................................... 8
1.2.2行切的子程序实现 .................................................................................................. 10
1.2.3 行切宏程序实现 ..................................................................................................... 11
1
共享知识 分享快乐
专题二 相同轮廓的重复加工 ............................................................................................... 13
2.1 用增量方式完成相同轮廓的重复加工 ........................................................................ 14
2.2用坐标系平移完成相同轮廓的重复加工 ..................................................................... 14
2.3 用宏程序完成相同轮廓的重复加工 ............................................................................ 15
专题三 简单平面曲线轮廓加工 ........................................................................................... 17
专题四 简单立体曲面加工 ................................................................................................... 18
4.1球面加工 ......................................................................................................................... 18
4.1.1外球面加工 .............................................................................................................. 20
4.1.2内球面加工 .............................................................................................................. 21
4.2水平圆柱面的加工 ......................................................................................................... 22
4.2.1圆柱面的轴向走刀加工 .......................................................................................... 22
2
共享知识 分享快乐
4.2.1圆柱面的周向走刀加工 .......................................................................................... 23
专题五 孔系加工 ................................................................................................................... 25
5.1 矩形阵列孔系加工 ........................................................................................................ 25
5.2环形阵列孔系加工 ......................................................................................................... 26
第二篇 车工篇 ..................................................................................................... 27
专题六 参数编程 ................................................................................................................... 27
专题七 方程曲线的车削加工 ............................................................................................... 29
7.1方程曲线车削加工的走刀路线: ................................................................................. 29
7.2 椭圆轮廓的加工 ............................................................................................................ 30
附录 FANUC系统G指令和宏指令 .................................................................. 32
附录1 刀具补偿值、刀具补偿号及在程序中赋值G10 ................................................... 32
3
共享知识 分享快乐
1、刀具补偿值的范围 ......................................................................................................... 32
2、刀具补偿值的存贮 ......................................................................................................... 32
3、刀具补偿赋值格式: ..................................................................................................... 34
附录2 缩放G50、G51 .......................................................................................................... 35
附录3 坐标系旋转 G68、G69 ........................................................................................... 42
附录4 宏程序B(custom macro B) ........................................................................................ 48
1 宏变量(variables) ........................................................................................................ 48
2 系统变量 SYSTEM VARIABLES .................................................................................. 54
2.1接口信号 Interface signals ........................................................................................ 55
2.2刀具补偿值 Tool compensation values ..................................................................... 56
2.3宏程序报警信息Macro alarms .................................................................................. 58
4
共享知识 分享快乐
2.4时间信息 ..................................................................................................................... 59
2.5自动运行控制 ............................................................................................................. 60
2.6背景(#3005) Settings ............................................................................................ 63
2.7已加工的零件数 Number of machined parts ............................................................
2.8模态信息 Model information .................................................................................... 65
2.9当前位置 ..................................................................................................................... 68
2.10工件坐标系补偿值(工件坐标系零点偏置值) ................................................... 68
3 算术和逻辑运算 ............................................................................................................. 70
4 宏语句和NC语句 ........................................................................................................... 81
5分支和循环 ........................................................................................................................ 83
5.1无条件分支GOTO语句 ............................................................................................ 83
5
共享知识 分享快乐
5.2 条件分支IF语句 ...................................................................................................... 84
5.3 循环WHILE 语句 .................................................................................................... 87
6 调用宏程序 MACRO CALL ........................................................................................... 34
6.1 简单调用G65 ............................................................................................................ 35
6.2模态调用G66 ............................................................................................................. 45
6.3 使用G代码的宏调用 ............................................................................................. 51
6.4 使用M代码的宏调用 ............................................................................................ 54
6.5 使用M代码的子程序调用 .................................................................................... 57
6.6 使用T代码的子程序调用 ..................................................................................... 59
6.7例程 ............................................................................................. 错误!未定义书签。
6
共享知识 分享快乐
第一篇 铣工篇
专题一 行切和环切
在数控加工中,行切和环切是典型的两种走刀路线。
行切在手工编程时多用于规则矩形平面、台阶面和矩形下陷加工,对非矩形区域的行
切一般用自动编程实现。
环切主要用于轮廓的半精、精加工及粗加工,用于粗加工时,其效率比行切低,但可
方便的用刀补功能实现。
1.1环切
环切加工是利用已有精加工刀补程序,通过修改刀具半径补偿值的方式,控制刀具从
内向外或从外向内,一层一层去除工件余量,直至完成零件加工。
编写环切加工程序,需解决三个问题:
1
共享知识 分享快乐
环切刀具半径补偿值的计算;
环切刀补程序工步起点(下刀点)的确定;
如何在程序中修改刀具半径补偿值。
1.1.1环切刀具半径补偿值的计算
确定环切刀具半径补偿值可按如下步骤进行:
1、确定刀具直径、走刀步距和精加工余量;
2、确定半精加工和精加工刀补值;
3、确定环切第一刀的刀具中心相对零件轮廓的位置(第一刀刀补值);4、根据步距确定中间各刀刀补值。
示例:用环切方案加工图1-1零件内槽,环切路线为从内向外。
2
共享知识 分享快乐 环切刀补值确定过程如下: R6101101、根据内槽圆角半径R6,选取φ129003R键槽铣刀,精加工余量为0.5mm,走刀步80204010距取10mm。
图1-1 2、由刀具半径6,可知精加工和半精加工的刀补半径分别为6和6.5mm;
3、如图所示,为保证第一刀的左右两条轨迹按步距要求重叠,则两轨迹间距离等于
步距,则该刀刀补值=30-10/2=25mm。
4、根据步距确定中间各刀刀补值,
第二刀刀补值=25-10=15mm
第三刀刀补值=15-10=5,该值小于半精加工刀补值,说明此刀不需要。
由上述过程,可知,环切共需4刀,刀补值分别为25、15、6.5、6mm。
3
共享知识 分享快乐
1.1.2环切刀补程序工步起点(下刀点)的确定
对于封闭轮廓的刀补加工程序来说,一般选择轮廓上凸出的角作为切削起点,对内轮
廓,如没有这样的点,也可以选取圆弧与直线的相切点,以避免在轮廓上留下接刀痕。在
确定切削起点后,再在该点附近确定一个合适的点,来完成刀补的建立与撤消,这个专用
于刀补建立与撤消的点就是刀补程序的工步起点,一般情况下也是刀补程序的下刀点。
一般而言,当选择轮廓上凸出的角作为切削起点时,刀补程序的下刀点应在该角的角
平分线上(45°方向),当选取圆弧与直线的相切点或某水平/垂直直线上的点作为切削起
点时,刀补程序的下刀点与切削起点的连线应与直线部分垂直。在一般的刀补程序中,为
缩短空刀距离,下刀点与切削起点的距离比刀具半径略大一点,下刀时刀具与工件不发生
干涉即可。但在环切刀补程序中,下刀点与切削起点的距离应大于在上一步骤中确定的最
大刀具半径补偿值,以避免产生刀具干涉报警。如对图1-1零件,取R30圆弧圆心为编程
4
共享知识 分享快乐
零点,取R30圆弧右侧端点作为切削起点,如刀补程序仅用于精加工,下刀点取在(22,
0)即可,该点至切削起点距离=8mm。但在环切时,由于前两刀的刀具半径补偿值大于8mm,
建立刀补时,刀具实际运动方向是向左,而程序中指定的运动方向是向右,撤消刀补时与
此类似,此时数控系统就会产生刀具干涉报警。因此合理的下刀点应在编程零点(0,0)。
1.1.3在程序中修改刀具半径补偿值 子程序 %1000 %0010 G54 G90 G0 G17 G40; G90 G1 Y60; Z50 M03 S1000; X-30; 在程序中修改刀具半径补偿值可采用如下方法 X0 Y0; Y0; Z5 M08; G3 X30 R30; G1 Z-10 F60; G0 G40 X0; G41 X30 D1 F100; M99; M98 P0010; 1、在刀补表中设好环切每一刀的刀具半径补偿值,然后在刀补程序中修改刀具补偿号。 G41 X30 D2 F100; M98 P0010; 补偿号 刀具补偿半径 G41 X30 D3 F100; 1 25 M98 P0010; 2 15 示例1.1 直接在G41/G42程序段修改刀具补偿号 G41 X30 D4 F100; 3 6.5 M98 P0010; 4 6 M05 M09; G0 Z50; %100 Y60; M30; G54 G90 G0 G17 G40; X-30; Z50 M03 S1000; Y0; X0 Y0; G3 X30 R30; Z5 M08; G0 G40 X0; 示例1.2 用宏变量表示刀具补偿号,利用循环修改刀具补偿号 G1 Z-10 F60; #1=#1+1; End1; #1=1; 刀补号变量 Z50; WHILE #1 LE 4 DO1; M30; G41 X30 D#1 F100; 主程序 5
主程序 共享知识 分享快乐 M98 P0010;
M05 M09; %100
G0 Z50; G54 G90 G0 G17 G40;
M30; Z50 M03 S1000;
X0 Y0;
2、使用G10修改刀具补偿半径
子程序 Z5 M08;
G1 Z-10 F60; %0010 G10 L10 P1 R25; G90 G41 X30 D1 F100; M98 P0010; Y60; %1000 G41 X30 D1 F100; G10 L10 P1 R15; X-30; 示例1.3,使用G10和子程序完成环切 G54 G90 G0 G17 G40; Y60; M98 P0010; Y0; Z50 M03 S1000; X-30; G10 L10 P1 R6.5; G3 X30 R30;
X0 Y0; Y0; M98 P0010; G0 G40 X0; Z5 M08; G3 X30 R30; G10 L10 P1 R6; M99; G1 Z-10 F60; G0 G40 X0;
#10=#10-#11; #10=25 ;粗加工起始刀补值
END2; #11=10 ;步距
#10=#12+0.5 ;半精加工刀补值 #12=6 ;精加工刀补值
#11=0.5; 示例1.4 使用 #1=2 ;粗、精加工控制 G10和循环完成环切#1=#1-1; WHILE [#1 GE 1] DO1;
END1; WHILE #10 GE #12 DO2;
Z50; G10 L10 P1 R#10;
M30;
%1000 G41 X30 D[#10] F100;
G54 G90 G0 G17 G40; Y60; Z50 M03 S1000; X-30;
X0 Y0; Y0;
3、直接用宏变量对刀补值赋值Z5 M08; G3 X30 R30; G1 Z-10 F60; G0 G40 X0;
#10=#10-#11; #10=25 ;粗加工起始刀补值
END2; #11=9.25 ;步距
#10=#12 ;半精加工刀补值 #12=6 ;精加工刀补值 示例 1.5直接用宏变量对刀补值赋值,利用循环完成环切。
#1=#1-1; #1=2 ;粗、精加工控制
END1; WHILE[ #1 GE 1] DO1;
Z50; WHILE[ #10 GE #12] DO2;
M30;
说明:在G41 X30 d#10中,#10表示刀具补偿号,而在G41 X30 d[#10]中,#10表示
刀具半径补偿值,此用法在FANUC说明书中没有,但实际使用的结果确实如此,如所用
系统不支持此用法,就只用示例1.4用法。
6
共享知识 分享快乐
1.1.4 环切宏程序
%1000 当使用刀具半径补偿来完成环切时,不管我们采用何种方式修改刀具半径补偿值,由G54 G90 G0 G17 G40; Z50 M03 S100; #4=30 ;左右边界 #5=60 ;上边界 于受刀补建、撤的,它们都存在走刀路线不够简洁,空刀距离较长的问题。对于象图#10=25 ;粗加工刀具中心相对轮廓偏移量(相当于刀补程序中的刀补值) #11=9.25 ;步距 #12=6 ;精加工刀具中心相对轮廓偏移量(刀具真实半径) G0 X[#4-#10-2] Y[#5-#10-2]; 1-1所示的轮廓,其刀具中心轨迹很好计算,此时如用宏程序直接计算中心轨迹路线,则 Z5; G1 Z-10 F60; #20=2 ; WHILE [#20 GE 2] DO1; 可简化走刀路线,缩短空刀距离。 #1 WHILE [#10 GE #12] DO2; R6 #1=#4-#10 ;左右实际边界 10 #2=#5-#10 ;上边实际边界 G1 X[#1-2] Y[#2-2] F200; 示例1.6 完全使用宏程序的环切加工 G3 X#1 Y#2 R2;圆弧切入到切削起点 G1 X[-#1]; Y0; 30R G3 X#1 R#1; 如图1-2所示,用#1、#2表示轮廓左右和上边界尺寸,编程零点在R30圆心,加工起始点10 G1 Y#2; G3 X[#1-2] Y[#2-2] R2 #10=#10-#11 20 END2 80#10=#12 放在轮廓右上角(可削除接刀痕) #20=#20-1 图1-2 END1 G0 Z50 M30 #29040110
7
共享知识 分享快乐
1.2 行切
一般来说,行切主要用于粗加工,在手工编程时多用于规则矩形平面、台阶面和矩形
下陷加工,对非矩形区域的行切一般用自动编程实现。
1.2.1 矩形区域的行切计算
1、矩形平面的行切区域计算 如图所示,矩形平面一般采用图示直
刀路线加工,在主切削方向,刀具中心需切削至零件轮廓边,在进刀方向,在起始和终止
8
共享知识 分享快乐
位置,刀具边沿需伸出工件一距离,以避免欠切。
假定工件尺寸如图所示,采用Φ
精加工刀具中心轨迹 半精加工刀具中心轨迹 60面铣刀加工,步距50mm,上、下
边界刀具各伸出10mm。则行切区域
半精加工形成的轮廓 图1-4 尺寸为800×560(600+10*2-60)。
2、矩形下陷的行切区域计算
对矩形下陷而言,由于行切只用于去除中间部分余量,下陷的轮廓是采用环切获得的,
因此其行切区域为半精加工形成的矩形区域,计算方法与矩形平面类似。
假定下陷尺寸100*80,由圆角R6选Φ12铣刀,精加工余量0.5mm,步距10mm,则
半精加工形成的矩形为(100-12*2- 0.5*2)*(80-12*2-0.5*2)=75*55。如行切上、下边界刀具
各伸出1mm,则实际切削区域尺寸=75*(55+2-12)=75*45。
9
共享知识 分享快乐
1.2.2行切的子程序实现
对于行切走刀路线而言,每来回切削一次,其切削动作形成一种重复,如果将来回切
削一次做成增量子程序,则利用子程序的重复可完成行切加工。
1、切削次数与子程序重复次数计算
进刀次数n=总进刀距离/步距=47/10=4.5,实际需切削6刀,进刀5次。
子程序重复次数m=n/2=5/2=2,剩余一刀进行补刀。
步距的调整:步距=总进刀距离/切削次数。
说明:
当实际切削次数约为偶数刀时,应对步距进行调整,以方便程序编写;
当实际切削次数约为奇数刀时,可加1成偶数刀,再对步距进行调整,或直接将剩下
的一刀放在行切后的补刀中,此时不需调整步距。
10
共享知识 分享快乐
由于行切最后一刀总是进刀动作,故行切后一般需补刀。
主程序 子程序 %1000 %0020
G54 G90 G0 G17 G40; G91 G1 X75 F150; Z50 M03 S800; Y10;
X-75; G0 X-43.5 Y-33.5; 定位到下
Y10.; 刀点
G90 M99; Z5;
G1 Z-10 F100;
M98 P0010; 环切加工,、示例1.7 2
该程序省略
G1 X-37.5 Y-22.5; 行切起点 M98 P0020 L2; 行切加工 G1 X37.5; 补刀
对图1-4零件,编程零点设在工件,下刀点选在左下角点,加工程序如下:
Y22.5 X-37.5 G0 Z50; M30;
1.2.3 行切宏程序实现
对图1-4零件,编程零点设在工件,下刀点选在左下角点,加工宏程序如下:
示例1.8(本程序未考虑分层下刀问题)
11
WHILE [#8 GE 1] DO1; G1 X[#24-#4] Y[#25-#5];
主程序 X[#24+#4];
%1000 Y[#25+#5];
共享知识 分享快乐 G54 G90 G0 G17 G40 X[#24-#4];
Y[#25-#5]; Z50 M03 S800
G65 P9010 A100 B80 C0 D6 Q0.5 K10 X0 Y0 Z-10 F150 #4=#4+#17; G0 Z50 #5=#5+#17; 宏程序调用参数说明:
M30 #8=#8-1;
A(#1)B(#2)-------矩形下陷的长与宽 END1; C(#3)------ -------粗精加工标志,C=0,完成粗精加工,C=1,只完成精加工。 IF [#3 EQ 1] GOTO 200;只走精加工,程序结束
D(#7)--------------刀具半径 X #4=#1/2-2*[#7+#17]; 行切左右极限
Q(#17)------------精加工余量 Y #5=#/2-3*#7-2*#17+4; 行切上下极限 K(#6)--------------步距 #8=-#5; 进刀起始位置
X(#24)Y(#25)----下陷中心坐标 G1 X[#24-#4] Y[#25+#8];
Z(#26)-------------下陷深度 WHILE [#8 LT #5 DO1];准备进刀的位置不到上极限时加工
F(#9)-------------- G1 Y[#25+#8]; 走刀速度 进刀
X[#24+#4]; 切削 #8=#8+#6; 准备下一次进刀位置 #4=-#4; 准备下一刀终点X
END1;
G1 Y[#25+#5]; 进刀至上极限,准备补刀
X[#24+#4]; 补刀
G0 Z5; N200 M99;
12
共享知识 分享快乐
专题二 相同轮廓的重复加工
在实际加工中,相同轮廓的重复加工主要有两种情况:
1、同一零件上相同轮廓在不同位置出现多次;
2、在连续板料上加工多个零件。
实现相同轮廓重复加工的方法
1、用增量方式定制轮廓加工子程序,在主程序中用绝对方式对轮廓进行定位,再调用
子程序完成加工。
2、用绝对方式定制轮廓加工子程序,并解决坐标系平移的问题来完成加工。
3、用宏程序来完成加工。
13
主程序
%1000
G54 G90 G0 G17 G40 M03;
共享知识 分享快乐 Z50 S2000; X-150 Y-50;
Z5; M98 P0010; G0 X-150 Y50; 2.1 用增量方式完成相同轮廓的重复加工 M98 P0010; G0 X0 Y50; M98 P0010; 图2-1 G0 X0 Y-50;
子程序 φ12键槽铣刀加工。M98 P0010; 示例2-1,加工图2-1所示工件,取零件中心为编程零点,选用G0 X-150 Y-50; %0010 M98 P0010; G91 G0 X24; G0 X-150 Y50; G1 Z-27 F60; M98 P0010; G3 I-24 F200; 子程序用中心轨迹编程。 G0 Z100; G0 Z12; M30; G1 X10; G3 I-34; G0 Z15;
2.2用坐标系平移完成相同轮廓的重复加工
坐标系平移有两种方式
G54+G52,用于重复次数不多,且轮廓分布无规律情况。
G54+G92,用于轮廓分布有规律且重复次数很多的情况。
示例2-2用局部坐标系G52完成相同轮廓的重复加工,G54零点设在零件中心,局部
坐标系零点在需加工孔的孔心。
14
M98 P0020; G52 X0 Y50; M98 P0020; G52 X0 Y-50;
M98 P0020; 共享知识 分享快乐 G52 X150 Y-50; M98 P0020; G52 X150 Y50; M98 P0020;
G90 G0 X24; Z5; G1 Z-22 F100; G3 I-24; G0 Z-10; G1 X34; G3 I-34; G0 Z5; M99;
%1000 %0030
G54 G90G0 G17 G40; G92 X0 Y0 Z50 M03 M07 S1000; G90 G0 X24;
示例2-3,用G54+G92完成相同轮廓的重复加工,G54零点设设在零件中心,子坐标 X-150 Y-50; Z5;
M98 P0030 L3; G1 Z-22 F100; G54 G0 X-150 Y50; G3 I-24; M98 P0030 L3; G0 Z-10; G54 G0 Z100; 系零点在需加工孔的孔心。 G1 X34;
M30;
G3 I-34; G0 Z5; X150 M99; %1000 宏程序
G54 G90 G0 G17 G40 M03; 2.3 Z50 S2000; %9010
用宏程序完成相同轮廓的重复加工 Z5; G90 G0 X[#24+24] Y#25 G65 P9010 X-150 Y-50; Z5
G65 P9010 X-150 Y50; G1 Z-20 F60 G65 P9010 X0 Y50; G3 I-24 F200 G65 P9010 X150 Y-50; 示例G65 P9010 X0 Y-50; G0 Z-10 2-4,用G65调用完成加工,宏程序用绝对编程。G1 X[#24+34] G65 P9010 X150 Y50; G3 I-34 G0 Z100; G0 Z5
M30; M99
示例2-5,用G66调用完成加工,宏程序用绝对编程。
15
G66 P9011; Z5; G0 X-150 Y50; #20=#5+[#10-1]*#3;待加工孔的孔心坐标X X0 Y50;
WHILE #11 LE #1 DO2; G1 Z-22 F100;
X0 Y-50; #21=#6+[#11-1]*#4;孔心坐标G3 I-24; Y X150 Y-50;
共享知识 G0 X[#20+24] Y#21; 分享快乐 G0 Z-10;
X150 Y50; Z2; G1 X[#1+34]; G67; G1 Z-22 F100; G3 I-34; G0 Z100; G3 I-24; G0 Z5; M30; G0 Z-10; M99; G1 X[#20+34];
G3 I-34; G0 Z5; #11=#11+1; 示例2-6,使用循环,用一个程序完成加工 END2; #10=#10+1; END1; G0 Z100; M30;
16
共享知识 分享快乐
专题三 简单平面曲线轮廓加工
对简单平面曲线轮廓进行加工,是采用小直线段逼近曲线来完成的。具体算法为:采
用某种规律在曲线上取点,然后用小直线段将这些点连接起来完成加工。 %1000
G54 G90 G0 G17 G40; 示例3-1,椭圆加工,假定椭圆长(X向)、短轴(Y向)半长分别为A和B,则椭圆的极 Z50 M30 S1000; X60 Y-15; Z5 M07; G1 Z-12 F800; xa.cos坐标方程为,利用此方程可方便地完成在椭圆上取点工作。 G42 X50 D1 F100;
yb.sin Y0;
#1=0.5; θ变量初始值0.5度
WHILE #1 LE 360 DO1;
编程条件:编程零点在椭圆中心,a=50#2=50*COS[#1]; ,b=30,椭圆轮廓为外轮廓,下刀点在椭圆右#3=30*SIN[#1]; G1 X#2 Y#3; #1=#1+0.5;
END1; 10mm。程序如下: 极限点,刀具直径φ18,加工深度G1 Y15; G0 G40 X60; Z100; M30;
17
共享知识 分享快乐
专题四 简单立体曲面加工
4.1球面加工
图4-1 球面加工使用的刀具
粗加工可以使用键槽铣刀或立铣刀,也可以使用球头铣刀。
精加工应使用球头铣刀。
球面加工的走刀路线
一般使用一系列水平面截球面所形成的同心圆来完成走刀。
在进刀控制上有从上向下进刀和从下向上进刀两种,一般应使用从下向上进刀来
完成加工,此时主要利用铣刀侧刃切削,表面质量较好,端刃磨损较小,同时切
削力将刀具向欠切方向推,有利于控制加工尺寸。
18
共享知识 分享快乐 进刀控制算法 θ
图4-2 进刀点的计算:
先根据允许的加工误差和表面粗糙度,确定合理的Z向进刀量,再根据给定加工深度
Z,计算加工圆的半径,即:r=sqrt[R2-z2]。此算法走刀次数较多。
先根据允许的加工误差和表面粗糙度,确定两相邻进刀点相对球心的角度增量,再根
据角度计算进刀点的r和Z值,即Z=R*sinθ,r=R*cosθ。
进刀轨迹的处理
对立铣刀加工,曲面加工是刀尖完成的,当刀尖沿圆弧运动时,其刀具中心运动轨迹
也是一行径的圆弧,只是位置相差一个刀具半径。
对球头刀加工,曲面加工是球刃完成的,其刀具中心是球面的同心球面,半径相差一
19
共享知识 分享快乐
个刀具半径。
4.1.1外球面加工
主程序
宏程序调用参数说明 %1000 X(#24)/Y(#25)------球心坐标 G91 G28 Z0 示例4-1,加工图4-3所示外球面。为对刀方便,宏程序编程零点在球面最高点处,采Z(#26)----------------球高 M06 T01 D(#7)----------------刀具半径 G54 G90 G0 G17 G40 Q(#17)---------------角度增量,度 G43 Z50 H1M03 S3000
I(#4)------------------球径 G65 P9013 X0 Y0 Z-30 D6 I40.5 Q3 F800 用从下向上进刀方式。立铣刀加工宏程序号为%9013,球刀加工宏程序号%9014。F(#9)-----------------走刀速度 G49 Z100 M05 G28 Z105
M06 T02
G43 Z50 H2 M03 S4000
G65 P9014 X0 Y0 Z-30 D6 I40 Q0.5 F1000
G49 Z100 M05 G28 Z105 M30
图4-3 宏程序
20
G1 Z#1 F#9;
#3=#3+#17; X[#24+#2];
#1=#4*[SIN[#3]-1];Z= - (R - RSINθ) G2 I-#2; #2=#4*COS[#3]+#7 ;r=RCOSθ+r刀 #3=#3+#17;
END1; 共享知识 分享快乐 #1=#4*[SIN[#3]-1]; Z= - (R - RSINθ) G0 Z5; #2=#4*COS[#3] ; r=RCOSθ M99; END1;
G0 Z5; M99;
4.1.2内球面加工 %9015 %9016 #6=#4+#26 球心在零点之上的高度 #6=#4+#26 球心在零点之上的高度 图4-4 中间变量 #8=SQRT[#4*#4 - #6*#6] 中间变量 #8=SQRT[#4*#4 - #6*#6] #3=90-ATAN[#6]/[#8] 加工终止角 #3=90-ATAN[#6]/[#8] 加工终止角 示例#8=SQRT[#4*#4 - #7*#7] 4-2,加工图4-4所示内球面。为对刀方便,G90 G0 X#24 Y#25; 加工起点 #5=ATAN[#7]/[#8] 加工起始角 Z5; G1 Z#26 F50; G90 G0 X#24 Y#25; 加工起点
#5=#17; Z5;
宏程序编程零点在球面最高处中心,采用从下向上进刀方式。其主程序与示例4-1类似,#4=#4 - #7; G1 Z[#6-#8] F50;
WHILE [#5 LE #3] DO1; 角度小于等于#5=#5+#17;
WHILE [#5 LE #3] DO1;角度小于等于终止角时加工 #1=#6 - #4*COS[#5]; Z 终止角时加工
宏程序调用参数与示例4-1相同,本例不再给出。立铣刀加工宏程序号为,球刀加#2=#4*SIN[#5]; %9015 X #1=#6 - #4*COS[#5]; Z
G1 Z#1 F#9; #2=#4*SIN[#5] - #7; X
X[#24+#2]; G1 Z#1 F#9;
G3 I-#2; X[#24+#2];
#5=#5+#17; G3 I-#2; 工宏程序号%9016。 END1; #5=#5+#17;
G0 Z5; END1;
M99; G0 Z5;
M99;
21
共享知识 分享快乐
4.2水平圆柱面的加工
水平圆柱面加工可采用行切加工
沿圆柱面轴向走刀,沿圆周方向进刀;走刀路线短,加工效率高,加工后圆柱面直线
度好;用于模具加工,脱模力较大;程序可用宏程序或自动编程实现。
沿圆柱面圆周方向走刀,沿轴向进刀;走刀路线通常比前一方式长,加工效率较低,但用于大直径短圆柱则较好,加工后圆柱面轮廓度较好;用于模具加工,脱模力较小;程序可用子程序重复或宏程序实现,用自动编程实现程序效率太低。
a 图4-4 b 4.2.1圆柱面的轴向走刀加工
示例4-3,为简化程序,以完整半圆柱加工为例(图4-4 a)。为对刀、编程方便,主程
序、宏程序零点放在工件左侧最高点,毛坯为方料,立铣刀加工宏程序号为%9017,球刀
22
%9017 %9018 圆柱长 G91 G28 Z0 A(#1)------------G90 G0 X[#24-2] Y[#25+#4+#7]; #4=#4+#7 刀具半径 M06 T01 D(#7)------------- Z5; G90 G0 X[#24-2] Y[#25+#4]; G54 G90 G0 G17 G40 Q(#17)------------角度增量,度 G1 Z-#4 F200; Z5; G43 Z50 H1M03 S3000
I(#4)------------------圆柱半径 分享快乐 G1 Z-#4 F200; #8=1; 立铣刀偏置方向共享知识 G65 P9017 X-6 Y0 A126 D6 I40.5 Q3 F800 F(#9)-----------------走刀速度 #10=0; 角度初值 G49 Z100 M05 #10=0; 角度初值
G28 Z105 #11=#24+#1/2;轴线X #11=#24+#1/2;轴线X M06 T02 #12=#1/2;轴线两端相对距离 #12=#1/2;轴线两端相对距离
G43 Z50 H2 M03 S4000 WHILE [#10 LE 180] DO1; 加工宏程序号%9018。 WHILE [#10 LE 180] DO1;
G65 P9018 X0 Y0 A120 D6 I40 Q0.5 F1000 #13=#4*[SIN#10-1]; Z #13=#4*[SIN#10-1]; Z
G49 Z100 M05 #14=#4*COS#10; Y #14=#4*COS#10; Y G28 Z105 G1 Z#13 F#9 G1 Z#13 F#9 M30 Y[#25+#14] Y[#25+#14+#7*#8]
G1 X[#11+#12] G1 X[#11+#12] #10=#10+#17 #10=#10+#17
#12=-#12 IF #10 LE 90 GOTO 10
END1 #8=-1
G0 Z5 N10 #12=-#12
M99 END1
G0 Z5
M99
主程序
子程序
%1000 %0020
G91 G28 Z0 4.2.1圆柱面的周向走刀加工G90 G19 G2 Y-6.5 Z0.5 R40.5 F800
M06 T01 G1 Y6.5 G54 G90 G0 G17 G40 G2 Y46.5 Z-40 R40.5 G43 Z50 H1 M03 S3000 G91 G1 X1
X-8 Y-46.5 G90 G3 Y6.5 R40.5
为简化程序,以完整半圆柱加工为例(图4-4 a)。为对刀、编程方便,主程序、宏程序G1 Z-40 F200 G1 Y-6.5
X-5 G3 Y-46.5 Z-40 R40.5 M98 P0020 L28 G91 G1 X1 G49 Z100 M05 G90 M99
零点放在工件左侧最高点,毛坯为方料。 G28 Z105
M06 T02 %0021
G43 Z50 H2 M03 S4000 G90 G19 G2 Y46 R46 F1000
X0 Y-46 G91 G1 X0.5 G1 Z-46 F200 G90 G3 Y-46 R46 示例4-4,子程序加工方案,立铣刀加工程序号为%0020,球刀加工程序号%0021。 M98 P0021 L50 G91 G1 X0.5 G49 Z100 M05 G90 M99 G28 Z105 M30
23
#2=2; G2/G3 #2=2; G2/G3 #3=1; 切削方向 #3=1; 切削方向 G90 G0 X[#10-2] Y[#25-#3*[#4+#7]]; #4=#4+#7
共享知识 分享快乐 Z5; G90 G0 X[#10-2] Y[#25-#3*#4];
G1 Z-#4 F200; Z5; WHILE[ #10 LE #11] DO1 G1 Z-#4 F200;
WHILE [#10 LE #11] DO1 G1 X#10 F#9 ; 进刀
G1 X#10 F#9 ; 进刀 G#2 Y[#25-#3*#7] Z0 R#4; 立铣刀加工宏程序号为 走1/4圆弧 示例4-5,宏程序加工方案,%9020,球刀加工宏程序号%9021。G#2 Y[#25+#3*#4] Z0 R#4; 走圆弧 G1 Y[#25+#3*#7]; 走一个刀具直径的直线
#10=#10+#17; 计算下一刀位置 G#2Y[#25+#3*[#4+#7]] Z-#4R#4;走1/4圆弧
#2=#2+#3; 确定下一刀G2/G3 #10=#10+#17; 计算下一刀位置
#3=-#3; 切削方向反向 #2=#2+#3; 主程序和宏程序调用参数与示例 确定下一刀G2/G3 4-3基本相同,不再给出。
END1 #3=-#3; 切削方向反向
G0 Z5 END1
M99 G0 Z5
M99
24
共享知识 分享快乐
专题五 孔系加工
孔系加工可分为矩形阵列
孔系和环形阵列孔系加工两种
情况。
图5-1 5.1 矩形阵列孔系加工
主程序
宏程序调用参数说明
%1000 X(#24)-----阵列左下角孔位置
就单孔加工而言,其加工有一次钻进和间歇钻进之分,为使用方便,定制的宏程序应G91 G28 Z0; Y(#25)
M06 T1;中心钻 A(#1)-------行数 G54 G90 G0 G17 G40 B(#2)-------列数 G43 Z50 H1 M03 M07 S1000 I(#4)--------行间距
G65 P9022 X19.5 Y14 A9 B20 I9 J9 R2 Z-3 Q0 F60 能完成此两种加工。以图5-1所示工件为例,板厚20,编程零点放在工件左下角。
J(#5)--------列间距
G0 G49 Z150 M05 M09
R(#7)-------快速下刀高度 G91 G28 Z0
Z(#26)------钻深 M06 T2;钻头
Q(#17)------每次钻进量,Q=0,G90 G43 Z50 H2 M03 M07 S1200 示例5-1,矩形阵列孔系宏程序加工,阵列基准为左下角第一个孔。 则一次钻进到指定深度。 G65 P9022 X19.5 Y14 A9 B20 I9 J9 R2 Z-22 Q2 F100
G0 G49 Z150 M05 M09 F(#9)--------钻进速度
G91 G28 Z0
M30
宏程序
25
END3 #13=#24; X坐标 #12=#25+[#10-1]*#4 ; Y坐标 ; 一次钻进/或补钻 N10 G1 Z#26 F#9 一次钻进/或补钻#15=1; 方向 WHILE[ #11 LE #2 ]DO2 G0 Z#18; 抬刀至快进点 G0 Z#7; 抬刀至快进点WHILE [#10 LE #1] DO1 #13=#24+[#11-1]*#5; X坐标 #11=#11+1; 列加1 #11=#11+1; 列加#11=1 ; 列变量 G0 X#13 Y#12; 孔心定位 共享知识 分享快乐 #13=#13+#5*#15 1 END2 WHILE [#11 LE #2] DO2 Z#7; 快速下刀 END2 #10=#10+1; 行加1 G0 X#13 Y#12; 孔心定位 IF[ #17 EQ 0 ]GOTO 10 #13=#13-#15*#5 END1 #14=#7-#17Z#18; ; 分次钻进 快速下刀 #10=#10+1; M99 行加1 IF [#17 EQ 0] GOTO 10 WHILE [#14 GT #26] DO3 #15=-#15 #14=#18-#17; 分次钻进 #12=#12+#4 主程序 WHILE [#14 GT #26] DO3 END1 G1 Z#14 F#9 %1000 M99 G0 Z[#14+2] G91 G28 Z0; M06 T1; 中心钻 G54 G90 G0 G17 G40; G43 Z50 H1 M03 M07 S1000; G65 P9023 X0 Y0 A0 B45 I50 K8 R2 Z-3 Q0 F60 G65 P9023 X0 Y0 A0 B30 I80K12 R2 Z-3 Q0 F60 5.2环形阵列孔系加工 G0 G49 Z120 M05 M09 宏程序调用参数说明 G91 G28 Z0 M06 T2; X(#24)----- 阵列中心位置钻头 G43 Z50 H2 M03 M07 S800 Y(#25) G65 P9023 X0 Y0 A0 B45 I50 K8 R2 Z-22 Q2 F60 示例5-2,加工图5-2所示工件。编程零点放在分布圆中心。 A(#1)-------起始角度 G65 P9023 X0 Y0 A0 B30 I80 K12 R2 Z-42 Q2 F60 B(#2)-------角度增量(孔间夹角) G0 G49 Z100 M05 M09 G91 G28 Z0 I(#4)--------分布圆半径 K(#6)-------孔数 M30 图5-2 R(#7)-------快速下刀高度 Z(#26)------钻深 Q(#17)------每次钻进量,Q=0,则一次钻进到指定深度。 %9023 G0 Z[#14+2] F(#9)--------钻进速度 Z[#14+1] #10=1; 孔计数变量 #14=#14-#17 WHILE [#10 LE #6] DO1 END2 #11=#24+#4*COS[#1]; X N10 G1 Z#26 F#9; 一次钻进/或补钻 #12=#25+#4*SIN[#1]; Y G90 G0 X#11 Y#12; 定位 G0 Z#7; 抬刀至快进点 Z#7; 快速下刀 宏程序 #10=#10+1; 孔数加1 IF [#17 EQ 0] GOTO 10 #1=#1+#2; 孔分布角加角度增量 #14=#7-#17; 分次钻进 END1 WHILE [#14 GT #26] DO2 M99 G1 Z#14 F#9 26
共享知识 分享快乐
第二篇 车工篇
专题六 参数编程
参数编程用于系列零件的加工,此系列零件形状相同,但有部分尺寸不同。如果将这
些不同的尺寸用宏变量(参数)形式给出,由程序自动对相关节点坐标进行计算,则可用同
一程序完成一个系列零件的加工。
以图6-1零件为例。该系列零件的右端面半球球径可取R15和R10,可将球径用变量
表示。编程零件设在工件右端面中心,棒料Φ45。
从图中可以看出,编程所需节点,除
∠1:2 A、D、E三点外,B、C点均与球径R有
关。下面给出各节点坐标。
图6-1 编号 坐标值 27
共享知识 分享快乐
X Z A 0 0 B 2R -R C 2R -(60-2*(20-R))=-20-2R %1001 T0101; D 40 -60 G54 G90 G0 G95 M03 S800; X45 Z2 M07; #1=15; G71 U7 R1; E 40 -90 G71 P10 Q20 U1 W0.2 F0.4 S750; N10 G0 X0 S1200; G3 X[2*#1] Z-#1 R#1 F0.15; G1 Z[-20-2*#1]; X40 Z-60; 加工程序如下: Z-100; N20 X45; G70 P10 Q20; G0 X200 Z200; M30;
28
共享知识 分享快乐
专题七 方程曲线的车削加工
在实际车削加工中,有时会遇到工件轮廓是某种方程曲线的情况,此时可采用宏程序
完成方程曲线的加工。
7.1方程曲线车削加工的走刀路线:
粗加工:应根据毛坯的情况选用合理的走刀路线。
对棒料、外圆切削,应采用类似G71的走刀路线;
对盘料,应采用类似G72的走刀路线;
对内孔加工,选用类似G72的走刀路线较好,此时镗刀杆可粗一些,易保证加工质量。
精加工:一般应采用仿形加工,即半精车、精车各一次。
29
共享知识 分享快乐
%200 7.2 椭圆轮廓的加工 G50 X100 Z200; T0101; G95 G0 X41 Z2 M03 S800; G1 Z-100 F0.3; 粗加工开始 对椭圆轮廓,其方程有两种形式。对粗加工,采用G71/G72走刀方式时,用直角坐标G0 X42; Z2; 图7-2 2#1=20*20*4; 4a 直角坐标方程: G0 X0 S1500; 进刀,准备精加工 #2=60; x 2 a sinb 极坐标方程 #20=0 ; x 2 z 2 角度初值 #3=35 ; 方程比较方便;而精加工 zX(直径值) )用极坐标方程比较方便。初值bcos(仿形加工21曲线加工 WHILE [#20 LE 90] DO2; 2WHILE[ #3 GE 0] DO1; 粗加工控制 4aba—X向椭圆半轴长; #3=2*20*SIN[#20]; X #4=#2*SQRT[1-#3*#3/#1]; Z 2 #4=60*COS[#20]; x Z b—Z向椭圆半轴长; G0 X[#3+1] ; 进刀zb12 G1 X[#3+#10] Z[#4+#11] F0.1; 4aθ—椭圆上某点的圆心角,零角度在G1 Z[#4-60+0.2] F0.3; 切削 Z轴正向。 #20=#20+1; G0 U1; 退刀 END2; Z2; 返回 G1 Z-100; #3=#3-7; 下一刀切削直径 G0 X45 Z2; 示例7-2,加工图 END1; 7-2所示椭圆轮廓,棒料Φ45,编程零点放在工件右端面。 #10=#10-0.8; #10=0.8; x向精加工余量 #11=#11-0.1; END1; #11=0.1; z向精加工余量 G0 X100 Z200 T0100; WHILE[ #10 LE 0] DO1; 半精、精加工控制 M30; 7.3 抛物线加工
示例7-3,加工图7-3所示抛物线孔,方程为Z=X2/16,换算成直径编程形式为Z=X2/,则图7-3 X=sqrt[Z]/8。采用端面切削方式,编程零点放在工件
右端面中心,工件预钻有Φ30底孔。
30
G1 X[#2-#10] Z[#1+#11] F0.1;
#1=#1+0.3; END2; G0 X28;
共享知识 分享快乐 #10=#10-0.2;
#11=#11-0.2; END1;
G0 X100 Z200 M05 M09;
T0100; M30;
31
共享知识 分享快乐
附录 FANUC系统G指令和宏指令
附录1 刀具补偿值、刀具补偿号及在程序中赋值G10
1、刀具补偿值的范围
米制:0~±999.999mm
英制:0~±99.9999inch
2、刀具补偿值的存贮
刀具补偿存贮器A:使用与刀具补偿号对应的刀具补偿值。
补偿号 刀具补偿值 1 … 32
共享知识 分享快乐
400 刀具补偿存贮器B:使用与刀具补偿号对应的刀具几何补偿、刀具磨损补偿。
补偿号 几何补偿 磨损补偿 1 … 400 刀具补偿存贮器C:刀具补偿分长度补偿(H)和半径补偿(D),使用与刀具补偿号对应
的刀具几何补偿、刀具磨损补偿。
刀具长度补偿(H) 补偿号 几何补偿 磨损补偿 刀具半径补偿(D) 几何补偿 磨损补偿 1 33
共享知识 分享快乐
… 400 3、刀具补偿赋值格式:
刀具补偿存贮器A:G10 P____ R____;
刀具补偿存贮器B:
刀具补偿存贮器种类 格式 几何补偿 G10 L10 P___ R___; 磨损补偿 G10 L11 P___ R___; 刀具补偿存贮器C:
刀具补偿存贮器种类 格式 34
共享知识 分享快乐
刀具长度补偿几何补偿 G10 L10 P___ R___; (H) 磨损补偿 G10 L11 P___ R___; 刀具半径补偿几何补偿 G10 L12 P___ R___; (D) 磨损补偿 G10 L13 P___ R___; P――刀具补偿号;R――G90时,为刀具补偿实际值;G91时,R值加到指定刀具补偿值
上(其和为刀具补偿值,即R值为刀具补偿增量)。
附录2 缩放G50、G51
编程的形状可以被放大或缩小(比例缩放)。用x,y,z指定的尺寸均可用相同的或不
同的放大倍率进行缩放,放大倍率可以在程序中指定。如果未在程序中指定,则使用在参
数中指定的放大倍率。
格式:
35
共享知识 分享快乐
在所有轴分量上用相同的放大倍率缩放
G51 X__ Y__ Z__ P__; 缩放开始
…
G50; 缩放取消
X__ Y__ Z__:缩放中心绝对值指定。
P_:缩放比例。
在每一个轴上用不同的放大倍率缩放
G51 X__ Y__ Z__ I__ J__ K__; 缩放开始…
G50; 缩放取消I__ J__ K__:x、y、z各自的缩放比例。
36
共享知识 分享快乐
警告: 在一个单独的程序段中指令G51,在图形放大或缩小后,指令G50以取消缩放模式。 解释
在所有轴上用相同的放大倍率缩放
最小放大比例输入增量是0.001或0.00001,这由参数036#07的值决定。如果在缩放
程序段(G51 X__ Y__ Z__ P__;)没有指定比例P,则使用在参数731中设定的放大倍率。
如果忽略X、Y、Z,则指定G51指令处的刀具位置为缩放中心。
在每一个轴上用不同的放大倍率缩放(负放大倍数)
每个轴可按不同比例放大,当指定负放大时,可实现镜像。首先设置参数063#6,使
各轴缩放(镜像)生效,然后设置参数036#0、#1、#2允许各轴缩放,最后设置参数036#7
指定各轴最小放大比例输入增量是0.001或0.00001。
设置给参数5421的放大倍数不得超过范围±0.00001~±9.99999或±0.001~±9.999。
37
共享知识 分享快乐
如果设置负值,则实现镜像。
如果未指令放大倍数I、J、K,则使用设置在参数(NO.731、732、733)中的放大倍
数。但参数中必须设置一非零值。
注意: 缩放倍率(I、J、K)不能使用小数点编程。 圆弧插补的缩放
即使在圆弧插补中各轴使用不同的放大倍率,刀具也不会沿椭圆运动。(即对圆弧插
补的数据缩放后再执行圆弧插补。)
当用半径R指令的圆弧插补、各轴使用不同的放大倍数时,将如下图所示。(该示例G90 G00 X0.0 Y100.0; YG51 X0.0 Y0.0 Z0.0 I2000 J1000; 缩放过的外形G02 X100.0 Y0.0 R100.0 F500; (0,100)上述指令等价于下列指令: 中,X分量的放大倍数为2,Y分量的放大倍数为1)。 G90 G00 X0.0 Y100.0 Z0.0; G02 X200.0 Y0.0 R200.0 F500; X半径R的放大倍数为I、J中较大的。 (200,0) (0,0)(100,0) 当用I、J、K指令的圆弧插补各轴使用不同的放大倍数时,将如下图所示。(该示例中,
38
共享知识 分享快乐 G90 G00 X0.0 Y0.0; YG51 X0.0 Y0.0 Z0.0 I2000 J1000; G02 X100.0 Y0.0 I0.0 J-100.0 F500; 缩放过的外形(0,100)上述指令等价于下列指令: X分量的放大倍数为2,Y分量的放大倍数为1) G90 G00 X0.0 Y100.0 Z0.0; G02 X200.0 Y0.0 I0.0 J-100.0 F500; X此时,指令终点与半径的端点不重合, (200,0)(100,0)包含了一直线段。 (0,0) 无效的缩放
缩放不能用于刀具半径补偿值、刀具长度偏置值和刀具偏置值。
在下列固定循环中,Z轴运动不会缩放:
深孔加工循环(G83、G73)的每次钻进量Q和回退量;
警告: G76; 精镗循环1、如果使用参数设置值作为放大比例而不指定P,则在G51指令的整个周期内都使用此设置值作为放大比例,并且对该值的任何修改都是无效的。 2、在指令返回参考点(G27、G28、G29、G30)或坐标系设置(G92)的G代码之 反精镗循环G87中在X轴和Y轴上让刀量Q; 前,应取消缩放模式。 3、如果缩放结果被四舍五入圆整后,超过了取值范围(数据上溢),忽略余数后,移动量可能变成零。此时,该程序段被当作一无运动程序段,因而将可能影响刀具半径C补偿下的刀具运动。 注意: 1、运动位置坐标显示值是缩放后的结果。 在手动操作中,移动距离不能用缩放功能增大或减小。 2、当镜像在指定平面内应用于某轴时,会产生下列结果: 圆弧指令-----------------------------圆弧旋向反向 刀具半径C补偿-------------------偏置方向反向 坐标系旋转--------------------------旋转角度反号 39
共享知识 分享快乐
示例:镜像程序
子程序
O9000;
G00 G90 X60.0 Y60.0;
Y10060504000405060100XG01 X100.0 F100;
Y100.0;
X60.0 Y60.0;
40
共享知识 分享快乐
M99;
主程序
N10 G00 G90;
N20 M98 P9000;
N30 G51 X50.0 Y50.0 I-1000 J1000;
N40 M98 P9000;
N50 G51 X50.0 Y50.0 I-1000 J-1000;
N60 M98 P9000;
N70 G51 X50.0 Y50.0 I1000 J-1000;
N80 M98 P9000;
N90 G50;
41
共享知识 分享快乐
附录3 坐标系旋转 G68、G69
格式:
G17G18G68____R__; 坐标系旋转开始 G19… 坐标系旋转状态
…
G69; 坐标系旋转取消
式中:
G17(G18、G19):用于选择旋转平面(该面内包含有需旋转的轮廓)α_β_:旋转中心,可用xy,zx,yz指定,由G17、G18、G19决定。R_:旋转角度,顺时针指定。
参数041的0位用于选择旋转角度的指定方式。
42
共享知识 分享快乐
041#0=0,R值为绝对旋转角度;
041#0=1,G90时,R值为绝对旋转角度;G91时,R值为旋转角度增量。
最小输入增量:0.001deg(度)
无效数据范围:360,000~360,000
解释
选择平面的G代码G17、G18、G19
在含有坐标系旋转的G代码(G68)的程序段内可指定选择平面的G代码G17、G18、G19,
但在坐标系旋转状态下不能指定G17、G18、G19。
至于在G68程序段与一含绝对编程指令(G90)程序段之间用指令增量位置指令(G91)
的情况,被当作:在G68被指令处的位置是旋转中心(图14.9(c))。
当α_β_省略时,G68被指令时的位置被设成旋转中心。
43
共享知识 分享快乐
N1 G92 X-50.0 Y-50.0 G69 G17; 当在N3程序段用增量指令时(括号中)的刀具路径N2 G68 X70.0 Y30.0 R60.0; 当旋转角度省略时,设置在参数NO.730中的值被当作旋转角度。 N3 G90 G01 X0 Y0 F200; 原有编程刀具路径(G91 X50.0 Y50.0) N4 G91 X100.0; N5 G02 Y100.0 R100.0; N6 G03 X-100.0 I-50.0 J-50.0; 坐标系旋转由G69取消。 N7 G01 Y-100.0; 60°(0,0)N8 G69 G90 X-50.0 Y-50.0 M02; 旋转中心(70.0,30.0) (-50.0,-50.0)旋转后的刀具路径 G69指令可和其它指令一起在同一程序段中指定。刀具偏置如:切削半径补偿、刀具长度
补偿、刀具偏置,在坐标系旋转后执行。 在刀具半径C补偿状态下可以 坐标系旋转前的编程轨迹指定G68和G69,旋转平面和 警告: 刀具半径补偿平面必须重合。 在指定G69的程序段必须用绝对编程方式指定运N1 G92 X0 Y0 G69 G01; N2 G42 G90 X100.0 Y100.0 动。 刀具路径 F100 H01; N3 G68 R-30; N4 G91 X200.0; N5 G03 X100.0 R100.0 J50.0; 示例 (0,0)N6 G01 X-200.0; N7 Y-100.0; N8 G69 G40 G90 X0 Y0 M30; 坐标系旋转后的编程轨迹 30° 刀具半径补偿和坐标系旋转
比例缩放和坐标系旋转
如果在缩放状态(G51)下指令坐标系旋转旋转中心α_β_也将被缩放,但角度不缩放。
44
共享知识 分享快乐
当指令运动指令时,先实现缩放,再实现坐标缩放。在缩放模式的刀具补偿(G41、G42)
状态下,不能指定坐标系旋转。坐标系旋转通常应先于刀具半径C补偿指定。
1、当系统没有处于刀具半径C补偿状态时,可按如下序列指定指令:
G51; 缩放模式开始
G68…; 坐标系旋转模式开始
…
G69; 坐标系旋转模式取消
G50; 缩放模式取消
2、当系统处于刀具半径C补偿状态时,可按如下序列指定指令:
G51; 缩放模式开始
G68…; 坐标系旋转模式开始
45
共享知识 分享快乐
…
G41(G42)…;刀具半径C补偿模式开始
…
G40…; 刀具半径补偿模式
…
G69; 坐标系旋转模式取消
G50; 缩放模式取消
例:
G90 G92 X0 Y0;
G51 X300 .0 Y150.0 P500;
G68 X200.0 Y100.0 R45.0;
46
共享知识 分享快乐
G01 G42 X400.0 Y100.0 F100 H01;
G91 Y100.0;
X-200.0;
Y-100.0; G92 X0 Y0 G69 G17; G01 F200 H01; M98 P2100; X200.0; M98 P072200; G69 G00 G90 X0 Y0 M30; (0,0)O2200 G68 X0 Y0 G91 R45.0; … G90 M98 P2100; M99; O2100 G90 G01 G42 X0 Y-10.0 H01; X4.142; 坐标系旋转的重复 (0,-10.0)X7.071 Y-7.071; G40; subprogram子程序M99; 可将一个程序当子程序存贮起来,再通过修改其角度来调用子程序。下例是在参数041#0=1的情
况下编制的,此时角度指定用绝对值还是增量值依赖于G代码(G90/G91)状态。
47
共享知识 分享快乐
附录4 宏程序B(custom macro B)
尽管子程序对重复性的相同操作很有用,(但仍不能和宏程序相提并论)。用户宏程序功能
允许使用变量、算术和逻辑运算、以及条件分支控制,这便于普通加工程序的发展,如发
展成打包好的自定义的固定循环。加工程序可利用一简单的指令来调用宏程序,就像使用
子程序一样。
加工程序:
O0001; ┋
G65 P9010 R50.0 L2;
┋ M30;
用户宏程序: O9010; #1+#18/2;
G01 G42 X#1 Y#1 F300; G02 X#1 Y-#1 R#1;
┋ M99;
例:
1 宏变量(variables)
普通加工程序中指定G代码和移动距离时,直接使用数字值,如:G100和X 100.0。而在
48
共享知识 分享快乐
用户宏程序中,数字值可直接指定或使用变量号(称宏变量)。当采用宏变量时,其值可
在程序中修改或利用MDI面板操作进行修改。
例:#1=#2+100;
G01 X #1 F300;
Explanation( 说明)
宏变量的表示形式
当指定一宏变量时,用“#”后跟变量号的形式,如:#1。在计算机上允许给变量指定变
量名,但用户宏程序没有提供这种能力。
宏变量号可用表达式指定,此时,表达式应包含在方括号内。
如:#[#1+#2-12]
宏变量的取值范围
49
共享知识 分享快乐
局部变量和全局变量取值范围如下:
1047~1029,0,1029~1047
如计算结果无效(超出取值范围)时,发出编号111的错误警报。
小数点的省略
在程序中定义宏变量的值时,可省略小数点。
例:#1=123;
宏变量#1的实际值是123.000。
未赋值(定义)的变量
如果一个宏变量没有赋值(无定义),则该变量被当作空变量。宏变量#0通常情况下是一
个空变量,它只能读,不能写(赋值)。
宏变量的类型
50
共享知识 分享快乐
根据变量号,宏变量可分成四种类型,如下表所示。
变量号 变量类型 功 能 #0 空变量 该变量通常为空(null),该变量不能赋值 局部变量 局部变量只能在宏程序内部使用,用于保存数据,如运算#1~#33 Local 结果等。当电源关闭时,局部变量被清空,而当宏程序被Variables 调用时,(调用)参数被赋值给局部变量。 全局变量可在不同宏程序之间共享,当电源关闭时,全局变量 #100~#149(#199) Common #500~#531(#999) variables 器磁带长度不得小于8.5m。 算中,#150~#199,#532~#999的变量可被使用,但存储#100~#149被清空,而#500~#531的值仍保留。在某一运#1000~#9999 系统变量 系统变量可读、可写,用于保存NC的各种数据项,如:51
共享知识 分享快乐
System 当前位置、刀具补偿值等。 variables 注:全局变量#150~#199,#532~#999是选用变量,应根据实际系统使用。
宏变量的引用
在程序中引用(使用)宏变量时,其格式为:在指令字地址后面跟宏变量号。当用表达
式表示变量时,表达式应包含在一对方括号内。
如:G01 X[#1+#2] F#3;
被引用宏变量的值会自动根据指令地址的最小输入单位进行圆整。
例:程序段G00 X#1;,给宏变量#1赋值12.3456,在1/1000mm的CNC上执行时,程
序段实际解释为G00 X12.346;。
要使被引用的宏变量的值反号,在“#”前加前缀“-”即可。
52
共享知识 分享快乐
如:G00 X-#1;
当引用未定义(赋值)的宏变量时,该变量前的指令地址被忽略。
如:#1=0,#2=null(),执行程序段G00 X#1 Y #2;,结果为G00 X0。 VARIABLE 未赋值 O1234 N1234 NO. DATA NO. DATA 100 123.456 108 101 0.000 109 102 110 103 宏变量值的显示 111 104 112 105 113 106 114 107 115 ACTUAL POSITION (RELATIVE) 1、按偏置菜单纽,显示刀具补偿显示屏幕。 实际位置(相对) X 0.000 Y 0.000 Z 0.000 B 0.000 [ OFFSET ] [ MACRO ] [ MENU ] [ WORK ] [ ] 2、按软体键[MACOR],显示宏变量屏幕。
3、按键,输入变量号,再按键,光标将移动到输入变量号的位置。
当变量值为空白时,该变量为null。
标记********表示变量值上溢(变量的绝对值大于99999999)或下溢(变量的绝对值
小于0.0000001)。
53
共享知识 分享快乐
使用:
宏变量不能用于程序号、程序段顺序号、程序段跳段编号。如不能用于以下用途:
O#1;
/#2 G00 X100.0;
N#3 Y200.0;
2 系统变量 SYSTEM VARIABLES
系统变量用于读写NC装置的内部数据,如:刀具补偿数据、刀具当前位置数据等。
但需注意的是,有些系统变量是只读的。对于(NC的)自动控制和普通的程序开发来说,系
统变量是必不可少的。
有关解释如下:
54
共享知识 分享快乐
2.1接口信号 Interface signals
接口信号可在可编程控制器PMC和用户宏程序之间进行交换。
表2.1(a)用于接口信号的系统变量
变 量 号 功 能 #1000~#1015 用于从PMC传送16位的接口信号到用户宏程序。#1000~#1015信号#1032 是逐位读取的,而#1032信号是16 位一次读取的。 #1100~#1115 用于从用户宏程序传送16位的接口信号到PMC。#1100~#1115信号#1132 是逐位写入的,而#1132信号是16 位一次写入的。 用于从用户宏程序一次写入32位的接口信号到PMC。 #1133 注意:#1133取值范围为-99999999~+99999999。 详细信息请参连接手册(B-61393E-2)。
55
共享知识 分享快乐
2.2刀具补偿值 Tool compensation values
刀具补偿值可通过系统变量读写。无论是几何补偿和磨损补偿的区别,还是刀具长度
补偿和刀具切削半径补偿间的区别,能用的变量号数都依赖于补偿值的对数。当补偿值对
数不超过200时,变量号#2001~#2400均可使用。
表2.2(a) 刀具补偿存储方式A的系统变量
刀具补偿号 系统变量号 1 #10001(#2001) ┊ ┊ 200 #10200(#2200) ┊ ┊ 400 #10400(#2400) 56
共享知识 分享快乐
表2.2(b) 刀具补偿存储方式B的系统变量
刀具补偿号 几何补偿 磨损补偿 1 #11001(#2201) #10001(#2001) ┊ ┊ ┊ 200 #11200(#2400) #10200(#2200) ┊ ┊ ┊ 400 #11400 #10400 表2.2(c) 刀具补偿存储方式C的系统变量
刀具长度补偿 刀具半径补偿 补偿号 几何补偿 磨损补偿 几何补偿 磨损补偿 1 #11001(#2201) #10001(#2001) #13001 #12001 57
共享知识 分享快乐
┊ ┊ ┊ ┊ ┊ 200 #11200(#2400) #10200(#2200) ┊ ┊ ┊ ┊ ┊ #13400 #12400 400 #11400 #10400 2.3宏程序报警信息Macro alarms
表 2.3表示宏程序报警信息的系统变量
变量号 功能 当#3000赋值为0~99中的某值时,NC停止并报警,随后给出一个不超过26#3000 个字符的报警信息。同时将#3000的值加上3000作为报警号于报警信息一起显示在屏幕上。 如:#3000=1(刀具为找到);
58
共享知识 分享快乐
报警屏幕显示:3001 TOOL NOT FOUND。
2.4时间信息
时间信息可被读与写。
表2.4表示时间信息的系统变量
变量号 功能 该变量的功能是作为计时器,并时刻以16毫秒的增量进行计时。当电源关闭#3001 时,该变量的值被重置为0。当累计计时65535毫秒时,计时器从0重新计时。(可用于刀具寿命管理) 该变量的功能是作为计时器,并在循环启动灯亮的同时,以1 小时为增量进行#3002 计时。即使电源关闭,该计时器的值仍保留。当累计计时1145324.612小时时,该计时器从0重新计时。 59
共享知识 分享快乐
该变量用于读取当前日期(年/月/日)。年/月/日信息被转换成类似于十进制的#3011 数。如:1993年3月28日表示为19930328。 该变量用于读取当前时间(时/分/秒)。时/分/秒信息被转换成类似于十进制的#3012 数。如:下午3点34分56秒表示为153456。 2.5自动运行控制
自动运行的控制状态可以改变。
表2.5(a) 用于自动运行控制的系统变量#3003。completion
#3003 程序单段运行 辅助功能完成 0 允许 Enabled 等待 1 禁止 disabled 等待 2 允许 不等待 60
共享知识 分享快乐
3 禁止 不等待 1、当电源关闭时,#3003的值变为0。
2、当单段运行禁止时,即使单段运行开关置为开(ON),单段运行操作也不执行。
3、当不指定等待辅助功能(M、S、T)完成时,在辅助功能完成前,程序会继续执行下
一程序段。当然也不会输出分配任务已结束信号(DEN——Distribution END)。
表2.5(b) 用于自动运行控制的系统变量#3004。
速度(进给)保持 #3004 Feed hold 速度倍率超越 准确停止 Feed rate override Exact stop 0 允许 允许 允许 1 禁止 允许 允许 61
共享知识 分享快乐
2 允许 禁止 允许 3 禁止 允许 允许 4 允许 允许 禁止 5 禁止 允许 禁止 6 允许 禁止 禁止 7 禁止 禁止 禁止 1、失电时,#3004的值为0。
2、当进给保持禁止时:
a、当进给保持按钮按下时,机床用单段运行模式停止。但当用#3003禁止单段运行模
式时,单段运行操作不执行。
b、当进给保持按钮压下又释放时,进给保持灯亮,但机床不停止,程序继续执行,
62
共享知识 分享快乐
直到指定进给保持允许的第一个程序段,机床才停止。
3、当倍率超越禁止时,无论机床操作面板上速度倍率旋钮置于何处,速度倍率总是
100%。
4、当准确停止检验禁止时,即使在没有指定切削的程序段,也不进行准确停止检查
(到位检查)。
2.6背景(#3005) Settings
背景可以读写,二进制值转换成十进制数。
Setting #15 #14 #13 #12 #11 #10 #9 #8
TAPE REV4 Setting #7 #6 #5 #4 #3 #2 #1 #0
SEQ ABS INCH ISO TVON REVY REVX 63
共享知识 分享快乐
REVX:X轴镜像,开/关
REVY:Y轴镜像,开/关
TVON:TV检测,开/关
ISO:输出代码格式,EIA/ISO
INCH:公制输入/英制输入
ABS:增量编程/绝对编程
SEQ:自动插入顺序号(Sequence-number)开/关
REV4:第四轴镜像开/关
TAPE:F10/11格式穿孔带开/关
2.7已加工的零件数 Number of machined parts
待加工零件数(目标数)和已加工零件数(完成数)可以读写的。
共享知识 分享快乐
变量号 功 能 #3901 已加工零件数(完成数) #3902 待加工零件数(目标数) 注意:不能给零件数赋负值。
2.8模态信息 Model information
在程序段中指定的模态信息,直到(当前程序段)之前的程序段中是可读出的。
变量号 功能 分组 #4001 G00 G01 G02 G03 G33 Group 1 #4002 G17 G18 G19 Group 2 #4003 G90 G91 Group 3 #4004 Group 4 65
共享知识 分享快乐
#4005 G94 G95 Group 5 #4006 G20 G21 Goup 6 #4007 G40 G41 G42 Group 7 #4008 G43 G44 G49 Group 8 #4009 G73 G74 G76 G80~G Group 9 #4010 G98 G99 Group 10 #4011 G50 G51 Group 11 #4012 G65 G66 G67 Group 12 #4014 G54~G59 Group 14 #4015 G61~G Goup 15 #4016 G68 G69 Group 16 66
共享知识 分享快乐
┊ ┊ ┊ #4022 Group 22 #4102 B code #4107 D code #4109 F code #4111 H code #4113 M code #4114 程序段顺序号 #4115 程序号 #4119 S code #4120 T code 67
共享知识 分享快乐
2.9当前位置
位置信息是只读的。
变量号 位置信息 坐标系统 刀具补偿值 运动期间读操作 #5001~#5004 程序段终点 工件坐标系 不包含 允许 #5021~#5024 当前位置 机床坐标系 包含 禁止 #5041~#5044 当前位置 工件坐标系 包含 禁止 #5061~#50 跳转信号位置 工件坐标系 包含 允许 #5081~#5084 刀具补偿值 禁止 #5101~#5104 伺服位置误差 禁止 说明:
变量号的未位代表轴编号,1对应X轴,2对应Y轴,3对应Z轴,4对应第四轴。
68
共享知识 分享快乐
#5081~5084存储的刀具偏置值是当前执行值,不是后面程序段的处理值。
在G31(跳转功能)程序段中跳转信号接通时的刀具位置存储在变量#5061~# 50 中.当
G31段跳转信号接通不接通时, 这些变量中贮存指定程序段终点.
运动期间读为禁止指由于缓冲(预读)功能的原因, 无法读取期望值。
2.10工件坐标系补偿值(工件坐标系零点偏置值)
工件坐标系偏置值可以读写。
变量号 功能 #2500~#2506 外部工件坐标系、G54~G59第一轴零点偏置值 #2600~#2606 外部工件坐标系、G54~G59第二轴零点偏置值 #2700~#2706 外部工件坐标系、G54~G59第三轴零点偏置值 #2800~#2806 外部工件坐标系、G54~G59第四轴零点偏置值 69
共享知识 分享快乐
#7001~#7004 工件坐标系G54 P1第一~四轴的零点偏置值 #7021~#7024 工件坐标系G54 P2第一~四轴的零点偏置值 ┋ ┋ #7941~#7944 工件坐标系G54 P48第一~四轴的零点偏置值 变量#2500~#2806是工件坐标系的任选变量,而变量#7001~#7944(G54P1~G54P48)
是附加的48个工件坐标系的任选变量。
(G54Pp)的第n轴的工件零点偏置变量号由下式获得:#[7000+[p-1]*20+n]
3 算术和逻辑运算
在表16.2(a)中列出的操作可以使用变量完成。表中右边的表达式可用常量或变量与函
数或运算符组合表示。表达式中的变量#j和#k可用常量替换,也可用表达式替换。
表3(a) 算术和逻辑运算
70
共享知识 分享快乐
函 数 格 式 备 注 赋值 #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] 平方根t #i=SQRT[#j] 71
共享知识 分享快乐
绝对值 #i=ABS[#J] 四舍五入 #I=ROUND[#J] 向下取整 #I=FIX[#J] 向上取整 #I=FUP[#J] 或OR #I=#J OR #K 异或XOR #I=#J XOR #K 逻辑运算用二进制数按位操作 与AND #I=#J 十——二进制转换 #I=BIN[#J] 用于转换发送到PMC的信号或从二——十进制转换 #I=BCD[#J] PMC 接收的信号 说明:
1、角度单位
72
共享知识 分享快乐
SIN、COS、TAN和ATAN 函数使用的角度单位为十进制度。
2、反正切函数ATAN
在反正切函数后指定两条边的长度,并用斜线隔开(y/x)。结果为0<=result<360。
如:#1=ATAN[1]/[-1];
#1的值为135.0。
3、四舍五入函数ROUND
当ROUND函数包含在数学或逻辑操作命令中,IF、WHILE语句中时,四舍五入在第
一个小数位进行。
如:#2=1.2345;
#1=ROUND[#2];
则#1=1.0。
73
共享知识 分享快乐
当ROUND函数使用于NC语句中的指令地址后时,四舍五入按地址的最小精度进行。
例:钻孔程序,系统精度0.001mm
#1=1.2345;
#2=2.3456;
G00 G91 X-#1; 移动1.235mm
G01 X-#2; 移动2.346mm
G00 x[#1+#2]; 移动3.580mm
由于1.2345+2.3456=3.5801,四舍五入后为3.580mm,刀具未返回原位。刀具位移误差
来至于运算时,先加后园整。为使刀具返回原位,最后的程序段应改为:
G00 X[ROUND[#1]+ROUND[#2]];
(注:G90编程时,上述问题不一定存在。)
74
共享知识 分享快乐
4、向上和向下取整
向上取整是指园整后的整数,其绝对值比原值的绝对值大,而向下园整是指园整后的
整数,其绝对值比原值的绝对值小。当对负数取整时,需特别注意。例:
#1=1.2;
#3=FUP[#1]; 2.0
#3=FIX[#1]; 1.0
#2=-1.2;
#3=FUP[#2]; -2.0
#3=FIX[#1]; -1.0
5、函数缩写(Abbreviation)
75
共享知识 分享快乐
可用函数的前两个字符表示该函数。
如:ROUND——RO,FIX——FI
6、运算优先级
1、函数;
2、乘除类运算(*、/、AND、MOD);
3、加减类运算(+、-、OR、XOR).
7、方括号嵌套bracket nesting
方括号用于改变运算顺序。方括号的嵌套深度为五层,含函数自己的方括号。当方括
号超过五层时,发生118号报警。
1、方括号Brackets
76
共享知识 分享快乐
方括号用于封闭表达式,注意不能用园括号。
2、运算误差
运算时会产生误差
表3(b) 运算涉及的错误
Average error Maximum error 误差类型 运算 平均误差 最大误差 type of error a=b*c 1.551010 4.661010 相对误差relative error (*1) a=b/c 4.661010 1.88109 a ab 1.24109 3.73109 a=b+c 2.331010 5.321010 取小值minb,c (*2) a=b-c 77
共享知识 分享快乐
a=sin[b] 5.0109 1.0108 绝对误差absolute error(*3) a=cos[b] degrees(度) a=atan[b]/[c] 1.8106 3.6106 注意:
1、相对误差大小与运算结果有关;
2、取两误差中较小的一个。
3、绝对误差大小为常值,与运算结果无关。
4、正切函数TAN用SIN/COS完成。
说明:
①由于变量值的精度为8位小数(在NC中变量用科学计数法表示),当在加减运算中
处理很大的数时,会出现意想不到的结果。
78
共享知识 分享快乐
如:试图给#1、#2如下赋值
#1=9876543210123.456;
#2=9876543277777.777;
变量的实际值为:
#1=9876543200000.000
#2=9876543300000.000
此时如计算#3=#2-#1,则结果为#3=100000.000。
运算结果的误差由变量是用二进制数运算引起的。(在nc中用于存储变量的二进制位
是有限的,为表示尽能大的数,将数转换成科学计数法表示,变量的二进制位中的后几位
表示指数,其余的位存储小数部分,当数的有效位多于变量的最大有效位时,多余的部分
进行四舍五入,从而引起误差。此误差相对数本身来说,误差极小,但对结果的影响就可
79
共享知识 分享快乐
能很大。编程时,应尽可能避免本例的情况。)
②因数据精度的原因,在条件表达式中用EQ、NE、GE、GT、LE和LT时,也可能
出现误差
例:IF [#1 EQ #2]
当#1和#2的值存在近似时,结果就会出现误差。
但将上式改写成:IF [ABS[#1-#2] LT 0.001]后,如果两变量的差值小于所需精度(这
里为 0.001)时,就可以认为二者相等。
③因数据精度的原因,在向下取整时许特别注意。
例:
#1=0.002;
#2=#1*1000;
80
共享知识 分享快乐
#2的值应为2.000,但实际上为1.99999997。
#3=FIX[#2];
则#3=1.0而不是2.0。
在这种情况下,对一近似值向下取整,自然得不到期望的结果。可将上式改成:#3=FIX[#2+0.001];
或#3=ROUND[#2];
3、除数divisor
在除法运算中除数为0或在求正切时角度为90度,产生112号报警。
4 宏语句和NC语句
下列程序段被认为是宏语句:
包含算术和逻辑运算及赋值操作的程序段;
81
共享知识 分享快乐
包含控制语句(如:GOTO,DO,END)的程序段;
包含宏调用命令(如:G65,G66,G67或其它调用宏的G、M代码)。
不是宏语句的程序段称NC(或CNC)语句。
1、宏语句与NC语句的区别:
即使在程序单段运行模式下执行宏语句,机床也不停止。但当机床参数011的第五位
设成1时,执行宏语句,机床用单段运行模式停止。
在刀具补偿状态下,宏语句程序段不作不含运动程序段处理。
2、与宏语句具有相同特性的NC语句
子程序调用程序段(在程序段中,子程序被M98或指定的M、T代码调用)仅包含O,N,P,L
地址,和宏语句具有相同特性。
包含M99和地址O、N、P的程序段,具有宏语句特性。
82
共享知识 分享快乐
5分支和循环
在程序中可用GOTO语句和IF语句改变控制执行顺序。分支和循环操作共有三种类
型:
GOTO 语句——无条件分支(转移)
IF语句——条件分支;if…,then…
WHILE语句—— 循环;while…
5.1无条件分支GOTO语句
控制转移(分支)到顺序号n所在位置。当顺序号超出1~9999的范围时,产生128
号报警。顺序号可用表达式指定。
格式:GOTO n;
n——(转移到的程序段)顺序号
83
共享知识 分享快乐
例:GOTO1;
GOTO#10;
5.2 条件分支IF语句
在IF后指定一条件,当条件满足时,转移到顺序号为n的程序段,不满足则执行下一
程序段。
格式:
IF [表达式] GOTOn;
处理;
Nn …;
1、条件表达式
条件表达式由两变量或一变量一常数中间夹比较运算符组成,条件表达式必需包含在一对
84
共享知识 分享快乐
方括号内。条件表达式可直接用变量代替。
2、比较运算符
比较运算符由两个字母组成,用于比较两个值,来判断它们是相等,或一个值比另一
个小或大。注意不能用不等号。
表5.2 比较运算符
运算符 含义 EQ 相等equal to (=) NE 不等于not equal to (≠) GT 大于Greater than (>) GE 大于等于greater than or equal to(≥) LT 小于less than (<) 85
共享知识 分享快乐
小于等于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; 结束
86
LE
共享知识 分享快乐
5.3 循环WHILE 语句
在WHILE 后指定一条件表达式,当条件满足时,执行DO到END之间的程序,(然
后返回到WHILE 重新判断条件,)不满足则执行END后的下一程序段。
格式:
WHILE [条件表达式] DO m; (m=1, 2, 3)
处理;
END m;
说明:
WHILE语句对条件的处理与IF 语句类似。
在DO和END后的数字是用于指定处理的范围(称循环体)的识别号,数字可用1、
2、3表示。当使用1、2、3之外的数时,产生126号报警。
87
共享知识 分享快乐
While的嵌套
对单重DO-END循环体来说,识别号(1~3)可随意使用且可多次使用。但当程序中
出现循环交叉(DO范围重叠)时,产生124号报警。1、识别号(1~3)可随意使用且可多次使用
WHILE […] DO1;
Processing
END1;
…
WHILE […] DO1;
Processing
END1;
88
共享知识 分享快乐
2、DO范围不能重叠
WHILE […] DO1;
Processing
WHILE […] DO2;
…
END1;
Processing
END2;
3、DO循环体最大嵌套深度为三重29
共享知识 分享快乐
WHILE […] DO1;
…
WHILE […] DO2;
…
WHILE […]DO3;
Processing
END3;
…
END2;
…
END1;
30
共享知识 分享快乐
4、控制不能跳转到循环体外
WHILE […] DO1;
…
IF […] GOTO n;
…
END1;
Nn … ;
5、分支不能直接跳转到循环体内31
共享知识 分享快乐
IF […] GOTO n;
…
WHLE […] DO1;
…
Nn … ;
…
END1;
Limitations
1、无限循环Infinite loops
当指定Do m而未指定WHILE语句时,将产生一个从DO到END为循环体的无限循
环。
32
共享知识 分享快乐
2、处理时间
当转移到GOTO语句中指定顺序号对应的程序段时,程序段根据顺序号搜索。因此向
回跳转比向前跳转要花费更多的处理时间。此时使用WHILE 语句循环可减少处理时间。
3、未定义变量
在条件表达式中使用EQ和NE判断时,空值(null)和0会产生不同的结果,在其它
类型的条件表达式中,空值(null)被认为是0。
例程
求1~10的和
O9501;
#1=0;
#2=1;
33
共享知识 分享快乐
WHILE [#2 LE 10] DO1;
#1=#1+#2;
#2=#2+1;
END1;
M30;
6 调用宏程序
宏程序可用下述方式调用: 简单调用G65;
模态调用G66、G67;
用G代码调用宏程序;
用M代码调用宏程序;
34
共享知识 分享快乐
用M代码的子程序调用;
用T代码的子程序调用。
:宏程序调用和子程序调用的区别
A、用G65可以指定实参(传送给宏程序的数据),而M98 没有此能力。
B、当M98程序段包含其它NC指令(如:G01X100.0 M98 Pp)时,在该指令执行完
后调用子程序,而G65则无条件调用宏程序。
C、当M98程序段包含其它NC指令(如:G01X100.0 M98 Pp)时,在程序单段运行
模式下机床停止,而G65不会让机床停止。
D、G65调用时,局部变量的层次被修改,而M98调用不会更改局部变量的层次。
6.1 简单调用G65
当指定G65调用时,地址P后指定的用户宏程序被调用,同时数据(实参)被传递给
35
共享知识 分享快乐
用户宏程序。
格式:G65 Pp Ll <实参描述>;
p——被调宏程序号;l——调用次数,缺省值为1。实参——传送给宏程序的数据。
例:
O0001; O9010;
… #3=#1+#2;
G65 P9010 L2 A1.0 B2.0; IF [#3 GT 360] GOTO 9;
… G00 G91 X#3;
M30; N9 M99;
说明:
1、调用
36
共享知识 分享快乐
在G65后用地址P指定需调用的用户宏程序号;
当重复调用时,在地址L后指定调用次数(1~99)。L省略时,既定调用次数是1。
通过使用实参描述,数值被指定给对应的局部变量。
2、实参描述 Argument specification
有两种实参描述类型,实参描述类型Ⅰ可同时使用除G、L、O、N和P之外的字母各
一次。而实参描述类型Ⅱ只能使用A、B、C各一次,使用I、J、K最多十次。实参描述
类型根据使用的字符自动判断。
实参描述类型Ⅰ
地址 变量号 地址 变量号 地址 变量号 A #1 I #4 T #20 B #2 J #5 U #21 37
共享知识 分享快乐
C #3 K #6 V #22 D #7 M #13 W #23 E #8 Q #17 X #24 F #9 R #18 Y #25 H #11 S #19 Z #26 注:地址G、L、N、O、P不能用于实参;不需指定的地址可省略,省略地址对应的
局部变量设成空(null)。
实参描述类型Ⅱ
地址 变量号 地址 变量号 地址 变量号 A #1 K3 #12 J7 #23 B #2 I4 #13 K7 #24 38
共享知识 分享快乐
C #3 J4 #14 I8 #25 I1 #4 K4 #15 J8 #26 J1 #5 I5 #16 K8 #27 K1 #6 J5 #17 I9 #28 I2 #7 K5 #18 J9 #29 J2 #8 I6 #19 K9 #30 K2 #9 J6 #20 I10 #31 I3 #10 K6 #21 J10 #32 J3 #11 I7 #22 K10 #33 注:I、J、K的下标(subscripts)用于表示实参描述的顺序,实际程序中不需写出。
39
共享知识 分享快乐
1、格式
G65必须在实参之前指定。
2、实参描述Ⅰ和Ⅱ的混合
NC内部识别实参描述Ⅰ和Ⅱ,当二者混合指定时,实参描述类型由后出现的地址决
定。(即两种类型可同时使用,当多个地址对应同一个局部变量时,该变量的值由后出现
的地址决定)
3、小数点的位置
一个不带小数点的实参在数据传递时,其单位按其地址对应的最小精度解释,因此,
不带小数点的实参,其值在传递时有可能根据机床的系统参数设置而被更改。为此,应养
成在宏调用实参中使用小数点的好习惯,以保持程序的兼容性。
4、调用嵌套
40
共享知识 分享快乐
调用可嵌套四层,包括简单调用G65和模态调用G66,但不包括子程序调用M98。
5、局部变量的层次
嵌套调用时,局部变量的层次指定为0~4。
主程序的层次为0。
宏程序每(嵌套)调用一次(G65,G66),局部变量的层次加一,原有局部变量的值被
NC保存(不可见)。
当M99执行时,控制返回呼调程序。此时,局部变量层次减一,宏程序调用时保存的主程序1 宏程序2 宏程序3 宏程序4 宏程序5 (0层) (1层) (2层) (3层) (4层) O0001; O0002; O0003; O0004; O0002; … …. …. …. …. 原有局部变量值被恢复。 #1=1; G65 P3 A3; G65P4 A4; G65P5 A5; …; G65 P2 A2; …. …. …. …. … M99; M99; M99; M99; M30; 例: 局部变量 局部变量 局部变量局部变量 局部变量 #1 1 #1 2 #1 3 #1 4 #1 5 … … … … … … … … … … #33 #33 #33 #33 #33 ; #100~ #500~ 全局变量:可被各层的宏程序读写 41
共享知识 分享快乐
例程(多孔循环)
创建一个宏程序,用于加工处于同一分布圆上的H个孔。孔起始角为A,孔间夹角为B,
分布圆半径为I,圆心为(x,y)。指令可用绝对或增量方式指定。当需顺时针方向加工时,
B用负值指定。
1、调用格式
G65 P9100 Xx Yy Zz Rr Ff Ii Aa Bb Hh;
X:分布圆圆心的X坐标(绝对或增量指定)#24
H=2Y:分布圆圆心的Y坐标(绝对或增量指定)#25 H=3BH=1IAZ:孔深 ――――――――――――――――#26 Center(x,y)R:接近点(R点)坐标 ―――――――――#18 F:进给速率 ――――――――――――――#9
42
共享知识 分享快乐
I:分布圆半径 ―――――――――――――#4
A:钻孔起始角―――――――――――――#1
B:增量角(顺时针时负值指定)―――――#2
H:孔数――――――――――――――――#11
2、主程序
O0002;
G90 G92 X0 Y0 Z100.0;
G65 P9100 X100.0 Y50.0 R30.0 Z-50.0 I100.0 A0 B45.0 H5;
M30;
3、宏程序
O9100;
43
共享知识 分享快乐
#3=#4003;---------------------------读取03组G代码(G90/G91)
IF [#3 EQ 90] GOTO 1;-----------G90模式跳至N1分支
#24=#5001+#24;--------------------计算圆心X坐标
#25=#5002+#25;--------------------计算圆心Y坐标
N1 WHILE [#11 GT 0] DO 1;
#5=#24+#4*COS[#1];--------------计算孔轴线X坐标
#6=#25+#4*SIN[#1];---------------计算孔轴线Y坐标
G90 X#5 Y#6;-----------------------钻孔前定位到目标孔处
G81 Z#26 R#18 F#19 K0;--------钻孔循环
#1=#1+#2;----------------------------计算下一孔的角度
#11=#11-1;---------------------------孔数减一
44
共享知识 分享快乐
END 1;
G#3 G80;-----------------------------回复G代码原有状态
M99;
有关变量的含义
#3:03组G代码的状态
#5:下一孔孔轴线X坐标
#6:下一孔孔轴线Y坐标
#5001:程序段终点的X坐标
#5002:程序段终点的Y坐标
6.2模态调用G66
一旦指令了G66,就指定了一种模态宏调用,即在(G66之后的)程序段中指令的各
45
G66 Pp Ll <参数指定共享知识 分享快乐 >; p——被调宏程序号;l——调用次数,缺省值为1。 实参——传送给宏程序的数据。 O0001; O9100; 轴运动执行完后,调用(G66指定的)宏程序。这将持续到指令G67为止,才取消模态宏… … G66 P9100 L2 A1.0 B2.0; G00 Z-#1; G00 G90 X100.0; G01 Z-#2 F300; Y200.0; …X150.0 Y300.0; 调用。 … G67; M99; … M30; 解释
1、调用
在G66后,用地址P为模态调用指定程序号;
当需要重复次数时,可在地址L后指定从1~9999的数字。
和简单调用G65一样,传递给宏程序的数据用实参指定。
2、取消
当指定G67指令时,后续程序段不再执行模态调用。
3、调用的嵌套
46
共享知识 分享快乐
调用可嵌套四层,包括简单调用G65和模态调用G66,但不包括子程序调用M98。
4、模态调用的嵌套
在模态调用期间可指令另一个G66代码,而产生模态调用的嵌套。
:
在G66程序段不可调用宏;
G66应在实参之前指令;
在仅含有一个代码的程序段,当该代码与坐标轴运动无关,如M功能,将不产生宏调
用。
只需在G66程序段中设置局部变量,注意每次模态调用执行时,不再设置局部变量。
例程
使用自定义宏程序创建与固定循环G81相同的操作,加工程序用模态宏调用。为简化1 位置
4 I 2 R
位置47 3 R Z=0
Z
共享知识 分享快乐
程序,所有钻孔数据用绝对值指定。
该固定循环包含下列基本操作:
操作1:沿X、Y轴的定位;
操作2:快进到R点;
操作3:切削进给至孔底Z点;
操作4:快速回退至R点或起始点I。 1、调用格式
G65 P9110 Xx Yy Zz Rr Ff Ll;
X:孔轴线的X坐标 ……………….. #24Y:孔轴线的Y坐标 ……………….. #25Z:Z点的坐标 ……………………… #28
共享知识 分享快乐
R点的坐标 ……………………… #18
:进给速率 ………………………… #9
L:重复次数
2、主程序
O0001;
G28 G91 X0 Y0 Z0;
G92 X0 Y0 Z50.0;
G00 G90 X100.0 Y50.0;
G66 P9110 Z-20.0 R5.0 F500;
G90 X20.0 Y20.0;
X50.0;
49
R:F共享知识 分享快乐
Y50.0;
X70.0 Y80.0;
G67;
M30;
3、宏程序
O9110;
#1=#4001; ………………………………贮存G00/G01
#3=#4003; ………………………………贮存G90/G91
#4=#4109; ………………………………贮存进给速率
#5=#5003; ………………………………贮存钻孔起始Z坐标G00 G90 Z#18; …………………………定位至R点
50
共享知识 分享快乐
G01 Z#26 F#9; …………………………切削至Z点
IF [#4010 EQ 98] GOTO 1; ……………返回至I点
G00 Z#18; ………………………………返回至Z点
GOTO 2;
N1 G00 Z#5; ……………………………返回至I点
N2 G#1 G#3 F#4; ………………………恢复模态信息
M99;
6.3 使用G代码的宏调用
通过在系统参数中设置G代码数字可用于调用宏程序,该宏程序就像简单调用G65
一样被调用。
解释
51
共享知识 分享快乐
通过在系统通信参数(220~229)中设置G代码数字(1~255),可调用自定义宏程序
(9010~9019),该宏程序以和简单调用G65一样的方式调用。
例如,当系统参数如上设置时,可使用G81调用自定义宏程序O9010,通过调用使用
宏程序定制的用户专有循环(user-specific cycle),从而无需修改加工程序。
1、系统参数号与程序号间的
对应关系
O0001; … G81 X10.0 Y20.0 Z-10.0; … M30; 参数220=81 O9010; … … M99; 程序号 参数号 O9010 220 52
共享知识 分享快乐
O9011 221 O9012 222 O9013 223 O9014 224 O9015 225 O9016 226 O9017 227 O9018 228 O9019 229 2、重复
与简单调用一样,可在地址L后指定从1~9999的重复次数。53
共享知识 分享快乐
3、参数指定
与简单调用一样,有两种类型的参数指定方式:参数指定类型I和参数指定类型II。
参数指定类型自动根据地址的使用进行判断。
用G代码调用的嵌套:
在被G代码调用的程序中,不能有用G代码调用的宏程序。在这样的程序中,G代码
被当作普通G代码对待。在被M或T代码调用的子程序中,不能有用G代码调用的宏程
序。在这样的程序中,G代码也被当作普通G代码对待。
6.4 使用M代码的宏调用
通过在系统参数中设置M代码数字可用于调用宏程序,该宏程序就像简单调用G65
一样被调用。
54
共享知识 分享快乐
解释
通过在系统通信参数(230~239)中
O0001; … M50 A1.0 B2.0; … M30; O9020; … … M99; 参数230=50 设置M代码数字(1~255),可调用自定
义宏程序(9020~9029),该宏程序以和
简单调用G65一样的方式调用。
1、系统参数号与程序号间的对应关系
程序号 参数号 O9020 230 O9021 231 O9022 232 O9023 233 55
共享知识 分享快乐
O9024 234 O9025 235 O9026 236 O9027 237 O9028 238 O9029 239 2、重复
与简单调用一样,可在地址L后指定从1~9999的重复次数。
3、参数指定
与简单调用一样,有两种类型的参数指定方式:参数指定类型I和参数指定类型II。参数
指定类型自动根据地址的使用进行判断。
56
共享知识 分享快乐
用于调用宏程序的M代码必须在程序段的开头指令。
在被G代码调用的宏程序中,或在被M或T代码调用的子程序中,不能有用M代码调用
的宏程序。在这样的程序中,M代码被当作普通M代码对待。
6.5 使用M代码的子程序调用
通过在系统参数中设置M代码数字可用于调用子程序(宏程序),该宏程序就像子程
序调用M98一样被调用。
解释
通过在系统通信(corresponding)参数(240~242)中设置M代码数字(1~255),可
57
共享知识 分享快乐
调用自定义宏程序(9001~9003),该宏程序以和子程序调用M98一样的方式调用。
O0001; … M50 A1.0 B2.0; … M30; O9001; … … M99; 1、系统参数号与程序号间的对应关系
程序号 参数号 参数230=50 O9001 240 O9002 241 O9003 242 2、重复
与简单调用一样,可在地址L后指定从1~9999的重复次数。
3、参数指定
不允许指定参数。
58
共享知识 分享快乐
在被G代码调用的宏程序中,或在被M或T代码调用的子程序中,不能有用M代码调用
的子程序。在这样的程序中,M代码被当作普通M代码对待。
6.6 使用T代码的子程序调用
通过系统参数中设置,可允许使用T代码调用子程序(宏程序),当加工程序中每次指令 O0001; O9000; … … T23; … … 该T代码时,对应宏程序被调用。M99; M30; 参数040 的第5位=1
解释――调用
通过将系统参数040的第5位置1,可在加工程序中指令T代码调用宏程序O9000。在加
工程序中指令的T代码用公用(全局)变量#149指定。
59
共享知识 分享快乐
在被G代码调用的宏程序中,或在被M或T代码调用的子程序中,不能有用T代码调用
的子程序。在这样的程序中,T代码被当作普通T代码对待。
60
因篇幅问题不能全部显示,请点此查看更多更全内容