所有宏程序编程代码.docx
《所有宏程序编程代码.docx》由会员分享,可在线阅读,更多相关《所有宏程序编程代码.docx(12页珍藏版)》请在冰豆网上搜索。
所有宏程序编程代码
所有宏程序编程代码
各种类型宏程序
A型宏程序
G65Hm宏指令表
G65Hm
功能
定义
G65Hm
功能
定义
G65H01
定义、置换
#i=#j
G65H28
复合平方根2
#i=√#j2-#k2
G65H02
加算
#i=#j+#k
G65H31
正弦
#i=#j×sin(#k)
G65H03
减算
#i=#j-#k
G65H32
余弦
#i=#j×cos(#k)
G65H04
乘算
#i=#j×#k
G65H33
正切
#i=#j×tan(#k)
G65H05
除算
#i=#j÷#k
G65H34
反正切
#i=arctan(#j/#k)
G65H11
逻辑加
#i=#jOR#k
G65H80
无条件转移
GOTOn
G65H12
逻辑乘
#i=#jAND#k
G65H81
条件转移1
2F#j=#kGOTOn
G65H13
异或
#i=#jXOR#k
G65H82
条件转移2
2F#j=#kGOTOn
G65H21
开平方
#i=√#j
G65H83
条件转移3
2F#j=#kGOTOn
G65H22
绝对值
#i=|#j|
G65H84
条件转移4
2F#j=#kGOTOn
G65H23
剩余数
#i=#j-tranc(#j/#k)×#k
G65H85
条件转移5
2F#j=#kGOTOn
G65H24
变成二进制
#i=BIN(#j)
G65H86
条件转移6
2F#j=#kGOTOn
G65H25
变成十进制
#i=BCD(#j)
G65H99
P/S报警
报警号500+n
G65H26
复合除运算
#i=(#i×#j)÷#k
G65H27
复合平方
根1
#i=√#j2+#k2
宏程序的运算与控制指令(G65)
指令格式:
G65HmP#iQ#jR#k条件转移的指令格式:
G65HmPmQ#jR#k
#i:
储存运算结果的变量号Hm:
条件转移指令
#j:
进行运算的变量号1,可以是常数Pm:
转移的地址
#k:
进行运算的变量号2,也可是常数Q#jR#k:
转移的条件
B型宏程序(FANUC0iMate-MC系统)
运算指令
1、定义和转换
#i=#j
2、加法运算
#i=#j+#k和
#i=#j-#k差
#i=#jOR#k或(对32位的每一位)
#i=#jXOR#k异或(对32位的每一位)
3、乘法运算
#i=#j×#k积
#i=#j÷#k商
#i=#jAND#k与(对32位的每一位)
4、函数
#i=SIN[#j]正弦(度)
#i=COS[#j]余弦(度)
#i=TAN[#j]正切(度)
#i=ATAN[#j]/[#k]反正切(度)
#i=SQRT[#j]平方根
#i=ABS[#j]绝对值
#i=BIN[#j]十一二进制转换
#i=BCD[#j]二一十进制转换
#i=ROUND[#j]四舍五入圆整
#i=FIX[#j]舍去小数部分
#i=FUP[#j]小数部分进位到整数
5、控制指令
(1)无条件转移格式:
GOTOn
(2)条件转移格式:
IF[(条件表达式)]GOTOn
(条件表达式)有如下几种
#jEQ#k即#j=#k
#jNE#k#j≠#k`
#jGT#k#j>#k
#jLT#k#j<#k
#jGE#k#j≥#k
#jLE#k#j≤#k
例:
IF[#4EQ#0]GOTO1
N10G90````````````WHILE[<条件表达式>]DOm
````
````
````
IF[#ⅹEQ#ⅹ]GOTO1ENDm(m=1、2、3…)
(上、下对应,条件满足执行)
编程中的一些辅助功能
坐标旋转(G68、G69)指令
G68:
旋转功能的建立G69:
旋转功能的取消
指令的格式
G17
G18G68XYR[X、Y、Z(I、J、K)以G54定旋转中心的坐标,R为旋转角度]
G19
G17(G18或G19)平面的选择,在其上包括旋转的形状
XY:
与G17、G18、G19相应的X、Y和Z中的两个轴的绝对指令,在G68后面指定旋转中心,当不指令时,则G68程序段的刀具位置被认为旋转中心。
R:
角度位移正值表示逆时针旋转,回转角度根据指定的G代码(G90或G91)确定绝对值还是增量值。
刀具补偿:
要坐标旋转之后,才执行所有的补偿操作
上受参考点有关的G27、G28、G29、G30等,与坐标有关的G52到G59、G92等限制,不能指定,如果需要,先取消旋转方式以后才能指令
比例缩放(G50、G51)指令(G50取消G51)
指令格式:
(1)沿所有轴以相同的比例放大或缩小
格式:
指令意义:
G51XYZP:
缩放开始XYZ:
比例缩放中心坐标值的绝对值
``缩放有效
``(缩放方式)P:
缩放比例
G50缩放取消
(2)沿各轴以不同的比例放大或缩小
格式:
指令意义:
G51XYZIJK
(缩放开始,其后相同)XYZ:
同上
IJK:
X、Y和Z各轴对应的缩放比例
注:
须在单独的程序段内指定G51,在完成放大或缩放之后,指定G50以取消缩放方式
另:
[G5.1Q1(G51刀路优化的建立)Q0(取消G5.1)
注:
它可以以开始程序段或其后单独程序段建立
A、(螺旋加工孔)
Oxxxx
G65H01P#100Q0.;(Z轴的初始值)
G65H01P#101Q20.;(孔的半径)
G65H01P#102Q10.;(加工孔的高度)
G65H01P#103Q1.;(Z轴每次的增量)
G90G54G00G40X20.Y20.Z100.;(以绝对坐标值定位到孔的中心)
M03S2000;
Z0;
G91G41G01X#101Y0D01F1000;(以增量值建立刀补)
N10G65H02P#100Q#100R#103;
G90G03Z-#100I-#101F1200;
G65H84P10Q#100R#102;
G03I-#101F600;
G00Z20;
G40;
M05;
M30;
B、(螺旋加工孔)
Oxxxx
#1=0;
#2=20;
#3=10;
#4=1;
G90G54G00X20Y20Z100;
M03S2000;
Z0;
G91G41G01X#2Y0D01F1000;
WHILE[#1LT#3]DO1;
#1=#1+#4;
G90G03Z-#1I-#2F1000;
END1;
G03I-#2F800;
G00Z100;
G40;
M05;
M30;
(意义与上相同)
B、[孔加工(绝对值)]
Oxxxx
#1=20;(孔的半径)
#2=8;(圆弧进刀半径)
#3=#1-#2;(圆弧进刀的起点值)
#4=10;(加工孔的高度)
#5=2;(每次高度的增量)
#6=0;(Z轴的初始值)
G90G54G40G00X0Y0Z100;(定位到孔的中心)
M03S2000;
WHILE[#6LT#4]DO1;
#6=#6+#5;
Z-#6;
G01G41X#3Y-#2D01F1000;
G03X#1Y0R#2;
I-#1;
X#3Y#2R#2;
G40G01X0Y0;
END1;
G00Z100;
M05;
M30;
(以上适合孔在工件坐标中心位置的孔加工)
B、[孔加工(增量值)]
G90G54G40G00X0Y0Z100;(可定位到任何坐标位置的孔中心)
G01G41X#3Y-#2D01F1000;换成:
G91G01G41X#3Y-#2D01F1000;
G03X#1Y0R#2;换成:
G03X#2Y#2R#2;
``
``
``
``(与上相同)
``
``
X#3Y#2R#2;换成:
X-#2Y#2R#2;
G40G01X0Y0;换成:
用绝对坐标值(G90)回到开始定位点
(改后可用在工件坐标中的任何位置孔的加工)
A、(外形加工)
Oxxxx
G65H01P#100Q24;
G65H01P#101Q6;
G65H01P#102Q0;
G90G54G40G00X70Y-60Z100;
M03S2000;
N10G65H02P#102Q#102R#101;
Z-#102;
G41G01X60Y-40D01F1000;
X-60;
Y40;
X60;
Y-45;
G40X70Y-60;
G65H84P10Q#102R#100;
G00Z100;
M05;
M30;
B、(外形加工)
Oxxxx
#1=24;
#2=6;
#3=0;
G90G40G54G00X70Y-60Z100;
M03S2000;
WHILE[#3LT#1]DO1;
#3=#3+#2;
Z-#3;
G41G01X60Y-40D01F1000;
X-60;
Y40;
X60;
Y-45;
G40X70Y-60;
END1;
G00Z100;
M05;
M30;
B、平面加工
Oxxxx
#1=5;(高度)
#2=1;(增量高度)
#3=0;(初始值)
#4=60;(平面长度的一半)
G90G54G00X70Y-50Z100;
M03S2000;
WHILE[#3LT#1]DO1;
#3=#3+#2;
Z-#3;
#5=70;(平面长度的一半)
WHILE[#5GT-#4]DO2;
#5=#5-13;
G01X#5F1000;
Y50;
#5=#5-13;
X#5;
Y-50;
END2;
G00Z20;(加工完一层提刀)
X70Y-50;(回到初始点)
END1;
Z100;
M05;
M30;
以上均为用平刀编程的程序,而在曲面加工里面,会用到球刀,球刀与平刀的编程有所不同,在手工编程里面,用球刀来编程,只能是以球心来计算,而平刀却是用刀尖。
所以在用球刀编程加工曲面时,可以加上其R半径去计算,而平刀是以刀尖来计算,在编程时可以利用平移轨迹法,即将每一个刀位点平移出一个刀的半径。
(上为一些规则球面,椭圆面,倒圆角等)
而在用球刀加工一些斜面时,刀具的起点与终点必须要经过计算,原因下图:
B、椭圆半球(平刀)
Oxxxx
#1=30;(椭圆的长半轴)
#2=20;(椭圆的短半轴)
#3=5;(平刀半径)
#4=90;(起始角度)
#5=2;(增量角度)
G90G54G00G5.1Q1X0Y0Z100;
M03S2000;
Z0;
WHILE[#4GT0]DO1;
#4=#4-#5;
#6=#1*COS[#4]+#3;(将轨迹平移)
#7=#2*SIN[#4]-#2;[Z轴从最高点(零点)向下变化]
#8=#2*COS[#4]+#3;(将轨迹平移)
#9=0;
WHILE[#9LT360]DO2;
#9=#9+2;
#10=#6*COS[#9];
#11=#8*SIN[#9];
G01X#10Y#11F1200;
END2;
END1;
G00Z100;
Q0M05;
M30;
B、球面(平刀)
赋值时,把椭圆的长,短轴换成圆的半径如:
#1=20
前面如上
WHILE[#4GT0]DO1;
#4=#4-#5;
#6=#1*COS[#4]+#3;(将轨迹平移)
#7=#1*SIN[#4]-#1;[Z轴从最高点(零点)向下变化]
G90G01X#6F1000;
Z#7;
I-#6;
下面END2删掉
B、椭圆面(球刀)
Oxxxx
#1=30+5;(椭圆长半轴+刀半径R)
#2=20+5;(椭圆短半轴+刀半径R)
#3=90;
#4=2;
G90G54G5.1Q1G00X0Y0Z100;
M03S2000;
Z0;
WHILE[#3GT0]DO1;
#3=#3-#4;
#5=#1*COS[#3];
#6=#2*COS[#3];
#7=#2*SIN[#3]-#2;
G90G01X#5F1000;
Z#7;
#8=0;
WHILE[#8LT360]DO2;
#8=#8+2;
#9=#6*SIN[#8];
#10=#5*COS[#8];
G01X#10Y#9F1200;
END2;
END1;
G00Z100;
Q0;
M05;
M30;
球面与上平刀一样
B、圆锥面(球刀)
Oxxxx