宏程序变量说明
宏程序时间变量用法
宏程序时间变量用法宏程序时间变量用法,让你的加工如有神助!嘿,朋友!今天我要给你唠唠宏程序里时间变量这个超厉害的玩意儿,学会了它,能让你的加工效率蹭蹭往上涨!咱们先来搞清楚啥是时间变量。
简单说,时间变量就像是一个专门记录时间的小秘书,它能帮咱们在加工过程中准确掌握时间,做出各种神奇的操作。
那咋用这个时间变量呢?别着急,我给你一步一步说。
第一步,咱们得先在程序开头把这个“小秘书”请出来。
就像你邀请好朋友来家里做客一样,得先给它安排个位置。
比如,用“#500 = 0”这样的语句,这就相当于给时间变量 #500 初始化,让它从零开始准备工作。
我跟你说,我刚开始学的时候,这一步老是忘,结果程序跑得乱七八糟,就像没头的苍蝇到处乱撞,闹了不少笑话!第二步,在程序运行的过程中,要让这个时间变量开始工作,记录时间。
这时候就得用到系统自带的一个函数,叫做“#500 = #500 + 0.001 * 运行时间”。
这就好比给小秘书手里塞了个秒表,它能精准地把每一秒都记下来。
有一次,我不小心把这个公式写错了,结果时间变量完全乱套,加工出来的东西那叫一个惨不忍睹啊,被师傅好一顿批!第三步,根据记录的时间来控制程序的走向。
比如说,如果时间超过了某个设定值,就执行某个特定的操作。
这就像你跑步,设定跑 30分钟就休息,时间一到,立马停下。
我有一回,设定的时间太紧张了,程序还没完成任务就被我强行喊停,那场面,就跟心急吃不了热豆腐一样,全搞砸啦!再给你举个例子,假如咱们在加工一个零件,要求加工10 分钟后,刀具要进行一次自动补偿。
那咱们就可以这样写程序:```#500 = 0 ; 初始化时间变量N10 ...... ; 加工的程序段#500 = #500 + 0.001 * 运行时间 ; 让时间变量开始记录IF [#500 GT 600] THEN ; 如果时间超过 10 分钟(600 秒)...... ; 执行刀具补偿的程序段ENDIF```你看,是不是挺简单的?但要注意啊,这里面的每个步骤都不能马虎,不然就会像我之前那样,出一堆乱子。
宏程序变量
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。
宏程序的变量
宏程序的变量宏程序的变量分为两大类一。
一般变量。
又分为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是刀具半径补正的磨耗值。
发那克系统中宏程序的变量
发那克系统中宏程序的变量在发那克系统中宏程序的变量分为两大类一。
一般变量。
又分为3种。
1;#1~#33普通变量。
是可以程序中引如的,可以在程序中用字母对其赋值。
赋值的方法两种,字母对应的方式和ABCIJKIJKIJK方式。
程序执行结束后,此变量中的值会自动消去。
2;#100~#149中间变量。
一般用于中间计算。
程序执行结束后,此变量中的值不会自动消去,但关机再开时,不被保存。
3。
#500~#531保持变量。
一般用于功能程序的常量指定。
可以保存。
关机再开不会消去。
二。
系统变量系统变量是对应系统功能的变量值。
他们的位址是固定对应的,FANUC基本上所有系统都可以通用。
系统变量可以与PMC读入,输出部分信号,可以读取系统时间日期,可以输出报警,可以记忆所执行过的代码状态,可以设定系统的一些基本设置,可以设定坐标系,刀补,磨耗值,可以自行设定固定循环中的执行状态。
#1000~#1136等变量是对应PMC进行信号的读入输出,如果要进行功能性的控制的话,当然PMC要对应这些信号。
#3000是报警输出。
例:#3000=15(data error),执行的话,如果是O系统,会显示515 DATA 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是刀具半径补正的磨耗值。
宏程序基本知识
程序
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。
宏程序宏变量
五、未定义的变量
2.运算
当#1=<空> #2=#1
#2=<空> #2=#1*30
#2=0 #2=#1+#1
#2=0
Produced by Miss Xie
当#1=0 #2=#1 #2=0 #2=#1*30 #2=0 #2=#1+#1 #2=0
六、变量使用的限制
Produced by Miss Xie
程序号,顺序号和任选程序段跳转号不能使用变量 例:下面情况不能使用变量 O#1 /#2 GO0 X100 N#3 Y200
对于这一些加工内容我们就可以使用用户宏程序方式来 进行编程。编程时加工程序可以直接编写也可用一条简单指 令调出用户宏程序,和调用子程序完全一样。 在以前的加工程序中,直接用数值指定G代码和移动距离。 例如G01和Y50。而使用用户宏程序时,数值可以直接指定或 用变量指定。当用变量时,变量值可用程序或用MDI面板上的 操作改变。如:
#200~#249:例0层如局部#变[#量1+#2-12]
局部变量和公共变量可以有变量
用户宏程序的变量用变量符号(#)和后面的变量号指定。
TRUE:条件成立(真)
TRUE:条件成立(真)
当要改变引用变量的值的符号时,要把符号(-)放在#的前面。
当引用未定义的变量时,变量及地址字都被忽略。
宏变量宏常量
机械制造技术《数控车加工》
数控车床开机操作
一
变量的表示
二
变量的类型
三
变量值的表示范围
四
变量的引用
四
未定义的变量
四
变量使用的限制
Produced by Miss Xie
Produced by Miss Xie
宏程序变量设置
宏程序大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z 坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用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加指令;格式G65 H02 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减指令;格式G65 H03 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乘指令;格式G65 H04 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除指令;格式G65 H05P#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 正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H33和H34本来应该是TAN 和A TAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么? 开平方根指令: H21;格式G65 H21 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程序段,如果不符合就继续执行下面的程序段. 用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!觉得此文对你有所帮助的朋友,请收藏转发!收藏同时也请不要吝惜在评论区给小编任意留言,或文末点个赞!也好让小编知道有多少人看,也是以后更新的动力!1.什么是宏程序?在数控编程中,用户宏程序是数控系统中的特殊编程功能。
所谓用户宏程序其实是把一组带有变量的子程序事先存储在系统存储器中,并通过主程序中的宏程序调用指令调用并执行这一组程序。
由于数控系统的指令功能有限,而宏程序功能可以显著地增强机床的加工能力,同时可精简程序,所以宏程序编程是加工编程的重要补充。
用户宏程序可以用公式来加工零件,例如加工椭圆,如果用常规的编程方法,需要逐点算出曲线上的点,然后用直线或圆弧进行拟合逼近,所以编程时需要计算很多的点。
如果使用用户宏程序,可以直接把椭圆公式编入到程序中,加工零件时系统会自动计算出曲线上各点的坐标,大大减轻了编程的工作量。
2.什么是变量?变量是指在程序的运行过程中随时可以发生变化的量。
普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100.0等,这些数值都是常量,所以一个程序只能描述一个几何形状。
而用户宏程序本体中可以使用变量进行编程,编程时可以使用变量进行算术运算、逻辑运算和函数的混合运算,这样就可以实现编制一个程序,即可加工尺寸不同但是形状相同的工件,加工时只需修改少数几个参数,从而可以使用宏程序执行一些有规律变化的动作。
变量分局部变量,公共变量(全局变量)和系统变量三种。
局部变量是一个在宏程序中局部使用的变量,即只在本程序内起作用。
例如当宏程序A调用宏程序B而且都有变量#1时,由于变量#1服务于不同的宏程序,所以宏程序A中数控cnc的#1与宏程序B 中的#1不是同一个变量,因此可以赋于不同的值,相互间互不影响。
局部变量不能在程序运行时加以修改,只能由程序控制。
在使用局部变量时,必须在程序中赋初值。
当断电时,局部变量被初始化为空,调用宏程序时,自变量对局部变量赋值,公共变量贯穿于整个程序过程,即在所有程序中起相同的作用。
一文搞懂数控车宏程序的变量及应用,值得收藏!
邹军:邀你一起学CNC宏程序编程(基础篇)《宏程序编程》3.0版本,是军哥的第三套宏程序教程。
主要传授数车宏程序编程。
当我自己写了这么多套教程,我才发现其实市面大部分书籍,资料都太垃圾。
为什么这么说呢?先看看下面截图内容:这是市面上销量不错的宏程序书籍中的内容,军哥截取了部分。
没有对比就没有伤害,军哥给你分享《宏程序编程》3.0版本宏变量的内容。
学宏程序之前要先学变量。
1,什么是变量军哥,你经常说玩宏就是玩变量,什么是变量啊?一脸迷惑的小白想从军哥这得到答案。
军哥把桌上的电脑转动到小白面前,让他先看了看下面这个零件图。
问道,你该知道这个零件如何编写程序吧。
小白一看,这个简单,不就车外圆吗?自己计算点位坐标一句一句写代码,于是………..G0X42.Z2.X36.G01Z-30.F0.1X42.G0Z2.X32.G01Z-30.F0.1…………这种办法可以编写出来,但是OUT了,小白突然想起G90,G71等循环指令,是的,G90 G71等循环指令,其实是系统厂商用宏程序开发出来的G代码。
本质上属于宏程序范畴,你学会宏程序,也可以定义属于自己的G代码,让程序通用性强,关于这点绝活,军哥我后面传授,就目前而言,先把变量理解透彻。
你看上面程序G代码后面都是些具体的数值,那么变量并非是一个具体数值,而是由符号来代替具体数值。
举个例子,上面零件毛坯为D42 ,要加工到尺寸D20,长为20,那么我用符号#1,#2,#3分别定义为毛坯尺寸,要加工到的尺寸,加工的长度等。
这个程序如下军哥我用#1,#3等符号来代表零件的毛坯尺寸,零件的长度等,加工形状相似,尺寸不同的零件,这个程序就有了通用性。
看完军哥的讲解,小白顿时觉得采用#1,#2这种符号来编写程序太方便了。
于是小白接着问:“#1,#2,#3这种“符号”怎么理解?是不是还可以使用#4,#5,#6等等。
军哥我知道小白是个善于思考的人,于是就给他讲到:这些符号就是宏变量,你看市面上有不少数控系统,如三菱,法拉克,哈斯,广州数控,华中数控等等,变量都是由#和数字组成。
宏程序变量说明
用户宏程序变量说明变量普通加工程序直接用数值指定G代码和移动距离;例如,G01 和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI 面板操作改变。
#1=#2+100;G01 X#1 F300;说明变量的表示一般编程方法允许对变量命名,但用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型。
变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量。
#1—#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果。
当断电时,局部变量被初始化为空。
调用宏程序时,自变量对局部变量赋值。
#100—#199 公共变量#500—#999 公共变量在不同的宏程序中的意义相同。
当断电时,变量初始化为空。
变量#500——#999 的数据保存,即使断电也不丢失。
#1000— 系统变量系统变量用于读和写CNC 的各种数据,例如,刀具的当前位置和补偿值。
注意小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1 的实际值是123.000。
变量的引用在地址后指定变量号即可引用其变量值。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当系统的最小输入增量为1/1000mm 单位,指令G00X#1,并将12.3456 赋值给变量#1,实际指令值为G00X12.346;。
改变引用变量的值的符号,要把负号(—)放在#的前面。
例如:G00X—#1;(a)引用当引用一个未定义的变量时,地址本身也被忽略。
例如:当变量#1 的值是0,并且变量#2 的值是空时,G00X#1 Y#2 的执行结果为G00X0;(b)运算除了用<空>赋值以外,其余情况下<空>与0 相同。
宏程序变量设置
宏程序变量设置宏程序大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用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加指令;格式G65 H02 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减指令;格式G65 H03 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乘指令;格式G65 H04 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正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q 后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H32 COS余玄函数指令:格式G65 H32#101 Q#102 R#103;含义Q后面的#102是三角形的斜边 R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么? 开平方根指令: H21;格式G65 H21 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程序段,如果不符合就继续执行下面的程序段. 用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
Fanuc系统宏程序变量
Fanuc系统宏程序变量
刀具补偿值:用系统变量可以读和写刀具补偿值。
可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿和刀尖补偿。
当偏置组数小于等于200 时,也可使用#2001~#2400。
例:
当执行#1=#4002;时,在#1 中得到的值是17,18 或19。
对于不能使用的G 代码组,如果指定系统变量读取相应的模态信息,则发出P/S 报警。
当前位置位置信息:不能写,只能读
·第1 位代表轴号(从1 到3)。
·变量#5081~#5083 存储的刀具长度补偿值是当前的执行值,不是后面程序段的处理值。
·在G31(跳转功能)程序段中跳转信号接通时的刀具位置储存在变量#5061 到#5063 中。
当G31 程序段中的跳转信号未接通时,这些变量中储存指定程序段的终点值。
·移动期间不能读是指由于缓冲(预读)功能的原因,不能读期望值。
工件坐标系补偿值:工件零点偏移值的系统变量(工件零点偏移值)。
宏程序变量设置
宏程序大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z 坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用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加指令;格式G65 H02 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减指令;格式G65 H03 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乘指令;格式G65 H04 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除指令;格式G65 H05P#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 正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H33和H34本来应该是TAN 和A TAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么? 开平方根指令: H21;格式G65 H21 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程序段,如果不符合就继续执行下面的程序段. 用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
宏程序的变量
宏程序的变量(总1页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除宏程序的变量宏程序的变量分为两大类一。
一般变量。
又分为3种。
1;#1~#33普通变量。
是可以程序中引如的,可以在程序中用字母对其赋值。
赋值的方法两种,字母对应的方式和ABCIJKIJKIJK 方式。
程序执行结束后,此变量中的值会自动消去。
2;#100~#149中间变量。
一般用于中间计算。
程序执行结束后,此变量中的值不会自动消去,但关机再开时,不被保存。
3。
#500~#531保持变量。
一般用于功能程序的常量指定。
可以保存。
关机再开不会消去。
二。
系统变量系统变量是对应系统功能的变量值。
他们的位址是固定对应的,FANUC基本上所有系统都可以通用。
系统变量可以与PMC读入,输出部分信号,可以读取系统时间日期,可以输出报警,可以记忆所执行过的代码状态,可以设定系统的一些基本设置,可以设定坐标系,刀补,磨耗值,可以自行设定固定循环中的执行状态。
#1000~#1136等变量是对应PMC进行信号的读入输出,如果要进行功能性的控制的话,当然PMC要对应这些信号。
#3000是报警输出。
例:#3000=15(d ata error),执行的话,如果是O系统,会显示515 DATA ERROR的报警,在1 6 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~#129 99是刀具半径补正的磨耗值。
宏程序编程之系统变量
宏程序之系统变量普通的加工程序直接数字标注G代码和移动距离,例如G55 X55.0,用定制宏指令时,可以直接用数字或使用变量。
当使用变量号时可通过程序或MDI操作改变变量值,例如:#33=#1+10.5 G01 X#1 F500变量的表示:当标注一个变量时在符号(#)的后面标注变量号,例如:#1表达式可以用来当变量号,但表达式必须放在括号里,例如:#[#33-2+#4]变量的类型:变量的取值范围:局部变量和公共变量可以取常规范围内的任意值,如果计算无结果会P/S 警报器报警。
小数点的使用:在程序中给变量进行赋值时,可以省略小数点。
例如:#1=100;意义就是变量#1的实际值是100.000。
变量的使用:在程序中要使用一个变量值,在地址语句后面标注变量号即可,当用表达式标注变量时表达式要放在括号里,例如:G02 I[#1+#18]F#9;在1/1000mm的增量系统中被使用的变量值的小数点后面第四位会被四舍五入。
例如:#1=500.123678;那么当执行G00X#1时实际的命令会被翻译成G00X500.124;当使用了一个没有定义的变量时,该变量会被忽略。
例如#1=0;#2是空,那么当运行G00X#1Y#2;时其结果是G00X0;未定义的变量:当没有给变量定义值时,该变量称为“空”变量。
变量#0永远是空变量,它不能写,但能读。
比如: 当使用了一个没有定义的变量时,该变量会被忽略。
除非用<空>代替否则 <空>等于0, 当用在条件表达式时:只在EQ 和NE 时<空>才不等同于0变量不能使用的情况:程序号、顺序号、选择快的跳跃不能使用变量。
例如:O#2;/#3G00Z300.0; N#9Y1000.0; 这种情况都是不可以使用变量的情况。
系统变量 :可以用系统变量读和写CNC 内部的数据,如当前的工件坐标系中的位置和刀具偏置数据,有些系统变量只能读。
系统变量对编写自动化程序和通用程序十分重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户宏程序变量说明
变量普通加工程序直接用数值指定G代码和移动距离;例如,G01 和
X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI 面板操作改变。
#1=#2+100;
G01 X#1 F300;
说明
变量的表示一般编程方法允许对变量命名,但用户宏程序不行。
变量用变量符号(#)
和后面的变量号指定。
例如:#1
表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]
变量的类型变量根据变量号可以分成四种类型。
变量号变量类型功能
#0 空变量该变量总是空,没有值能赋给该变量。
#1—#33 局部变量
局部变量只能用在宏程序中存储数据,例如,运算结果。
当断电时,局部变量被初始化为空。
调用宏程序时,自变
量对局部变量赋值。
#100—#199 公共变量
#500—#999 公共变量在不同的宏程序中的意义相同。
当断电时,变量
初始化为空。
变量#500——#999 的数据保存,即使断电
也不丢失。
#1000—系统变量
系统变量用于读和写CNC 的各种数据,例如,刀具的当前
位置和补偿值。
注意
小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1 的实际值是123.000。
变量的引用在地址后指定变量号即可引用其变量值。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;
被引用变量的值根据地址的最小设定单位自动地舍入。
例如:
当系统的最小输入增量为1/1000mm 单位,指令G00X#1,并将
12.3456 赋值给变量#1,实际指令值为G00X12.346;。
改变引用变量的值的符号,要把负号(—)放在#的前面。
例如:G00X—#1;
(a)引用
当引用一个未定义的变量时,地址本身也被忽略。
例如:
当变量#1 的值是0,并且变量#2 的值是空时,G00X#1 Y#2 的执行结果为G00X0;
(b)运算
除了用<空>赋值以外,其余情况下<空>与0 相同。
(c)条件表达式
EQ 和NE 中的<空>不同于0。
限制
程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:
○#1;
/#2G00X100.0;
N#3Y200.0;
工件坐标系补偿值工件零点偏移值可以读和写。
变量号功能
#5201 第1 轴外部工件零点偏移值
::
#5204 第4 轴外部工件零点偏移值
#5221 第1 轴G54 工件零点偏移值
::
#5224 第4 轴G54 工件零点偏移值
#5241 第1 轴G55 工件零点偏移值
::
#5244 第4 轴G55 工件零点偏移值
#5261 第1 轴G56 工件零点偏移值
::
#5264 第4 轴G56 工件零点偏移值
#5281 第1 轴G57 工件零点偏移值
::
#5284 第4 轴G57 工件零点偏移值
#5301 第1 轴G58 工件零点偏移值
::
#5304 第4 轴G58 工件零点偏移值
#5321 第1 轴G59 工件零点偏移值
::
#5324 第4 轴G59 工件零点偏移值
限制
括号([,])用于封闭表达式。
注意,圆括号用于注释。
运算误差运算时,可能出现误差。
·变量值的精度约为8 位十进制数。
当在加/减运算中处理非常大的数时,将得不到期望的结果。
例:
当试图把下面的值赋给变量#1 和#2 时:
#1=9876543210123.456
#2=9876543277777.777
变量值变成:
#1=9876543200000.000
#2=9876543300000.000
此时,当计算#3=#2-#1;时,结果为#3=100000.000。
(该计算的实际结果稍有误差,因为是以二进制执行的。
)
·还应该意识到,使用条件表达式EQ,NE,GE,GT,LE 和LT 时可
能造成误差。
例如:
IF[#1EQ#2]的运算会受#1 和#2 的误差的影响,由此会造成错误的判断。
因此,应该用IF[ABS[#1-#2]LT0.001]代替上述语句,以避免两个变量的误差。
当两个变量的差值未超过允许极限(此处为0.001)时,则认为两个
变量的值是相等的。
·使用下取整指令时应小心。
例如:
当计算#2=#1*1000,式中#1=0.002 时,变量#2 的结果值不是准确的2,可能是1.99999997。
这里,当指定#3=FIX[#2]时,变量3 的结果值不是2,而是1.0。
此
时,可先纠正误差,再执行下取整,或是用如下的四舍五入操作,
即可得到正确结果。
#3=FIX[#2+0.001]
#3=ROUND[#2]
除数当在除法或TAN[90]中指定为0 的除数时,出现P/S 报警No.112。
局部变量说明表。