资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,本幻灯片资料仅供参考,不能作为科学依据,如有不当之处,请参考专业资料。,用户宏程序,即使子程序对编制相同加工操作程序非常有用,但用户宏程序因为允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作程序更方便,更轻易。可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序。使用时,加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样。,第1页,1,(最多999次),第2页,2,第3页,3,第4页,4,一、变量,1、变量,使用用户宏程序时,数值能够直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上操作改变。,#1=#2+100;,G01 X#1 F300;,2、变量表示,计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面变量号指定。,表示式能够用于指定变量号。此时,表示式必须封闭在括号中。,比如:#1,#1+#2-12,第5页,5,3、变量类型,第6页,6,4、变量值得范围,局部变量和公共变量能够有0值或下面范围中值:,10,47,至10,29,或 10,29,至10,47,5、变量引用,为在程序中使用变量值,指定后跟变量号地址。当用表示式指定变量时,把表示式放在括号中。,比如:G01 X#1 F#2+#3,第7页,7,被引用变量值依据地址最小设定单位自动地舍入。,比如:G00 X#1,以11000mm单位执行时,CNC把12.3456赋值给变量#1,实际指令值为G00 X12.346;。,改变引用变量值符号,要把负号(一)放在#前面。,比如:G00 X,#1;,当引用未定义变量时,变量及地址字都被忽略。,比如:,当变量#1值是0,而且变量#2值是空时,G00X#1Y#2执行结果为:,G00X0;,第8页,8,6、未定义变量,变量值未定义时,这么变量成为“空”变量。变量#0总是空变量。它不能写,只能读。,(1)引用,第9页,9,(2)运算,第10页,10,(3)条件表示式,第11页,11,7、限制,程序号、次序号和程序跳转号不能使用变量,比如:O#1;,N#2G00X100.0,/#3Y200.0,第12页,12,二、系统变量,1、刀具赔偿值,第13页,13,2、时间信息,第14页,14,3、自动运行控制,能够改变自动运行控制状态,第15页,15,当电源接通时,该变量值为0。,当单程序段停顿无效时,即使单程序段开关设为ON,也不执行单程序段停顿。,当不指定等候辅助功效(M,S和T功效)完成时,在辅助功效完成之前,程序执行到以下程序段。而且分配完成信号DEN不输出。,第16页,16,第17页,17,当电源接通时,该变量值为0。,当进给暂停无效时:,(1)当进给暂停按钮被按下时,机床在单段停顿方式停顿。不过。当用变量#3003使单程序段方式无效时,单程序段停顿不执行。,(2)当进给暂停按钮压下又松开时,进给暂停灯亮,不过,机床不停顿;程序继续执行,而且机床停在进给暂停有效第一个程序段。,当进给速度倍率无效时,总是100倍率,而不论机床操作面板上进给速度倍率开关设置。,当准确停顿检测无效时,即使那些不执行切削程序段也不进行准确停顿检测(位置检测)。,第18页,18,攻丝循环中使用变量3004例子,N5,N7,第19页,19,4、已加工零件数,第20页,20,5、当前位置(只读),第21页,21,图中第1位代表轴号(从1到4)。,变量#5081#5084存放刀具长度偏置值是当前执行值,不是后面程序段处理值。,在G31(跳转功效)程序段中跳转信号接通时刀具位置贮存在变量#5061到#5068中。当G31程序段中跳转信号不接通时,这些变量中贮存指定程序段终点值。,移动期间不能读是指因为缓冲(预读)功效原因,不能读期望值.,第22页,22,6、工件坐标系赔偿值(工件零点偏移值),第23页,23,第24页,24,三、算术和逻辑运算,以下运算能够在变量中执行。运算符右边表示式可包含常量和或由函数或运算符组成变量。表示式中变量#j和#k能够用常数赋值。左边变量也能够用表示式赋值。,1、(定义)赋值:#i=#j;,2、加法:#i=#j+#k,3、减法:#i=#j-#k,4、乘法:#i=#j*#k,5、除法:#i=#j/#k,第25页,25,6、正弦:#i=SIN#j;,7、反正弦:#i=ASIN#j;,8、余弦:#i=COS#j;,角度以度指定,9、反余弦:#i=ACOS#j;,9030表示为,10、正切:#i=TAN#j;,90.5度,11、反正切:#i=ATAN#j/#K;,12、平方根:#i=SQRT#j;,13、绝对值:#i=ABS#j;,14、舍入:#i=ROUND#j;,15、上取整:#i=FUP#j;,16、下取整:#i=FIX#j;,17、自然对数:#i=LN#j;y=lnx,18、指数函数:#i=EXP#j;y=e,x,第26页,26,19、或:#i=#j OR#k;,20、异或:#i=#j XOR#k;按位执行,21、与:#i=#j AND#k;,22、从BCD转为BIN#i=BIN#j;,23、从BIN转为BCD#i=BCD#j;,注:,ARCSIN#i=ASIN#j 取值范围,当No.6004.0=0时:27090,No.6004.0=1时:-9090,ARCCOS#I=ACOS#j 取值范围,1800,第27页,27,/2,0,-/2,1,-1,3/2,/2,0,-1,1,1,-1,0,/2,第28页,28,ARCTAN#i=ATAN#j/#K;,取值范围,当No.6004.0=0时:0360,No.6004.0=1时:-180180,3/2,/2,2,0,/2,-/2,-,0,第一象限,第二象限,第四象限,第一象限,第二象限,第三象限,第三象限,第四象限,0-,0,02,第29页,29,ROUND函数,在逻辑运算指令IF、WHILE中,ROUND函数在第一个小数位四舍五入。,比如#2=1.2345;,#1=ROUND#2;变量1值是1.0,在NC语句地址中,ROUND函数依据地值得最小设定单位指定四舍五入。,比如#1=1.2345;,#2=2.3456;,G00 G91 X-#1;,G01 X-#2 F300;,G00 X#1+#2;,1.2345+2.3456=3.5801=3.580不返回到初始位置,或 G00 X-ROUND#1+ROUND#2,1.235+2.346=3.581 刀具返回到初始位置,第30页,30,上取整和下取整,CNC处理数值运算时,若操作后产生整数绝对值大于原数绝对值时为上取整,,小于原数绝对值时为下取整。,设:#1=1.2,#2=-1.2,#3=FUP#1;则2.0赋给#3,#3=FIX#1;则1.0赋给#3,#3=FUP#2;则-2.0赋给#3,#3=FIX#2;则-1.0赋给#3,第31页,31,运算次序,函数乘、除(*、/、AND)加、减(+、-、OR、XOR),括号嵌套(方括号,圆括号用于说明),括号用于改变运算次序,能够使用5级。,第32页,32,四、宏程序语句和NC,下面程序段为宏程序语句:,包含算术或逻辑运算()程序段。,包含控制语句(比如,GOTO,DO,END)程序段。,包含宏程序调用指令(比如,用G65,G66,G67或其它G代码,M代码调用宏程序)程序段。,除了宏程序语句以外任何程序段都为,NC语句。,第33页,33,说明,与NC语句不一样,即使置于单程序段运行方式,机床也不停顿。不过,当参数No.6000.5SBM设定为1时,在单程序段方式中,机床停顿。,在刀具半径赔偿方式中宏程序语句段不做为不移动程序段处理。,第34页,34,与宏程序语句有相同性质NC语句,含有子程序调用指令(比如,用M98或其它M代码或用T代码调用子程序)句,不包含O.N.P或L以外指令地址程序段其性质与宏程序语句相同。,第35页,35,五、转移和循环,使用GOTO语句和IF语句能够改变控制流向。有三中转移和循环可供使用。,GOTO无条件转移,IF条件转移,WHILE当型循环,1、无条件转移,GOTO n;n为次序,比如:GOTO 1;,GOTO#10;,第36页,36,2、条件转移,IF GOTO n,比如:IF#1 GT 10 GOTO 2,程序,N2 G00 G91 X10.0,IF THEN,比如:IF#1 EQ#2 THEN#3=0,运算符:EQ 等于(=)NE 不等于 (),GT 大于()GE 大于等于(),LT 小于()LE 小于等于(),条件不满足,条件满足,第37页,37,例:求110总和。,O9000;,#1=0;,#2=1;,N1 IF#2 GT 10 GOTO 2;,#1=#1+#2;,#2=#2+1;,GOTO 1;,N2 M30;,第38页,38,3、循环,WHILE DO m;,程序;,END m;,程序;,说明:m=1,2,3,能够屡次使用。,最多嵌套三层。,省略WHILE,则产生从DO 到END,无限循环。,WHILE比GOTO 处理快。,条件满足,条件不满足,第39页,39,标号能够屡次使用:,WHILE DO 1;,程序;,END1;,WHILE DO 1;,程序;,END1;,能够嵌套3层:,WHILE DO 1;,WHILE DO 2;,WHILE DO 3;,程序;,END3;,END2;,END1;,能够跳到循环外边:,WHILE DO 1;,IF GOTO n;,END1;,N1,第40页,40,DO范围不能交叉:,WHILE DO 1;,程序;,WHILE DO 2;,END1;,程序;,END2;,转移不能进入循环区:,IF GOTO n;,WHILE DO 1;,N1;,END1;,第41页,41,六、宏程序调用,宏程序调用方法:,非模态调用(G65),模态调用(G66、G67),用G代码调用宏程序,用M代码调用宏程序,用M代码调用子程序,用T代码调用子程序,第42页,42,1、非模态调用(G65),格式:G65 Pp Ll,其中:p:要调用程序号,l:重复次数(默认值为1),自变量:数据传递到宏程序,其值被赋值到对应局部变量,有两种指定形式。,第43页,43,地址,变量号,地址,变量号,地址,变量号,A,B,C,D,E,F,H,#1,#2,#3,#7,#8,#9,#10,I,J,K,M,Q,R,S,#4,#5,#6,#13,#17,#18,#19,T,U,V,W,X,Y,Z,#20,#21,#22,#23,#24,#25,#26,自变量指定,注:每个字母只指定一次,能够不按次序,但I、J、K需,按次序指定。,第44页,44,地址,变量号,地址,变量号,地址,变量号,A,B,C,I1,J1,K1,I2,J2,K2,I3,J3,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,K3,I4,J4,K4,I5,J5,K5,I6,J6,K6,I7,#12,#13,#14,#15,#16,#17,#18,#19,#20,#21,#22,J7,K7,I8,J8,K8,I9,J9,K9,I10,J10,K10,#23,#24,#25,#26,#27,#28,#29,#30,#31,#32,#33,自变量指定,第45页,45,自变量指定、混合。CNC内部能够自动识别自变量指定、,后指定有效。,比如:G65 A1.0 B2.0 I-3.0 I4.0 D5.0 P1000;,则#1=1.0,#2=2.0,#3,#4=-3.0,#5=,#6,#7=4.0,#7=5.0,第46页,46,调用嵌套和局部变量级别:能够嵌套4级。,主程序,局部变量,(0级),1,#1,#33,(1级),2,#1,#33,(2级),3,#1,#33,(3级),4,#1,#33,(4级),5,#1,#33,O001;,#1=1;,G65 P2 A2;,M30;,O002;,#1=2;,G65 P3 A3;,M99;,O003;,#1=3;,G65 P4 A4;,M99;,O004;,#1=4;,G65 P5 A5;,M99;,O005;,#1=5;,M99;,(0级),宏程序(1级),宏程序(2级),宏程序(31级),宏程序(4级),第47页,47,例:如图所表示,编制一个宏程序加工圆上孔,孔深为Z。圆周半径为I,起始角为A,间隔为B,钻孔数为H,圆中心是(X,Y)。,(X,Y),100,0,B,B,B,B,50,Y,X,第48页,48,调用格式:,G65 P9100 Xx Yy Zz Rr Ii Aa Bb Hh;,X:圆心,X,坐标(#24),Y:圆心,Y,坐标(#25),Z:孔深(#26),R:快速趋近点坐标(#18),F:切削进给速度(#9),I:圆半径(#4),A:第一孔角度(#1),B:增量角(指定负值时为顾时针)(#2),H:孔数(#11),第49页,49,主程序:,O002;,G90 G92 X0 Y0 Z100;,G65 P9100 X100 Y50 R30 Z-50 F500 I100 A0 B45 H5;,M30;,第50页,50,宏程序:,O9100;,#3=#4003;储存03组G代码,G81Z#26R#18F#9K0;钻孔循环,也能够使用L0,IF#3 EQ 90 GOTO1;在G90方式转移到N1,#24=#5001+#24;计算圆心X坐标,#25=#5002+#25;计算圆心Y坐标,N1 WHILE#11 GT 0 DO1;直到剩下孔数为0,#5=#24+#4COS#1;计算X轴上孔位,#6=#25+#4SIN#1;计算Y轴上孔位,G90 X#5 Y#6;移动到目标位置之后执行钻孔,#1=#1+#2;更新角度,#11=#11-1;孔数-1,END1;,G#3 G80;返回原始状态G代码,M99;,第51页,51,2、模态调用(G66),格式:G66 Pp Ll,其中:p:要调用程序号,l:重复次数(默认值为1),自变量:数据传递到宏程序,G67取消模态调用。,注:嵌套能够4级;,在G66程序段中,不能调用多个宏程序,在只有辅助功效无移动指令程序段中不能调用宏程序;,局部变量只能在G66程序段中指定,每次执行模态调用时,不再指定局部变量。,第52页,52,O0001;,G66P9100 L2 A1.0 B2.0;,G00 G90 X100.0;,Y200.0,X150 Y300;,G67;,M30;,O9100;,G00 Z-#1;,G01 Z-#2 F300;,M99;,第53页,53,例:用宏程序编制G81固定循环操作,第1步,第2步,第3步,第4步,Z=0,R点,Z,R,初始平面,I点,第54页,54,G65 P9110 Xx Yy Zz Rr Ff L1,X:孔X坐标(由绝对值指定)(#24),Y:孔Y坐标(由绝对值指定)(#25),Z:Z点坐标(由绝对值指定)(#26),R:R点坐标(由绝对值指定)(#18),F:切削进给速度 (#9),L:重复次数,第55页,55,主程序:,O001;,G92 X0 Y0 Z50;,G00 G90 X100 Y50;,G66 P9110 Z-20 R1 F500;,G90 X20 Y20;,X50;,Y50;,X0 Y80;,G67;,M30;,第56页,56,宏程序:,O9110;,#1=#4001;储存G00/G01,#2=#4003;储存G90/G91,#3=#4019;储存切削进给速度,#5=#5003;储存钻孔开始Z坐标,G00 G90 Z#18;定位在R点,G01 Z#26 F#9;切削进给到Z点,IF4010 EQ 98 GOTO 1;返回到I点,G00#18;定位在R点,GOTO 2;,N1 G00 Z#5;定位在I点,N2 G#1 G#2 G#3;恢复模态信息。,M99;,第57页,57,3、用G代码调用宏程序,在参数(No.6050 到 No.6059)中设置调用用户宏程序(O9010 到 O9019)G代码号(从1到 9999),调用方法同G65.,注:不能嵌套!,第58页,58,程序号,参数号,O9010,O9011,O9012,O9013,O9014,O9015,O9016,O9017,O9018,O9019,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,参数号和程序号之间对应关系:,第59页,59,O0001;,G81 X10 Y20 Z-10,M30;,O9010;,M99;,参数No.6050=81,第60页,60,4、用M代码调用宏程序,在参数(No.6080 到 No.6089)中设置调用用户宏程序(O9021 到 O9029)M代码号(从1到 9999),调用方法同G65.,注:不能嵌套!,第61页,61,程序号,参数号,O9020,O9021,O9022,O9023,O9024,O9025,O9026,O9027,O9028,O9029,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,参数号和程序号之间对应关系:,第62页,62,O0001;,G50 A1 B2;,M30;,O9020;,M99;,参数No.6080=50,第63页,63,5、用M代码调用子程序,在参数(No.6071 到 No.6079)中设置调用用户宏程序(O9001 到 O9009)M代码号(从1到 9999),调用方法同M98.,第64页,64,程序号,参数号,O9001,O9002,O9003,O9004,O9005,O9006,O9007,O9008,O9009,6071,6072,6073,6074,6075,6076,6077,6078,6079,参数号和程序号之间对应关系:,第65页,65,O0001;,M03;,M30;,O9001;,M99;,参数No.6071=03,第66页,66,6、用T代码调用子程序,设置参数No.6001第5位TCS=1,当加工程序中指定T代码,能够调用宏程序O9000。在加工程序中指定T代码赋值到公共变量#149中。,第67页,67,O0001;,T23;,M30;,O9000;,M99;,参数No.60015位=1,#149=23,第68页,68,第69页,69,使用以下保持型变量:,#502,:半径,r,;,#503,:起始角度,;,#504,:孔数,n,,当,n,时,按逆时针方向加工,当,n,时,按顺时针方向加工;,#505,:孔底,Z,坐标值;,#506,:,平面,坐标值;,#507:进给量。,第70页,70,使用以下变量进行操作运算:,#100,:表示第,i,步钻孔记数器;,#101,:记数器最终值(为,n,绝对值),#102,:第,i,个孔角度位置值;,#103,:第,i,个孔,X,坐标值;,#104:第,i,个孔,Y,坐标值;,第71页,71,O9010N110 G65 H01 P#100 Q0 N120 G65 H22 P#101 Q#504 N130 G65 H04 P#102 Q#100 R360 N140 G65 H05 P#102 Q#102 R#504 N150 G65 H02 P#102 Q#503 R#102 N160 G65 H32 P#102 Q#502 R#102 N170 G65 H31 P#104 Q#502 R#102 N180 G90 G00 X#103 Y#104,),N190 G00 Z#506 N200 G01 Z#505 F#507 N210 G00 Z#506 N220 G65 H02 P#100 Q#100 R1 N230 G65 H84 P,130 Q#100 R#101 N240 M99,第72页,72,O0010N10 G54 G90 G00 X0 Y0 Z20 /,进入加工坐标系,N20 M98 P9010 /,调用钻孔子程序,加工圆周等分孔,N30 Z20 /,抬刀,N40 G00 G90 X0 Y0 /,返回加工坐标系零点,N50 M30 /,程序结束,第73页,73,首先在,MDI,方式中,设定以下变量值:,#502,:半径,r,为,50,;,#503,:起始角度,=30,;,#504,:孔数,n,为,8,;,#505,:孔底,Z,坐标值为,20,;,#506,:,R,平面,Z,坐标值为,5,;,#507:F进给量为50。,第74页,74,O6000N6010#30=#101 /,基准点保留,N6020#31=#102 /,基准点保留,N6030#32=1 /,计数值置,1N6040 WHILE#32 LE ABS#11 DO1 /,进入孔加工循环体,N6050#33=#1+360*#32-1/#1 /,计算第孔角度,N6060#101=#30+#18*COS#33 /,计算第孔,X,坐标值,N6070#102=#31+#18*SIN#33 /,计算第孔,Y,坐标值,N6080 G90 G81 G98 X#101 Y#102 Z#26 R#3 F#9 /,钻削第孔,N6090#32=#32+1 /,计数器对孔序号计数累加,N6100#100=#100+1 /,计算已加工孔数,N6110 END 1 /,孔加工循环体结束,N6120#101=#30 /,返回,X,坐标初值,X0N6130#102=#31 /,返回,Y,坐标初值,Y0M99 /,宏程序结束,第75页,75,
展开阅读全文