用户宏程序 虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序使用时,加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样1(最多999次)23一、变量1、变量 使用用户宏程序时,数值可以直接指定或用变量指定当用变量时,变量值可用程序或用MDI面板上的操作改变 #1=#2+100; G01 X#1 F300;2、变量的表示 计算机允许使用变量名,用户宏程序不行变量用变量符号(#)和后面的变量号指定 表达式可以用于指定变量号此时,表达式必须封闭在括号中 例如: #1 #1+#2-1253、变量的类型64、变量值得范围 局部变量和公共变量可以有0值或下面范围中的值: 1047至1029 或 1029至1047 5、变量的引用 为在程序中使用变量值,指定后跟变量号的地址当用表达式指定变量时,把表达式放在括号中 例如:G01 X#1 F#2+#37 被引用变量的值根据地址的最小设定单位自动地舍入 例如: G00 X#1, 以11000mm的单位执行时,CNC把12.3456赋值给变量#1,实际指令值为G00 X12.346;。
改变引用变量的值的符号,要把负号(一)放在#的前面 例如:G00 X#1; 当引用未定义的变量时,变量及地址字都被忽略 例如: 当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为: G00X0;86、未定义的变量 变量值未定义时,这样的变量成为“空”变量变量#0总是空变量它不能写,只能读1)引用9(2)运算10(3)条件表达式117、限制 程序号、顺序号和程序跳转号不能使用变量 例如:O#1; N#2G00X100.0 /#3Y200.012二、系统变量1、刀具补偿值132、时间信息143、自动运行控制 可以改变自动运行的控制状态15当电源接通时,该变量的值为0当单程序段停止无效时,即使单程序段开关设为ON,也不执行单程序段停止当不指定等待辅助功能(M,S和T功能)完成时,在辅助功能完成之前,程序执行到下列程序段而且分配完成信号DEN不输出1617当电源接通时,该变量的值为0当进给暂停无效时:(1)当进给暂停按钮被按下时,机床在单段停止方式停止当用变量#3003使单程序段方式无效时,单程序段停止不执行2)当进给暂停按钮压下又松开时,进给暂停灯亮,但是,机床不停止;程序继续执行,并且机床停在进给暂停有效的第一个程序段。
当进给速度倍率无效时,总是100的倍率,而不管机床操作面板上的进给速度倍率开关的设置当准确停止检测无效时,即使那些不执行切削的程序段也不进行准确停止检测(位置检测)18攻丝循环中使用变量3004的例子N5N7194、已加工的零件数205、当前位置(只读)21图中第1位代表轴号(从1到4)变量#5081#5084存储的刀具长度偏置值是当前的执行值,不是后面的程序段的处理值在G31(跳转功能)程序段中跳转信号接通时的刀具位置贮存在变量#5061到#5068中当G31程序段中的跳转信号不接通时,这些变量中贮存指定程序段的终点值移动期间不能读是指由于缓冲(预读)功能的原因,不能读期望值.226、工件坐标系补偿值(工件零点偏移值)2324三、算术和逻辑运算 下列的运算可以在变量中执行运算符右边的表达式可包含常量和或由函数或运算符组成的变量表达式中的变量#j和#k可以用常数赋值左边的变量也可以用表达式赋值1、(定义)赋值: #i=#j;2、加法: #i=#j+#k3、减法: #i=#j-#k4、乘法: #i=#j*#k5、除法: #i=#j/#k256、正弦: #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=lnx18、指数函数: #i=EXP#j; y=ex2619、或: #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时 :-9090ARCCOS #I=ACOS#j 取值范围 180027/20-/21-13/2/20-111-1 0/228 ARCTAN #i=ATAN#j/#K; 取值范围 当No.6004.0=0时 :0360 No.6004.0=1时 :-1801803/2/220/2-/2-0第一象限第二象限第四象限第一象限第二象限第三象限第三象限第四象限0-00229ROUND函数在逻辑运算指令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上取整和下取整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赋给#331运算次序 函数乘、除(*、/、AND)加、减(+、-、OR、XOR)括号嵌套(方括号,圆括号用于说明) 括号用于改变运算次序,可以使用5级32四、宏程序语句和NC下面的程序段为宏程序语句:包含算术或逻辑运算()的程序段包含控制语句(例如,GOTO,DO,END)的程序段。
包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段 除了宏程序语句以外的任何程序段都为 NC语句33说明 与NC语句的不同 即使置于单程序段运行方式,机床也不停止但是,当参数No.6000.5SBM设定为1时,在单程序段方式中,机床停止 在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理34 与宏程序语句有相同性质的NC语句 含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序) 句 不包含O.N.P或L以外的指令地址的程序段其性质与宏程序语句相同35五、转移和循环 使用GOTO语句和IF语句可以改变控制的流向有三中转移和循环可供使用 GOTO无条件转移 IF条件转移 WHILE当型循环1、无条件转移 GOTO n; n为顺序 例如:GOTO 1; GOTO #10;362、条件转移 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例:求110的总和。
O9000; #1=0; #2=1; N1 IF#2 GT 10 GOTO 2; #1=#1+#2; #2=#2+1; GOTO 1; N2 M30;383、循环 WHILE DO m; 程序 ; END m; 程序;说明: m=1,2,3,可以多次使用 最多嵌套三层 省略WHILE,则产生从DO 到END的 无限循环 WHILE比GOTO 处理快条件满足条件不满足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;N140DO的范围不能交叉:WHILE DO 1; 程序;WHILE DO 2; END1; 程序;END2;转移不能进入循环区:IF GOTO n; WHILE DO 1;N1;END1;41六、宏程序调用宏程序调用方法: 非模态调用(G65) 模态调用(G66、G67) 用G代码调用宏程序 用M代码调用宏程序 用M代码调用子程序 用T代码调用子程序421、非模态调用(G65) 格式: G65 Pp Ll 其中: p:要调用的程序号 l: 重复次数(默认值为1) 自变量:数据传递到宏程序,其值被赋值到相应的局部变量,有两种指定形式。
43 地址变量号 地址 变量号 地址 变量号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需 按顺序指定44 地址变变量号 地址变变量号 地址变变量号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自变量指定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.046调用嵌套和局部变量的级别:可以嵌套4级主程序局部变量(0级) 1 #1#33(1级) 2 #1#33(2级) 3 #1#33(3级) 4 #1#33(4级) 5 #1#33O001;#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例:如图所示,编制一个宏程序加工圆上的孔,孔深为Z。
圆周的半径为I,起始角为A,间隔为B,钻孔数为H,圆的中心是(X ,Y)X,Y)1000BBBB50YX48调用格式: 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主程序:O002;G90 G92 X0 Y0 Z100;G65 P9100 X100 Y50 R30 Z-50 F500 I100 A0 B45 H5;M30; 50宏程序 : O9100; #3=#4003;储存03组G代码 G81Z#26R#18F#9K0;钻孔循环,也可以使用L0 IF#3 EQ 。