宏程序应用指令
数控车宏程序编程方法及编程指令应用
项目八 数控车宏程序编程方法及指令应用
一、宏程序的基本概念与原理 6、转移和循环
3)循环(While语句) 在 WHILE 后指定一个条件表达式,当指定条件满足时,执行从
DO 到END之间的程序。否则,转到 END后的程序段。 例如:
的无限循环。 • 未定义的变量 在使用 EQ 或 NE 的条件表达式中 <空>和零有不同的效果。
在其它形式的条件表达式中 <空>被当作零。 • 处理时间 当在 GOTO 语句中有标号转移的语句时。进行顺序号检索,
反向检索的时间要比正向检索长。用 WHILE 语句实现循环可减少 处理时间。
项目八 数控车宏程序编程方法及指令应用
G01 X80 Z-50 Z-90
X100 Z-110 M05
M30
项目八 数控车宏程序编程方法及指令应用
二、典型编程案例 3、椭圆加工编程 案例2
项目八 数控车宏程序编程方法及指令应用
二、典型编程案例 3、椭圆加工编程 案例2
O5521 T0101 M03 S1200 F0.1 G0 X80 Z50 G1 Z-15 X50 #1=360 WHILE [#1 GT 180] DO1 #2=30*COS[#1]-45 #3=24*SIN[#1]+50 G01 X[#3] Z[#2] F200 #1=#1-1 END1 G01 X80 Z50 M30
(6)
项目八 数控车宏程序编程方法及指令应用
二、典型编程案例 3、椭圆加工编程 案例3
O5218 T0101 M03 S1200 F0.1 G0 X80 Z50 G1 Z0 X0 #1=50 WHILE [#1 GE -40] DO1 #2=40*SQRT[50*50-#1*#1]/50 G01 X[#2] Z[#1-50] F0.2 #1=#1-0.2 END1 G01 X24 Z-90 X100 M30
cnc宏程序代码大全(加工中心指令代码大全)
cnc宏程序代码大全(加工中心指令代码大全)UG编程粥2018-9-111.字母在数控程序中的意义o:程序号,设置程序号n:节目段号,设置节目序号。
g:准备功能X/Y/Z:尺寸字符,轴移动指令视听:附加轴移动指令r:圆弧半径I/J/K:圆弧中心坐标(矢量)外宾:喂,设定喂量。
s:主轴速度,设定主轴速度。
t:刀具功能,设置刀具号。
m:辅助功能,开/关控制功能H/D:刀具偏置号,设置刀具偏置号。
P/X:延迟,设置延迟时间。
p:程序号指令,设置子程序号(如子程序调用:M98P1000)L:重复,设置子程序或固定循环的重复次数(如M98 P1000 L2,L1省略L)P/W/R/Q:参数,固定周期使用的参数(如敲击G98/(G99)G84 X_ Y_ R_ Z_ P_ F_)2.通用g代码解释G00:定位或快速移动G01:线性插值G02:圆弧插补/螺旋插补CWG03:圆弧插补/螺旋插补G04:停留时间或延迟时间例如:G04 X1000(或G04 X1.0)G04 P1000表示停留1秒。
G09:准确停止检查或准确停止检查(检查是否在目标范围内)G10:可编程数据输入G17:选择XPYP平面XP: x轴或其平行轴。
G18:选择ZPXP平面的YP: Y轴或其平行轴。
G19:选择YPZP平面ZP: Z轴或其平行轴。
G20:英寸输入G21:毫米输入G28:返回参考点检测格式:G91/(G90) G28 X__ Y__ Z__通过中间点X _ _ _ _ _ Y _ _ _ _ _ Z _ _(绝对值/增量值指令)返回参考点G29:从参考点返回G91/(G90) G29 X__ Y__ Z__通过参考点从起点到目标点X__ Y__ Z__的指令(绝对值/增量值指令)。
G30返回第二、第三和第四参考点G91/(G90)G30 P2 X _ _ Y _ _ Z _ _;回到第二个参考点(P2可以省略。
)G91/(G90)G30 P3 X _ _ Y _ _ Z _ _;回到第三个参考点G91/(G90)G30 P4 X _ _ Y _ _ Z _ _;回到第四个参考点。
CNC代码及宏程式指令
加工中心宏程式一变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300说明:变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量.#1-#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#199#500-#999 公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000 系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047如果计算结果超出有效范围,则发出P/S报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
数控车床宏程序
数控车床宏程序FANUC数控车第一章编程代码----------------------------------------------------------1 1.准备功能G------------------------------------------------------------1 2.辅助功能M-----------------------------------------------------------6 第二章用户宏程序-------------------------------------------------------71. 运算符号---------------------------------------------------------------72.转移和循环-----------------------------------------------------------7 3.运算指令--------------------------------------------------------------8第三章宏程序编程------------------------------------------------------11 1.车V型圆锥- --------------------------------------------------------11 2.车U圆弧-------------------------------------------------------------12 3.方程曲线车削加工-------------------------------------------------13 5.车梯形螺纹36×6--------------------------------------------------14 6.蜗杆-------------------------------------------------------------------15 7.加工多件--------------------------------------------------------------17 第四章自动编程---------------------------------------------------------------21 1.UG建模--------------------------------------------------------------------21 2.创建几何体----------------------------------------------------------------24 附录--------------------------------------------------------------------------29第一章编程代码1.准备功能G00快速定位G01直线插补G02顺弧插补G03逆弧插补G04暂停G9,G60,G64准确/连续停G20英制输入G21米制输入G40取消刀具补偿G41建立左刀具补偿G42建立右刀具补偿G50坐标设定/主轴最高速设定G70精车循环格式:G70 P(ns) Q(nf)ns: 精加工形状程序的第一个段号。
「FANUC0M宏程序指令G65」
宏指令G65可以实现充裕的宏作用,包括算术运算、逻辑运算等处理作用。
ﻫ平常式样: G65 Hm P#iQ#j R#k式中:m--宏步骤作用,数值范畴01~99;#i--运算结果存放处的变量名;ﻫ#j--被支配的第一个变量,也可以是一个常数;ﻫ#k--被支配的第二个变量,也可以是一个常数。
ﻫ比方,当步骤作用为加法运算时:步骤P#100 Q#101 R#102...... 含义为#100=#101+#102ﻫ步骤P#100 Q-#101 R#102...... 含义为#100=-#101+#102ﻫ步骤P#100 Q#101 R15...... 含义为#100=#101+151、宏作用指令ﻫ(1)算术运算指令(表4.4)表4.4算术运算指令1)无条件转移编程模样G65H80 Pn (n为步骤段号)例G65 H80 P120;(转移到N120)2)条件转移1 #j EQ #k(=)编程模样G65H81Pn Q#j R#k (n为步骤段号)例G65 H81P1000 Q#101 R#102当#101=#102,转移到N1000步骤段;若#101≠#102,履行下一步骤段。
3)条件转移2 #j NE #k(≠)ﻫ编程模样G65 H82 Pn Q#j R#k (n为步骤段号)ﻫ例G65 H82 P1000 Q#101 R#102ﻫ当#101≠ #102,转移到N1000步骤段;若#101=#102,履行下一步骤段。
ﻫ4)条件转移3 #jGT #k(> )ﻫ编程模样G65 H83 Pn Q#j R#k (n为步骤段号)ﻫ例G65 H83P1000 Q#101 R#102当#101 > #102,转移到N1000步骤段;若#101 ≤#102,履行下一步骤段。
ﻫ5)条件转移4 #jLT #k(<)ﻫ编程模样 G65 H84 PnQ#j R#k (n为步骤段号) 例G65 H84 P1000 Q#101 R#102ﻫ当#101 < #102,转移到N1000;若#101≥ #102,履行下一步骤段。
数控机床编程中的宏指令使用技巧
数控机床编程中的宏指令使用技巧在数控机床编程中,宏指令是一种非常有用的功能,它可以帮助程序员简化代码,提高编程效率。
本文将介绍数控机床编程中的宏指令使用技巧,帮助读者更好地掌握和应用宏指令。
首先,我们先了解一下宏指令的基本概念。
宏指令是由一系列的机床指令组成的一个整体,可以在程序中调用。
通过使用宏指令,可以实现代码的复用,简化编程过程。
宏指令的定义通常可以放在程序的开头或者单独的文件中,方便统一管理和调用。
在使用宏指令时,需要注意以下几点技巧。
首先是宏指令的命名,推荐使用具有描述性的名称,能够清楚地表达宏指令的功能。
例如,如果定义了一个宏指令用于控制加工速度,可以将其命名为“SPINDLE_SPEED”。
这样,其他人阅读代码时就可以直观地理解宏指令的作用。
其次,宏指令中可以包含参数,通过参数可以实现宏指令的定制化。
在定义宏指令时,可以使用占位符表示参数的位置。
在调用宏指令时,需要提供具体的参数值。
举个例子,如果定义了一个宏指令用于控制加工尺寸,可以将其定义为“MACHINING_SIZE(X, Y, Z)”形式。
在调用宏指令时,需要提供具体的X、Y、Z 数值。
另外,注意宏指令的使用时机。
宏指令可以在程序的任意位置调用,但需要保证宏指令在被调用之前已经定义。
因此,在使用宏指令之前,最好先确认宏指令是否已经定义,并且定义的位置是否在调用之前。
此外,宏指令可以嵌套使用,通过嵌套,可以实现更加复杂的功能。
在嵌套的过程中,需要注意宏指令之间的参数传递。
如果宏指令A中调用了宏指令B,需要确保宏指令A和宏指令B之间的参数传递是正确的,以避免出现错误的结果。
另外,宏指令的调试也是非常重要的。
当宏指令产生错误或者不符合预期时,需要对宏指令进行调试。
在调试过程中,可以使用调试工具,如模拟器,来跟踪宏指令的执行过程,找出问题所在。
此外,还可以使用打印输出等方式,输出宏指令中的过程变量值,以便更好地了解程序的执行流程。
FANUC宏程序详解
• 变量0 总是空变量,它不能写只能读 未定义变量的引用
当引用一个未定义的变量时,地址本身也被忽略
用户宏程序
当1=<空>时
G90 X100 Y1 ↓
G90 X100
当1=0时
G90 X100 Y1 ↓
G90 X100 Y0
BEIJING-FANUC
未定义变量的计算
除了用<空>赋值以外,其余情况下<空>与0 相同
函数名 SQRT
LN EXP
2=2; 1=SQRT2;
格式 i = SQRT k
i = LN k i =EXP k
1 1.414
用户宏程序
BEIJING-FANUC
逻辑运算
种类 或
异或 与
名称 OR XOR AND
格式 i = j OR k i = j XOR k i = j AND k
• 对32位的每一位按二进制进行逻辑运算
用<空>赋值
用户宏程序
当1=<空>时
2=1 ↓ 2=<空>
2=1﹡5 ↓ 2=0
2=1+1 ↓ 2=0
当1=0时
2=1 ↓ 2=0
2=1﹡5 ↓ 2=0
2=1+ 1 ↓ 2=0
BEIJING-FANUC
条件表达式
指令 2 EQ 1
2 NE 1
2 GT 1
2 LT 1
2 GE 1
用户宏程序
2 LE 1
格式
i=SINθ i=COSθ i=TANθ i=ASINc/a i=ACOSb/a i=ATANc/b
结果
c/a b/a c/b θ θ θ
FANUC系统数控车床B类宏程序编程应用
FANUC系统数控车床B类宏程序编程应用虽然子程序对编制相同加工操作(de)程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作(de)程序更方便,更容易.可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序. 使用时, 加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样.一、变量普通加工程序直接用数值指定 G代码和移动距离;例如, G100和X100.0. 使用用户宏程序时,数值可以直接指定或用变量指定.当用变量时,变量值可用程序或用 MDI 面板上(de)操作改变.如:2=30;1=2+100;G01 X1 F0.31、变量(de)表示变量用变量符号()和后面(de)变量号指定.例如:1表达式可以用于指定变量号.此时,表达式必须封闭在括号中.例如:[1+2-12]2、变量(de)类型变量根据变量号可以分成四种类型.3、变量值(de)范围局部变量和公共变量可以有 0 值或下面范围中(de)值:-1047到-10-29 0 10-29到 1047如果计算结果超出有效范围,则发出 P/S报警No.111.4、小数点(de)省略当在程序中定义变量值时,小数点可以省略.例:当定义1=123;变量1(de)实际值是 123.000.5、变量(de)引用为在程序中使用变量值, 指定后跟变量号(de)地址. 当用表达式指定变量时,要把表达式放在括号中.例如:G01X[1+2]F3;被引用变量(de)值根据地址(de)最小设定单位自动地舍入.例如:当 G00X1;以 1/1000mm (de)单位执行时,CNC把 12.3456 赋值给变量1,实际指令值为 G00X12.346; .改变引用(de)变量值(de)符号,要把负号(一)放在(de)前面.例如: G00X—1;当引用未定义(de)变量时,变量及地址字都被忽略.例如:当变量1(de)值是 0,并且变量2(de)值是空时,G00X1 Z2(de)执行结果为 G00X0.6、未定义(de)变量(当变量值未定义时,这样(de)变量成为“空”变量.变量0 总是空变量.它不能写,只能读.)(a)引用当引用一个未定义(de)变量时,地址本身也被忽略.(b)运算除了用<空>赋值以外,其余情况下<空>与0相同.当1=<空>时当1=0时2=1 → 2=<空>2=1 → 2=02=5 → 2=02=5 → 2=02=1+1 → 2=02=1+1 → 2=0(c)条件表达式 EQ和NE中(de)<空>不同于0.当1=<空>时当1=0时1EQ0 成立1EQ0 不成立1 NE 0 成立 1 NE 0 不成立1 GE 0 成立 1 GE 0 不成立1 GT 0 不成立 1 GT 0 不成立限制程序号,顺序号和任选程序段跳转号不能使用变量.例:下面情况不能使用变量:1、O1;2、/2G00X100.0;3、N3Y200.0;二、算术和逻辑运算下表中列出(de)运算可以在变量中执行. 运算符右边(de)表达式可包含常量和/或由函数或运算符组成(de)变量.表达式中(de)变量j 和k 可以用常数赋值.左边(de)变量也可以用表达式赋值.三、转移和循环在程序中,使用 GOTO 语句和 IF 语句可以改变控制(de)流向.有三种转移和循环操作可供使用:1、无条件转移 (GOTO 语句)格式:GOTOn;n:顺序号(1~99999)转移到标有顺序号 n (de)程序段.当指定 1 到99999 以外(de)顺序号时,出现P/S 报警 No.128.可用表达式指定顺序号.例:GOTO1;GOTO10;2、条件转移 (IF 语句)IF[<条件表达式>] GOTO nIF之后指定条件表达式.如果指定(de)条件表达式满足时,转移到标有顺序号 n (de)程序段.如果指定(de)条件表达式不满足,执行下个程序段.说明:a、条件表达式条件表达式必须包括算符.算符插在两个变量中间或变量和常数中间,并且用括号 ([])封闭.表达式可以替代变量.b、运算符运算符由 2个字母组成,用于两个值(de)比较,以决定它们是相等还是一个值小于或大于另一个值.注意,不能使用不等符号.C、示例程序下面(de)程序计算数值 1~10 (de)总和3、循环 (WHILE 语句)在WHILE后指定一个条件表达式, 当指定条件满足时, 执行从DO到END之间(de)程序.否则,转到 END后(de)程序段.说明:当指定(de)条件满足时,执行 WHILE 从 DO 到 END 之间(de)程序.否则,转而执行 END 之后(de)程序段.这种指令格式适用于 IF 语句.DO 后(de)号和 END 后(de)号是指定程序执行范围(de)标号,标号值为1,2,3.若用 1,2,3 以外(de)值会产生 P/S 报警 No.126.循环嵌套:在 DO—END循环中(de)标号(1 到 3)可根据需要多次使用.但是,当程序有交叉重复循环(DO范围(de)重叠)时,出现 P/S报警 No.124.四、宏程序编程举例曲线公式为X=(36/Z)+3实例分析:本例(de)精加工采用B类宏程序编程,以Z值为自变量,每次变化0.1mm,X值为应变量,通过变量运算计算出相应(de)X值.(宏程序编程时,首先要找出各点X坐标和Z坐标之间(de)对应关系)编程时使用(de)以下变量进行计算:加工顺序:粗车→半精车→精车(1)精车程序:设置变量G00 X7 Z74;1=72;WHILE[1GE2] DO2;2=[[36/1]+3];G42 G01 X[2] Z[1] F0.1;1=1-0.1;END2;(2)粗车程序:G90来粗车设置变量2=38;WHILE[1GE7] DO3;1=[36/[1-3]];G00 X[2+5] Z74;G90 X[2+0.5] Z[1] F0.2;2=2-4;END3;(3)半精车程序:设置变量G00 X7 Z74;1=72;WHILE[1GE2] DO4;2=[[36/1]+3.5];G01 X[2] Z[1] F0.1;1=1-0.1;END4;P170。
宏程序编程代码
宏程序编程代码常见宏程序符号与代码归类2.1 A类宏程序的运算和转移指令表指令 H 码功能定义 G65 H01 定义、替换 #i=#jG65 H02 加 #i=#j+#k G65 H03 减 #i=#j-#k G65 H04 乘#i=#j×#k G65 H05 除 #i=#j?#k G65 H11 逻辑或 #i=#jOR#k G65 H12 逻辑与 #i=#jAND#k G65 H13异或 #i=#jXOR#k G65 H21 平方根 # i,?# j G65 H22 绝对值 # i,|# j| G65 H23 求余 # i,# j-trunc,# j/# k,? # k G65 H24 十进制码变二进制 # i,BIN,# j,G65 H25 二进制码变十进制 # i,BCD,# j, G65 H26 复合乘/除# i,,# i × # j,?# k G65 H27 复合平方根1 # i,?# j2,# k2 G65 H28 复合平方根2 # i,?#j2-# k2 G65 H31 正弦 # i,# j ? SIN ,# k, G65 H32 余弦 # i,# j ? COS ,# k, G65 H33 正切 # i,# j ? TAN,# k, G65 H34 反正切 # i,ATAN,# j/# k, G65 H80 无条件转移 GO TO n G65 H81 条件转移1(EQ) IF # j,# k,GOTOn G65 H82 条件转移2(NE) IF # j?# k,GOTOn G65 H83 条件转移3(GT) IF # j,# k,GOTOn G65 H84 条件转移4(LT) IF # j,# k,GOTOn G65 H85 条件转移5(GE) IF # j?# k,GOTOn G65 H86 条件转移6(LE) IF # j?# k,GOTOn G65 H99 产生P/S报警 PS报警号500,n出现2.2 B类宏程序的运算和转移指令表功能格式备注与示例定义、转换 #i=#j #100=#1,#100=30.0 加#i=#j+#k #100=#1+#2#100=100.0-#2 减 #i=#j-#k#100=#1*#2 乘 #i=#j*#k#100=#1/30 除 #i=#j/#k正弦 #i=SIN[#j] #100=SIN[#1]#100=COS[#36.3+#2] 反正弦 #i=ASIN[#j]#100=ATAN[#1]/[#2] 余弦 #i=COS[#j]反余弦 #i=ACOS[#j]正切 #i=TAN[#j]反正切 #i=ATAN[#j]/[#k]平方根 #i=SQRT[#j] #100=SQRT[#1*#1-100]#100=EXP[#1] 绝对值 #i=ABS[#j]舍入 #i=ROUND[#j]上取整 #i=FIX[#j]下取整 #i=FUP[#j]自然对数 #i=LN[#j]指数函数 #i=EXP[#j]或 #i=#j OR #k 逻辑运算一位一位地按二进制执行异或 #i=#j XOR #k与 #i=#j AND #kBCD转BIN BIN #i=BIN[#j] 用于与PMC的信号交换 BIN转BCD BCD #i=BCD[#j]数控车床加工中常用的B类宏程序分析3.1 双曲线程序曲线方程编程原点曲线方程原点#1#101 为方程中Z坐标(起点Z=72)#102 为方程中X坐标(起点半径X=3.5) #103 为工件坐标系中Z坐标,#103=#101-72.0 #104 为工件坐标系中 X坐标,#104=R2*2; 精加工程序如下: O001……G00 X9.0 Z2.0; 宏程序起点 #101=72.0;#102=3.5;N100 #103=#101-72.0; 跳转目标程序段 #104=#102*2;G01 X#104 Z#103;#101=#101-0.2; Z坐标每次增量为-0.2 mm#101=36/#101+3; 变量运算出X坐标 IF[#101GE2.0] GOTO100; 有条件跳转G28 U0 W0 M303.2正弦曲线程序正弦曲线#101 为正弦曲线角度变量#102 为正弦曲线各点X坐标#103 为正弦曲线各点Z坐标O0001……#101=90.0; 正弦曲线角度赋初值 #103=-20; 曲线Z坐标赋初值N100#102=34+6*SIN[#101] 变量X坐标值 G01X#102 Z#103 F0.15; 直线段拟合曲线 #101=#101-0.5 角度增量为-0.5度 #103=#103-0.05 Z坐标增量为-0.05mmIF[#101GE-630.0]GOTO100 条件判断M303.3 椭圆曲线程序椭圆方程椭圆中点#101 为椭圆长轴值#102 为椭圆短轴值#103 为椭圆Z坐标起点O001……#101=90;#102=48;#103=90;WHILE[#103GE0.0]DO1; 条件判断 #104=#102*SQRT[#101*#101-#103*#103]/#101; X函数值变量 G01 X[2*#104] Z#103;#103=#103-0.2; Z坐标增量-0.2mmEND1;……M303.4抛物线程序抛物线方程O001……#101=0 抛物线Z轴起始值-20*#101 ,;X函数值变量 N100#102=2*SQRT,G01 X[2*#2] Z#1;Z坐标增量-0.5mm #101=#101-0.5;IF,#1GE-10,GOTO100; 条件判断……M30数控加工宏程序实例在第三章中分析了在数控车床加工中常遇到的宏程序编程方式问题,在本章将进行实例对B类宏程序的两种不同的语句(IF GOTO和WHILE DO)进行说明.程序以FAUNC-Oi系统的格式编写4.1 IF语句实例1、程序计算说明: 2由抛物线方程Z=-X/10得X=10 ,故直线段起点X坐标值X=20。
FANUC特殊功能指令应用附宏程序教程说明书(1)
在编制零件的数控加工程序时, 经常会遇到一些特殊结构的零件,需 要加工的部位,其结构相同或相似并 且按照一定的规律分布。对于编程中 常见的圆周等分、矩阵等分的孔的加 工,我们可以采用厂家提供的固定循 环程序来解决,但对于一些特殊零件, 其分布的加工部位结构可能是二维和 三维轮廓。针对这种情况,我们也可以 采取编写子程序的方法,将加工内容 相同的部分编成子程序,然后由主程 序多次调用,以此来达到简化程序的 目的。
程序构成 程序号 顺序号 G 代码号 F(进给速度) M,S,T,B 代码
变量的调用
上一程序段位制 当前位置 高速跳过信号位置 伺服位置偏差
位置信息
偏置信息 坐标偏置量 刀具偏置量
#5001 #5002 …….. #5101
#5201 #5202 …….. #5324
局部变量 公共变量
保持型公共变量
和补偿值等。
接口信号是可编程机床控制器PMC 和用户宏程序之间交换的信号
变量
功能
#1000~#1015 把16位信号从PMC送到用户宏程序。变量#1000到#1015用于按位读取信
#1032
号。变量#1032用于一次读取一个16位信号
#1100~#1115 把16位信号从用户宏程序送到PMC。变量#1100到#1115用于按位写信号。
..
……….. ………
..
#4022 ………
22
#4102 B CODE
#4107 #4109 #4111 #4113 #4114 #4115 #4119 #4120 #4130
D CODE F CODE H CODE M CODE Sequence number Program number S code T code P code
CNC代码及宏程式指令
加工中心宏程式一变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300说明:变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量.#1-#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#199#500-#999 公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000 系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047如果计算结果超出有效范围,则发出P/S报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
宏程序代码
精心整理转铣床宏指令G65及使用注意事项(FANUC-0MC)2008-05-2921:10宏指令G65可以实现丰富的宏功能,包括算术运算、逻辑运算等处理功能。
一般形式:G65HmP#iQ#jR#k式中:m--宏程序功能,数值范围01~99;#i--#j--#k--程序#101+#102-#101+#102含义为#100=#101+154.4)表4.4算术运算指令G码H码功能定义G65H01定义,替换#i=#jG65H02加#i=#j+#kG65H03减#i=#j-#kG65H04乘#i=#j×#kG65H05除#i=#j/#kG65H21平方根#i=√#jG65H22绝对值#i=|#j|G65H23求余#i=#j-trunc﹙#j/#k﹚·#kTrunc;丢弃小于1的分数部分G65H24BCD码→二进制码#i=BIN﹙#j﹚G65H25二进制码→BCD码#i=BCD﹙#j﹚÷#k#k21编程格式=#j+#k编程格式G65H02P#iQ#jR#k例G65H02P#101Q#102R#103;(#101=#102+#103) 3)减法#i=#j-#k编程格式G65H03P#iQ#jR#k例G65H03P#101Q#102R#103;(#101=#102-#103) 4)乘法#i=#j×#k编程格式G65H04P#iQ#jR#k例G65H04P#101Q#102R#103;(#101=#102×#103) 5)除法#i=#j/#k编程格式G65H05P#iQ#jR#k例G65H05P#101Q#102R#103;(#101=#102/#103)6)平方根#i=编程格式G65H21P#iQ#j例G65H21P#101Q#102;(#101=)7)绝对值#i=│#j│编程格式G65H22P#iQ#j例G65H22P#101Q#102;(#101=│#102│) 89G码H码功能定义G65H11逻辑“或”#i=#j·OR·#kG65H12逻辑“与”#i=#j·AND·#kG65H13异或#i=#j·XOR·#k1)逻辑或#i=#jOR#k编程格式G65H11P#iQ#jR#k例G65H11P#101Q#102R#103;(#101=#102OR#103) 2)逻辑与#i=#jAND#k编程格式G65H12P#iQ#jR#k例G65H12P#101Q#102R#103;(#101=#102AND#103) (3)三角函数指令(表4.6)表4.6三角函数指令G码H码功能定义G65H31正弦#i=#j·SIN﹙#k﹚G65H32余弦#i=#j·COS﹙#k﹚G65H33正切#i=#j·TAN﹙#k﹚G65H34反正切#i=ATAN﹙#j/#k﹚1编程格式例2#102×COS(#103))#i=#j×TAN#k编程格式G65H33P#iQ#jR#k(单位:度)例G65H33P#101Q#102R#103;(#101=4)反正切#i=ATAN(#j/#k)编程格式G65H34P#iQ#jR#k(单位:度,0o≤#j≤360o)例G65H34P#101Q#102R#103;(#101=ATAN(#102/#103))(4)控制类指令(表4.7)表4.7控制类指令G码H码功能定义G65H80无条件转移GOTOnG65H81条件转移1IF#j=#k,GOTOnG65H82条件转移2IF#j≠#k,GOTOnG65H83条件转移3IF#j>#k,GOTOnG65H84条件转移4IF#j<#k,GOTOnG65H85条件转移5IF#j≥#k,GOTOnG65H86条件转移6IF#j≤#k,GOTOn+n出现1编程格式2)#102,转移到N1000程序段;若#101≠#102,执行下一程序段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宏程序应用指令————————————————————————————————作者: ————————————————————————————————日期:ﻩ宏程序跳转及重复指令GOTOS:跳回到程序开始GOTOB:以程序开始方向的带跳转目标的跳转指令。
GOTOF:以程序末尾方向的带跳转目标的跳转指令。
GOTO:带跳转目标查找的跳转指令。
查找先向程序末尾方向进行,然后再从程序开始处进行查找。
GOTOC:与GOTO 有区别的是,报警14080“跳转目标未找到”被抑制。
这表示,在跳转目标查找没有结果情况下不中断程序加工,而以指令GOTOC下面的程序行继续进行。
ﻩ跳转条件允许使用所有的比较运算和逻辑运算(结果:TRUE 或者FALSE)。
如果这种运算的结果为TRUE,则执行程序跳转。
TRUE(真实、准确) FALSE(错误)特殊情况一般情况IF <跳转条件>=TRUE GOTOB<跳转目标> IF<跳转条件>= GOTOB <跳转目标>IF <跳转条件>=TRUEGOTOF <跳转目标>IF <跳转条件>= GOTOF <跳转目标>IF<跳转条件>=TRUE GOTO<跳转目标>IF <跳转条件>= GOTO<跳转目标>IF <跳转条件>=TRUE GOTOC <跳转目标>IF <跳转条件>= GOTOC <跳转目标>程序分支(CASE ... OF ... DEFAULT ...)CASE 功能可以检测一个变量或者一个计算函数当前值 (类型:INT),根据结果跳转到程序中的不同位置。
句法:CASE(<表达式>)OF <常量_1> GOTOF <跳转目标_1> <常量_2> GOTOF <跳转目标_2> ...DEFAULT GOTOF <跳转目标_n>常量:变量或者计算函数首先规定的恒定值DEFAULT:对于变量或者计算函数没有采用规定值的情况,可以用DEFAULT 指令确定跳转目标。
N20 DEF INT VAR1VAR2 VAR3N30 CASE(VAR1+VAR2-VAR3) OF 7 GOTOF Label_1 9 GOTOF Label_2 DEFAU LTGOTOF Label_3N40 Label_1: G0 X1 Y1N50 Label_2: G0X2 Y2N60 Label_3: G0 X3 Y3CASE 指令由N30 定义下列程序分支可行性:1. 如果计算函数值 VAR1+VAR2-VAR3 = 7,则跳转到带有跳转标记定义的程序段"Label_1" (→N40)。
2. 如果计算函数值VAR1+VAR2-VAR3 = 9,则跳转到带有跳转标记定义的程序段"Label_2" (→ N50)。
3. 如果计算函数VAR1+VAR2-VAR3 的值既不等于 7 也不等于 9,则跳转到带有跳转标记定义的程序段“Label_3”(→ N60)。
程序部分重复 (REPEAT, REPEATB, ENDLABEL, P)功能:程序部分重复是指在一个程序中,可以任意组合重复已经编写的程序部分。
需要重复的程序行或程序段落带有跳转标记(标签)。
REPEATB:重复程序行的指令REPEAT:重复程序段落的指令ﻩ1、重复单个程序行<跳转标记>: ......REPEATB <跳转标记> P=<n> ... 2.重复跳转标记和REPEAT指令之间的程序段落:<跳转标记>: ......REPEAT <跳转标记>P=<n> ...3.重复两个跳转标记间的段落:<起始跳转标记>: ......<结束跳转标记>: ......REPEAT <起始跳转标记> <结束跳转标记> P=<n>...说明REPEAT 指令不能被括在这两个跳转标记之间。
如果在REPEAT指令前找到了<起始跳转标记>,但在REPEA T指令前没有找到<结束跳转标记>,则重复<起始跳转标记>和REPEAT 指令之间的程序段落。
4.重复跳转标记和 ENDLABEL 间的段落:<跳转标记>: ......ENDLABEL: ......REPEAT <跳转标记> P=<n> ...说明REPEAT 指令不能被括在<跳转标记>和ENDLABEL 之间。
如果在REPE AT 指令前找到了<跳转标记>,但在REPEAT 指令前没有找到ENDLABEL,则重复<跳转标记>和REPEAT 指令之间的程序段落。
示例 1:重复单个程序行N10 POSITION1:X10 Y20N20POSITION2: CYCLE(0,,9,8) ;位置循环N30...N40 REPEATB POSITION1 P=5 ; 执行程序段SATZ N10 五次N50 REPEATB POSITION2 ;执行程序段 N20 一次N60 ...N70 M30示例 2:重复跳转标记和 REPEAT指令之间的程序段落N5 R10=15N10 Begin:R10=R10+1 ;宽度N20 Z=10-R10N30 G1 X=R10 F200N40 Y=R10N50 X=-R10N60 Y=-R10N70 Z=10+R10N80 REPEAT BEGIN P=4 ;执行 N10 到 N70 程序部分四次N90 Z10N100 M30示例3:重复两个跳转标记间的段落程序代码注释N5 R10=15N10 Begin: R10=R10+1 ; 宽度N20 Z=10-R10N30 G1 X=R10 F200N40 Y=R10N50 X=-R10N60 Y=-R10N70 END: Z=10N80 Z10N90 CYCLE(10,20,30)N100 REPEAT BEGIN END P=3 ;执行 N10 到N70程序部分三次N110 Z10N120 M30示例4:重复跳转标记和 ENDLABEL 间的段落N10 G1 F300 Z-10N20 BEGIN1:N30 X10N40 Y10N50 BEGIN2:N60X20N70 Y30N80ENDLABEL: Z10N90 X0 Y0 Z0N100 Z-10N110 BEGIN3: X20N120Y30N130 REPEAT BEGIN3 P=3 ; 执行 N110 到N120 程序部分三次N140 REPEAT BEGIN2 P=2 ; 执行N50到N80之间的程序部分两次N150 M100N160 REPEAT BEGIN1P=2 ; 执行 N20到 N80 之间的程序部分两次N170 Z10N180 X0 Y0N190 M30示例 5:铣削加工、采用不同的工艺加工钻孔位置N10 ZENTRIERBOHRER() ; 换上定中钻头。
N20 POS_1: ; 钻孔位置 1N30 X1 Y1N40X2N50 Y2N60 X3 Y3N70 ENDLABEL:N80 POS_2: ; 钻孔位置 2N90 X10 Y5N100 X9 Y-5N110 X3 Y3N120 ENDLABEL:N130 BOHRER() ; 更换钻头和钻孔循环。
N140 GEWINDE(6) ; 换上螺纹钻M6和螺纹循环。
N150 REPEATPOS_1 ; 重复程序部分一次,自POS_1到ENDLABEL,N160 BOHRER() ; 更换钻头和钻孔循环。
N170 GEWINDE(8) ; 换上螺纹钻M8 和螺纹循环。
N180 REPEAT POS_2 ; 重复程序部分一次,自POS_2到ENDLABEL。
N190 M301、程序部分重复可以嵌套调用。
每次调用占用一个子程序级。
2、如果在执行程序重复过程中编程了M17 或者RET,则程序重复被停止。
程序接着从REPEAT指令行之后的语句开始运行。
3、在当前的程序显示中,程序重复部分作为单独的子程序级显示。
4、如果在执行程序部分重复过程中取消该级别,则在调用程序部分执行之后,继续加工该程序。
示例6N10 G1 F300 Z-10 N20BEGIN1:N30 X=10N40Y=10 1、控制结构和程序部分重复可以组合使用。
但是,两者之间不得产生重叠。
一个程序部N50 GOTOF BEGIN2N60ENDLABEL:N70 BEGIN2:N80 X20N90 Y30N100 ENDLABEL: Z10N110 X0 Y0 Z0N120 Z-10N130 REPEAT BEGIN1 P=2 N140 Z10N150 X0 Y0N160M30说明:REPEAT 指令应位于运行程序段之后。
分重复应该位于一个控制结构分支之内,或者一个控制结构位于一个程序部分重复部分之内。
2、如果跳转和程序重复部分交织在一起,则程序段按次序执行。
比如说,程序重复部分有一个跳跃,则一直进行加工,直至找到编程的程序结束部分。
带选项的程序循环 (IF,ELSE, ENDIF)IF <条件>... ELSE ... ENDIF ... 当查询循环应包含一个可选的程序块时,可使用带IF 和ELSE 的结构:如果满足IF条件,则执行 IF 内的程序块。
如果 IF 条件不满足,则执行 ELSE 内可选的程序块。
说明:如果不需要选择,则IF循环也可以不带 ELSE指令,并对ELSE 后的程序块编程。
计数循环(FOR... TO...,ENDFOR)功能:当一个带有一个确定值的操作程序被循环重复,计数循环就会被运行。
FOR <变量> =<初值> TO <终值>...ENDFOR FOR: 引入计数循环。
ENDFOR:一旦还没有得到计数终值,则标记循环结束处并跳转到循环开头。
<变量>: 计数变量从初值开始向上计数,直到终值...且在每次运行时提高值“1”。
示例1:整数变量作为计数变量:DEF INT iVARIABLE1R10=R12-R20*R1 R11=6 FOR iVARIABLE1 = R10 TO R11;计数变量 = 整数变量R20=R21*R22+R33ENDFORM30 示例2:R 参数作为计数变量:R11=6FOR R10=R12-R20*R1 TO R11 ; 计数变量 = R 参数(实数变量)R20=R21*R22+R33ENDFORM30示例 3: 加工一个固定的零件数DEF INT STUECKZAHLFOR STUECKZAHL =0 TO100G01 …ENDFOR ; 计数循环结束M30用名称“STUECKZAHL”定义的 INT 型变量引入计数循环。