1、用户宏程序用户宏程序用户宏程序用户宏程序一、一、变量变量二、运算指令二、运算指令三、控制指令三、控制指令四、简单练习四、简单练习五、系统变量五、系统变量六、宏程序调用六、宏程序调用主要内容:主要内容:用户宏程序用户宏程序主程序主程序宏程序宏程序下一页下一页用户宏程序用户宏程序宏程序的宏程序的适用范围:适用范围: 形状类似但大小不同(圆、方及其它)形状类似但大小不同(圆、方及其它) 其它其它 自动化功能(刀具长度测量、生产管理等)自动化功能(刀具长度测量、生产管理等) 特殊形状(椭圆、球等)特殊形状(椭圆、球等) 大小相同但位置不同(组孔、阵列等)大小相同但位置不同(组孔、阵列等)上一页上一页用
2、户宏程序用户宏程序宏程序宏程序与子程序的比较与子程序的比较:宏程序宏程序子程序子程序使用变量使用变量可使用变量可使用变量不可以使用变量不可以使用变量调用方式调用方式G65 P_ L _ ;M98 P_ _;调用行有其调用行有其它它NC指令时指令时无条件调用无条件调用先执行先执行NC指令指令,再再调用子程序调用子程序嵌套嵌套4重重4重重用户宏程序用户宏程序宏程序宏程序相关的参数相关的参数#5(SBM) 用户宏程序语句中,用户宏程序语句中, 0: 单程序段不停止单程序段不停止 1: 单程序段停止单程序段停止#6(CCV) 复位(复位(Reset)后,公共变量)后,公共变量#100#1990: 清空
3、清空1: 不清空不清空#7(CLV) 复位(复位(Reset)后,局部变量)后,局部变量#1#33 0: 清空清空1: 不清空不清空用户宏程序用户宏程序#4(NE9) 编辑程序号为编辑程序号为90009999的程序的程序0: 不禁止不禁止1: 禁止禁止#6(NPE) 程序登录时,对含有程序登录时,对含有M02,M99,M30的程序段的程序段0: 视为登录结束视为登录结束1: 不视为登录结束不视为登录结束用户宏程序用户宏程序 变量的种类变量的种类 变量的显示与设定变量的显示与设定 变量的使用变量的使用 未定义变量未定义变量一、变量一、变量用户宏程序用户宏程序1. 变量的种类变量的种类 例:例:#
4、10,#1005 表达式表达式也可以用于指定变量号,需封闭在括号中。也可以用于指定变量号,需封闭在括号中。 例:例:#2-1,#500/2 可在程序段结尾加可在程序段结尾加注释注释说明变量内容,需用括号说明变量内容,需用括号封闭。封闭。 例:例: #2=#3-1(TOOL NUMBER);变量符号(变量符号(#)+ 变量号变量号变量的表示变量的表示用户宏程序用户宏程序变量号变量号变量类型变量类型用用 途途#0空变量空变量总为空总为空#1#33局部变量局部变量只能用在当前宏程序中存储变量,只能用在当前宏程序中存储变量,断电后数据初始化断电后数据初始化#100#199#500#999公共变量公共变
5、量在不同的程序中意义相同,各宏程在不同的程序中意义相同,各宏程序公用。序公用。断电后断电后#100#199初始化初始化为空,为空, #500#999数据保存数据保存#1000系统变量系统变量可用于读写可用于读写CNC运行时的各种数据运行时的各种数据变量的种类变量的种类用户宏程序用户宏程序正正 值值+10-29 +104700负负 值值-10-29 -1047变量的范围变量的范围用户宏程序用户宏程序2.变量的显示与设定变量的显示与设定变量的显示变量的显示1.按下按下MDI面板上面板上的功能键的功能键OFFSETSETTING2.按几次按几次 键,键,直至出现直至出现用户宏程序用户宏程序3.按下按
6、下 显示显示宏程序变量值宏程序变量值用户宏程序用户宏程序4.按按 、 显示局部和公共显示局部和公共变量值变量值用户宏程序用户宏程序公共变量的设定公共变量的设定1.找到显示公共变量的画面。找到显示公共变量的画面。2.将光标移至欲设定的变量将光标移至欲设定的变量号上。号上。 键入变量号并按键入变量号并按 键键 按换页键按换页键 、 和和光标键将光标移至欲设定光标键将光标移至欲设定的变量号上的变量号上3.键入数据并按键入数据并按用户宏程序用户宏程序3.变量的使用变量的使用 将计算结果赋值将计算结果赋值给对应的变量号给对应的变量号常数、变量、函数常数、变量、函数和运算符的组合和运算符的组合表示方法表示
7、方法#1= #2 + 100 ;#1= #2 + #18 SIN#5 ;用户宏程序用户宏程序变量的定义变量的定义当在程序中定义变量值时,小数点可以省略当在程序中定义变量值时,小数点可以省略#1 = 123;#1123.000变量的引用变量的引用 跟在地址后面的数值可用变量来代替。跟在地址后面的数值可用变量来代替。G01 X10.0 F#1;F把把#1值作为值作为F的指令值的指令值G01 X-#1+#2 F#1;把表达式放把表达式放在括号中在括号中用户宏程序用户宏程序 把变量用于地址数据的时候,被引用变量的值把变量用于地址数据的时候,被引用变量的值根据地址根据地址的最小设定单位自动地四舍五入的最
8、小设定单位自动地四舍五入G01 X#1;当当#1赋值为赋值为12.3456时,实际指令值为时,实际指令值为G01 X12.346; 改变引用变量的值的符号,要改变引用变量的值的符号,要把负号放在把负号放在#的前面的前面G00 X-#1;用户宏程序用户宏程序 当引用未定义的变量时,当引用未定义的变量时,变量及地址字都被忽略变量及地址字都被忽略G00 X#1 Y#2;当当#1=0,#2为空时,为空时, G00 X0; 程序号、顺序号程序号、顺序号和和任选程序段跳转号任选程序段跳转号不能使用变量不能使用变量O#1;N#3 Y200.0;/#2 G00 X10.;用户宏程序用户宏程序4.未定义变量未定
9、义变量当变量值未定义时,这样的变量成为当变量值未定义时,这样的变量成为变量变量 变量变量#0 总是空变量总是空变量,它不能写只能读它不能写只能读未定义变量的引用未定义变量的引用当引用一个未定义的变量时当引用一个未定义的变量时, ,地址本身也被忽略地址本身也被忽略当当#1=时时当当#1=0时时G90 X100 Y#1 G90 X100G90 X100 Y#1 G90 X100 Y0用户宏程序用户宏程序未定义变量的计算未定义变量的计算除了用除了用赋值以外,其余情况下赋值以外,其余情况下与与0 相同相同当当#1=时时当当#1=0时时#2=#1 #2=#2=#1 #2=0#2=#15 #2=0#2=#
10、15 #2=0#2=#1+#1 #2=0#2=#1+# 1 #2=0用用赋值赋值用户宏程序用户宏程序条件表达式条件表达式EQ和和NE中的中的不同于不同于0当当#1=时时当当#1=0时时#1 EQ #0成立成立#1 EQ #0不成立不成立#1 NE 0成立成立#1 NE 0不成立不成立#1 GE #0成立成立#1 GE #0成立成立#1 GT 0不成立不成立#1 GT 0不成立不成立用户宏程序用户宏程序示例示例用户宏程序用户宏程序二、运算指令二、运算指令 运算命令的种类运算命令的种类 运算顺序运算顺序 用户宏程序用户宏程序种种 类类符符 号号格格 式式加法加法+#i = #j + #k 减法减法
11、-#i = #j - #k乘法乘法#i = #j#k除法除法/#i = #j / #k1.运算命令的种类运算命令的种类加减乘除加减乘除用户宏程序用户宏程序种种 类类函数名函数名格格 式式下取整下取整FIX#i = FIX #k 上取整上取整FUP#i = FUP #k 四舍五入四舍五入ROUND#i =ROUND #k 绝对值绝对值ABS#i =ABS #k 下取整下取整(FIX):舍去小数点以下部分:舍去小数点以下部分上取整上取整(FUP):将小数后部分进位到整数部分:将小数后部分进位到整数部分数据处理数据处理用户宏程序用户宏程序运算指令运算指令#2=1.234时时#2=-1.679时时#1
12、= FIX #2 #1= FUP #2 #1=ROUND #2 #1=ABS #2 1.02.0-1.0-2.01.01.234-2.01.679计算相应的变量值计算相应的变量值#1下取整下取整(FIX):舍去小数点以下部分:舍去小数点以下部分上取整上取整(FUP):将小数后部分进位到整数部分:将小数后部分进位到整数部分用户宏程序用户宏程序种种 类类符符 号号格格 式式结果结果正弦正弦SIN#i=SINc/a余弦余弦COS#i=COSb/a正切正切TAN#i=TANc/b反正弦反正弦ASIN#i=ASINc/a反余弦反余弦ACOS#i=ACOSb/a反正切反正切ATAN#i=ATANc/b三角
13、函数的角度单位为三角函数的角度单位为度度。如:。如:9030表示为表示为90.5三角函数三角函数用户宏程序用户宏程序反三角函数的取值范围反三角函数的取值范围函函 数数No.6004#0=0No.6004#0=1ATAN0360-180+180ASIN27090-9090ACOS1800#1=SIN90;#1=COS90;#1=TAN45;#1=ATAN1/1;#1=ATAN-1/-1;101123.000123.000#1#1#1#1#1用户宏程序用户宏程序其它函数其它函数种种 类类函数名函数名格格 式式平方根平方根SQRT#i = SQRT #k 自然对数自然对数LN#i = LN #k 指
14、数函数指数函数EXP#i =EXP #k #2=2;#1=SQRT#2;1.414#1用户宏程序用户宏程序逻辑运算逻辑运算种种 类类名称名称格格 式式或或OR#i = #j OR #k异或异或XOR#i = #j XOR #k与与AND#i = #j AND #k 对对32位的每一位按二进制进行逻辑运算位的每一位按二进制进行逻辑运算输入值输入值或或异或异或与与00000011101011011101用户宏程序用户宏程序十进制十进制二进制二进制#22100010101#31200001111#1=#2 OR #3#1=#2 XOR #3#1=#2 AND #3292540001110100011
15、00100000100从从BCD转为转为BIN: #i= BIN#j;从从BIN转为转为BCD: #i= BCD#j;用户宏程序用户宏程序2. 运算顺序运算顺序 函数函数 乘除运算(乘除运算( ,/,AND ) 加减运算加减运算(+, - , OR , XOR )#1=#2 + #3 SIN#4;用户宏程序用户宏程序 可以利用可以利用 来改变运算顺序,可来改变运算顺序,可嵌套嵌套5次次 可以使用函数名可以使用函数名前面的两个字母前面的两个字母来指定该函数。来指定该函数。ROUNDRO FIXFI用户宏程序用户宏程序三、控制指令三、控制指令 GOTO 语句语句 IF 语句语句 WHILE 语句语
16、句 用户宏程序用户宏程序1.无条件转移(无条件转移(GOTO 语句)语句) GOTO n; n:程序段号(:程序段号(1- 99999)无条件地转移到程序段无条件地转移到程序段n去。去。 n也可用变量或表达式来代替也可用变量或表达式来代替GOTO 10;GOTO #10;用户宏程序用户宏程序 IF GOTO n; 若满足若满足,下步操作转移到程序,下步操作转移到程序段号为段号为n的程序段去。的程序段去。 若不满足,执行下个程序段。若不满足,执行下个程序段。2. 条件转移(条件转移(IF语句)语句) IF THEN ; 若满足若满足,执行,执行THEN后的宏程后的宏程序语句,只执行一个语句。序语
17、句,只执行一个语句。IF#1 EQ #2 THEN #3=0;用户宏程序用户宏程序条件表达条件表达式式条件不满足时条件不满足时执行的操作执行的操作IFGOTO上一页上一页用户宏程序用户宏程序表表 达达 式式含含 义义英英 文文#j EQ #k#j #kEQual#j NE #k#j #kNot Equal#j GT #k#j #kGreater Than#j LT #k#j #kLess Than#j GE #k#j #kGreater or Equal#j LE #k#j #kLess or Equal #j 和和 #k 也可用也可用来代替。来代替。条件表达式条件表达式用户宏程序用户宏程序N
18、1 ;IF#2 GT 10 GOTO 5;GOTO 1;N5 ;无条件转移无条件转移条件转移条件转移IF GOTO #1;N1 ; GOTO 9;N2 ; GOTO 9;N3 ; GOTO 9;N9 ;#1=1时时#1=2时时#1=3时时用户宏程序用户宏程序3. 循环(循环(WHILE语句)语句) WHILE DO m; (m=1,2,3)条件成立时条件成立时执行的程序执行的程序 END m; DO m和和 END m必须必须成对成对使用,并以使用,并以 其中的其中的m作为识别号相互识别。作为识别号相互识别。 m的范围为的范围为1,2,3。可以根据需要多次使用。可以根据需要多次使用。用户宏程序
19、用户宏程序WHILE DO 1;程序WHILE DO 2;END1;程序END2;END1;程序WHILE DO 1;DO的区域不能的区域不能交叉交叉DO 一定要在一定要在END之前规定之前规定识别号(识别号( 1,2,3)可多次使用)可多次使用WHILE DO 1;程序END1;WHILE DO 1;程序END1;用户宏程序用户宏程序WHILE DO 1;程序IF GOTO n;END1;程序Nn ; 可以从可以从DO区域的区域的内部向外部转移内部向外部转移 不可以从不可以从DO区区域的外部向内部域的外部向内部转移转移 DO 循环可以循环可以嵌套嵌套3级级WHILE DO 1; WHILE
20、DO 2; WHILE DO 3; 程序 END3; END2; END1;IF GOTO n; WHILE DO 1;程序Nn ;END1;用户宏程序用户宏程序G00 G91 X100.0;Y100.0;要求:对以上动作重复执行三次。要求:对以上动作重复执行三次。设设#1为动作执行次数,初始值为零。为动作执行次数,初始值为零。#1=0; G00 G91 X100.0; Y100.0;#1=1; G00 G91 X100.0; Y100.0;#1=2; G00 G91 X100.0; Y100.0;#1=3;#1=0;WHILE#1 LT 3 DO 1; G00 G91 X100.0; Y10
21、0.0; #1=#1+1;END1;计数器累加计数器累加重复执行重复执行的动作的动作计数器复位计数器复位用户宏程序用户宏程序常用格式常用格式(当前值)(当前值)=(初值);(初值);WHILE (当前值)比较(目标值)(当前值)比较(目标值) DO m;(执行循环操作);(执行循环操作);(当前值)(当前值)=(当前值)(当前值)1;ENDm;用户宏程序用户宏程序四、简单练习四、简单练习 深孔加工深孔加工 铣圆内腔铣圆内腔 粗车外圆粗车外圆 数据计算数据计算用户宏程序用户宏程序深孔加工深孔加工G00 G90 Z0;G01 Z-10. F300;G00 Z0;G00 Z-10. ;G01 Z-2
22、0. F300;G00 Z0;G00 Z-20. ;G01 Z-30. F300;G00 Z0 ;G00 G90 Z#2;G01 Z#1 F300;G00 Z0;#1 当次钻孔深度坐标当次钻孔深度坐标#2 前次钻孔深度坐标前次钻孔深度坐标用户宏程序用户宏程序#26= - 30.0;#17= - 10.0;#1= 0;#2= 0;WHILE#1 GT #26 DO1; #1=#1+#17; G00 G90 Z#2; G01 Z#1 F300; G00 Z0; #2=#1;END1;使用使用WHILE语句限制循环次数语句限制循环次数钻孔最终深度赋值钻孔最终深度赋值每次钻孔深度赋值每次钻孔深度赋值当
23、次钻孔深度坐标初始化当次钻孔深度坐标初始化前次钻孔深度坐标初始化前次钻孔深度坐标初始化计算当次钻孔深度坐标计算当次钻孔深度坐标记录当次钻孔深度记录当次钻孔深度用户宏程序用户宏程序#26= - 30.0;#17= - 10.0;#1= 0;#2= 0;WHILE#1 GT #26 DO1; #1= #1 + #17; IF#1 GE #26 GOTO1; #1= #26; G00 G90 Z#2; G01 Z#1 F300; G00 Z0; #2= #1;END1;使用使用IF语句限制最终钻孔深度语句限制最终钻孔深度N1计算当次钻孔深度坐标计算当次钻孔深度坐标与最终钻孔深度比较与最终钻孔深度比较
24、钻孔最终深度赋值钻孔最终深度赋值每次钻孔深度赋值每次钻孔深度赋值当次钻孔深度坐标初始化当次钻孔深度坐标初始化前次钻孔深度坐标初始化前次钻孔深度坐标初始化记录当次钻孔深度记录当次钻孔深度用户宏程序用户宏程序#26= -30.0;#17= -10.0;#1= 0;#2= 0;#3= 0;WHILE#1 GT #26 DO1; #1= #1+ #17; IF#1 GE #26 GOTO1; #1= #26; G00 G90 Z#2 + #3; G01 Z#1 F300; G00 Z0; #2= #1; #3= 1.0;END1;N1钻孔最终深度赋值钻孔最终深度赋值每次钻孔深度赋值每次钻孔深度赋值当次
25、钻孔深度坐标初始化当次钻孔深度坐标初始化前次钻孔深度坐标初始化前次钻孔深度坐标初始化计算当次钻孔深度坐标计算当次钻孔深度坐标记录当次钻孔深度记录当次钻孔深度与最终钻孔深度比较与最终钻孔深度比较钻孔深度空程量初始化钻孔深度空程量初始化 钻孔深度空程量赋值钻孔深度空程量赋值用户宏程序用户宏程序#26= -30.0;#18= 3.0;#17= -10.0;#9= 300;#1= #18;#2= #18;#3= 0;WHILE#1 GT #26 DO1; #1=#1+ #17; IF#1 GE #26 GOTO1; #1=#26; G00 G90 Z#2+#3; G01 Z#1 F#9; G00 Z#
26、18; #2= #1; #3= 1.0;END1;M30;N1钻孔最终深度赋值钻孔最终深度赋值每次钻孔深度赋值每次钻孔深度赋值当次钻孔深度坐标初始化当次钻孔深度坐标初始化前次钻孔深度坐标初始化前次钻孔深度坐标初始化计算当次钻孔深度坐标计算当次钻孔深度坐标记录当次钻孔深度记录当次钻孔深度与最终钻孔深度比较与最终钻孔深度比较钻孔深度空程量初始化钻孔深度空程量初始化 钻孔深度空程量赋值钻孔深度空程量赋值初始点坐标赋值初始点坐标赋值进给速度赋值进给速度赋值返返 回回用户宏程序用户宏程序铣圆内腔铣圆内腔#5:圆半径的增量:圆半径的增量#18:最终圆弧半径:最终圆弧半径O9999; #5= 10.0; #
27、18= 45.0; #1= 0; #2= 0; WHILE#1 LT #18 DO 1; #1= #1+ #5; IF#1 LE #18 GOTO1; #1= #18; G01 G91 Y#1- #2 F300; G02 J-#1; #2= #1; END1;M30;N1当次圆弧半径当次圆弧半径前次圆弧半径前次圆弧半径用户宏程序用户宏程序粗车外圆粗车外圆WHILE#26 GT 0 DO1; #26=#26- #6; IF#26 GE 0 GOTO 1; #6=#6 + #26; G00 W-#6+#4; G01 U-#24 F#9; #4=#3; G00 U#4*2 W#4; U#24- #4
28、*2;END1;M30;O9999; #3=1.0; #4=0; #6=10.0; #9=300.0; #24=20.0; #26=48.0;#26#3#6#24#3: 空程量空程量#6:每次切削量:每次切削量#9: 切削速度切削速度#24: X方向切削量方向切削量#26: Y方向切削量方向切削量N1用户宏程序用户宏程序O9999;#1=500;WHILE#1 LE 507 DO1; #1=#0 ; #1=#1+1;END1;M30;O9999;#1=0;WHILE#1 LE 9 DO1; #500+#1=SIN#1*10 ; #1=#1+1;END1;M30;将将#500#507的值设为的值
29、设为计算计算SIN0SIN90的值并赋的值并赋值给值给#500#509用户宏程序用户宏程序O9999;#1=501;#506=#500;WHILE#1 LE 505 DO1;IF#506 GT #1 GOTO1;#506=#1;N1 #1=#1+1;END1;M30;O9999;#2=501;WHILE#2 LE 505 DO2; #1=#2; #506=#2-1; WHILE#1 LE 505 DO1; IF#506 GT #1 GOTO1; #506=#1; #1=#2-1; #2-1=#506; #1=#1+1; END1; #2=#2+1;END2;M30;N1用户宏程序用户宏程序五、
30、系统变量五、系统变量 刀具补偿值刀具补偿值 CNC报警报警 时间信息时间信息 模态信息模态信息 位置信息位置信息 工件零点偏移工件零点偏移用户宏程序用户宏程序刀具补偿值刀具补偿值补偿补偿号号刀具长度补偿(刀具长度补偿(H)刀具半径补偿(刀具半径补偿(D)几何补偿几何补偿磨耗补偿磨耗补偿几何补偿几何补偿磨耗补偿磨耗补偿1#11001(#2201)#10001(#2001)#13001#12001(200)#11201(#2400)#10201(#2200)400#11400#10400#13400#12400示示 例例用户宏程序用户宏程序CNC报警报警变量号变量号设定范围设定范围功能功能#300
31、00200CNC停止运行并报警停止运行并报警表达式后为表达式后为不超过不超过26个字符个字符的报警信息的报警信息屏幕上显示报警号和报警信息,报警号为屏幕上显示报警号和报警信息,报警号为#3000的值加上的值加上3000#3000=1 (WRONG DATA INPUT);屏幕显示:屏幕显示: 3001 WRONG DATA INPUT例:例:示示 例例用户宏程序用户宏程序时间信息时间信息变量号变量号单位单位功功 能能赋值赋值#3001毫秒毫秒计时器。电源接通时复位为计时器。电源接通时复位为0。可以可以#3002小时小时计时器。循环启动灯亮时开始计计时器。循环启动灯亮时开始计时。即使在断电时也保
32、存该值时。即使在断电时也保存该值可以可以#3011年月日年月日读取当前的日期。读取当前的日期。1999年年12月月31日日 19991231不可不可#3012时分秒时分秒读取当前的时间。读取当前的时间。下午下午3点点34分分56秒秒 153456不可不可示示 例例用户宏程序用户宏程序自动运行控制自动运行控制#3003单程序段单程序段辅助机能的完成辅助机能的完成0有效有效等待等待1无效无效等待等待2有效有效不等待不等待3无效无效不等待不等待当电源接通时,当电源接通时,#3003的值为的值为0当单程序段停止无效时,即使操作面板上的单程序段开当单程序段停止无效时,即使操作面板上的单程序段开关设为关设
33、为ON,也不执行单程序段停止。也不执行单程序段停止。当不指定等待辅助功能当不指定等待辅助功能M 、S 和和T 功能完成时,在辅助功能完成时,在辅助功能完成之前程序执行到下列程序段而且分配完成信号功能完成之前程序执行到下列程序段而且分配完成信号DEN不输出不输出示示 例例用户宏程序用户宏程序#3004进给暂停进给暂停进给速度进给速度倍率修调倍率修调准确停止准确停止01234567:有效:有效:无效:无效示示 例例用户宏程序用户宏程序 当当电源接通电源接通时该变量的值为时该变量的值为0 当当进给暂停无效进给暂停无效时时1 当进给暂停按钮被按下时,机床在单段停止方当进给暂停按钮被按下时,机床在单段停
34、止方式停止,但是当用变量式停止,但是当用变量#3003使单程序段方式无使单程序段方式无效时,单程序段停止不执行效时,单程序段停止不执行2 当进给暂停按钮压下又松开时,进给暂停灯亮当进给暂停按钮压下又松开时,进给暂停灯亮但是机床不停止,程序继续执行,并且机床停在但是机床不停止,程序继续执行,并且机床停在进给暂停有效的第一个程序段进给暂停有效的第一个程序段 当当进给速度倍率无效进给速度倍率无效时,总是时,总是100%的倍率,而的倍率,而不管机床操作面板上的进给速度倍率开关的设置不管机床操作面板上的进给速度倍率开关的设置用户宏程序用户宏程序SETTING值值变量号变量号功能功能赋值赋值#3005设定
35、数据设定数据可以可以用户宏程序用户宏程序镜向镜向变量号变量号功能功能赋值赋值#3007使用外部开关或使用外部开关或SETTING 操作设置操作设置的各轴镜像状态可以通过输出信号的各轴镜像状态可以通过输出信号镜像检测信号读出镜像检测信号读出不可不可用户宏程序用户宏程序加工零件数加工零件数变量号变量号功功 能能赋值赋值#3901已加工零件数已加工零件数可以可以#3902所要求的零件数所要求的零件数可以可以用户宏程序用户宏程序模态信息模态信息变量号变量号模态信息模态信息变量号变量号 模态信息模态信息#4001G00,G01,G02,G03,G33, G60,G75,G77G79#4107D代码代码#
36、4002G17,G18,G19#4109F代码代码#4003G90,G91#4111H代码代码#4007G40,G41,G42#4113M代码代码#4008G43,G44,G49#4119S代码代码#4009G73,G74,G76,G80G89#4120T代码代码#4014G54G59#4130P代码代码示示 例例用户宏程序用户宏程序位置信息位置信息变量号变量号位置信息位置信息坐标系坐标系刀补值刀补值#50018程序段终点程序段终点工件坐标系工件坐标系不包含不包含#50218当前位置当前位置机床坐标系机床坐标系包含包含#50418当前位置当前位置工件坐标系工件坐标系#50618跳转信号位置跳转
37、信号位置#50818刀具长度补偿值刀具长度补偿值#51018伺服位置误差伺服位置误差示示 例例用户宏程序用户宏程序工件零点偏移值工件零点偏移值变量号变量号工件坐标系工件坐标系#52014第第1轴到第轴到第4轴外部工件坐标原点偏移值轴外部工件坐标原点偏移值#52214第第1轴到第轴到第4轴轴G54原点偏移值原点偏移值#52414第第1轴到第轴到第4轴轴G55原点偏移值原点偏移值#52614第第1轴到第轴到第4轴轴G56原点偏移值原点偏移值#52814第第1轴到第轴到第4轴轴G57原点偏移值原点偏移值#53014第第1轴到第轴到第4轴轴G58原点偏移值原点偏移值#52214第第1轴到第轴到第4轴轴
38、G59原点偏移值原点偏移值#70014示示 例例用户宏程序用户宏程序PMC信号信号用户宏程序用户宏程序手动刀具长度测量手动刀具长度测量O9999 IF#4111 EQ 0GOTO 9; #1= #5043; G00 G90 G43 Z50.0; M00; #11000+#4111= #5043; G00 G49 Z#1; M30;N9 #3000=9(OFFSET # ERROR);操作步骤操作步骤#2200+#4111返返 回回用户宏程序用户宏程序六、宏程序调用六、宏程序调用 非模态调用非模态调用G65 模态调用模态调用G66 G、M代码调用宏程序代码调用宏程序 M、T代码调用子程序代码调用
39、子程序用户宏程序用户宏程序O9999;#21=90.0;#22=120.0;N1 G01 G91 X#21 F300;N2 Y#22;N3 X- #21;N4 Y- #22;M30;简单的四边形铣削简单的四边形铣削用户宏程序用户宏程序简单的四边形铣削简单的四边形铣削O0001;M98 P9999;M30;O9999;#21=90.0;#22=120.0;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;M99;O0001;#21=90.0;#22=120.0;M98 P9999;M30;O9999;N1 G01 G91 X#21 F300;N2 Y#
40、22;N3 X-#21;N4 Y-#22;M99;O0001;M98 P9999 #21=90.0 #22=120.0;M30;O0001;G65 P9999 U90.0 V120.0;M30;UV用户宏程序用户宏程序 G65 Pp Ll 自变量赋值;自变量赋值;要调用的要调用的程序号程序号重复次数重复次数 用用G65指令,把由指令,把由P指令的宏程序体调用指令的宏程序体调用L次次 L的缺省值为的缺省值为1 按照自变量赋值的规定,将自变量的实际数值按照自变量赋值的规定,将自变量的实际数值调到相应的程序体中调到相应的程序体中1. 非模态调用非模态调用G65用户宏程序用户宏程序O0001; G65
41、 P9010 L2 A1.0 B2.0; M30;O9010;#3=#1+#2;IF#3 GT 360 GOTO 9;G00G90 X#3;N9 M99;用户宏程序用户宏程序有两种形式的自变量赋值规定:有两种形式的自变量赋值规定: 自变量赋值自变量赋值 自变量赋值自变量赋值用户宏程序用户宏程序自变量赋值自变量赋值地址地址变量号变量号地址地址变量号变量号地址地址变量号变量号A#1I#4T#20B#2J#5U#21C#3K#6V#22D#7M#13W#23E#8Q#17X#24F#9R#18Y#25H#11S#19Z#26 对字母对字母A-Z后加数值来赋值,但后加数值来赋值,但G,L,N,O,P除
42、外除外 I,J,K须按字母顺序指定须按字母顺序指定用户宏程序用户宏程序G65 P9003 X30. Y45. Z-3. F300;#9= 300;#24= 30.0;#25= 45.0;#26= -3.0;用户宏程序用户宏程序自变量赋值自变量赋值地址地址变量号变量号地址地址变量号变量号地址地址变量号变量号地址地址变量号变量号A#1I3#10I6#19I9#28B#2J3#11J6#20J9#29C#3K3#12K6#21K9#30I1#4I4#13I7#22I10#31J1#5J4#14J7#23J10#32K1#6K4#15K7#24K10#33I2#7I5#16I8#25-J2#8J5#1
43、7J8#26-K2#9K5#18K8#27-I,J,K的的代表自变量赋值的顺序,在实际编程中不写代表自变量赋值的顺序,在实际编程中不写用户宏程序用户宏程序G65 P9999 A1.0 B1.3 C4.1 I100.0 J50.0 K30.0 I50.0 J30.0 K10.0 I40.0 J60.0 K30.0;G65 P9999 J1.0 I2.0 K3.0 J4.0 I5.0;#5(J1) =1.0;#7(I2) =2.0;#9(K2) =3.0;#11(J3) =4.0;#13(I4) =5.0;用户宏程序用户宏程序G65 A1.0 B2.0 I-3.0 I4.0 D5.0 P1000;
44、CNC 内部内部自动识别自动识别自变量赋值自变量赋值和自变量赋值和自变量赋值。如果自变量赋值如果自变量赋值和自变量赋值和自变量赋值混合指定的话,混合指定的话,后指定的自变量类型有效后指定的自变量类型有效自变量指定的混合自变量指定的混合用户宏程序用户宏程序系统变量的存储系统变量的存储O0001;N10 G00 G90 X100.0 Y50.0;N11 G65 P9999 U90.0 V120.0;N12 X200.0 Y100.0;M30;O9999;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;M99;O9999;#30=#4001;#31=#4
45、003;#32=#4109;N1 G01 G91 X#21 F300;N2 Y#22;N3 X-#21;N4 Y-#22;G#30 G#31 F#32;M99;用户宏程序用户宏程序倾斜的四边形加工倾斜的四边形加工Yx#21(U)#22(V)#1(A)aaCOSa SIN O9999;#30= #4001;#31= #4003;#32= #4109;#10= #21 * COS#1;#11= #21 * SIN#1;#12= #22 * COS90 + #1;#13= #22 * SIN90 + #1;N1 G01 G91 X#10 Y#11 F300;N2 X#12 Y#13;N3 X-#10
46、 Y-#11;N4 X-#12 Y-#13;G#30 G#31 F#32;M99;O0001;G92 X0 Y0;G00 G90 X100.0 Y50.0;G65 P9999 U100.0 V50.0 A30.0;M30;用户宏程序用户宏程序深孔钻削深孔钻削O0001;G00 G90 Z50.0;G65 P9999 Z-25.0 R3.0 Q-10.0 F300;M30;O9999;#1= #18;#2= #18;#3= 0;WHILE#1 GT #26 DO1; #1= #1+ #17; IF#1 GE #26 GOTO1; #1= #26; G00 G90 Z#2+#3; G01 Z#1
47、F300; G00 Z#18; #2= #1; #3= 1.0;END1;M30;N1上一页上一页用户宏程序用户宏程序内圆铣削内圆铣削XYRO9999;#30= #4001;#31= #4003;#32= #4109;#1=#13000+#7;#2=#18 - #1;IF #2 LE 0 GOTO9;#3=#2/2;N1 G01 G91 X#3 Y#3 F#9;N2 G02 G17 X#3 Y-#3 R#3;N3 I-#2;N4 X -#3 Y-#3 R #3;N5 G01 X -#3 Y #3;G#30 G#31 G#32;M99;N9 #3000=1(OFFSET ERROR);O0001
48、;G92 X0 Y0 Z0;G65 P9999 R50.0 D1 F300;M30;R:圆半径(:圆半径(#18)D:刀具半径补偿号(:刀具半径补偿号(#7)F:进给速度(:进给速度(#9)返返 回回用户宏程序用户宏程序上一页上一页用户宏程序用户宏程序圆周上等距钻孔圆周上等距钻孔BBBX:圆心坐标(:圆心坐标(#24)Y:圆心坐标(:圆心坐标(#25)Z:孔的深度(:孔的深度(#26)R:钻孔初始高度坐标(:钻孔初始高度坐标(#18)U:圆弧半径(:圆弧半径(#21)A:起始角度(:起始角度(#1)B:角度增量值(:角度增量值(#2)H:孔的个数(:孔的个数(#11)F:进给速度(:进给速度(
49、#9)用户宏程序用户宏程序O9999;#30=#4001;#31=#4003;#32=#4109;IF#31 EQ 90 GOTO 1;#24= #24 + #5001;#25= #25 + #5002;#26= #26 + #5003;#18= #18 + #5003;N1 WHILE#11 GT 0 DO1;#5=#24 + #21*COS#1;#6=#25 + #21*SIN#1;G81 G90 X#5 Y#6 Z#26 R#18 F#9;#1= #1 + #2;#11= #11 - 1;END1;G80 G#30 G#31 F#32;M99;O0001;G90 G92 X0 Y0 Z1
50、00.0;G65 P9999 X100.0 Y50.0 R3.0 Z-50.0 F300 U100.0 A0 B45.0 H5.0;M30;#5:孔当前的位置:孔当前的位置#6:孔当前的位置:孔当前的位置用户宏程序用户宏程序O0001;G92 X0 Y0;G65 P9999 U100.0 R80.0 A1.0 F300;M30;椭圆插补椭圆插补O9999;#30=#4001;#31=#4003;#32=#4109;#5=#1;#24= #5001;#25= #5002;WHILE #5 LE 360 DO1;#2= #24 + #21*COS#5;#3= #25 + #18*SIN#5;G01