1、 在数控编程中,宏程序编程灵活、高效、快捷,是加工编程的重要补充。宏程序不仅可以实现象子程序那样,对编制相同加工操作的程序非常有用,还可以完成子程序无法实现的特殊功能,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。l华中数控宏程序华中数控宏程序lFANUC数控宏程序数控宏程序lSIEMENS数控参数编程数控参数编程 HNC-21/22T 、HNC-21M为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进
2、行繁琐的数值计算,以及精简程序量。1. 1. 宏变量及常量宏变量及常量(1) 宏变量宏变量HNC-21/22T华中世纪星数控系统变量表示形式为华中世纪星数控系统变量表示形式为# 后跟后跟14位数字,变量种类位数字,变量种类有三种:有三种:局部变量局部变量:#0#49是在宏程序中局部使用的变量,用于存放宏程序中的数据是在宏程序中局部使用的变量,用于存放宏程序中的数据,断电时丢失为空。,断电时丢失为空。全局变量全局变量:用户可以自由使用:用户可以自由使用#50#50#199#199,它对于由主程序调用的各子程序及,它对于由主程序调用的各子程序及各宏程序来说是可以公用的,可以人工赋值。各宏程序来说是
3、可以公用的,可以人工赋值。HNC-21/22THNC-21/22T子程序嵌套调用的深度子程序嵌套调用的深度最多可以有最多可以有8 8层,每一层子程序都有自己独立的局部变量(变量个数为层,每一层子程序都有自己独立的局部变量(变量个数为5050)。)。系统变量系统变量:系统变量为:系统变量为#1000#1000#1199#1199,它能获取包含在机床处理器或,它能获取包含在机床处理器或NCNC内存中内存中的只读或读的只读或读/ /写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。工参数等系统信息。(2) (2)
4、 常量常量PI:圆周率圆周率;TRUE:条件成立条件成立(真真);FALSE:条件不成立条件不成立(假假) 1 1、 宏变量及常量宏变量及常量2 2、 运算符与表达式运算符与表达式(1) 算术运算符:+,-,*,/(2) 条件运算符:EQ(=),NE(),GT(),GE(),LT(),LE()(3) 逻辑运算符:AND,OR,NOT(4) 函数:SIN,COS,TAN,ATAN,ATAN2,ABS,INT,SIGN,SQRT,EXP(5) 表达式:用运算符连接起来的常数,宏变量构成表达式。例如:175/SQRT2 * COS55 * PI/180 ;#3*6 GT 14 3、赋值语句、赋值语句
5、格式:宏变量=常数或表达式把常数或表达式的值送给一个宏变量称为赋值。例如: #2 = 175/SQRT2 * COS55 * PI/180; #3 = 124.0 4、 条件判别语句条件判别语句IF, ELSE,ENDIF格式(i): 格式(ii) : IF IF 条件表达式条件表达式 IF IF 条件表达式条件表达式 ELSE ELSE ENDIF ENDIFENDIFENDIF5、 循环语句循环语句WHILE,ENDW格式:格式:WHILE WHILE 条件表达式条件表达式 ENDW ENDW6、 宏程序宏程序/子程序调用的参数传递规则子程序调用的参数传递规则G 代码在调用宏代码在调用宏(
6、子程序或固定循环子程序或固定循环,下同,下同)时,系统会将当前程序段各时,系统会将当前程序段各字段字段(AZ共共26个字段,如果没有定个字段,如果没有定义则为零义则为零)的内容拷贝到宏执行时的的内容拷贝到宏执行时的局部变量局部变量#0 #25,同时拷贝调用宏,同时拷贝调用宏时当前通道九个轴(轴时当前通道九个轴(轴0轴轴8)的绝)的绝对位置对位置(机床绝对坐标机床绝对坐标)到宏执行时的到宏执行时的局部变量局部变量#30 #38。宏程序的调用格式为:宏程序的调用格式为:M98 P(宏程序名)宏程序名)或或G65 P(宏程序名)宏程序名)。 #25 Z %1000%1000;长半轴、短半轴分别为;长
7、半轴、短半轴分别为4040、3030的椭圆的椭圆G54 G90 G00 Z30G54 G90 G00 Z30M03 S800M03 S800G00 X45 Y-15 G00 X45 Y-15 ;快速定位至下刀点快速定位至下刀点Z3Z3G01 Z-5 F100G01 Z-5 F100#0=0#0=0;给角度给角度 赋赋0 0初值初值WHILE WHILE #0#0 LE LE 360360;当角度当角度 360360度时,执行循环体内容度时,执行循环体内容#1=40#1=40* *COS#0COS#0* *PI/180PI/180;用椭圆的标准参数方程求动点用椭圆的标准参数方程求动点M M的的X
8、 X坐标值坐标值#2=30#2=30* *SIN#0SIN#0* *PI/180PI/180;用椭圆的标准参数方程求动点用椭圆的标准参数方程求动点M M的的Y Y坐标值坐标值G01 X#1 Y#2 G01 X#1 Y#2 ;用直线插补指令加工至用直线插补指令加工至M M点,点,即用直线段逼近椭圆即用直线段逼近椭圆# #0=#0+10=#0+1;角度;角度 的递增步长取的递增步长取1 1度度 ENDWENDWX45 Y15X45 Y15;切出椭圆切出椭圆G00 Z30 M05G00 Z30 M05X0 Y0X0 Y0M30 M30 7、用户宏程序编程思路、用户宏程序编程思路%1000%1000;
9、长半轴、短半轴分别为;长半轴、短半轴分别为4040、3030的椭圆的椭圆G92 X0 Y0 Z30G92 X0 Y0 Z30M03 S800M03 S800G00 X45 Y-15 M08G00 X45 Y-15 M08;快速定位至快速定位至A A点点Z3Z3G01 Z-5 F100G01 Z-5 F100#2=0#2=0;给角度给角度 赋赋0 0初值初值WHILE #2 LE 360WHILE #2 LE 360;当角度当角度 360360度时,执行循环体内容度时,执行循环体内容#11=40#11=40* *COS#2COS#2* *PI/180PI/180;用椭圆的标准参数方程求动点用椭圆
10、的标准参数方程求动点M M的的X X坐标值坐标值#12=30#12=30* *SIN#2SIN#2* *PI/180PI/180;用椭圆的标准参数方程求动点用椭圆的标准参数方程求动点M M的的Y Y坐标值坐标值G42 G64 G01 X#11 Y#12 D01G42 G64 G01 X#11 Y#12 D01;用直线插补指令加工至用直线插补指令加工至M M点,即用点,即用 直线段逼近椭圆直线段逼近椭圆#2=#2+1#2=#2+1;角度;角度 的递增步长取的递增步长取1 1度度 ENDWENDWG40 G01 X45 Y15G40 G01 X45 Y15;切出椭圆至切出椭圆至C C点点Z3 M0
11、9Z3 M09G00 Z30 G00 Z30 X0 Y0 M05X0 Y0 M05M30 M30 ZH7640ZH7640立式加工中心由北京第立式加工中心由北京第三机床厂产生三机床厂产生, ,采用华中铣床、加工采用华中铣床、加工中心数控系统。加工范围中心数控系统。加工范围600600mmmm400mm400mm500mm500mm。刀库可容刀库可容纳纳2020把刀。可用于镗、铣、钻、铰、把刀。可用于镗、铣、钻、铰、攻丝等各种加工。实例为在预先处攻丝等各种加工。实例为在预先处理好的理好的100100mmmm100mm100mm80mm80mm合金铝合金铝锭毛坯上加工如图所示的零件,其锭毛坯上加工
12、如图所示的零件,其中正五边形外接圆直径为中正五边形外接圆直径为8080mmmm。 O50005000;FANUCG54 G90 G00 Z40G54 G90 G00 Z40X70 Y20 M08X70 Y20 M08M03 S600M03 S600G43 Z3 H01G43 Z3 H01G01 Z-5 F100G01 Z-5 F100#0=18#0=18N10N10 #1=80 #1=80* *COS#0COS#0#2=80#2=80* *SIN#0 SIN#0 G41 X#1 Y#2 D01G41 X#1 Y#2 D01#0=#0+72#0=#0+72IF #0 LT 360 GOTO 10
13、IF #0 LT 360 GOTO 10G40 X70 Y70G40 X70 Y70Z40 M05Z40 M05M30M30O50005000;HNC-21M%1000%1000G54 G90 G00 Z40G54 G90 G00 Z40X70 Y20 M08X70 Y20 M08M03 S600M03 S600G43 Z3 H01G43 Z3 H01G01 Z-5 F100G01 Z-5 F100#0=18#0=18IF #0 LT 360 IF #0 LT 360 #1=80#1=80* *COS#0COS#0#2=80#2=80* *SIN#0 SIN#0 G41 X#1 Y#2 D01
14、G41 X#1 Y#2 D01#0=#0+72#0=#0+72ENDIFENDIFG40 X70 Y70G40 X70 Y70Z40 M05Z40 M05M30M30%3015%3015#10=0 #10=0 ;X X坐标(直径值)坐标(直径值)#11=0 #11=0 ;Z Z坐标坐标T0101T0101M03 S600M03 S600G00 X0 Z34G00 X0 Z34WHILEWHILE #10 LE #10 LE 3232G90 G64 G01 X#10 Z#11 F100G90 G64 G01 X#10 Z#11 F100#10= #10+0.32#10= #10+0.32#9=
15、#10/2 #9= #10/2 ;求出求出X X坐标的半径值,便于求解坐标的半径值,便于求解#11#11#11= 32-#9#11= 32-#9* *#9/8#9/8ENDWENDWG00 X80 Z100 G00 X80 Z100 M05M05M30 M30 用宏程序编制如图所示抛物线的精加工程序。%3016%3016;精加工椭圆程序;精加工椭圆程序T0101T0101M03 S800M03 S800G00 X39 Z22G00 X39 Z22#1=60#1=60;A A点的角度点的角度#2=0#2=0;X X坐标坐标#3=0#3=0;Z Z坐标坐标WHILE #1 LE 120WHILE
16、#1 LE 120;120120是通过计算得来的是通过计算得来的B B点角度点角度#2=2#2=2* *2323* *SIN#1SIN#1* *PI/180PI/180;直径编程直径编程#3=40#3=40* *COS#1COS#1* *PI/180PI/180G64 G01 X#2 Z#3 F100G64 G01 X#2 Z#3 F100#1=#1+1#1=#1+1;步长取步长取1 1度度ENDWENDWG00 X100G00 X100Z100 M05Z100 M05M30 M30 1.包含变量2.包含算术或逻辑运算(=)的程序段3.包含控制语句(例如:GOTO,DO,END)的程序段4.
17、包含宏程序调用指令(G65,G66,G67或其他G代码,M代码调用宏程序)的程序段 FANUC数控系统变量表示形式为# 后跟14位数字,变量种类有四种:变量号变量类型功能变量号变量类型功能H代码的几何补偿值G10L10P R ;D代码的几何补偿值G10L12P R ;H代码的磨损补偿值G10L11P R ;D代码的磨损补偿值G10L13P R ;P:刀具补偿号R:绝对值指令(G90)方式时的刀具补偿值。增量值指令(G91)方式时的刀具补偿值为该值与指定的刀具补偿号的值相加。(n为顺序号,199999)例:GOTO10为转移到N10程序段。2. 条件转移:(条件转移:(IF语句)语句)1)IF
18、条件表达式 GOTOn 当指定的条件表达式满足时,转移到标有顺序号n的程序段,如果指定的条件表达式不满足时,执行下个程序段。2)IF 条件表达式 THEN当指定的条件表达式满足时,执行预先决定的宏程序语句。 例:IF #1EQ #2 THEN #3=0;3. WHILE 条件表达式 DO m; (m=1,2,3)条件满足条件不满足 ENDm注:循环允许嵌套,最多注:循环允许嵌套,最多3层,但不允许交叉层,但不允许交叉1. 非模态调用G65:格式: G65 Pp Ll 其中 p:要调用的程序号 L:调用次数(默认为1) 自变量:数据传递到宏程序例:G65 P8000 L2 A10. B2.;调用
19、2次程序号8000,经自变量A传递到宏程序#1=10;自变量B传递到宏程序#2=2。自变量指定自变量指定根据使用的字母,CNC系统自动地决定自变量指定的类型。地址不需要按字母顺序指定。但应符合字地址的格式。但是,I,J 和K 需要按字母顺序指定。自变量指定自变量指定根据使用的字母,系统自动决定自变量指定的类型。自变量指定用于传递诸如三维坐标值的变量。I,J,K 的下标用于确定自变量指定的顺序,在实际编程中不写。如果自变量指定和自变量指定混合指定的话,后指定的自变量类型有效。2. 模态调用(G66):G66 Pp Ll ;程序点G67;(取消模态)例:G66 P8000 L2 A10. B2.;
20、G00 G90 Z-10.X-5.G67一旦发出G66 则指定模态调用,即指定沿移动轴移动的程序段后调用宏程序。移动到Z-10,调用2次程序号8000,移动到X-5,再调用2次程序号8000 。%1000%1000;长半轴;长半轴4040、短半轴、短半轴3030的椭圆的椭圆G54 G90 G00 Z30G54 G90 G00 Z30M03 S800M03 S800G00 X45 Y-15 G00 X45 Y-15 ;Z3Z3G01 Z-5 F100G01 Z-5 F100#0=0#0=0;给角度给角度 赋赋0 0初值初值WHILE #0 LE 360WHILE #0 LE 360;#1=40#
21、1=40* *COS#0COS#0* *PI/180PI/180;#2=30#2=30* *SIN#0SIN#0* *PI/180PI/180;G01 X#1 Y#2 G01 X#1 Y#2 ;# #0=#0+10=#0+1;ENDWENDWX45 Y15X45 Y15;G00 Z30G00 Z30X0 Y0 M05X0 Y0 M05M30 M30 G54 G90 G00 Z30G54 G90 G00 Z30M03 S800M03 S800G00 X45 Y-15 G00 X45 Y-15 ;Z3Z3G01 Z-5 F100G01 Z-5 F100#10=0#10=0;给角度给角度 赋赋0 0
22、初值初值WHILE #10 LE 360WHILE #10 LE 360 DO 1 DO 1;#1#11=401=40* *COS#10COS#10;# #12=3012=30* *SIN#10SIN#10;G01 X#11 Y#12 G01 X#11 Y#12 ;# #10=#10+110=#10+1;END 1END 1X45 Y15X45 Y15;G00 Z30G00 Z30X0 Y0 M05X0 Y0 M05M30 M30 与FANUC类似,但功能要弱一些。变量以“R”开始,如:R0、R1、R99。不包含系统变量,系统变量以 “$”开头。一、格式:Rn (n的缺省取值范围为0-99)
23、例如:R1 R2 R99二、运算符:1. 无条件跳转GOTOB LABEL (向后跳转,向程序头跳转)GOTOF LABEL (向前跳转,向程序尾跳转)2. 条件跳转IF 表达式 GOTOB LABEL(向后跳转,向程序头跳转)IF 表达式 GOTOF LABEL(向前跳转,向程序尾跳转)LABEL 为程序段标示符IF R1R2 GOTOF MARKE1如果R1大于R2,那么跳跃到MARKE1 R7=(R8+R9)*743 GOTOB MARKE1作为条件的复合表达式IF R10 GOTOF MARK1允许确定一个变量(INT,REAL,BOOL或CHAR)。如果变量值为0(=FALSE),条
24、件就不能满足;对于所有其他值,条件为TRUE IF R1=0 GOTOF MARKE1 IF R1=1 GOTOF MARKE2 同一程序段中的几个条件 G54 G90 G00 Z30G54 G90 G00 Z30M03 S800M03 S800G00 X45 Y-15 G00 X45 Y-15 ;Z3Z3G01 Z-5 F100G01 Z-5 F100R10=0R10=0;给角度给角度 赋赋0 0初值初值AAAA:R11=40R11=40* *COS(R10)COS(R10);R12=30R12=30* *SIN(R10)SIN(R10);G01 X=R11 Y=R12 G01 X=R11
25、Y=R12 ;R10=R10+1R10=R10+1;IF R10= 360 GOTOB AAIF R10= 360 GOTOB AAX45 Y15X45 Y15;G00 Z30G00 Z30X0 Y0 M05X0 Y0 M05M30 M30 长半轴长半轴4040、短半轴、短半轴3030的椭圆的椭圆G54 G90 G00 Z30G54 G90 G00 Z30M03 S800M03 S800G00 X45 Y-15 G00 X45 Y-15 ;Z3Z3G01 Z-5 F100G01 Z-5 F100#10=0#10=0;给角度给角度 赋赋0 0初值初值WHILE #10 LE 360WHILE #10 LE 360 DO 1 DO 1;#1#11=401=40* *COS#10COS#10;# #12=3012=30* *SIN#10SIN#10;G01 X#11 Y#12 G01 X#11 Y#12 ;# #10=#10+110=#10+1;END 1END 1X45 Y15X45 Y15;G00 Z30G00 Z30X0 Y0 M05X0 Y0 M05M30 M30