宏程序自变量的两种赋值方法
宏程序A类B类G65等常见公式用法
例 G65 H02 P#101 Q#102 R#103;(#101=#102
+#103)
3)减法 #i=#j-#k
编程格式 G65 H03 P#i Q#j R#k
例 G65 H03 P#101 Q#102 R#103;(#101=
#102-#103)
4)乘法 #i=#j×#k
编程格式 G65 H04 P#i Q#j R#k
返回
◆语文•选修\中国小说欣赏•(配人教版)◆
• (2)逻辑运算指令
• 逻辑运算指令表
G码 H码
功能
G65 H11
逻辑“或”
定义 # i=# j ·OR ·# k
G65 H12
逻辑“与”
# i=# j ·AND ·# k
G65 H13
异或
# i=# j ·XOR ·# k
• 1)逻辑或#i=#j OR #k 编程格式G65 H11 P#i Q#j R#k 例G65 H11 P#101 Q#102 R#103;(#101=#102 OR #103) 表
G码 H码
功能
定义
G65 H31
正弦
# i=# j ·SIN ﹙# k﹚
G65 H32
余弦
# i=# j ·COS ﹙# k﹚
G65 H33
正切
# i=# j ·TAN﹙# k﹚
G65 H34
反正切
# i=ATAN﹙# j/# k﹚
• 1)正弦函数#i=#j×SIN(#k) • 编程格式G65 H31 P#i Q#j R#k (单位:度) • 例G65 H31 P#101 Q#102 R#103;(#101=
• 2)逻辑与 #i=#j AND #k 编程格式 G65 H12 P#i Q#j R#k
15 宏程序
《数控加工编程与操作》课程教案首页↓↓↓↓↓↓↓#1 #4 #5 #6 #7 #8 #9(4)变量的种类变量从功能上主要可归纳为两种,即:系统变量(系统占用部分),用于系统内部运算时各种数据的存储。
用户变量,包括局部变量和公共变量,用户可以单独使用,系统作为处理资料的一部分,变量类型见表4-5。
表4-5 系统变量类型变量名类型功能#0 空变量该变量总是空,没有值能赋予该变量用户变量#1~#33 局部变量局部变量只能在宏程序中存储数据,例如运算结果。
断电时,局部变量清除(初始化为空)可以在程序中对其赋值#100~#199#500~#999公共变量公共变量在不同的宏程序中的意义相同(即公共变量对于主程序和从这些主程序调用的每个宏程序来说是公用的)断电时,#100~#199清除(初始化为空),通电时复位到“0”;而#500~#999数据,即使在断电时也不清除#1000以上系统变量系统变量用于读和写CNC运行时各种数据变化,例如,刀具当前位置和补偿值等(5)算术与逻辑运算①运算类型宏程序具有赋值、算术运算、逻辑运算、函数运算等功能,见表4-6。
②混合运算时的运算顺序上述运算和函数可以混合运算,即涉及到运算的优先级,其运算顺序与一般数学上的定义基本一致,优先级顺序从高到低依次为:函数运算↓乘法和除法运算(*、/、AND)↓加法和减法运算(+、-、OR、XOR)如:③括号嵌套用“[]”可以改变运算顺序,最里层的[]优先运算。
括号[]最多可以嵌套5级(包括函数内部使用的括号)。
如:表4-6 变量的各种运算功能格式具体实例定义、置换#i=#j #20=500 #102=#10算术运算加法减法乘法除法#i=#j+#k#i=#j-#k#i=#j*#k#i=#j/#k#3=#10+#105#9=#3-100#120=#1*#24 #20=#6*360#105=#8/#7 #80=#21/4 正弦(度)#i=SIN[#j] #10=SIN[#3]#146=ASIN[#2]#132=COS[#30]#18=ACOS[#24]#30=TAN[#21]#146=ATAN[#1]/[2] 反正弦#i=ASIN[#j]余弦(度)#i=COS[#j]反余弦#i=ACOS[#j]正切(度)#i=TAN[#j]反正切#i=ATAN[#j]/[#k]平方根#i=SQRT[#j] #136=SQRT[#12]#5=ABS[#102]#112=ROUND[#23]#7=EXP[#31]#4=LN[#200]#105= FIX[#109]#104=FUP[#33] 绝对值#i=ABS[#j]四舍五入整数化#i=ROUND[#j]指数函数#i=EXP[#j](自然)对数#i=LN[#j]上取整(舍去)#i=FIX[#j]下取整(进位)#i=FUP[#j]逻辑运算与#i AND #j #126=#10AND#11#22=#5OR#18#12=#15XOR25 或#i OR #j异或#i XOR #j从BCD转为BIN #i =BIN[#j] 用于与PMC的信号交换从BIN转为BCD #i=BCD[#j]2. 转移与循环在程序中,使用GOTO语句和IF语句可以改变程序的流向。
宏程序A类B类G65等常见公式用法
• 5)除法 #i=#j / #k 编程格式 G65 H05 P#i Q#j R#k 例 G65 H05 P#101 Q#102 R#103;(#101= #102/#103) 6)平方根 #i= 编程格式 G65 H21 P#i Q#j 例 G65 H21 P#101 Q#102;(#101= ) 7)绝对值 #i=│#j│ 编程格式 G65 H22 P#i Q#j 例 G65 H22 P#101 Q#102;(#101=│#102│)
• (4)控制类指令 • 控制类指令表
G码
H码
功能
定义
G65
H80 无条件转移
GO TO n
G65
H81 条件转移1
G65
H82 条件转移2
G65
H83 条件转移3
G65
H84 条件转移4
G65
H85 条件转移5
IF # j=# k,GOTOn IF # j≠# k,GOTOn IF # j># k,GOTOn IF # j<# k,GOTOn IF # j≥# k,GOTOn
1、变量 在常规的主程序和子程序内,总是将一个具体的数值赋给一个地
址。为了使程序更具通用性、更加灵活,在宏程序中设置了变量,即 将变量赋给一个地址。 (1)变量的表示 变量可以用“#”号和跟随其后的变量序号来表示:#i(i=1,2,3......) 例:#5, #109, #501。 (2)变量的引用
G65
H22
绝对值
# i=|# j|
G65
H23
求余
# i=# j-trunc﹙# j/# k﹚·# k Trunc: 小数部分舍去
• 算术宏指令表(续)
G码 H码
功能
定义
宏程序的变量
宏程序的变量宏程序的变量分为两大类一。
一般变量。
又分为3种。
1;#1~#33普通变量。
是可以程序中引如的,可以在程序中用字母对其赋值。
赋值的方法两种,字母对应的方式和ABCIJKIJKIJK方式。
程序执行结束后,此变量中的值会自动消去。
2;#100~#149中间变量。
一般用于中间计算。
程序执行结束后,此变量中的值不会自动消去,但关机再开时,不被保存。
3。
#500~#531保持变量。
一般用于功能程序的常量指定。
可以保存。
关机再开不会消去。
二。
系统变量系统变量是对应系统功能的变量值。
他们的位址是固定对应的,FANUC基本上所有系统都可以通用。
系统变量可以与PMC读入,输出部分信号,可以读取系统时间日期,可以输出报警,可以记忆所执行过的代码状态,可以设定系统的一些基本设置,可以设定坐标系,刀补,磨耗值,可以自行设定固定循环中的执行状态。
#1000~#1136等变量是对应PMC进行信号的读入输出,如果要进行功能性的控制的话,当然PMC要对应这些信号。
#3000是报警输出。
例:#3000=15(data error),执行的话,如果是O系统,会显示515 DA T A ERROR的报警,在16 18以及I系列,则显示3015 DATA ERROR ,括号中最多25个字符。
#3006是信息的输出。
#2001~#2099对应加工中心,即M系列系统的刀具长度补正,可以读出和输入。
在16 18等高版本系统中,既可以使用#2001~#2099,也可以用#10001~#10999。
这是在使用刀长补正A 的时候的情况。
如果是刀长补正B的话,则#2201~#2400或#11001~#11200是形状补正号码,#2001~#2200或#10001~#10200是磨耗补正号码。
这是加工中心即M系列系统的情况,如果是车床,又有不同如果是刀具补正C的话,#2201~#2400是刀长补正的形状值,#2001~#2200是刀长补正的磨耗值,#13001~#13999是刀半径补正的形状值,#12001~#12999是刀具半径补正的磨耗值。
数控铣宏程序【精选文档】
三。
变量#1~#33在宏程序中储存数据,在程序中对其赋值。
赋值是将一个数据赋予一个变量。
例如#1=0,表示#1的值就是0,其中#1代表变量,#是变量符号,0就是给变量#1赋的值。
例如G0 X0 Y0;#1=100 ;#1=50;G01 X100 F500 ;G0 X0 Y0;#2=50;G01 X#1 F500;G0 X0 Y0 ;G01 X[#1+#2]F500;四. 变量之间的运算变量之间可以进行加,减,乘,除函数等各种运算例如#1=60;#2=SIN#1;运算顺序和一般数学上的定义相同例如#1=#2+3*SIN#4括号嵌套最里层的括号优先例如#6=COS[[[#5+#4]*#3+#2]*#1]比较难理解的一种情况#1=10;典型例子#1=0;#2=1;N01 IF[#2 GT 100] GOTO 02;#1= #1+#2;#2= #2+#1;GOTO 01;N02 M30;3。
循环(WHILE语句)在WHILE后制定一个条件表达式,当指定条件满足时,则执行从DO到END之间的程序,否则,转到END后的程序段例如#2=10;#3=20;WHILE[#2 LT #3]DO01;#2=#2—1;END01;实例运用O2012(螺旋铣孔)#1=50;圆孔直径#2=40;圆孔深度#3=30;刀具直径#4=0;Z坐标设为自变量,赋值为0#17=1;Z坐标每次递增量#5=[#1—#3]/2;刀具回转直径S1000 M3;G54 G90 G00 X0 Y0 Z30;G00 X#5Z[—#4+1];G01 Z-#4 F200;WHILE[#4 LT #2]DO01;#4= #4+#17;G03 I—#5 Z-#4 F1000;END 01;G03 I-#5;G01 X[#5—1];G0 Z100;M30;O2013(群孔)#1=40;最内圈孔圆心所在直径#2=30;每列孔间隔#3=12;孔的列数#4=10;空间隔#5=6;每列孔个数S1000 M3;G54 G90 G00 X0 Y0 Z30G16;#6=1;WHILE[#6 LE #3]DO 01;#7=1;WHILE[#7 LE #5]DO 02;#8= #1/2+[#7-1]*#4#9= [#6—1]*#2;G98 G81 X#8 Y#9 Z—60 R3 F100;#7=#7+1;END 02;#6=#6+1;END 01;G80 Z30;G15;M30;O2013(可变式深孔钻)#1=3;每次进给钱的缓冲高度#2=20;第一次钻深#3=0。
宏程序自变量的两种赋值方法
宏程序自变量的两种赋值方法宏程序是一种高级编程语言,用于自动化执行繁琐、重复的任务。
在宏程序中,自变量是一些可以在调用宏时被用户指定的参数。
用户可以通过两种方式为宏程序的自变量赋值,分别是位置参数和关键字参数。
1.位置参数赋值:位置参数是指按照参数顺序进行赋值的方式。
当调用宏程序时,用户可以按照参数定义的顺序依次给自变量赋值。
例如```MACRO example(a, b, c)//宏程序的实现ENDMACROexample(1, 2, 3)```在上面的例子中,调用了名为example的宏程序,并按照位置参数的顺序给自变量a、b、c分别赋值为1、2、32.关键字参数赋值:关键字参数是指通过指定参数名来进行赋值的方式。
在调用宏程序时,用户可以使用参数名和对应的值来给自变量赋值。
例如```MACRO example(a, b, c)//宏程序的实现ENDMACROexample(c=3, a=1, b=2)```在上面的例子中,通过关键字参数的方式给自变量a、b、c分别赋值为1、2、3关键字参数赋值的优势在于更加灵活,可以不按照参数定义的顺序进行赋值,并且可以只对需要赋值的自变量进行赋值,其他自变量则使用默认值。
此外,使用关键字参数赋值的代码可读性也更高,可以直观地看出每个自变量的值是什么。
宏程序中自变量的赋值方法不仅可以混合使用,而且在宏程序的定义中也可以指定部分自变量的默认值。
例如```MACRO example(a, b, c=3)//宏程序的实现ENDMACROexample(1, 2)```在上面的例子中,自变量c被定义为可选参数,其默认值为3、当调用example宏程序时,如果不指定c的值,则它的值将默认为3、如果指定了c的值,则按照所指定的值进行赋值。
在宏程序的实现中,可以通过使用这两种赋值方法来处理自变量。
程序根据参数的位置或关键字来获取自变量的值,并将其用于实现相应的功能。
通过适当选择位置参数和关键字参数的赋值方式,可以提高代码的可读性和可维护性,同时使宏程序更加灵活和易用。
宏程序基本知识
程序
G54G17G90G40
G00Z30M03S2000 定位于G54上方30mm处
X=R24Y=R25 移动刀具至圆心上方
AA:Z=-R4+1
接近工件
R4=R4+R17
指定当前加工高度
G01Z=-R4F50 下刀至加工位置
L10
调用子程序加工当前层
IF R4<R2-R17 GOTOB AA 如果当前加工深度比预定的还少一个层间距以上时,
G03I=-R8
逆时针走全圆
IF R8<R6-R5 GOTOB BB当当前偏移距离比最大走圆半径还少一个行距以上
时,继续加工
G01X=R24+R6
否则刀具移动到最大圆的走刀起点
G03I=-R6
逆时针走全圆
G00Z=-R4+0.5
提刀0.5mm
X=R24Y=R25
移动至孔的中心位置
RET
子程序结束,返回主程序
运算
控制指令
程序一般是顺序执行,使用控制指令起到控制程序流向的作用,常用的有下列三种: 1、无条件分支 格式:GOTOn 例:GOTO100,含义为程序转向N100程序段处。 2、条件分支 格式:IF[条件表达式]GOTOn 含义:若条件表达式成立,则程序转向段号为n的程序段处,否则继续执行下一句程序。 3、循环 格式:WHILE[条件表达式]DOm(m=1、2、3) ------- ENDm 含义:当条件满足时,招待WHILE与END之间的程序段,否则执行ENDm下一句程序段。
关量,电源关时不消失。 (3)系统变量(#2000~):如刀具补偿值#2000~#2200,工件偏置#5201~#5326. 3、变量的使用 在地址符(O、N、G、L、P及/除外)后接变量,如: F#1:如果#1=100.0,则表示F100 Z-#26:如果#26=3.0,则表示Z-3.0
宏程序变量设置
宏程序大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克O TD系统中由于它的M DI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用; A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令: H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中G65H01P#101Q#10:把10赋予到#101中H02加指令;格式G65H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101 G65 H02 P#101 Q#102 R10 G65 H02 P#101 Q10 R#103 G65 H02 P#101 Q10 R20 上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数值或变量号内的数值然后等于到P后面的变量号中. H03减指令;格式G65H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101 G65 H03 P#101 Q#102 R10 G65 H03 P#101 Q10 R#103 G65 H03 P#101 Q20 R10 上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数值或变量号内的数值然后等于到P后面的变量号中. H04乘指令;格式G65H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101 G65 H04 P#101 Q#102 R10 G65 H04 P#101 Q10 R#103 G65 H04 P#101 Q20 R10 上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数值或变量号内的数值然后等于到P后面的变量号中. H05除指令;格式G65H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101 G65 H05 P#101 Q#102 R10 G65 H05 P#101 Q10 R#103 G65 H05 P#101 Q20 R10 上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警) 三角函数指令: H31 SIN正玄函数指令:格式G65H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H32 COS余玄函数指令:格式G65H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H33和H34本来应该是TAN和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么? 开平方根指令: H21;格式G65H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的. 无条件转移指令: H80;格式:G65 H80 P10 ;直接跳到第10程序段有条件转移指令: H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段. 用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
宏程序506变量
宏程序506变量
1,变量的含义:
我们普通程序,如;
G01X100.Z100.F0.2
X,Z地址后面都是些常量,如果我们把这些常量用变量来编写如G01X#1Z#2F#3这就是我们所谓的宏程序。
那么#和后面的1、2、3、4.....数字标识到底什么关系。
我用自己的方式理解这些#号和后面的1、2、3....是用来区分这些宏代码的。
举个最简单的例子:如果有好几条路,我告诉你走路A。
但是所有的路口我都给你写上路A。
那么你还知道该怎么走么?
同理,#1#1#1.........,如果都是#1,当系统使用#1的时候,就不知道用那个了。
所以为了区分它们,就把后面的数字写成不同的,比如#1,#2,#3。
此时如果系统使用#1,就不会发生混乱了。
2,变量的赋值:
#1=1
#2=#1+1
#1=#1+1
就些是赋值。
首先我要说的是这里的等号不是我们学的数学里的等于。
他被定义为赋值运算,简单说就是这是一种属于系统的自定义运算,所以不能把数学里的等号相提并论。
我们看#1=1,
这行代码的意义是把数值1赋值给#1。
忘掉以前学的!!!!这是一种重新定义的符号。
意义跟1+1=2的=不是一个意思再看这个#2=#1+1,
就是把#1+1的运算结果赋值给#2(#1有前面赋值)
最后好多人不理解这个#1=#1+1,就是#1为什么=#1+1,等式两边怎么看丢觉得不能成立,前面我已经说了这里的=是定义为赋值意义的,不是等于的意思,这句是这么理解的把#1+1的运算结果重新赋值给#1取代以前#1赋值。
宏程序变量
1.变量:正如计算机程序设计中的变量一样,数控程序中也需要使用变量。
要进行程序流程控制,变量是必不可少的。
数控编程中的变量用符号#跟一个整数表示。
例如#1就是一个变量。
给变量赋值的方法和计算机编程一样,如#1=5。
(相当于basic或C语言的a=5,pasc al的a:=5。
)数控编程中的变量按作用域可分为三类:局部变量、全局变量、系统变量。
#1~#33是局部变量,局部变量只在本程序内起作用;#100~#199、#500~#599(现在很多系统都不止599了)是全局变量,在所有程序中起作用;#1000以上的是系统变量,控制着机床运行的各种状态,不要轻易修改。
局部变量不能在程序运行时再加以修改,只能由程序控制。
在使用局部变量时,必须在程序中赋初值。
全局变量可以程序运行时人为地加以修改。
在使用全局变量时,可以不在程序中赋初值,而在加工时打入所需值。
补偿量的本质是变量。
#0是空变量(相当于pascal的nil,C的NULL),不能给#0赋值。
注意:空变量和0是不同的。
正像在pascal里定义一个指针型变量p,则如下两句程序是不同的:p:=nil、p^:=0。
(或者C语言里的p=NULL、*p=0)当#1为0时,G1X100Y#1相当于G1X100Y0,而当#1为空时,G1X100Y#1相当于G1X100。
当#1为0时,G#1X100相当于G0X100,而当#1为空时,G#1X100相当于X100。
表示变量的#号后面的数也可以是表达式或变量。
例如,已知#1=5,#2=30,#3=25,#4=0,#5=80则#6=#[#1]相当于#6=80;#[3+4]=128相当于#7=128;#8=#[#4]相当于#8为空;#9=#[#2-#3]相当于#9=80;G#4X#2*#1Y#[#4]相当于G0X150。
变量可以自增或自减,变量经过运算后的值可以赋给自身。
例如,当前#1=3;则执行#1=#1 +1后#1的值是4。
最新FANUC宏程序讲解
5.SETTING值
变量号 #3005
功能 设定数据
赋值 可以
6.镜像
变量号 #3007
功能
使用外部开关或SETTING 操作设置的 各轴镜像状态可以通过输出信号镜像检 测信号读出
赋值 不可
7.加工零件数
变量号 #3901 #3902
功能 已加工零件数 所要求的零件数
赋值 可以 可以
8.模态信息
逻辑运算
种类 或
异或 与
名称 OR XOR AND
格式 #i = #j OR #k #i = #j XOR #k #i = #j AND #k
• 对32位的每一位按二进制进行逻辑运算
输入值
0
0
0
1
1
0
1
1
或
异或
与
0
0
0
1
1
0
1
1
0
1
0
1
2.运算顺序
① 函数 ② 乘除运算( * ,/,AND ) ③ 加减运算(+, - , OR , XOR )
• 当变量值未定义时,这样的变量成为<空>变量 • 变量#0 总是空变量,它不能写只能读
未定义变量的引用 当引用一个未定义的变量时,地址本身也被忽略
当#1=<空>时 当#1=0时
G90 X100 Y#1 G90 X100 Y#1
↓
↓
G90 X100
G90 X100 Y0
未定义变量的计算
除了用<空>赋值以外,其余情况下<空>与0 相同
含义 #j = #k #j ≠ #k #j > #k #j < #k #j ≥ #k #j ≤ #k
FANUC数车宏程序使用详解
说明
• 1.无限循环:当指定DO而没有WHILE语句时,产生
从DO到END的无限循环。
• 2.处理时间:当在GOTO语句中有标号转移的语句时,
进行顺序号检索,反向检索要比正向检索的时间长, 用WHILE 语句实现循环可减少处理时间。
• 3未定义的变量:在使用EQ和NE的表达式中<空>和
零有不同的效果,在其他形式的表达式中,空被当作 零。
• 从图中可以看出,编程所需节点,除A、 D、E 三点外, B、C 点均与球径 R 有关。 下面给出各节点坐标。
加工程序如下:
%1001 G98 S800 M3; T0101; G00 X45.0 Z2 .0M07; G71 U2 R1; G71 P10 Q20 U1 W0.2 F0.4 S750; N10 G0 X0 Z0 S1200; #1=15 G3 X[2*#1] Z-#1 R#1 F0.15; G1 Z[-20-2*#1]; X40.0 Z-60.0; Z-100.0; N20 X45; G70 P10 Q20; G0 X200. Z200.0; M30;
• 变量的赋值
程序中的地址 在宏程序体中的 变量 程序中的地址 在宏程序体中的 变量
A
#1
Q
#17
B
C
#2
#3
R
S
#18
#19
D
E F H I J K
#7
#8 #9 #11 #4 #5 #6
T
U V W X Y Z
#20
#21 #22 #23 #24 #25 #26
M
#13
• 变量的算术与逻辑运算
局部变量 局部变量只能用在宏 程序中存储数据,例 如运算结果。当断电 时局部变量被初始化 为空,调用宏程序时 自变量对局部变量赋 值。
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!觉得此文对你有所帮助的朋友,请收藏转发!收藏同时也请不要吝惜在评论区给小编任意留言,或文末点个赞!也好让小编知道有多少人看,也是以后更新的动力!1.什么是宏程序?在数控编程中,用户宏程序是数控系统中的特殊编程功能。
所谓用户宏程序其实是把一组带有变量的子程序事先存储在系统存储器中,并通过主程序中的宏程序调用指令调用并执行这一组程序。
由于数控系统的指令功能有限,而宏程序功能可以显著地增强机床的加工能力,同时可精简程序,所以宏程序编程是加工编程的重要补充。
用户宏程序可以用公式来加工零件,例如加工椭圆,如果用常规的编程方法,需要逐点算出曲线上的点,然后用直线或圆弧进行拟合逼近,所以编程时需要计算很多的点。
如果使用用户宏程序,可以直接把椭圆公式编入到程序中,加工零件时系统会自动计算出曲线上各点的坐标,大大减轻了编程的工作量。
2.什么是变量?变量是指在程序的运行过程中随时可以发生变化的量。
普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100.0等,这些数值都是常量,所以一个程序只能描述一个几何形状。
而用户宏程序本体中可以使用变量进行编程,编程时可以使用变量进行算术运算、逻辑运算和函数的混合运算,这样就可以实现编制一个程序,即可加工尺寸不同但是形状相同的工件,加工时只需修改少数几个参数,从而可以使用宏程序执行一些有规律变化的动作。
变量分局部变量,公共变量(全局变量)和系统变量三种。
局部变量是一个在宏程序中局部使用的变量,即只在本程序内起作用。
例如当宏程序A调用宏程序B而且都有变量#1时,由于变量#1服务于不同的宏程序,所以宏程序A中数控cnc的#1与宏程序B 中的#1不是同一个变量,因此可以赋于不同的值,相互间互不影响。
局部变量不能在程序运行时加以修改,只能由程序控制。
在使用局部变量时,必须在程序中赋初值。
当断电时,局部变量被初始化为空,调用宏程序时,自变量对局部变量赋值,公共变量贯穿于整个程序过程,即在所有程序中起相同的作用。
9-宏程序
运算的组合:以上算数运算和函数运算可以组合在一起使用,运算的优先顺序是:函数运算,乘除运算,加减运算
括号的应用:括号中的运算将优先进行。括号可以嵌套,最多5层。
控制语句
GOTO N_
N_:程序段序号,也可由变量或表达式替代
宏程序
说明:除了可以使用通常的CNC指令外,还可以使用变量进行算术运算和函数的混合运算,此外还可以使用其提供的循环语句、分支语句等。
好处:利于编制各种复杂的零件加工程序,减少及至免除手工编程时繁琐的数值运算,精简程序量。
最大特点:可以对变量进行运算。
变量:就是一个地址,其值可以不断改变,可将一个常数或表达式赋给一个变量。
初始状态下未赋值的本级变量皆为空白变量。
2、通用变量#100 - #144,#500 - #531
可在各个宏程序中被共同使用的变量,即此变量在不同宏程序中调用时含义相同。
变量的算数运算指令:
+ - * / =
GT(>) GE(≥) LT(<) LE(≤) NE(≠)
函数运算:sin[#i] cos[#i] tann [#i] atann [#i]
含义:
1、如果条件满足,则转而执行程序段N_中的操作
2、如果条件不满足,则执行下一段程序
IF语句一般不用于循环加工。
2、重复执行
格式:WHILE[条件表达式] DOm(m=1,2,3…)
………
………
ENDm
含义:
赋值格式:变量=常数 或 表达式
如:#2=124 #3=20*sin[#5]
变量的级别:
1、本级变量#1- #33,作用于单个宏程序中的变量。
宏程序
第八节B类型用户宏程序一、编程实例采用B类宏程序编写如图5—31所示零件型腔的精加工程序。
曲线方程为:X2/502+Y2/302=1图5-31完成此零件型腔的编程需掌握以下知识点。
二、B类宏程序的运算指令1.B类宏程序变量的赋值(1)直接赋值变量可以在操作面板上用MDI方式直接赋值,也可在程序中以等式方式赋值,但等号左边不能用表达式。
例#100=100.0;#100=30.0+20.0;(2)引数赋值宏程序以子程序方式出现,所用的变量可在宏调用时赋值。
如下所示:例 G65P1000X100.0Y30.0Z20.0;此处的X、Y、Z不代表坐标字,F也不代表进给字,而是对应于宏程序中的变量号,变量的具体数值由引数后的数值决定。
引数宏程序体中的变量对应关系有两种(如下表5-9及表5-10所示),此两种方法可以混用,其中G、L、N、O、P不能作为引数替变量赋值。
表5-9 变量赋值方法Ⅰ例变量赋值方法ⅠG65P0020A50.0X40.0F100.0经赋值后#1=50.0,#24=40.0,#9=100.0。
变量赋值方法ⅡG65P0030A50.0I40.0J100.0K0I20.0J10.0K40.0;经赋值后#1=50.0,#4=40.0,#5=100.0,#6=0,#7=20.0,#8=10.0,#9=40.0。
变量赋值方法Ⅰ、Ⅱ混合G65P0030A50.0D40.0I100.0K0I20.0;经赋值后,I20.0与D40.0同时分配给变量#7,则后一个#7有效,所以变量#7=20.0,其余同上。
2.B类宏程序运算指令B类宏程序的运算指令与A类宏程序的运算指令有很大的区别,它的运算类似于数学运算,用各种数学符号来表示。
常用运算指令如表5-11所示:宏程序计算说明如下:(1)函数SIN、COS等的角度单位是度,分和秒要换算成带小数点的度。
如90°30ˊ表示90.5°,而30°18ˊ表示30.3°。
宏程序编程解析
用户宏程序虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易。
可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序。
使用时,加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样。
一、变量普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100;G01 X#1 F300;说明:1、变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]2、变量的类型变量根据变量号可以分成四种类型。
3、变量值的表示范围局部变量和公共变量可以有0值或下面范围中的值:-1047至-10-29或10-29到1047如果计算结果超出有效范围,则发出P/S报警No.111。
4、小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000;5、变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#1;以1/1000mm的单位执行时,CNC把12.3456赋值给变量#1,实际指令值为G00X12.346;改变引用变量的值的符号,要把负号(一)放在#的前面。
例如:GOOX-#1;当引用未定义的变量时,变量及地址字都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0;。
6、未定义的变量当变量值未定义时,这样的变量成为“空”变量。
变量#0总是空变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自变量的两种赋值方法
注意:I J K 有先后顺序。
宏程序的调用格式,自变量的赋值不能出现G L N O P
非模态指令:G65P××××L××××;
模态指令: G66 P××××L××××;
用户宏程序本体
1,格式O××××(O9000~O9999)
#24=#41 #18COS[#1]
G0X#24
.
.
.
IF[#20G[#6]G0]709
M9M99
用9开头便于长期保存,在用户宏程序本体
中可以使用普通的NL语句采用变量的NL指令,运算指令和控制指令。
2,变量的表示与引用(用#表示变量数据)
A.[#]和后面的数据#1 #2 #3 …………
用公式表示#[#1+ #2 +#3]
B.引用<地址>#i--<地址>#i
#1等于空和等于零的区别
所以除取代外<空>与零相同。
1,所以O N 后面禁止用变量,变量号不得直接用变量号代替。
例如#30=5 #5=#30 #[#30]=#5 不得用##30
2,变量值不得超过各变量的最大允许值
3,小数点用于末位(默认)
4,未赋值变量用<空>#0表示空不等于0
5,引用未赋值的变量地址被忽略。
变量的类型按变量符合分为三种:局部变量公共变量系统变量。
局部变量(#1-#33)用于自变量空(复位开关机时)
分为5级,每级之间互不相同。
0级和1级的#1是两个不同的值。
每级A值不同用完保存用下一级变量。
公共变量:(#100~#149 #500~#531)#100~#149不保留与局部变量
相同
断电后#500~#531数值保留。
系统变量:(>#1000)特定
运算符号
1)变量的定义和置换#i=#j #1=2 #2=#1
2)加法运算#i=#1+#k #i=#j-#k #i=#jor#k
3)乘法运算#i=#j-#k #i=#j/#k #i=#jAnd#k
4)函数#i=Sin[#j]A Sin[#j]
#i=Cos[#j]A Cos [#j]
#i=tan[#j]A tan [#j]
#i=BIN[#j] 十进制转二进制
#i=BCD[#j] 二进制转十进制
#i=Round[#j] 四舍五入
#i=FIX[#j] 上取整
#i=FUP[#j] 下取整
#i=LN[#j] 自然对数
#i=EXP[#j] 指数对数
混合运算时先函数在乘除再加减,运算顺序的改变用[]先运算[] 最多有5重(包括函数中的括号)
控制命令
①分支语句.
㈠无条件转移;goton.欧不要输为零。
㈡条件转换语句;if<条件表达式>goton.当条件满足时跳转至某一段。
例;#1=0. #2=1. if﹝#2gt100﹞g0t010.。
N5 #1=#2+#1; #2=#2+#1;g0t05; n10m99;
if〈条件表达式〉then〈条件表达式〉如果条件满足执行预先决定的宏程序语句。
例;zf[#1eq#2]then#3=0
②循环语句;while〈表达式〉dom .... endm 。
如果满足条件表达式的条件时,重复执行don到end之间的程序段,若不满足时,执行end以后的程序段,无限循环,只有中间跳出语句时,才停止循环。
⒈while<条件表达式>dom和endm必须成对使用,且dom一定要在endm之前指令,用识别号m来识别。
⒉同一识别号可以多次使用,但dom和endm必须成对使用。
⒊do的范围不能交叉。
⒋do可以嵌套三层,d01d02d03end3end2end1;
⒌可以跳出不可跳入。
⒍从dom---endm内部可以调用宏程序或子程序。
Dom---endm可以在用户宏程序或子程序中嵌套三层。