当前位置:首页 >> 机械/仪表 >>

FANUC宏程序


第五章
5.1 变量

用户宏程序

普通加工程序直接用数值指定 G 代码和移动距离;例如,GO1 和 X100.0。使用用户 宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用 MDI 面 板上的操作改变。 #1=#2+100 G01 X#1 F300 说明: ● 变量的表示 计算机允许使用变量名,用户宏程序

不行。变量用变量符号(#)和后面的变量号指定。 例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12] ● 变量的类型 变量根据变量号可以分成四种类型 变量号 变量类型 功能 #0 空变量 该变量总是空,没有值能赋给该变量. #1-#33 局部变量 局部变量只能用在宏程序中存储数据, 例如,运算结果.当断电时,局部变量被 初始化为空.调用宏程序时,自变量对 局部变量赋值, #100-#199 公共变量 公共变量在不同的宏程序中的意义相 #500-#999 同.当断电时,变量#100-#199 初始化为 空.变量#500-#999 的数据保存,即使断 电也不丢失. #1000--系统变量 系统变量用于读和写 CNC 运行时各种数 据的变化,例如,刀具的当前位置和补 偿值. ● 变量值的范围 局部变量和公共变量可以有 0 值或下面范围中的值: 47 -29 -2 47 -10 到-10 或-10 到-10 如果计算结果超出有效范围,则发出 P/S 报警 NO.111. ● 小数点的省略 当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1 的实际值是 123.000。 ● 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式 放在括号中。

例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如: 当 G00X#/;以 1/1000mm 的单位执行时, CNC 把 123456 赋值给变量#1,实际指令值为 G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。 例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。 例如: 当变量#1 的值是 0, 并且变量#2 的值是空时, G00X#1 Y#2 的执行结果为 G00X0。 ● 双轨迹(双轨迹控制)的公共变量 对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数 N0.6036 和 6037 的设定,某些公共变量可同时用于两个轨迹。 ● 未定义的变量 当变量值未定义时,这样的变量成为空变量。变量#0 总是空变量。它不能写,只能 读。 (a) 引用 当引用一个未定义的变量时,地址本身也被忽略。 当#1=<空> 当#1=0 G90 X100 Y#1 G90 X100 Y#1 ↓ ↓ G90 X100 G90 X100 Y0 (b) 运算 除了用<空>赋值以外,其余情况下<空>与 0 相同。 当#1=<空>时 #2=#1 ↓ #2=<空> #2=#*5 ↓ #2=0 #2=#1+#1 ↓ #2=0 (c)条件表达式 EQ 和 NE 中的<空>不同于 0。 当#1=<空>时 #1EQ#0 ↓ 成立 #1 NE #0 ↓ 成立

当#1=0 时 #2=#1 ↓ #2=0 #2=#*5 ↓ #2=0 #2=#1+#1 ↓ #2=0

当#1=0 时 #1EQ#0 ↓ 不成立 #1 NE #0 ↓ 不成立

#1 GE #0 ↓ 成立 #1 GT #0 ↓ 不成立

#1 GE #0 ↓ 不成立 #1 GT #0 ↓ 不成立

● 限制 程序号,顺序号和任选程序段跳转号不能使用变量。 例:下面情况不能使用变量: 0#1; /#2G00X100.0; N#3Y200.0;

5.2 算术和逻辑运算
下面表中列出的运算可以在变量中执行。 运算符右边的表达式可包含常量和或由函数或运 算符组成的变量。 表达式中的变量#j 和#k 可以用常数赋值。 左边的变量也可以用表达式赋 值。 功能 定义 加法 减法 乘法 除法 正弦 反正弦 余弦 反余弦 正切 反正切 格式 #i=#j #i-#j+#k; #i-#j-#k; #i-#j*#k; #i-#j/#k; #i=SIN[#j]; #i=ASIN[#j]; #i=COS[#j]; #i=ACOS[#j]; #i=TAN[#j]; #i=ATAN[#j]; 备注

角度以度数指定,90° 30’表示为 90.5 度。

平方根 绝对值 舍入 上取整 下取整 自然对数 指数函数

#i=SQRT[#j]; #i=ABS[#j]; #i=ROUNND[#j]; #i=FIX[#j]; #i=FUP[#j]; #i=LN[#j]; #i=EXP[#j];

或 异或 与

#i-#jOR#k; #i-#jXOR#k; #i-#jAND#k;

逻 辑 运算 一位 一 位地 按二进制数执行。

从 BCD 转为 BIN 从 BIN 转为 BCD

#i=BIN[#j]; #i=BCD[#j];

用于与 PMC 的信号交 换。

说明: ● 角度单位 函数 SIN ,COS,ASIN,ACOS,TAN 和 ATAN 的角度单位是度。 90°30’ 如 表示为 90.5 度。 ● ARCSIN # i= ASIN[#j] (1)取值范围如下: 当参数(NO.6004#0)NAT 位设为 0 时,270°~90° 当参数(NO.6004#0)NAT 位设为 1 时,-90°~90° (2)当#j 超出-1 到 1 的范围时,发出 P/S 报警 NO.111. (3)常数可替代变量#j ● ARCCOS #i=ACOS[#j] (1) 取值范围从 180°~0° (2) 当#j 超出-1 到 1 的范围时,发出 P/S 报警 NO.111. (3) 常数可替代变量#j ● ARCTAN #i= ATAN[#j]/ [#k] (1) 指定两个边的长度,并用斜杠(/)分开 (2) 取值范围如下: 当 NAT 位(参数 NO.6004,#0)设为 0 时;0°到 360° 当 NAT 位(参数 NO.6004,#0)设为 1 时;-180°到 180° (3) 常数可替代变量#j ● 自然对数 #i=LN[#j]; -8 (1) 注意,相对误差可能大于 10 . (2) 当反对数(#j)为 0 或小于 0 时,发出 P/S 报警 NO.111. (3) 常数可替代变量#j。 ● 指数函数 #i=EXP[#j] -8。 (1) 注意,相对误差可能大于 10

(2) 当运算结果超过 3.65X10 (j 大约是 110)时,出现溢出并发出 P/S 报警 NO.111.。 (3) 常数可替代变量#j。 ● ROUND(舍入)函数 (1) 当算术运算或逻辑运算指令 IF 或 WHILE 中包含 ROUND 函数时,则 ROUND 函数在第一 个小数位置四舍五入. 当执行#1= ROUND[#2];此处#2=1.2345,变量 1 的值是 1.0。 (2) 当在 NC 语句地址中使用 ROUND 函数时, ROUND 函数根据地址的最小设定单位将指定 值四舍五入 ● 上取整下取整 CNC 处理数值运算时,若操作后产生的整数绝对值大于原数的绝对值时为上取整;若小 于原数的绝对值为下整数.对于负数的处理应小心. ● 算术与逻辑运算指令的缩写 程序中指令函数时,函数名的前两个字符可以用于指定该函数. ROUND→RO FLX→FI ● 运算次序 (1) 函数 (2) 乘和除运算 (3) 加和减运算 ● 括号嵌套 括号用于改变运算次序,括号可以使用 5 级,包括函数内部使用的括号.当超过 5 级时,出 现 P/S 报警 NO.118. 限制 ● 括号 ([,])用于封闭表达式.注意,圆括号用于注释. ● 运算误差 运算时,可能出现误差. 注: 1.相对误差取决于运算结果. 2.使用两类误差的较小者. 3.绝对误差是常数,而不管运算结果. 4.函数 TAN 执行 SIN/COS. -8 5.如果 SIN/COS 或 TAN 函数的运算结果小于 10X10 或由于运算精度的限制不为 0 的话,设定参数 NO.6004#1 为 1,则运算结果可以规算为 0. (1) 变量值的精度约为 8 位十进制数.当在加/减速中处理非常大的数时,将得不到期 望的结果. (2) 还应该意识到,使用条件表达式 EQ,NE,GE,GT.LE 和 LT 时可能造成误差. (3) 使用下取整指令时应小心. ● 除数 当在除法或 TAN[90]中指定为 0 的除数时,出现 P/S 报警 NO.112

47

5.3 宏程序语句和 NC 语句
下面的程序段为宏程序语句: ◆ 包含算术或逻辑运算(=)的程序段. ◆ 包含控制语句的程序段 ◆ 包含宏程序调用指令的程序段 除了宏程序以外的任何程序段都为 NC 语句. 说明:

● 与 NC 语句的不同 (1) 即使置于单程序段运行方式,机床也不停止.但是,当参数 N0.6000#5SBM 设定为 1 时, 在单程序段方式中,机床停止. (2) 在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理. ● 与宏程序语句有相同性质的 NC 语句 (1) 含有子程序调用指令,但没有除 O,N 或 L 地址之外的其它地址指令的 NC 语句其性质 与宏程序相同. (2) 不包含除 ONP 或 L 以外的指令地址的程序段其性质与宏程序语句相同.

5.4 转移和循环
在程序中,使用 GOTO 语句和 IF 语句可以改变控制的流向.有三种转移和循环操作可供 使用; 转移和循环----------GOTO 语句(无条件转移) ↓→IF 语句(条件转移) WHILE 语句(当…时循环)

5.4.1 无条件转移(GOTO 语句)
转移到标有顺序号 n 的程序段.当指定 1 到 99999 以外的顺序号时,出现 P/S 报警 NO.128. 可用表达方式指定顺序号. GOTOn;n:顺序号(1 到 99999)

5.4.2 条件转移(IF)语句
IF 之后指定条件表达式. IF[<条件表达式>]GOTOn 如果指定的条件表达式满足时,转移到标有顺序号 n 的程序 段.如果指定的条件表达式不满足,执行下个程序段. IF[<条件表达式>]THEN 如果条件表达式满足,执行预先决定的宏程序语句.只执行 一个宏程序语句. 说明: ● 条件表达式 条件表达式必须包括算符.算符插在两个变量中间或变量和常数中间,并且用括号([,]) 封闭.表达式可以替代变量. ● 运算符 运算符由 2 个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于 另一个值.注意,不能使用不符号. 运算符 含义 EQ 等于 NE 不等于

GT GE LT LE 典型程序: 下面的程序计算数值 1-10 的总和

大于 小于或等于 小于 小于或等于

09500; #1=0; 存储和数变量的初值 #2=1; 被加数变量的初值 N1 IF[#2 GT 10]GOTO 2; 当被加数大于 10 时转移到 N2 #1=#1+#2; 计算和数 #2=#2+#1; 下一个被加数 GOTOA1; 转到 N1 N2 M30 ; 程序结束

5.4.3 循环(WHILE 语句)
在 WHILE 后指定一个条件表达式.当指定条件满足时,执行从 D0 到 END 之间的程序.否则, 转到 END 后的程序段. 说明: 当指定的条件满足时,执行 WHILE 从 D0 到 END 之间的程序.否则,转而执行 END 之后的程序 段,这种指令格式适用于 IF 语句.D0 后的号和 END 后的号是指定程序执行范围的标号,标号 值为 1,2,3.若用 1,2,3 以外的值会产生 P/S 报警 NO.126. ● 嵌套 在 DO-END 循环中的标号可根据需要多次使用.但是,当程序有交叉重复循环(DO 范围的 重叠)时,出现 P/S 报警 NO.124. 说明: ◆ 无限循环 当指定 DO 而没有指定 WHILE 语句时,产生从 DO 到 END 的无限循环. ◆ 处理时间 当在 GOTO 语句中有标号转移的语句时,进行顺序号检索.反向检索的时 间要比正向检索长.用 WHILE 语句实现循环可减少处理时间. ◆ 未定义的变量 在使用 EQ 或 NE 的条件表达式中,<空>和零有不同的效果,在其它形 式的条件表达式中,<空>被当作零. ◆ 典型程序 下面的程序计算数值 1 到 10 的总和. 00001; #1=0;

#2=1; WHILE[#2LE10]DO 1; #1=#1+#2; #2=#2+1; END 1; M30;

5.5 宏程序调用
用下面的方法调用宏程序: 宏程序调用------------非模态调用(G65) -----------模态调用(G66,G67) ------------用 G 代码调用宏程序 ------------用 M 代码调用宏程序 ------------用 M 代码调用子程序 ------------用 T 代码调用子程序 限制 ● 用宏程序调用和子程序调用之间的差别 宏程序调用用(G65)不同于子程序用(G68),如下所述: (1) 用(G65),可以指定自变量(数据传送到宏程序).M98 没有该功能. (2) 当 M98 程序段包含另一个 NC 指令时,在指令执行之后调用子程序.相反,G65 无条件 地调用宏程序. (3) M98 程序段包含另一个 NC 指令时,在单程序段方式中,机床停止.相反,G65 机床不停 止. (4) 用 G65,改变局部变量的级别.用 M98,不改变局部变量的级别.

5.5.1

非模态调用(G65)

当指定 G65 时,以地址 P 指定的用户宏程序被调用.数据能传递到用户宏程序体中. 说明: 呼调:(1) 在 G65 之后,用地址 P 指定用户宏程序的程序号. (2) 当要求重复时,在地址 L 后指定从 1 到 9999 的重复次数.省略 L 值时,认为 L 等于 1. (3) 使用自变量指定,其值被赋值到相应的局部变量. ● 自变量指定 可用两种形式的自变量指定,自变量指定 I 使用除了 G,L,O,N 和 P 以外的字母,每个 字母指定一次.自变量指定 II 使用 A,B,C 和 I,J 和 K(i 为 1-10).根据使用的字母,自动 地改变自变量指定的类型. 自变量指定 I 地址 A B C 变量号 #1 #2 #3 地址 I J K 变量号 #4 #5 #6 地址 T U V 变量号 #20 #21 #22

D E F H

#7 #8 #9 #11

M Q R S

#13 #17 #18 #19

W X Y Z

#23 #24 #25 #26

(1) 地址 G,L,N,Q 和 P 不能在自变量中使用. (2) 不需要指定的地址可以省略,对应于省略地址的局部变量设为空. (3) 地址不需要按字母顺序指定,但应符合字地址的格式.但是 I,J 和 K 需要按字母顺序 指定. 自变量地址 II 自变量指定 II 使用 A,B,和 C 各一次,I,J,K10 次.自变量指定 II 用于传递诸如三维坐标 值的变量. 地址 变量号 地址 变量号 地址 变量号 A #1 K3 #12 J7 #23 B #2 I4 #13 K7 #24 C #3 J4 #14 I8 #25 I1 #4 K4 #15 J8 #26 J1 #5 I5 #16 K8 #27 K1 #6 J5 #17 I9 #28 I2 #7 K5 #18 J9 #29 J2 #8 I6 #19 K9 #30 K2 #9 J6 #20 I10 #31 L3 #10 K6 #21 J10 #32 J3 #11 I7 #22 K10 #33 I,J,K 的下标用于确定自变量指定的顺序,在实际编程中不写. 限制: ◆ 格式: 任何自变量前必须指定 G65 ◆ 自变量指定 I,II 的混合 CNC 内部自动识别自变量指定 I&自变量指定 II.如 果自变量指定 I 和自变量指定 II 混合指定的话,后指定的自变量类型有效. ◆ 小数点的位置 没有小数点的自变量数据的单位为各地址的最小设定单位.传 递的没有小数点的自变量的值根据机床实际的系统配置变化.在宏程序调用中使 用小数点可使程序兼容性好. ◆ 调用嵌套:调用可以嵌套 4 级,包括非模态调用(G95)和模态调用(G66).但不 包括子程序调用(M98). ◆ 局部变量的级别 : 1.局部变量嵌套从 0 到 4 级. 2.主程序是 0 级. 3.宏程序每调用 1 次,局部变量级别加 1.前 1 级的局部变量值保存在 CNC 中. 4.当宏程序中执行 M99 时,控制返回到调用的程序.此时,局部变量级别减 1;并恢 复宏程序调用时保存的局部变量值. ◆ 典型程序: 编制一个宏程序加工轮圆上的孔.圆周的半径为 I.起始角为 A,间隔 为 B,钻孔数为 H,圆的中心是(X,Y)指令可以用绝对值或增加量指定.顺时针方向 钻孔时 B 应指定负值.

◆ 调用格式:G95 P9100 Xx Yy Zz Rr Li Aa Bb Hh ; X:圆心的 X 坐标(绝对值或增量值的指定)(#24) Y:圆心的 Y 坐标(绝对值或增量值的指定)(#25) Z:孔深(#26) R:快速趋近点坐标(#18) F:切削进给速度(#9) I:圆半径(#4) A:第一孔的角度(#1) B:增量角(指定负值时为顺时针)(#2) H:孔数(#11) ◆ 宏程序调用程序: O0002; G90 G92 X0 Y0 Z100,0; G65 p9100 X100 Y50.0 R30.0 Z50.0 500 I100.0 A0 B45.0 H5; M30; ◆ 宏程序 09100; #3=#4003;存储 03 组 G 代码 G81 Z#26 R#18 F#9 K0;(注)钻孔循环 注:也可以使用 L0 IF[#3 EQ 90] GOTO 1;在 G90 方式转移到 N1 #24=#5001+#24;计算圆心的 X 坐标 #25=#5001+#25;计算圆心的 Y 坐标 N1 WHILE[#11 GT O] DO 1;直到剩余孔数为 0 #5=#24+#4*COS[#1];计算 X 轴上的孔位 #6=#25+#4*SIN[+1]; 计算 X 轴上的孔位 G90 X#5 Y#6 ;移动到目标位置之后执行钻孔 #1=#1+#2;更新角度 #11=#11-1;孔数-1 END 1; G#3 G80 ;返回原始状态的 G 代码 M99

5.5.2

模态调用(G66)

一旦发出 G66 则指定模态调用,即指定沿移动轴移动的程序段后调用宏程序.G97 取 消模态调用. 说明: ● 调用 1.在 G66 之后,用地址 P 指定模态调用的程序号. 2.当要求重复时,地址 L 后指定从 1 到 9999 的重复次数. 3.与非模态调用(G65)相同,自变量指定的数据传递到宏程序体中. ● 取消 指定 G97 代码时,其后面的程序段不再执行模态宏程序调用. ● 调用嵌套 调用可以嵌套 4 级.包括非模态调用(G65)和模态调用(G66).但不包括

子程序调用(M98) 限制: 1.在 G66 程序段中,不能调用多个宏程序. 2.G66 必须在自变量之前指定. 3.在只有诸如辅助功能但无移动指令的程序段中不能调用宏程序. 4.局部变量(自变量)只能在 G66 程序段中指定.注意,每次执行模态调用时, 不再设定局部变量. ● 典型程序 用宏程序编制 G81 固定循环的操作.加工程序使用模态调用,为了简化程 序,使用绝对值指定全部的钻孔数据. ● 调用格式 G65 P9110 Xx Yy Zz Rr Ff Ll; X:孔的 X 坐标(由绝对值指定)(#24) Y:孔的 Y 坐标(由绝对值指定)(#25) Z: Z 点坐标(由绝对值指定) (#26) R: R 点坐标(由绝对值指定) (#18) F:切削进给速度(#9) L:重复次数 ● 调用宏程序的程序 00001; G28 G91 X0 Y0 ZO; G92 X0 Y0 Z50.0; G00 G90 X100.0 Y50.0; G66 P9110 Z-20.0 R.0 F500; G90 X20.0 Y20.0; X50.0; X0.0 Y80.0; G67; M30; ● 宏程序(被调用的程序) 09110; #1=#4001;贮存 G00/G01 #2=#4003; 贮存 G90/G91 #3=#4109; 贮存切削进给速度 #5=#5003; 贮存钻孔开始的 Z 坐标 G00 G90 Z#18; 定位在 R 点 G01 Z#26 F#9 ; 切削进给到 Z 点 IF[#4010 EQ 98]GOTO1;返回到 1 点 G00 Z#18 ;定位在 R 点 GOTO 2; N1 G00 Z#5 ;定位在 1 点 N2 G#1 G#3 F#4; 恢复模态信息. M99;

5.5.3

用 G 代码调用宏程序

在参数中设置调用宏程序的 G 代码,与非模态调用(G65)同样的方法用该代码调用 宏程序.

说明:在参数(NO.6050 到 NO.6059)中设置调用用户宏程序(09010 到 09019)的 G 代码 号(从 1 到 9999),调用户宏程序的方法与 G65 相同.例如,设置参数,使宏程序 09010 由 G81 调用,不用修改加工程序,就可以调用由用户宏程序编制的加工循环. ● 参数号和程序号之间的对应关系 程序号 09010 09011 09012 09013 09014 09015 09016 09017 09018 09019 参数号 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059

● 重复 与非模态调用一样,地址 L 可以指定从 1 到 9999 的重复次数. ● 自变量指定 与非模态调用一样,两种自变量指定是有效的;自变量指定 I 和自变 量指定 II.根据使用的地址自动地决定自变量的指定类型. ● 使用 G 代码的宏调用的嵌套 在 G 代码调用的程序中,不能用一个 G 代码调用多个 宏程序.这种程序中的 G 代码被处理为普通 G 代码.在用 M 或 T 代码作为子程序调用 的程序中,不能用一个 G 代码调用多个宏程序.这种程序中的 G 代码也处理为普通 G 代码.

5.5.4

用 M 代码调用宏程序

在参数中设置调用宏程序的 M 代码,与非模态调用(G65)的方法一样用该代码调用 宏程序. 说明: 在参数(NO.6080 到 NO.6089)中设置调用用户宏程序(09021 到 09029)的 M 代码 (从 1 到 99999999),用户宏程序能与 G65 同样的方法调用. ● 参数号和程序号之间的对应关系 程序号 参数号 09020 6080 0902 6081 09022 6082 0902 6083 09024 6084 09025 6085 09026 6086 09027 6087 09028 6088 09029 6089

● 重复 与非模态调用一样,地址 L 可以指定从 1 到 9999 的重复次数. ● 自变量指定 与非模态调用一样,两种自变量指定是有效的;自变量指定 I 和自 变量指定 II.根据使用的地址自动地决定自变量的指定类型. ● 限制: 1.调用宏程序的 M 代码必须在程序段的开头指定. 2.G 代码调用的宏程序或用 M 代码或 T 代码作为子程序调用的程序中,不能 用一个 M 代码调用多个宏程序.这种宏程序或程序中的 M 代码被处理为普 通 M 代码.

5.5.5

用 M 代码调用子程序

在参数中设置调用子程序(宏程序)的 M 代码号,可与子程序调用(M98)相同的方法用 该代码调用宏程序. 说明:在参数(NO.6071 到 NO.6079)中设置调用子程序的 M 代码(从 1 到 99999999),相应 的用户宏程序(09001 到 09009)可与 M98 同样的方法用该代码调用. ● 参数号&程序号之间的对应关系 程序号 09001 09002 09003 09004 09005 09006 09007 09008 09009 参数号 6071 6072 6073 6074 6075 6076 6077 6078 6079

● ● ● ●

重复 与非模态调用一样,地址 L 可以指定从 1 到 9999 的重复次数. 自变量指定 不允许自变量指定. M 代码 在宏程序中调用的 M 代码被处理为普通的 M 代码. 限制: 用 G 代码调用的宏程序,或用 M 或 T 代码调用的程序中,使用一个 M 代码不 能调用几个子程序.这种宏程序或程序中的 M 代码被处理为普通的 M 代码.

5.5.6

用 T 代码调用子程序

在参数中设置调用的子程序(宏程序)的 T 代码,每当在加工程序中指定该 T 代码时,即 调用宏程序. 说明: ● 调用: 设置参数 NO.6001 的 5 位 TCS=1,当在加工程序中指定 T 代码时,可以调用宏 程序 09000.在加工程序中指定的 T 代码赋值到公共变量#149. ● 限制:用 G 代码调用的宏程序中或用 M 或 T 代码调用的程序中,一个 M 代码不能调用

多个子程序.这种宏程序或程序中的 T 代码被处理为普通 T 代码.

5.5.7

典型程序
用 M 代码调用子程序的功能,调用测量每把刀具的累积使用时间的宏程序. 条件: 1.测量 T01 到 T05 各把刀具的累积使用时间.刀号大于 T05 的刀具不进行 测量. 2.下面的变量用于贮存刀号和测量的时间. #501 #502 #503 #504 #505 刀号 1 的累积使用时间 刀号 2 累积使用时间 刀号 3 累积使用时间 刀号 4 累积使用时间 刀号 5 累积使用时间

3.当指定 M03 时,开始计算使用时间,当指定 M05 时,停止计算.在循环起 动灯亮期间,用系统变量#3002 测量该时间.进给暂停&单段停止期间,时间不 计算,但要计算换刀和交换工作台的时间. 进行检查 ◆ 参数设置 参数 NO.6071 中设置 3,参数 NO.6072 中设置 05. ◆ 变量值的设置 变量#501 到#505 中设置 0. ◆ 调用宏程序的程序 00001; T01 M06; M03; M05;改变#501 T02 M06; M03; M05; 改变#503 T05 M06; M03; M05;改变#504 T05 M06; M03; M05;改变#505 M30; ◆ 宏程序(被调用的程序) 09001 (M03);启动计算的宏程序 N01; IF[#4120 EQ 0]GOTO9;没有指定刀具 IF[#4120 GT 5]GOTO9;超出刀号范围

#3002=0;计算器清 0 N9 M03;以正向旋转主轴 M99; 09002(M05);结束计算的宏程序 M01; IF[#4120 EQ 0]GOTO9;没有指定刀具 IF[#4120 GT 5]GOTO9;超出刀号范围 #[500+#120]=#3002+#[500+4120];计算累积时间 N9 M05;停止主轴 M99;

5.6

宏程序语句的处理
为了平滑加工,CNC 预读下一个要执行的 NC 语句.这种运行称为缓冲.在刀具 半径补偿方式(G41,G42)中,NC 为了找到交点提前预读 2 或 3 个程序段的 NC 后语 句,算术表达式和条件转移的宏程序语句在它们被读进缓冲寄存器后立即被处理. 包含 M00,M01,M02 或 M30 的程序段,包含由参数 NO.3411 到 NO.3420 设置的禁止缓 冲的 M 代码的程序段,以及包含 G31 的程序段不预读.

说明: ● 当下个程序段不缓冲时(不缓冲的 M 代码,G31 等)

● 在除了刀具半径补偿方式(G41,G42)以外的方式中,缓冲下个程序段(正常预读一个 程序段)

当执行 N1 时,下个 NC 语句(N4)被读入缓冲器.N1 和 N4 之间的宏语句(N2,N3)在 N1 执行 期间被处理. ● 在刀具半径补偿方式(G41,G42)中缓冲下个程序段

当 N1 正在执行时,在下 2 个程序段(直到 N5)中的 NC 语句被读进缓冲寄存器.在 N1 和 N5 之间的宏语句(N2,N4)在 N1 的执行期间被处理. ● 在刀具半径补偿方式 C(G41,G42)中,当下个程序段包含没有移动的程序段时

当 NC1 程序段正在执行时,下两个程序段(直到 N5)中的 NC 语句被读进缓冲寄存器.由于 N5 是不移动的程序段,不能计算交点.此时,下面三个程序段(直到 N7)中的 NC 语句被读 入.在 N1 和 N7 之间的宏语句(N2,N4 和 N6)在执行 N1 时被处理.

5.7

用户宏程序的存储

用户宏程序与子程序相似,可用与子程序同样的方法进行存储和编程,存储容量由子 程序和宏程序的总容量确定.

5.8

限制

● MDI 运行 在 MDI 方式中可以指定宏程序调用指令.但是,在自动运行期间,宏程序 调用不能切换到 MDI 方式. ● 顺序号检索 用户宏程序正在执行,在单程序段方式,程序段也能停止. 包含宏程序调用指令(G65,G66 或 G67)的程序段中,即使在单程序段 方式时也不能停止.当设定 SBM()参数 NO.6000 的 5 位)为 1 时,包含 算术运算指令和控制指令的程序段可以停止. 单程序段运行用于调试用户宏程序.注意,在刀具半径补偿 C 方式中, 当宏程序语句中出现单程序段停止时,该语句被认为不包含移动的程 序段,并且,在某些情况下,不能执行正确的补偿. ● 任选程序段跳过 在<表达式>中间出现的符号被认为时除法运算符;不作为任选程 序段跳过代码. ● 在 EDIT 方式中的运行 设定参数 NE8 和 NEP 为 1,可对程序号 8000 到 8999 和 9000 到 9999 的用户宏程序和子程序进行保护.当存储器全清时,存 储器的全部内容包括宏程序都被清除. ● 复位 当复位时,局部变量和#100 到#149 的公共变量被清除为空值.设定 CLV 和 CCV,它们可以不被清除.系统变量#1000 到#1333 不被清除. 复位操作清除任何用户宏程序和子程序的调用状态及 DO 状态并返回到主 程序. ● 程序再起动的显示 和 M98 一样,子程序调用使用的 M,T 代码不显示. ● 进给暂停 在宏程序语句的执行期间,进给暂停有效时,当宏语句执行之后机床停止. 当复位或出现报警时,机床也停止. ● <表达式>中可以使用的常数值 +0.0000001 到+99999999 -99999999 到-0.0000001 有效数值是 8 位(十进制),如果超过这个范围,出现 P/S 报警 NO.003.


相关文章:
Fanuc系统宏程序教程
Fanuc系统宏程序教程_机械/仪表_工程科技_专业资料。15. 15.用户宏程序用户宏程序允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程 序更方便,更容...
数控FANUC系统宏程序及教程
数控FANUC系统宏程序及教程_机械/仪表_工程科技_专业资料。宏程序设计 宏程序与子程序类似,对编制相同加工的操作可以使程序简化.同时宏程序中可以使用变 量,算术和...
FANUC系统宏程序编程0
FANUC系统宏程序编程0_工学_高等教育_教育专区。数控FANUC 很实用FANUC 系统宏程序编程 0 一 变量 普通加工程序直接用数值指定 G 代码和移动距离;例如,GO1 和 ...
图文解说 Fanuc B类宏程序高级编程手册
图文解说 Fanuc B类宏程序高级编程手册_机械/仪表_工程科技_专业资料。详细的图文解说Fanuc B类 宏程序,很好的编程宝典。宏程序 数控程序中含有变量的程序称为...
FANUC宏程序编程
FANUC宏程序编程_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载|举报文档 FANUC宏程序编程_IT认证_资格考试/认证_教育专区。B类宏程序...
FANUC宏程序使用举例
FANUC宏程序使用举例_机械/仪表_工程科技_专业资料。FANUC 宏程序使用举例 单轴外圆数控磨床,径向采用数控轴(X 轴)控制,轴向仍用液压油缸驱动,因此无法 使用两轴...
FANUC经典曲面宏程序讲解实例
FANUC经典曲面宏程序讲解实例_机械/仪表_工程科技_专业资料。包含车:椭圆,抛物线等 铣:正弦线,凸棱五角星,饭盒模具等 这是自己编写的一份报告,并加工出实例。本科...
FANUC系统宏程序编程
本系统宏程序体系采用 FANUC 系统宏程序 B 方式实现 一 变量 普通加工程序直接用数值指定 G 代码和移动距离;例如,GO1 和 X100.0。使用用户宏程 序时,数值可以...
Fanuc系统宏程序变量
Fanuc系统宏程序变量_机械/仪表_工程科技_专业资料。系统变量用于读和写 NC 内部数据,例如,刀具偏置值和当前位 置数据。但是,某些系统变量只能读。系统变量是自动...
更多相关标签:
fanuc宏程序编程实例 | fanuc宏程序eq | 宏程序 | 宏程序编程入门 | fanuc 宏程序系统变量 | fanuc宏程序讲解 | fanuc宏程序编程 | fanuc换刀宏程序 |