文档库 最新最全的文档下载
当前位置:文档库 › MACRO程式

MACRO程式

MACRO程式
MACRO程式

一、何谓MACRO 程式?G65、G66、G67

MACRO 又称为巨指令或变数指令,因MACRO 程式是由一些变数指令等组合,使用各种演算、介面资料之输出入、判断、分歧等命令,而执行专用机能之副程式化之程式。

二、巨指令程式如何呼叫?

巨指令之呼叫可分为⑴单一呼叫G65;⑵多层式呼叫G66 单一呼叫G65 P0001 〖 〗L G65:呼叫巨指令 P0001:程式号 〖 〗:引数 L :重复次数

多层呼叫指令格式与G65不同点,在于G65只执行一次副程式便取消,而G66只要有位置移动便执行呼叫此副程式加工,直到取消指令G67出现为止。

G65与G66程式简例

主程式 主程式

δ

9000 δ0002

#100=#24; G40G80G49;

#101=#25; N01G0G90G54X0.Y0.S800M3; #102=#26; G43Z50.H1;

#103=#4; G66P9000X #105=#5; X30.;

Y50. M30 三、何谓引数? M30

引数是将主程式中一些数据,以局部变数方式,引用进入巨指令中故称为引数。

种类1之引数,26个英文字母对照#1至#26,I 、J 、K 因常用之引数故#()往前移至#4、#5、#6,D 再往后移至#7直到L 时回复正常之比照,但须特别记得的是G 、L 、N 、O 、P 这5个字母不能用做引数,因为G 为主要功能;L 为重复次数;N 为序号、O 为主程式号;P 为副程式号。

三菱最常用之引数:A 、B 、C 、D 、F 、I 、J 、K 、Q 、R 、X 、Y 、Z FANUC 最常用之引数:B 、D 、F 、I 、J 、K 、H 、R 、Q 、X 、Y 、Z

因FANUC 半键式之面盘字母并不齐全,故建议在制作巨指令程式时尽量以FANUC 为主,如此共用性会更好。

种类2之引数虽然比较多且容易记,但在制作程式时容造成混乱不清故普遍不被程式制作者采用。故不详细解说。

※ 种类1与种类2可共用,但有重复时后面有效。

四、如何成功应用引数?

吧! 加工顺序①②③④

X 、Y →下刀点 Z →深度 I →X 轴工件长 J →Y 轴工件长

Q →刀与工件安全距D →刀具之直径 F →进给速度

普通程式G 语言 δ0001 G40G80G49; G40G80G49;

G0G90G54X-60.Y45.S280M3; G0G90G54X-60.Y45.S280M3; G43Z100.H1; G43Z100.H1;

Z0.; G65P9000X-60.Y45.Z0.I600.J400.Q10.D100.F300; G1X660.F300; G0Z100.M5;

G0Y135.; G28Y0.; G1X-60.; M30 G0Y225.; δ9000

G1X660.; G0G90X#24Y#25; G91G01X 〔#104*#100〕F#9; G0Y315.; Z#26; #101=#101+1; G1X-60.; #100=-1; IF 〔#101EQ#103〕GOTO99; G0Y400.; #101=0; G91G00Y#102; G1X660.; #102=#7*0.9; END1 G0Z100.M5; #103=#5/#102; N99M99 G91G30Z0.; #103=FUP 〔#103〕; G28Y0.; #104= #4+#17*2+#7;

M30 WHILE 〔#101LT#103〕DO1 #100=-1*#100

五、何谓共通变数?

共通变数分成两种1、#100至#149

2、#500至#531

第1种电源关掉后资料消除,第2种保持下来。此变数变化情形可由CRT上显示,故大部分一些演算指令及资料保存、传递皆应用共通变数,以便让程式制作者或机台操作者能进一步求证。

程式例:1、量产型之机台工件就只在几种轮流加工,且用固定模具,那便可将座标位置储存在#500以后之共通变数。主程式制作如下:

δ1

S

M30

δ2

S

M30

1、

2、

3、

4、A TAN→反正切#103=Atan〔1.732〕=60.

5、ACOS→反余弦#104=Acos〔0.5〕=60.

6、SQR或SQRT→开平方#105=SQRT〔600+300〕=√900=30

7、ABS →绝对值#106=ABS〔10-15〕=ABS〔-5〕=5

8、RND或ROUND →四舍五入#100=ROUND〔10/3〕=3

9、FIX →小数点以下去掉#101=FIX〔10/3〕=3

δ9000

#101=0;

#105=#5;

WHILE〔#101LT#6〕DO1;

G43Z50.H1; N99#109; =#104×#108+#104 G65P9002X500.Y250.Z-30.A3 R75. D31 F100 C3 H0.8; G1G91X-#104;

中心深起半半进Z 刀G2I#109;

点径径给轴具#108=#108+1;

Z 补速加切IF〔#108LT#106〕GOTO99;

轴正度工削#107=#24-#18

号次率G90G91G42X#107D#7;

数G2I-#18;

G0G90Z50.M5; #107=#107+1;

S IF〔#107LT#3〕GOTO88;

M30 M99

七、分歧命令

1、

IF 〔 〕 GOTO

假如 满足内定条件 跳至 序号

此命令码为MACRO 程式制作中经常使用的,但须特别注意的是〔 〕内条件之表2、WHILE 〔 〕DO

S

END ;

当满足括号内之条件会丛DO 至END 不断重复执行直到不能满足为止。 WHILE 〔条件〕DO 与END 需成对地使用。

当WHILE 〔条件〕省略时,DO 与END 会无穷尽地重复执行。DO 最多只能127次。

例:多件同样工件使用间距相同之模具

δ9050

G40G80G49; 刀具资料95为X 轴加工个数 M6T1; 96为Y 轴加工个数

#500=#5021; 97为X 轴目前欲加工位置 #501=#5022; 98为Y 轴目前欲加工位置 #5021=#5021+〔100.×#2097〕 ※95、96输入之值为总数量再减1。 #5022=#5022-〔100.×#2098〕 N100

WHILE 〔#2097LT#2095〕DO1; G0G90G54X0.Y0.S1000M3; G43Z100.H1;

G99G81R3.Z-3.F100; G80;

IF 〔#2098EQ1〕GOTO101; #5021=#5021+100.; GOTO102;

N101#5021=#5021-100.; N102 #2097=#2097+1; END1 #5022=#5022-100.; #2097=0; #2098=#2098+1; IF 〔#2098LT#2096〕GOTO100; #2098=0; #5021=#500; #5022=#501; G0Z100.M5; G91G30Z0.; M6T2; S M 30

八、系统变数:

㈠#1000~#1035→仅用于介面信号值读入而已,读入之变数值仅为1或0两种。

#1100~#1135→仅用于介面信号值之输出而已,输出之值仅为1或0两种。

※#1000~#1035;#1100~#1135两种系统变数之程式制作,最好对PLC 之制作有概念或能了解各接点之作用方能命令这些接点之开与关。 ㈡#2001~#2199→刀具补正变数。

①#2001=300.即将300.之数据输入刀具补正画面1号内。 ②假设刀具资料15号值为—360.程式

㈢#2500→

#2506→工件座标X 轴变数 #2500→G52 #2501→G54 #2600→#2606→工件座标Y 轴变数

#2700→#2706→工件座标Z 轴变数

#2800→#2806→工件座标B 轴变数

①#2501=460→即将460之数据输入至座标系G54X 之位置。 ②#100=#2501→将G54X 轴数据读取。

㈣#3000→报警变数

变数3000使用是可以强制NC 处于警报状态并可对这警报讯息反应至CRT 画面上。 δ1 S

IF 〔#1EQ0〕GOTO100; S

S

N101M99 AL 号码 注解(无旋转数)讯息文字最多31个且须大写 号码之设定可丛1~9999

㈤#3001;#3002→时间积算变数

#3001→自动运转时间积算→电源ON 后即开始计算 #3002→自动起动时间积算→程式启动后再开始计算 此变数须机台有时间显示功能方能用 δ1

#3002=0 →CRT 营幕时间归零 加 工 程

M30 →积算时间结束(查看时间即可了角单件加工之工时)

㈥#3003→单节执行之控制及辅助功能MSTB 等待之控制变数.

#3003=0单节停止不控制 辅助功能 等待

1单节停止控制 辅助功能 等待 2单节停止不控制 辅助功能 不等待 3单节停止控制 辅助功能 不等待 RESET 后#3003归0

㈦#3004→自动运转暂停、切削进给率调整、G09之有效无效之控制变数。

#3004=0 自动运转暂停有效 切削进给调整有效 G09检查有效 1 自动运转暂停无效 切削进给调整有效 G09检查有效

2 自动运转暂停有效 切削进给调整无效 G09检查有效

3 自动运转暂停无效 切削进给调整无效 G09检查有效

4 自动运转暂停有效 切削进给调整有效 G09检查无效

5 自动运转暂停无效 切削进给调整有效 G09检查无效

6 自动运转暂停有效 切削进给调整无效 G09检查无效

7 自动运转暂停无效 切削进给调整无效 G09检查无效

㈧#4001~#4021→模拟持续情报变数

#4001→G0→1G2→2G3→3#4014→G66G66.1 #4002→G17:17G18:18G19:19#4016→G68G69

#4003→G90:90G91:91#4017→G96G97

#4004→G22,G23#4019→G50.1G51.1 #4005→G94G95#4107→刀径补正号D_#4006→G20G21#4109→进给速度F_#4007→G40G41G42#4111→长度补正号H_#4008→G43G44G49#4113→辅助机能M_#4009→G73~G89#4114→顺序号N_

#4010→G98G99#4115→程式号O_

#4011→G50G51#4119→主轴机能S_#4012→G54~G59#4120→刀具机能T_#4013→G61~G64

例:δ1

G0G90G54X0.Y0.S1200M3; G43Z50.H1;

G65P2X100.Y100.;

M30 δ2

#1=#4003→#1=90 #2=#4001→#2=0 G#1G#2X#24Y#25 M99

㈨#5001~#5106→单节终点座标、工件座标等位置变数#5001~#5006→先前单节的终点座标

#5021~#5026→机械座标

#5041~#5046→工件座标

#5061~#5066→跳越座标

#5081~#5066→工具位置补正位置#5101~#5103→伺服偏差量

例:δ1

G0G90X100.Y100.S1000M3;

G43Z50.H1;

G65P2X50.Y50.Z-10.F200;

M30

δ2

#100=#4003→绝对值.增量值模组记忆#101=#5001

#102=#5002 →起点位置记忆

G91G1Z#26F#9 →Z轴进入

G31X#24Y#25 →跳越位置计测

G90G0X#101Y#102 →回至起点

#103=#101-#5061 →X轴移动值计算

#104=#102-#5062 →Y轴移动值计算

#105=SQR〔#103×#103+#104×#104〕

→计测斜线值

G91G1Z-#26 →回至Z点

M99 →回复原始绝对增量模组

FANUC宏程序编程

运算符 运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一 示例程序下面的程序计算数值1~10的总和 O9500;#1=0;………………………………….存储和的变量初值 #2=1;………………………………….被加数变量的初值 N1 IF[#2GT 10]GOTO 2;…………….当被加数大于10时转移到N2 #1=#1+#2;…………………………….计算和 #2=#2+#1;…………………………….下一个被加数 GOTO 1;………………………………转移到N1 N2 M30;................................................程序结束 算术和逻辑运算

角度单位: SIN、ASIN、COS、ACOS、TAN和A TAN的角度单位是度 ARCSIN #i=ASIN[#j]: ●取值范围如下:当参数(N0.6004¥0)NA T位设为0时,270~90度;当参数(N0.6004¥0)NA T位设为1时,-90~90度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCCOS #i=ACOS[#j]; ●取值范围从180~0度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCTAN #i=A TAN[#j]; ●指定两边的长度,并用斜杠(/)分开 ●取值范围如下:当参数(N0.6004¥0)NA T位设为0时,0~360度[例如:当指定 #i=A TAN[-1]/[-1];时,#1=225度]。当参数(N0.6004¥0)NA T位设为1时,-180~180度[例如:当指定#i=A TAN[-1]/[-1];时,#1=-135度] ●常数可替代变量#j。 自然对数#i=LN[#j]; ●注意,相对误差可能大于10-8。 ●当反对数(#j)为0或小于0时,发出报警N0.111。 ●常数可替代变量#j。 指数函数#i=EXP[#j]: ●注意,相对误差可能大于10-8 ●当运算结果超过3.65×1047(j大约是110)时,出现溢出报警N0.111 ●常数可替代变量#j。 上取整下取整: 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。 宏程序语句:包含算术或逻辑运算(=)的程序;包含控制语句(例如,用GOTO,DO,END)的程序;包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段;除宏程序以外任何程序段都为NC语句。 与NC语句的不同: 即使置于单段程序运行方式,机床也不停止。但是,当参数N0.6000#5SBM设定位、为1时,在单段程序方式中,机床停止。在刀具半径补偿方式中宏程序语句段不做为移动程序段处理 与宏程序语句相同性质的NC语句: 含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序)但没有除O,N,P或L地址之外的其它地址指令的NC语句,其性质与宏程序语句相同;不包含除O,N,P或L以外的指令地址的程序段其性质与宏程序语句相同。 无限循环; 当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环。

FANUC用户宏程序(椭圆篇)

用户宏程序 宏程序是指含有变量的子程序,在程序中调用用户宏程序的那条指令叫做用户宏指令(这里用G65) 1、变量 用一个可赋值的代号代替具体的坐标值,这个代号称为变量。变量分为系统变量、全局变量和局部变量三类,它们的性质和用途个不相同。(1)系统变量是固定用途的变量,它的值决定了系统的状态。FANUC 中的系统变量为#1000~#1005、#1032、#3000等。 (2)全局变量是指在主程序内和由主程序调用的各用户宏程序内公用的变量。FANUC中的全局变量有60个,它们分两组,一组是#100~#149;另一组是#500~#509。 (3)局部变量是仅局限于在用户宏程序内使用的变量。同一个局部变量在不同的宏程序内的值是不通用的。FANUC中的局部变量有33个,分别为#1~#33。 (1)加减型运算加减型运算包括加、减、逻辑加和排它的逻辑加。分别用以下四个形式表达: #i = #j +#k #i = #j -#k #i = #j OR #k #i = #j XOR #k 式中,i、j、k为变量;+、-、OR、XOR称为为演算子。 (2)乘除型运算乘除型运算包括乘、除和逻辑乘。分别用以下形式表达: #i = #j * #k #i = #j / #k #i = #j AND #k 4.变量的赋值

由于系统变量的赋值情况比较复杂,这里只介绍公共变量和局部变量的赋值。变量的赋值方式可分为直接和间接两种。 (1)直接赋值 例:#1=115(表示将变量115赋值于#1变量) #100=#2(表示将变量#2的即时值赋于变量#100) (2)间接赋值间接赋值就是用演算式赋值,即把演算式内演算的结果赋给某个变量。在演算式中有自变量代号,自变量每得到一个即时值,相应就得到一个演算结果,该结果就赋值给变量,该变量也叫应变量。5.转向语句 转向语句分为无条件转向语句和条件转向语句两种。 (1)无条件转向语句 程序段格式:GOTO N ;其中N后面的数值为程序段号。 例如:GOTO 55;表示无条件转向执行N55程序段,而不论N55程序段在转向语句之前还是之后。 (2)条件转向语句条件转向语句一般由判断条件式和转向目标两部分构成。 程序段格式:IF [a GT b ] GOTO c;表示为“如果a>b,那么转向执行第Nc句程序段”。a和b可以是数值、变量或含有数值及变量的算式,c是转向目标的程序段。 大于、等于、大于等于、小于等于分别用GT、EQ、GE、LE表示。 三、用户宏程序的应用 下面就以椭圆为例,介绍宏程序间接赋值法的应用。 1、椭圆的中心偏离工件原点一个Z向距离 如下图是一个椭圆,椭圆的中心偏离工件原点一个Z向距离W=40,欲车削1/4椭圆(图中粗线部分)的回转轮廓线,要求在数控程序中用任意一点D的Z值(用#3号变量指定)来表达该点的X值(用#5号变量指定),由此可知,这里是以Z作为自变量,以X作为应变量。根据椭圆的方程即可以写出自变量Z与应变量X之间的关系表达式。那么,如果我们在Z向分段,以0.5mm为一个步距给Z赋值,就可以得到相应的一个X值。然后把所得各个点的坐标值用直线插补方式来逼近,就可以得到椭圆的近似轨迹。步距取的越小,所得的轨迹就越接近椭圆。 如下图所示椭圆方程为:(式中X为半径值)

FANUC宏程序编程25909

FANUC宏程序编程 2017-03-28 运算符 运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于 另一个值。注意,不能使用不等号 运算符含义 EQ 等于(=) NE 不等于 GT 大于 GE 大于或等于 LT 小于 LE 小于或等于 示例程序下面的程序计算数值1~10的总和 O9500;#1=0;………………………………….存储和的变量初值 #2=1;………………………………….被加数变量的初值 N1 IF[#2GT 10]GOTO 2;…………….当被加数大于10时转移到N2 #1=#1+#2;…………………………….计算和 #2=#2+#1;…………………………….下一个被加数 GOTO 1;………………………………转移到N1 N2 M30;................................................程序结束 算术和逻辑运算 功能格式备注 定义#i=#j: 加法#i=#j+#k 减法#i=#j-#k 乘法#i=#j*#k 除法#i=#j/#k 正弦#i=SIN[#j]: 角度以度指定090度30分 表示为90.5度 反正弦#i=ASIN[#j]: 余弦#i=COS[#j]: 反余弦#i=ACOS[#j]: 正切#i=TAN[#j]: 反正切#i=ATAN[#j]: 平方根#i=SQRT[#j]: 绝对值#i=ABS[#j]: 舍入#i=ROUND[#j]: 上取整#i=FIX[#j]: 下取整#i=FUP[#j]: 自然数对数#i=LN[#j]: 指数函数#i=EXP[#j]:

或#i=#jOR#k: 逻辑运算一位一位地按二 进制数执行 异或#i=#jXOR#k: 与#i=#jAND#k: 从BCD转为BIN #i=BCD#j;用于与PMC的信号交换从BIN转为BCD #i=BCD#j; 角度单位: SIN、ASIN、COS、ACOS、TAN和ATAN的角度单位是度 ARCSIN#i=ASIN[#j]: ●取值范围如下:当参数(N0.6004¥0)NAT位设为0时,270~90度;当参数(N0.6004¥0)NAT位设为1时,-90~90度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCCOS#i=ACOS[#j]; ●取值范围从180~0度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCTAN#i=ATAN[#j]; ●指定两边的长度,并用斜杠(/)分开 ●取值范围如下:当参数(N0.6004¥0)NAT位设为0时,0~360度[例如:当 指定#i=ATAN[-1]/[-1];时,#1=225度]。当参数(N0.6004¥0)NAT位设为1时,-180~180度[例如:当指定#i=ATAN[-1]/[-1];时,#1=-135度] ●常数可替代变量#j。 自然对数#i=LN[#j]; ●注意,相对误差可能大于10-8。 ●当反对数(#j)为0或小于0时,发出报警N0.111。 ●常数可替代变量#j。 指数函数#i=EXP[#j]: ●注意,相对误差可能大于10-8 ●当运算结果超过3.65×1047(j大约是110)时,出现溢出报警N0.111 ●常数可替代变量#j。 上取整下取整: 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。 宏程序语句:包含算术或逻辑运算(=)的程序;包含控制语句(例如,用GOTO,DO,END)的程序;包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M 代码调用宏程序)的程序段;除宏程序以外任何程序段都为NC语句。 与NC语句的不同:

FANUC宏程序使用举例

FANUC宏程序使用举例 单轴外圆数控磨床,径向采用数控轴(X轴)控制,轴向仍用液压油缸驱动,因此无法使用两轴磨床数控系统提供的磨削循环功能。在实践中,可以使用FANUC系统提供的用户宏程序,编制单轴的磨削循环功能。根据机床的具体结构,又编制了砂轮手动修整、自动补偿及手动测量工件、自动补偿的控制功能。在青海重型机床厂生产的CA8311B轴颈车磨床上,经过一年多的生产使用,证明是实用的。下面分别介绍软件的内容。 1 功能介绍 1.1 外圆磨削循环 由于只有径向控制轴(X轴),无法实现连续进给磨削,只能实现两端进给的轴向磨削循环。因此在左右两端各设1个轴向行程识别开关(如图1所示)。 当砂轮移到工件的左端时,左端行程开关闭合,发出到位信号,程序中用接口输入变量#1005=1表示。控制系统接到该信号后,发出X轴进给移动指令,砂轮前进一个A值;同理,当系统接到右端行程开关发出的到位信号,程序中用接口输入变量#1006=1表示,砂轮前进一个B值。依次循环,直到到达指令的位置。 实现给定磨削量的磨削加工,可以按A、B两值相加为一个循环,将被磨除量均分。砂轮快速移至R点,经n次(A+B)磨削之后,其剩余量为h ?。若砂轮在工件左端,且h?<A时,按h?进给,否则按A值进给。若在工件右端,且h?<B值时,按h?进给,否则按B值进给。软件必须保证只在工件两端进给,中间不得进给。当磨除量变为零时,必须磨到另一端才能退砂轮。整个磨削过程分粗磨、精磨和光磨。在实际使用中,在R点设置一个暂停,操作者可以插入手动磨削,以利于修活使用,也可以再转为自动磨削。磨削初值用现在位置变量#5041取值。

FANUC宏程序编程方法教你如何进行刀具补偿

宏程序作为数控编程的一种方法,具有编程简单、修改方便及程序量小等优点。宏程序分为A类和B类,在一些较老的FANUC系统中采用A类宏程序,现在较先进的系统中则采用B类宏程序。B类宏程序是使用变量进行编程的,变量分为局部变量(#1~#33)、公共变量(#100~#149、#500~#549)和系统变量(#1000~)。对于局部变量和公共变量的使用,经过短期的学习很容易掌握,而系统变量一般不会轻易地使用和更改,但是如果能够掌握好,使用系统变量可以实现一些特殊的功能。 在加工时,当刀具发生磨损需要改变磨损值时,为了及时提醒操作者进行换刀以及防止操作者更改错误,可以通过在程序中的设定,使刀具半径补偿的磨损量控制在一定的范围,超出这个范围时程序就会产生报警而无法执行程序。 用系统变量可以读写刀具补偿值,通过对系统变量赋值,可以设定刀具补偿值范围。在FANUC0i系统中,刀具补偿分为几何补偿和磨损补偿,刀具补偿号可达400个。当补偿号小于等于200时,刀具长度补偿也可以使用#2001~#2400,补偿号与刀具长度补偿值(H)和刀具半径补偿值(D )的对应关系如附表所示。 下面以刀具半径磨损补偿系统变量为例进行说明。当加工某个零件的轮廓时,如果想要将刀具补偿的磨损值控制在-0.2~0mm的范围内,通过编程设定可以对该刀具的磨损值进行判断,如果磨损值在-0.2~0mm范围内继续执行程序,超出范围则机床报警,显示报警信息。假设使用1号刀具T1,刀具半径补偿号为1,它所对应的刀具半径磨损补偿系统变量号为 #12001。具体程序如下:

N10 T1 M6 N20 G90 G54 G00 G40 Z100. N30 S2000 M03 N40 G43 H5 Z30. M08 N50 G00 X__ Y__ (刀具到达下刀位置) N60 G00 Z-5.0 N70 #1=#12001 (将补偿号1的磨损补偿值赋值给#1) N80 IF[#1 LE -0.2] GOTO 110 (判断#12001的值,如果≤-0.2,转到程序段110) N90 IF[#1 GE 0.0] GOTO 110 (判断#12001的值,如果≥0,转到程序段110) N100 GOTO 120 N110 #3000=80 (range error) (显示报警号为3080,内容为range error的报警信息) N120 G01 G41 X__ Y__ D1 F200 … N200 G01G40 X__ Y__ (N120~N200 轮廓轨迹程序略) N210 Z100. N220 M05 N230 M30 当刀具较多时的编程方法(以两把刀具为例):

FANUC系统宏程序编程

本系统宏程序体系采用FANUC系统宏程序B方式实现 一变量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 说明: 变量的表示 计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12] 变量的类型 变量根据变量号可以分成四种类型 变量号变量类型功能 #0-#49 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电 时,局部变量被初始化为0.调用宏程序时,自变量对局部变量赋 值, #50-#499 公共变量公共变量在不同的宏程序中的意义相同.当断电时, 公共变量 初始化为0. 目前版本中,某些公众变量被赋予特殊意义(系统变量),用于描 述CNC运行时各种数据的变化,这些变量包括: #449用于指明固定循环退刀模式(G98,G99), 如在G99方式 下,#449变量为1;如在G98方式下,#449变量为-1. #450用于指明当前程序段处于绝对坐标编程模式(G90)还是 相对坐标编程模式(G91).如在G90方式下,#450变量为1;如在 G91方式下,#450变量为-1. #451,#452,#453,#454用于存储刀具当前位置(X,Y,Z,A轴) 在后期的版本中,将会安排专门的空间作为系统变量区. 变量值的范围 局部变量和公共变量在系统内采用浮点数方式存储

小数点的省略 当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1的实际值是123.000。 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。 例如:G01X#1+#2F#3或者G01X[#1+#2]F#3 限制 程序号,顺序号和任选程序段跳转号不能使用变量。 例:下面情况不能使用变量: 0#1; /#2G00X100.0; N#3Y200.0; 二算术运算和逻辑运算 置换 #I=#j 算术运算 加:#I=#j+#k,减:#I=#j-#k,乘:#I=#j*#k,除:#I=#j/#k。 逻辑运算 下一版本将增加以下函数调用: 与:#I=#J AND #k或:#I=#J OR #k, 异:#I=#J XOR #k, 函数 正弦:#I=SIN[#j],余弦:#I=COS[#j] 正切:#I=TAN[#j] (目前版本角度单位为弧度,后续版本将改为度) 下一版本将增加以下函数调用: 反正切:#I=ATAN[#j] 平方根:#I=SQRT[#j],绝对值:#I=ABS[#j] 下取整:#I=FIX[#j],上取整:#I=FUP[#j] 四舍五入:#I=ROUND[#j] 转移与循环 在宏程序中,使用GOTO语句和IF语句可以改变程序的执行方向,转移和循环指令有3种。 无条件的转移 格式:GOTO n;n为程序的顺序号(1—9999)

FANUC宏程序编程

运算符由2个字母组成,用于两个值的比较,以决定它们就是相等还就是一个值小于或大于另 示例程序下面的程序计算数值1~10的总与 O9500;#1=0;…………………………………、存储与的变量初值 #2=1;…………………………………、被加数变量的初值 N1 IF[#2GT 10]GOTO 2;……………、当被加数大于10时转移到N2 #1=#1+#2;……………………………、计算与 #2=#2+#1;……………………………、下一个被加数 GOTO 1;………………………………转移到N1 N2 M30;、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、程序结束 算术与逻辑运算

SIN、ASIN、COS、ACOS、TAN与ATAN的角度单位就是度 ARCSIN #i=ASIN[#j]: ●取值范围如下:当参数(N0、6004¥0)NAT位设为0时,270~90度;当参数(N0、6004¥0)NAT 位设为1时,-90~90度。 ●当#j超过-1到1的范围时,发出P/S报警N0、111。 ●常数可替代变量#j。 ARCCOS #i=ACOS[#j]; ●取值范围从180~0度。 ●当#j超过-1到1的范围时,发出P/S报警N0、111。 ●常数可替代变量#j。 ARCTAN #i=ATAN[#j]; ●指定两边的长度,并用斜杠(/)分开 ●取值范围如下:当参数(N0、6004¥0)NA T位设为0时,0~360度[例如:当指定 #i=A TAN[-1]/[-1];时,#1=225度]。当参数(N0、6004¥0)NA T位设为1时,-180~180度[例如:当指定#i=ATAN[-1]/[-1];时,#1=-135度] ●常数可替代变量#j。 自然对数#i=LN[#j]; ●注意,相对误差可能大于10-8。 ●当反对数(#j)为0或小于0时,发出报警N0、111。 ●常数可替代变量#j。 指数函数#i=EXP[#j]: ●注意,相对误差可能大于10-8 ●当运算结果超过3、65×1047 (j大约就是110)时,出现溢出报警N0、111 ●常数可替代变量#j。 上取整下取整: 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。 宏程序语句:包含算术或逻辑运算(=)的程序;包含控制语句(例如,用GOTO,DO,END)的程序;包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段;除宏程序以外任何程序段都为NC语句。 与NC语句的不同: 即使置于单段程序运行方式,机床也不停止。但就是,当参数N0、6000#5SBM设定位、为1时,在单段程序方式中,机床停止。在刀具半径补偿方式中宏程序语句段不做为移动程序段处理 与宏程序语句相同性质的NC语句: 含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序)但没有除O,N,P或L地址之外的其它地址指令的NC语句,其性质与宏程序语句相同;不包含除O,N,P或L以外的指令地址的程序段其性质与宏程序语句相同。 无限循环; 当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环。 宏程序调用与子程序调用之间的差别:

Fanuc系统宏程序教程

15.用户宏程序 用户宏程序允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易。可将相同加工操作编为通用程序,使用时,加工程序可用一条简单指令调出宏程序,和调用子程序完全一样。 15.1变量 变量值可用程序或MDI面板上的操作改变。 #1=#2+100; G01 X#1 F300; 说明: 变量的表示变量用符号(#)和后面的变量号指定,例如:#1 表达式可以用于指定变量号,例如:#[#1+#2-12] ~-10或~10如果计算结果超出则发出P/S报警No.111 小数点的省略#1=123 相当于#1=123.000 变量的引用G01 X[#1+#2] F#3 G00 X-#1 当引用未定义的变量时,变量及地址号都被忽略,如 #1=0,#2为空时,G00 X#1 Y#2; == G00 X0; 限制程序号、顺序号和任选程序段跳转号不能使用变量。如下面情况不能使用变量:O#1; 1#2 G00 X100.0; N#3 Y200.0 15.2系统变量(略) 15.3算术和逻辑运算

表算术和逻辑运算 说明: 角度单位函数SIN,COS,ASIN,ACOS,TAN,ATAN的角度单位是度。 ARCSIN #i=ASIN[#j] 取值范围如下: 当参数(No.6004#0)NAT位设为0时,270°~90° 当参数(No.6004#0)NA T位设为0时,-90°~90° 当#j超出-1到1的范围时,发出P/S报警No.111 常数可替代变量#j ARCCOS #i=ACOS[#j] 取值范围从180°~0° 当#j超出-1到1的范围时,发出P/S报警No.111 常数可替代变量#j 运算次序 1.函数 2.乘除运算 3.加碱运算 括号嵌套括号可以使用5级,包括函数内部使用的括号。 当超过5级时,P/S报警No.118

FANUC系统宏程式详解

宏程序的简单调用格式: 格式:G65 P程序序号 L重复次数变量分配 变量对照表 A #1 I #4 T #20 B #2 J #5 U #21 C #3 K #6 V #22 D #7 M #13 W #23 E #8 Q #17 X #24 F #9 R #18 Y #25 H #10 S #19 Z #26 控制命令 1.If [条件表达式] GOTO n 2.While [条件表达式] DO m End m 运算符号 相等:EQ 不等于: NE 大于:GT 小于:LT 大于等于:GE 小于等于:LE

FANUC系统宏程式 FANUC系统宏程序编程 一变量 普通加工程序直接用数值指定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值或下面范围中的值: -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 当引用未定义的变量时,变量及地址都被忽略。

相关文档