宏指令.docx
- 文档编号:7632136
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:29
- 大小:186.46KB
宏指令.docx
《宏指令.docx》由会员分享,可在线阅读,更多相关《宏指令.docx(29页珍藏版)》请在冰豆网上搜索。
宏指令
引用数控车床宏指令
2010-02-1418:
55:
53| 分类:
默认分类阅读467评论1 字号:
大中小 订阅
本文引用自那年梨花开《数控车床宏指令》
引用
那年梨花开的数控车床宏指令
课题八 数控车床宏指令加工练习
一、概述
用户把实现某种功能的一组指令像子程序一样预先存入存储器中,用一个指令代表这个存储的功能,在程序中只要指定该指令就能实现这个功能。
把这一组指令称为用户宏程序本体,简称宏程序。
把代表指令称为用户宏程序调用指令,简称宏指令。
1、用户宏程序与普通程序的区别在于:
在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序运行可以挑砖。
而普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。
编程人员不必记忆用户宏程序主体的一组命令。
只记忆作为代表命令的用户宏程序命令即可,用户宏程序的最大特点是在用户宏程序主体中,可以进行变量间的运算,用宏命令可以给变量设定实际值。
2、宏程序编程的技术特点
最大特点就是将有规律的形状或尺寸用最短的程序段表示出来,具有极好的易读性和易修改性,编写出的程序非常简洁,逻辑严密,通用性极强。
随着技术的发展,自动编程逐渐会取代手工编程,但宏程序简洁的特点是指依然具有使用价值,宏程序的运用应该是手工编程应用中最大的亮点和最后的堡垒。
A、宏程序具有灵活性、通用性和智能性等特点。
B、 宏程序最具有模块化的思想和资质条件,编程人员只需要根据零件几何
信息和不同的数学模型即可完成相应的模块化加工程序设计,应用时只
需要把零件信息、加工参数的功能输入到相应模块的语句中,就能使编
程人员从繁琐的、大量重复性的编程工作中解脱出来,有种一劳永逸的
效果。
FANUC0i系统提供两种用户宏程序,即用户宏程序功能A和用户宏程序B。
用户宏程序A可以说是FANUC系统的标准配置功能,任何配置的FANUC系统都具备此功能,而用户宏程序功能B虽然不算是FANUC系统的标准配置功能,但是绝大部分的FANUC系统也都支持用户宏程序功能B。
由于用户宏程序功能A的宏程序需要使用“G65Hm”格式的宏指令来表达各种数学运算和逻辑关系,极不直观,且可读性非常差,因而导致在实际工作中很少人使用它。
所以在本课程中支只对宏程序功能A作简单的介绍,不进行深入,将以用户宏程序B为重点介绍宏程序的相关知识。
二、宏程序功能A
1、宏程序本体的结构
在用户宏程序本体中,可以使用普通NC指令、采用变量的NC指令、计算指令和转移指令。
用户宏程序本体的结构,以字母O后面的程序号开始,用M99结束。
例:
Oxxxx;
程序号
G65H01……;
运算指令
G90G00X#101;
使用变量的NC指令
.
.
.
G65H82……;
转移指令
M99;
用户宏程序本体结束
2、变量的表示和引用
用变量可以指令用户宏程序的本体的地址值。
当调用或执行程序时,通过计算变量,可以指定一个变量,使宏程序更灵活,用途更广泛。
变量用变量号识别。
(1)变量的表示 用#后续的变量号来表示变量。
格式为:
#i(i=1,2,3,…)
例 #109,#501,#1005
(2)变量的引用 用变量可以替换地址后续的数值
<地址>#i或<地址>-#i
例:
F#103,当#103=15时,相当于F15。
Z-#110,当#110=250.0时,相当于Z-250.0。
G#130,当#130=3时,相当于G3。
当用变量替换变量号时,不能表示为“##100”,而应写成“#9100”即用“9”替换后面的“#”表示替换的变量号,而且低级号被取代。
例:
若#100=105,#105=-500,则X#9100表示X-500,而X-#9100表示X500。
注意:
地址0和N不能引用变量。
指令不能超过各地址的最大指令值。
若#30=120,则G#30超过最大指令值。
3、变量的种类
根据变量号及变量的用途和符号的不同,变量可以分为公用变量和系统变量。
1、公用变量#100~#149和#500~#531
公用变量对于主程序和从这些主程序调用的每个宏程序来说是公用的。
即,一个宏程序中的#i与另一个宏程序中的#i是相等的。
公用变量#100~#149在断电时清除,通电时复位到“0”。
公用变量#500~#531即使在断电时也不清除,其值保持不变。
2、系统变量(系统变量的用途是固定的)
(1) 接口输入信号变量#1000~#1015,#1032读取接口输入变量#1000~#1015。
(2) 接口输出信号变量#1100~#1115,#1132,#1133可以给出用于送出接口信号的系统变量#1100~#1115。
(3) 刀具偏置量#2001~#2932 刀具偏置量的系统变量#2001~#2932分别与刀具偏置号1~32对应。
(4) 时钟信息#3011,#3012 通过系统变量#3001,可知年、月、日,通过系统变量#3012可知时、终、秒。
(5) 需要的零件数和已加工的零件数#3901,#3902 把需要的零件数输入到系统量#3901中,注意不要代入负值。
(6) 模态信息#4001~#4120
(7) 位置信息#5001~#5124
4、宏程序的运算与控制指令(G65)
1、指令格式:
G65HmP#iQ#jR#k
式中,m:
01~99,表示宏程序功能
#i:
储存运算结果的变量号
#j:
进行运算的变量号1,也可是常数
意义:
#i=#j⊕#k
⊕——运算符(Hm指定)
例:
P#100Q#101R#102
其含义为:
#100=#101⊕#102
2、运算指令
G65Hm
功能
定义
G65Hm
功能
定义
G65H01
定义
置换
#i=#j
G65H27
复合平方根1
#i=
G65H02
加算
#i=#j+#k
G65H28
复合平方根2
#i=
G65H03
减算
#i=#j-#k
G65H31
正弦
#i=#j×sin(#k)
G65H04
乘算
#i=#jx#k
G65H32
余弦
#i=#j×cos(#k)
G65H05
除算
#i=#j÷#k
G65H33
正切
#i=#j×tan(#k)
G65H11
逻辑加
#i=#jOR#k
G65H34
反正切
#i=arctan(#j/#k)
G65H12
逻辑乘
#i=#jAND#k
G65H80
无条件转移
GOTOn
G65H13
异或
#i=#jXOR#k
G65H81
条件转移1
IF#j=#kGOTOn
G65H21
开平方
#i=
G65H82
条件转移2
IF#j≠#kGOTOn
G65H22
绝对值
#i=︱#j︱
G65H83
条件转移3
IF#j>#kGOTOn
G65H23
剩余数
#i=#j-
trunc(#j/#k)×#k trunk:
小数部分舍去
G65H84
条件转移4
IF#j<#kGOTOn
G65H24
变成二进制
#i=BIN(#j)
G65H85
条件转移5
IF#j≥#kGOTOn
G65H25
变成十进制
#i=BCD(#j)
G65H86
条件转移6
IF#j≤#kGOTOn
G65H26
复合除运算
#i=(#i×#j)÷#k
G65H99
P/S报警
报警号为500+n
3、控制指令
1)无条件转移
G65H80Pn,n:
顺序号
例:
G65H80P120;
转移到N20程序段
2)条件转移1 #j.EQ.#k(=)
G65H81PnQ#jR#k,n:
顺序号
例:
G65H81P1000Q#101R#102;
如果#101=#102,转到N1000;
如果#101≠#102,顺次执行。
3)条件转移2 #j.NE.#k(≠)
G65H81PnQ#jR#k,n:
顺序号
例:
G65H81P1000Q#101R#102;
如果#101≠#102,转到N1000;
如果#101=#102,顺次执行。
4)条件转移3 #j.GT.#k(>)
G65H81PnQ#jR#k,n:
顺序号
例:
G65H81P1000Q#101R#102;
如果#101>#102,转到N1000;
如果#101≤#102,顺次执行。
5)条件转移4 #j.LT.#k(<)
G65H81PnQ#jR#k,n:
顺序号
例:
G65H81P1000Q#101R#102;
如果#101<#102,转到N1000;
如果#101≥#102,顺次执行。
6)条件转移5 #j.GE.#k(≥)
G65H81PnQ#jR#k,n:
顺序号
例:
G65H81P1000Q#101R#102;
如果#101≥#102,转到N1000;
如果#101<#102,顺次执行。
7)条件转移6 #j.LE.#k(≤)
G65H81PnQ#jR#k,n:
顺序号
例:
G65H81P1000Q#101R#102;
如果#101≤#102,转到N1000;
如果#101>#102,顺次执行。
8)P/S报警
G65H99Pi:
报警号=500+i
例:
G65H99P15;
发生P/S报警515。
4、关于用户宏程序本体的注意事项
1)在MDI状态也可给出用户宏程序,但是,不能显示非G65地址数据。
2)宏指令地址H、P、Q和R必须在G65之后输入,地址O和N只能在G65之前输入。
H02G65P#100Q#101R#102; 错误
N00G65H01P#100Q10; 正确
3)单程序段执行。
4)变量值的范围是-2~2-1。
5)子程序的嵌套可到四重。
6)变量值只取整数,运算结果出现小数部分时被舍掉。
7)宏指令的执行时间因条件不同而异,一般平均几十毫秒。
8)ISO代码时用“#”代码,若用EIA代码时,用“&”代码代替“#”代码。
三、宏程序功能B
1、宏程序使用格式
O0001;
O8000;
∶
∶
G65P8000(引数和引数值);
∶
∶
∶
[变量]
[运算指令]
控制指令
∶
M30;
M99;
2、用户宏程序调用指令
用户宏程序是调用用户宏程序本体的指令。
调用方式有以下几种:
1)非模态调用(单一调用,G65)
一次性调用,即宏程序只在一个程序段内有效。
指令格式:
G65P(成序号)L(重复次数)<自变量赋值>;
在书写时,G65必须写在<自变量赋值>之前。
L最多可9999次。
若要向用户宏程序本体传递数据时,由自变量赋值来指
定,其值可以有符号和小数点,而与地址无关,自变量赋值有两种类型:
(1)自变量赋值Ⅰ用字母后加数值进行赋值,除了G、L、N、
O和P之外,其余所有字母地址都可以给自变量赋值。
从
A-B-C-D-…到X-Y-Z-。
赋值不必按字母顺序进行,但使用
I、J、K时,必须按顺序指定,不赋值的地址可以省略。
(2)自变量赋值Ⅱ 除了A、B、C之外,还用10组I、J、K对自变量赋值,同组的I、J、K必须按顺序赋值,不赋值的地址可以省略。
自变量
赋值Ⅰ
自变量
赋值Ⅱ
用户宏程序
本体中的变量
自变量
赋值Ⅰ
自变量
赋值Ⅱ
用户宏程序
本体中的变量
A
B
C
A
B
C
#1
#2
#3
S
T
U
I
J
K
#19
#20
#21
I
J
K
I
J
K
#4
#5
#6
V
W
X
I
J
K
#22
#23
#24
D
E
F
I
J
K
#7
#8
#9
Y
Z
I
J
K
#25
#26
#27
-
H
-
I
J
K
#10
#11
#12
I
J
K
#28
#29
#30
M
-
-
I
J
K
#13
#14
#15
I
J
K
#31
#32
#33
-
Q
R
I
J
K
#16
#17
#18
表中I、J、K的下标,只在表中表示组号,实际指令时不注下标。
注意:
1)自变量赋值Ⅰ和Ⅱ可以共存,自是后者有效。
例:
G65A1.0R2.0I-3.0I4.0D5.0P1000;
︱ ︱ ︱ ︱ ︱
#1 #2 #4 #7 #7
可以看出,I4.0和D5.0都对#7赋值,此时,后面的
D5.0有效,所以,#7=5.0。
2)I、J、K顺序不得颠倒,不赋值的可以省略。
例:
G65J5.0I4.0P1000;
︱ ︱
#5 #7
例:
O0001;
∶
G65P7000L2X100.Y100.Z-12.R-7.F80.;
GOOX-200.Y100.;
∶
M30;
O7000;
G91G00X#24Y#25;
Z#18;
G01Z#26F#9;
#100=#18+#26;
G00Z-#100;
M99;
2)模态调用(G66、G67)
模态调用功能近似固定循环的续效作用,在调用宏程序的语句后,机床在指定的多个位置执行宏程序,宏程序的模态用G67取消。
指令格式:
G66P(成序号)L(重复次数)〈自变量赋值〉;
在书写时,G66必须写在〈自变量赋值〉之前。
L最多可9999次。
自变量赋值与非模态调用相同。
G67取消宏程序模态调用方式。
G66和G67应成对使用,自变量中可以使用小数点和符号。
例;
O0001;
G00G40……;
X62.Z-30.;
G66P9110U5.F0.5;
Z-50.;
Z-80.;
G67;
G0X150.Z150.;
M05;
M30;
O9110;
G01U-#21F#9;
G00U#21;
3)子程序调用
M98P……;
3、用户宏程序本体
在用户宏程序本体中,可以使用普通的NC指令,采用变量的NC指令,运算指令和控制指令。
格式如下:
OXXXX;
#24=#4+#18*COS[#1];
G90G00X#24;
……
IF[#20GE#6]G0T09;
……
N9M99;
程序号
运算指令
使用变量的NC指令
控制指令
4、变量的引用和表示
1)变量的表示
变量由代码#和数值表示。
#i=(1、2、3……)
例#5、#109、#1005
可以用公式代替数据和变量i,格式为#[〈公式〉]
2)变量的引用
地址后接的数据可以用变量代替。
〈地址〉#i,或〈地址〉-#i
例F#33,若#33=1.5则表示F1.5;
Z-#18,若#18=20.0,则表示Z-20.
G#130.若#130=3.0,则表示G3。
使用中应注意
A、地址/,:
,O和N后禁止使用变量。
即,:
#2,N#1和/#3不能使用。
B、变量号不能直接用变量代替,若#5中的5用#30代替,不能写成##30,而应写成#[#30]。
C、变量值不能超过各地址的最大允许值。
3)变量的赋值
1、直接赋值#1=10
2、引数赋值
3、间接赋值#100=#18+#26
5、变量类型
变量按变量号可分为局部变量(<100),公用变量(≥100)和系统变量(≥1000),
1) 局部变量#1~#31
局部变量分为5级,每级之间互不相同。
即0级的#i与1级的#i不同。
2) 公用变量#100~#149和#500~#531。
#100~#149的公用变量,断电时其值被清除,而#500~#531的公用变量,断电时其值不清除,保持不变。
公用变量的值可直接显示在CRT上。
3) 系统变量
系统变量在系统中其用法是固定的,用户必须按规定使用。
变量号
含义
变量号
含义
#1000~#1015
#1032
接口输入变量
#5041~#5044
工件坐标值
#1100~#1115
#1132,#1133
接口输出变量
#5061~#5064
跳跃信号位置
#2000~#2932
刀具补偿值
#5081~#5084
刀具位置偏置和磨损补偿值
#2501,#2601
工件坐标系偏移值
#5101~#5104
伺服偏置值
#3000
报警
#5121~#5124
刀具几何形状补偿量
#3001,#3002
时钟
#5201~#5204
外部工件坐标系偏移值
#3003,#3004
循环运动控制
#5221~#5224
G54工件坐标系偏移值
#3005
设定数据
#5241~#5244
G55工件坐标系偏移值
#3011,#3012
日期
#5261~#5264
G56工件坐标系偏移值
#3901,#3902
零件数
#5281~#5284
G57工件坐标系偏移值
#4001~#4120
模态信息
#5301~#5304
G58工件坐标偏移值
#5001~#5004
程序段终点坐标值
#5321~#5324
G59工件坐标系偏移值
#5021~#5024
机床坐标值
6、运算指令
变量可以进行各种运算,运算指令的通用表达式为#i=〈表达式〉
(1)变量的定义和置换、
#i=#j
(2)加法运算
#i=#j+#k 和
#i=#j-#k 差
#i=#joR#k 或(对32位的每一位)
#i=#jxoR#k 异或(对32位的每一位)
(3)乘法运算
#i=#j*#k 积
#i=#i/#k 商
#i=#jAND#k 与(对32位的每一位)
(3)函数
#i=sin[#j] 正弦(度)
#i=Asin[#j]反正弦(度)(270°~90°或-90°~90°)
#i=cos[#j] 余弦(度)
#i=Acos[#j]反余弦(度)(180°~0°)
#i=TAN[#j] 正弦(度)
#i=ATAN[#j]/[#k] 反正切(度)(0°~360°或-180°~180°)
#i=SQRT[#j] 平方根
#i=ABS[#j] 绝对值
#i=BIN[#j] 十——二进制转换
#i=BCD[#j] 二——十进制转换
#i=ROUND[#j] 四舍五入圆整
#i=FIX[#j] 舍去小数部分
#i=FUP[#j] 小数部分进行到整数
#i=LN[#j] 自然对数
#i=EXP[#j] 指数函数
7、控制指令
1.分支语句
(1)无条件转移
指令格式;GOTOn;
无条件地跳转到顺序号为n的程序段中,顺序号必须位于程序段的最前面。
顺序号n也可用变量或[<表达式>]来代替。
(2)条件转移指令格式
1)IF[<条件表达式>]GOTOn
若<条件表达式>成立,则跳转到顺序号为n的程序段中,若<条件表达式>不成立,则执行下个程序段。
2)IF[<条件表达式>]THEN<表达式〉
如果条件表达式满足执行预先决定的宏程序语均,只执行一个宏程序语均。
例IF[#1EQ#2]THEN#3=0;
〈条件表达式〉的运算符由2个字母组成。
#jEQ#K 即 #j=#k
#jNE#K #j≠#k
#jGT#k #j>#k
#jLT#k #j<#k
#jGE#k #j≥#k
#jLE#k #j≤#k
2、重复语句
指令格式;WHTLE[<条件表达式>]Dom(m=1,2,3)
ENDM
若满足〈条件表达式〉的条件时,则重复执行从Dom到ENDm
之间的程序段,若不满足条件时,则执行ENDM之后的程序段。
循环练习;
1、 计算数值1~100的总和
o0010;
#1=0;………………………存储和数变量的初值
#2=1.;………………………被加数变量的初值.
N1IF[#2GT100.]G0T02;…当被加数大于100时转移到N2
#1=#1+#2;…………………计算和数
#2=#2+1.;…………………下一个被加数
G0T01;…………………… 转到N1;
N2M30;…………………….程序结束.
2计算1~100的偶数合
o0020;
#1=2.;……………………被加数变量的初值
#2=0;……………………存储和数变量的初值
N1IF[#1GT100]G0T02;…当被加数大于100时转移到N2
#2=#2+#1;………………计算和数
#1=#1+2.…………………下一个被加数
G0T01;……………………转到N1
N2M30;………………… 程序结束
3.计算1~100的奇数和
o0030;
#1=1.;
#2=0;
N1IF[#1GT99]G0T02;
#2=#2+#1;
#1=#1+2.;
G0T01;
N2M30;
8、用宏程序加工椭圆
椭圆
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令