您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 发那科用户宏程序资料
1用户宏程序虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易。可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序。使用时,加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样。2(最多999次)345一、变量1、变量使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。#1=#2+100;G01X#1F300;2、变量的表示计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#1#[#1+#2-12]63、变量的类型74、变量值得范围局部变量和公共变量可以有0值或下面范围中的值:-1047至-10-29或10-29至10475、变量的引用为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,把表达式放在括号中。例如:G01X#1F#[#2+#3]8被引用变量的值根据地址的最小设定单位自动地舍入。例如:G00X#1,以1/1000mm的单位执行时,CNC把12.3456赋值给变量#1,实际指令值为G00X12.346;。改变引用变量的值的符号,要把负号(一)放在#的前面。例如:G00X-#1;当引用未定义的变量时,变量及地址字都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为:G00X0;96、未定义的变量变量值未定义时,这样的变量成为“空”变量。变量#0总是空变量。它不能写,只能读。(1)引用10(2)运算11(3)条件表达式127、限制程序号、顺序号和程序跳转号不能使用变量例如:O#1;N#2G00X100.0/#3Y200.013二、系统变量1、刀具补偿值142、时间信息153、自动运行控制可以改变自动运行的控制状态16●当电源接通时,该变量的值为0。●当单程序段停止无效时,即使单程序段开关设为ON,也不执行单程序段停止。●当不指定等待辅助功能(M,S和T功能)完成时,在辅助功能完成之前,程序执行到下列程序段。而且分配完成信号DEN不输出。1718●当电源接通时,该变量的值为0。●当进给暂停无效时:(1)当进给暂停按钮被按下时,机床在单段停止方式停止。但是。当用变量#3003使单程序段方式无效时,单程序段停止不执行。(2)当进给暂停按钮压下又松开时,进给暂停灯亮,但是,机床不停止;程序继续执行,并且机床停在进给暂停有效的第一个程序段。●当进给速度倍率无效时,总是100%的倍率,而不管机床操作面板上的进给速度倍率开关的设置。●当准确停止检测无效时,即使那些不执行切削的程序段也不进行准确停止检测(位置检测)。19攻丝循环中使用变量3004的例子N5N7204、已加工的零件数215、当前位置(只读)22●图中第1位代表轴号(从1到4)。●变量#5081—#5084存储的刀具长度偏置值是当前的执行值,不是后面的程序段的处理值。●在G31(跳转功能)程序段中跳转信号接通时的刀具位置贮存在变量#5061到#5068中。当G31程序段中的跳转信号不接通时,这些变量中贮存指定程序段的终点值。●移动期间不能读是指由于缓冲(预读)功能的原因,不能读期望值.236、工件坐标系补偿值(工件零点偏移值)2425三、算术和逻辑运算下列的运算可以在变量中执行。运算符右边的表达式可包含常量和/或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。1、(定义)赋值:#i=#j;2、加法:#i=#j+#k3、减法:#i=#j-#k4、乘法:#i=#j*#k5、除法:#i=#j/#k266、正弦:#i=SIN[#j];7、反正弦:#i=ASIN[#j];8、余弦:#i=COS[#j];角度以度指定9、反余弦:#i=ACOS[#j];90°30′表示为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=lnx18、指数函数:#i=EXP[#j];y=ex2719、或:#i=#jOR#k;20、异或:#i=#jXOR#k;按位执行21、与:#i=#jAND#k;22、从BCD转为BIN#i=BIN[#j];23、从BIN转为BCD#i=BCD[#j];注:①ARCSIN#i=ASIN[#j]取值范围当No.6004.0=0时:270°~90°No.6004.0=1时:-90°~90°②ARCCOS#I=ACOS[#j]取值范围180°~0°28π/20-π/21-1π3π/2π/20-111-10π/2π29③ARCTAN#i=ATAN[#j]/[#K];取值范围当No.6004.0=0时:0°~360°No.6004.0=1时:-180°~180°3π/2π/22ππ0π/2-π/2π-π0第一象限第二象限第四象限第一象限第二象限第三象限第三象限第四象限0~-π0~π0~2π30④ROUND函数●在逻辑运算指令IF、WHILE中,ROUND函数在第一个小数位四舍五入。例如#2=1.2345;#1=ROUND[#2];变量1的值是1.0●在NC语句地址中,ROUND函数根据地值得最小设定单位指定四舍五入。例如#1=1.2345;#2=2.3456;G00G91X-#1;G01X-#2F300;G00X[#1+#2];1.2345+2.3456=3.5801=3.580不返回到初始位置或G00X-[ROUND[#1]+ROUND[#2]]1.235+2.346=3.581刀具返回到初始位置31⑤上取整和下取整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赋给#332⑥运算次序函数→乘、除(*、/、AND)→加、减(+、-、OR、XOR)⑦括号嵌套(方括号[],圆括号用于说明)括号用于改变运算次序,可以使用5级。33四、宏程序语句和NC下面的程序段为宏程序语句:●包含算术或逻辑运算(=)的程序段。●包含控制语句(例如,GOTO,DO,END)的程序段。●包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段。除了宏程序语句以外的任何程序段都为NC语句。34说明●与NC语句的不同①即使置于单程序段运行方式,机床也不停止。但是,当参数No.6000.5SBM设定为1时,在单程序段方式中,机床停止。②在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理。35●与宏程序语句有相同性质的NC语句①含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序)句②不包含O.N.P或L以外的指令地址的程序段其性质与宏程序语句相同。36五、转移和循环使用GOTO语句和IF语句可以改变控制的流向。有三中转移和循环可供使用。GOTO无条件转移IF条件转移WHILE当型循环1、无条件转移GOTOn;n为顺序例如:GOTO1;GOTO#10;372、条件转移IF[条件表达式]GOTOn例如:IF[#1GT10]GOTO2程序N2G00G91X10.0IF[条件表达式]THEN表达式例如:IF[#1EQ#2]THEN#3=0运算符:EQ等于(=)NE不等于(≠)GT大于(>)GE大于等于(≥)LT小于(<)LE小于等于(≤)条件不满足条件满足38例:求1~10的总和。O9000;#1=0;#2=1;N1IF[#2GT10]GOTO2;#1=#1+#2;#2=#2+1;GOTO1;N2M30;393、循环WHILE[条件表达式]DOm;程序;ENDm;程序;说明:①m=1,2,3,可以多次使用。②最多嵌套三层。③省略WHILE,则产生从DO到END的无限循环。④WHILE比GOTO处理快。条件满足条件不满足40标号可以多次使用:WHILE[…]DO1;程序;END1;﹕WHILE[…]DO1;程序;END1;可以嵌套3层:WHILE[…]DO1;﹕WHILE[…]DO2;﹕WHILE[…]DO3;程序;END3;﹕END2;﹕END1;可以跳到循环外边:WHILE[…]DO1;IF[…]GOTOn;END1;N141DO的范围不能交叉:WHILE[…]DO1;程序;WHILE[…]DO2;﹕END1;程序;END2;转移不能进入循环区:IF[…]GOTOn;﹕WHILE[…]DO1;N1…;END1;42六、宏程序调用宏程序调用方法:①非模态调用(G65)②模态调用(G66、G67)③用G代码调用宏程序④用M代码调用宏程序⑤用M代码调用子程序⑥用T代码调用子程序431、非模态调用(G65)格式:G65PpLl自变量指定其中:p:要调用的程序号l:重复次数(默认值为1)自变量:数据传递到宏程序,其值被赋值到相应的局部变量,有两种指定形式。44地址变量号地址变量号地址变量号ABCDEFH#1#2#3#7#8#9#10IJKMQRS#4#5#6#13#17#18#19TUVWXYZ#20#21#22#23#24#25#26自变量指定Ⅰ注:每个字母只指定一次,可以不按顺序,但I、J、K需按顺序指定。45地址变量号地址变量号地址变量号ABCI1J1K1I2J2K2I3J3#1#2#3#4#5#6#7#8#9#10#11K3I4J4K4I5J5K5I6J6K6I7#12#13#14#15#16#17#18#19#20#21#22J7K7I8J8K8I9J9K9I10J10K10#23#24#25#26#27#28#29#30#31#32#33自变量指定Ⅱ46自变量指定Ⅰ、Ⅱ混合。CNC内部能够自动识别自变量指定Ⅰ、Ⅱ,后指定的有效。例如:G65A1.0B2.0I-3.0I4.0D5.0P1000;则#1=1.0#2=2.0#3#4=-3.0#5=#6#7=4.0#7=5.047调用嵌套和局部变量的级别:可以嵌套4级。主程序局部变量(0级)1﹕#1#33(1级)2﹕#1#33(2级)3﹕#1#33(3级)4﹕#1#33(4级)5﹕#1#33O001;﹕#1=1;G65P2A2;﹕﹕M30;O002;﹕#1=2;G65P3A3;﹕﹕M99;O003;﹕#1=3;G65P4A4;﹕﹕M99;O004;﹕#1=4;G65P5A5;﹕﹕M99;O005;﹕#1=5;﹕﹕M99;(0级)宏程序(1级)宏程序(2级)宏程序(31级)宏程序(4级)48例:如图所示,编制一个宏程序加工圆上的孔,孔深为Z。圆周的半径为I,起始角为A,间隔为B,钻孔数为H,圆的中心是(X,Y)。(X,Y)1000BBBB50YX49调用格式:G65P9100XxYyZzRrIiAaBbHh;X:圆心的X坐标(#24)Y:圆心的Y坐标(#25)Z:孔深(#26)R:快速趋近点坐标(#18)F:切削进给速度(#9)I:圆半径(#4)A:第一孔的角度(#1)B:增量角(指定负值时为顾时针)(#2)H:孔数(#11)50主程序:O002;G90G92X0Y0Z100;G65P9100X100Y50R30Z-50F500I100A0B45H5;M30;51宏程序:O9100;#3=#4003;储存03组G代码G81Z#26R#18F#9K0;钻孔循环,也可以使用L0IF[#3EQ90]GOTO1;在G90方式转移到N1#24=#5001+#24;计算圆心的X坐标#25=#5002+#25;计算圆心的Y坐标N1WHILE[#11GT0]DO
本文标题:发那科用户宏程序资料
链接地址:https://www.777doc.com/doc-7026050 .html