宏程序变量

合集下载

fanuc宏程序 第1类 自变量制定法

fanuc宏程序 第1类 自变量制定法

fanuc宏程序第1类自变量制定法Fanuc宏程序是数控系统中的一种编程语言,通过它可以实现自动化加工。

Fanuc宏程序有四种类别,其中第一类是自变量制定法。

自变量制定法是指在宏程序中可以通过设定自变量的方式,实现程序的灵活性和可复用性。

具体来说,自变量制定法可以让用户在宏程序中设定参数,通过修改参数的值,实现对程序逻辑的控制和调整。

在Fanuc宏程序中,自变量的制定有两种方式:基于常量和基于变量。

基于常量的自变量制定法,是在程序中直接定义参数的值,比如定义一个整型参数为5,那么在程序中可以使用这个参数,对其进行加减乘除等操作。

基于变量的自变量制定法,是在程序中定义一个变量,然后通过使用变量的值来控制程序执行流程。

例如,可以定义一个整型变量x,根据x的值来决定程序执行的路径。

自变量制定法的一个优点是可以提高程序的可读性和可维护性。

通过将参数和变量放入宏程序中指定的位置,可以直观地了解程序的逻辑和参数的作用。

同时,如果需要修改参数的值,只需要在宏程序中修改一次即可,不需要修改多个地方。

这样既方便了程序的调试和维护,又减少了出错的可能性。

另外,自变量制定法还可以提高程序的灵活性。

因为参数的值是可以在程序运行过程中修改的,所以可以根据工件的不同要求,动态调整程序的行为。

比如,在程序中定义一个加工深度的参数,可以根据不同工件的硬度和要求,修改这个参数的值,从而实现不同的加工效果。

除了灵活性和可维护性外,自变量制定法还可以提高程序的复用性。

通过将参数和变量定义为通用的,可以将它们用于不同的宏程序和工艺中。

这样可以减少重复编写相似代码的工作量,提高编程效率。

总之,Fanuc宏程序的第一类自变量制定法是一种非常实用的编程方法。

它通过设定自变量,使程序具有灵活性、可读性和可维护性,同时还能提高程序的复用性。

在实际应用中,我们可以根据工件的不同要求,合理地设定自变量的值,实现更加智能化和高效的加工过程。

宏程序时间变量用法

宏程序时间变量用法

宏程序时间变量用法宏程序时间变量用法,让你的加工如有神助!嘿,朋友!今天我要给你唠唠宏程序里时间变量这个超厉害的玩意儿,学会了它,能让你的加工效率蹭蹭往上涨!咱们先来搞清楚啥是时间变量。

简单说,时间变量就像是一个专门记录时间的小秘书,它能帮咱们在加工过程中准确掌握时间,做出各种神奇的操作。

那咋用这个时间变量呢?别着急,我给你一步一步说。

第一步,咱们得先在程序开头把这个“小秘书”请出来。

就像你邀请好朋友来家里做客一样,得先给它安排个位置。

比如,用“#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、宏程序的定义以一组子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程序;调用宏程序的指令称为“用户宏程序指令”,或宏程序调用指令简称宏指令;宏程序与普通程序相比较,普通的程序字为常量,一个程序只能描述一个几何形状,所以缺乏灵活性和适用性;而在用户宏程序的本体中,可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处理;通过使用宏程序能执行一些有规律变化如非圆二次曲线轮廓的动作;宏程序分A类和B类两种,FANUCi系统采用B类宏程序进行编程;2、宏程序中的变量在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址,为了使程序更加具有通用性、灵活性,故在宏程序中设置了变量;1、变量的表示:一个变量由符号“”和变量序号组成,如:II=1,2,……;此外,变量还可以用表达式进行表示,但其表达式必须全部写入方括号“”中;例:100,500,5,1+2+10;2、变量的引用:将跟随在地址符后的数值用变量来代替的过程称为引用变量;同样,引用变量也可以用表达式;例G01X100 Y—101F101+103;当100=、101=、103=时,上例即表示为G01 Y50.0 F130;3、变量的种类:变量分为局部变量、公共变量全局变量和系统变量三种;在A、B类宏程序中,其分类均相同;A、局部变量1~33是在宏程序中局部使用的变量;当宏程序C 调用宏程序D而且都有变量1时,由于变量1服务于不同的局部,所以C 中的1与D中的1不是同一个变量,因此可以赋予不同得不偿失值,且互不影响;关闭电源时,局部变量被初始化成“空”;宏调用时,自变量分配给局部变量;B、公共变量100~149/199;500~549/599贯穿于整个程序过程;他可以在不同的宏程序间共享,当宏程序C调用宏程序D而且都有变量100时,由于100是全局变量,所以C中的100与D中的100是同一个变量;关闭电源时变量100~149被初始化成“空”,而变量500~531保持数据;公共变量150~199和532~999也可以选用,但是当这些变量被使用时,纸带长度减少了8.5米;C、系统变量1000~是指有固定用途的变量,它的值决定系统的状态;系统变量用于读写各种NC数据项,如当前位置、刀具补偿值;系统变量包括刀具偏置值变量,接口输入与接口输出信号变量及位置信号变量等;二、宏程序编程1、变量的赋值变量的赋值方法有两种,即直接赋值和引数赋值,其中直接赋值的方法较为直观,方便,其书写格式如下:例:100=101=+;2、宏程序运算指令宏程序的运算类似于数学运算与逻辑运算,用各种数学符号来表示;常用运算指令表如下:变量的各种运算宏程序计算说明如下:①、角单位:在SIN,COS,TAN,ATAN中所用的角度单位是度,分和秒要换算成带小数点的度; 如90°30′表示°,而30°18 ′表示°;②、ATAN功能:在ATANT之后的两个变量用“/”分开,结果在0°和360°之间;如当1=ATANT1/—1时,1=;③、ROUND功能:当ROUND功能包含在算术或逻辑操作、IF语句、WHILE语句中时,将保留小数点后一位,其余位进行四舍五入;例:1=ROUND2;其中2=,则1=当ROUND出现在NC语句地址中时,进位功能根据地址的最小输入增量四舍五入指定的值;例:编一个程序,根据变量1、2的值进行切削,然后返回到初始点;假定增量系统是1/1000mm,1=,2=则G00 G91 X—1;移动1.235mmG01 X—2 F300;移动2.346mmG00 X1+2;因为+=移动3.580mm刀具此时不能返回到加工的初始位置;而换成G00XROUND1+ROUND2时能返回到初始点;④、上进位和下进位成整数:例:1=、2=—则:3=FUP1,结果3= 3=FIX1,结果3=3=FUP2,结果3=—3=FIX2,结果3= —⑤、算术和逻辑操作的缩写方式:取功能块名的前两个字符,例:ROUND RO;⑥、宏程序数学计算的次序依次为:函数运算SIN,COS,ATAN等,乘和除运算,/,AND等,加和减运算+,—,OR,XOR等;⑦、函数中的括号;括号用于改变运算次序,函数中的括号允许嵌套使用,但最多只允许嵌套5级;例1=SIN2+34+5/6;注意:在加工程序中,方括号用于封闭表达式,圆括号用于注释;3、宏程序转移指令控制指令起到控制程序流向的作用;在一个程序中,控制程序流向可以用GOTO、IF语句改变;有三种分支循环语句如下:GOTO语句无条件分支;IF语句条件分支:if...,then...;WHILE语句循环语句while...;①、分支语句格式一:GOTO n;例GOTO 1000;无条件转移语句,当执行该程序时,无条件转移到N1000程序段执行,顺序号可以用表达式;格式二: IF 条件表达方式GOTO n;例IF1GT100GOTO 100;有条件转移语句,如果条件成立,则转到N程序段执行,如果条件不成立,则执行下一句程序; 一个条件表达式一定要有一个操作符,这个操作符插在两个变量或一个变量和一个常数之间,并且要用方括号括起来,即:表达式操作符表达式;条件式的种类如下表:表达式种类②、循环指令WHILE 条件式DO mm=1,2,3,…;……END m;当条件式满足时,就循环执行WHILE与END之间的程序段m次,当条件不满足时,就执行ENDm;的下一个程序段;③、宏程序的嵌套A、WHILE 条件式DO m和END m必须成对使用,并且,DO m 一定要在END m之前指定,用m来识别;B、同一识别号m可以在一个程序中多次使用,但DO m与END m必须成对使用;C、在一个程序中DO的范围不能够交叉,DO可以嵌套三重;D、在DO m~END m的内部可以用GOTO n转移到外部,但不可以从外部用GOTO n转移到DO m~END m的内部;E、从DO m~END m内部可以调用用户宏程序或子程序;DO m~END m可以在用户宏程序或子程序中嵌套三重;F、用跳转语句和重复语句编程时,一般重复语句执行的时间比较短;三、编程练习试用B类用户宏程序编制如下图工件的精加工程序图1 注:切深1mm/次图2 注:Z向深5mm,1mm/次。

数控宏程序变量赋值试题

数控宏程序变量赋值试题

数控宏编程变量相关理论知识试卷一、选择题(选择正确的答案,将相应的字母填入题内的括号中。

每题0.5分。

共160题,满分80分):1.在变量赋值方法Ⅱ中,自变量地址I6对应的变量是()。

A、#40B、#39C、#19D、#262.在运算指令中,形式为#i=ROUND[#j]代表的意义是()。

A、圆周率B、四舍五入整数化C、圆弧度D、加权平均3.下列宏程序的变量表示不正确的是()。

A、#0B、#[200-1]C、#10D、#[#57]4.FOR 当一个带有一个确定值的操作程序被循环重复,()循环就会被运行。

A、FORB、GOTOC、ELSED、WHILE5.在发那克0i系统中,描述算术运算的反正切的正确格式是()。

A、#i=ATAN[#j/#k]B、#i=A TAN[#j]C、#i=ATAN[#j]/[#k]D、#i=TAN[#j]/[#k]6.在变量赋值方法I中,引数(自变量)A对应的变量是()。

A、#22B、#1C、#110D、#257.在运算指令中,形式为#i=TAN{#j}代表的意义是()A、正切B、合并C、反余切D、立方根8.在运算指令中,形式为#i=SQRT[#j]代表的意义是()A、矩阵B、平方根C、积数D、权数9.FOR计算循环表达式:FOR变量=初始值TO最后值:NC程序().A、ENDLOOPB、ENDIFC、ENDWHILED、ENDFOR10.在运算指令中,形式为#i=#jMOD#K代表的意义是()A、反三角函数B、平均值C、空D、取余11、在运算指令中,形式为#i=#jXOR#k代表的意义是()A、立方值B、极限值C、异或D、均值12.在变量赋值方法一中,引数(自变量)M对应的变量是()A、#13B、#52C、#321D、#9513.计数变量同时会从初始值到最后值增加值必须小于最后值。

变量必须属于()类型。

A、char(字符)B、float (浮点)C、signed(符号)D、int(整数)14、在变量赋值方法I中,引数(自编量)J对应的变量是()。

宏程序的变量

宏程序的变量

宏程序的变量宏程序的变量分为两大类一。

一般变量。

又分为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是刀具半径补正的磨耗值。

数控宏程序的局部变量 系统变量 公共变量

数控宏程序的局部变量 系统变量 公共变量
例:下面情况不能使用变量:
0#1;
/#2G00X100.0;
N#3Y200.0;
二算术和逻辑运算
下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。
说明:
角度单位
函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30'表示为90.5度。
Y#103
X#100
Y#101
#100=#100+10.
#101=#101+10.
#103=#103-10.
#104=#104-10.
IF[#100EQ100.]GOTO3
GOTO4
N3
N1
M5
M9
G91G28Z0.
G28Y0.
M30
铣倾斜3度的面:
轨迹:
铣倾斜3度的面的代码如下:
O0001
#[#1+1*2]=1
-1047到-10-29或-10-2到-1047
如果计算结果超出有效范围,则发出P/S报警NO.111.
小数点的省略
当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
变量的引用
为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。
N30 #10=#4*COS[45]-#5*SIN[45]
N32 #11=#4*SIN[45]+#5*COS[45]
N34 G1 X#10 Y#11
N36 #1=#1+1
N38 IF [#1 LT 370] GOTO26

宏程序自变量的两种赋值方法

宏程序自变量的两种赋值方法

宏程序自变量的两种赋值方法宏程序是一种高级编程语言,用于自动化执行繁琐、重复的任务。

在宏程序中,自变量是一些可以在调用宏时被用户指定的参数。

用户可以通过两种方式为宏程序的自变量赋值,分别是位置参数和关键字参数。

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‎坐标并且每‎次加10u‎m那么宏就‎会自动算出‎X坐标并且‎进行切削,实际上宏在‎程序中主要‎起到的是运‎算作用..宏一般分为‎A类宏和B‎类宏.A类宏是以‎G65 Hxx P#xx Q#xx R#xx的格式‎输入的,而B类宏程‎序则是以直接的公‎式和语言输‎入的和C语言很相似在0‎i系统中应‎用比较广.由于现在B‎类宏程序的‎大量使用很多书都‎进行了介绍‎这里我就不‎再重复了,但在一些老‎系统中,比如法兰克‎O TD系统‎中由于它的‎M DI键盘‎上没有公式‎符号,连最简单的‎等于号都没‎有,为此如果应‎用B类宏程‎序的话就只‎能在计算机‎上编好再通‎过RSN-32接口传‎输的数控系‎统中,可是如果我‎们没有PC‎机和RSN‎-32电缆的‎话怎么办呢‎,那么只有通‎过A类宏程‎序来进行宏‎程序编制了‎,下面我介绍‎一下A类宏‎的引用; A类宏是用‎G65 Hxx P#xx Q#xx R#xx或G6‎5 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赋值‎;格式:G65H0‎1P#101Q#102:把#102内的‎数值赋予到‎#101中G65H0‎1P#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和H‎34本来应‎该是TAN‎和ATAN‎的可是经过‎我使用得数‎并不准确,希望有知道‎的人能够告‎诉我是为什‎么? 开平方根指令: H21;格式G65‎H21 P#101 Q#102 ;意思是把#102内的‎数值开了平‎方根然后存‎到#101中(这个指令是‎非常重要的‎如果在车椭‎圆的时候没‎有开平方跟的指令是‎没可能用宏‎做到的. 无条件转移‎指令: H80;格式:G65 H80 P10 ;直接跳到第‎10程序段‎有条件转移‎指令: H81 H82 H83 H84 H85 H86 ,分别是等于‎就转的H8‎1;不等于就转‎的H82;小于就转的‎H83;大于就转的‎H84;小于等于就‎转的H85‎;大于等于就‎转的H86‎;格式:G65 H8x P10 Q#101 R#102;将#101内的‎数值和#102内的‎数值相比较‎,按上面的H‎8x的码带‎入H8x中‎去,如果条件符‎合就跳到第‎10程序段‎,如果不符合‎就继续执行‎下面的程序‎段. 用户宏程序能完成某一‎功能的一系‎列指令像子‎程序那样存‎入存储器,用一个总指‎令来它们,使用时只需‎给出这个总‎指令就能执‎行其功能。

宏程序506变量

宏程序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程序段,如果不符合就继续执行下面的程序段. 用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。

一文搞懂数控车宏程序的变量及应用,值得收藏!

一文搞懂数控车宏程序的变量及应用,值得收藏!

邹军:邀你一起学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等等。

军哥我知道小白是个善于思考的人,于是就给他讲到:这些符号就是宏变量,你看市面上有不少数控系统,如三菱,法拉克,哈斯,广州数控,华中数控等等,变量都是由#和数字组成。

数控宏程序编程方法技巧与实例

数控宏程序编程方法技巧与实例

数控宏程序编程方法技巧与实例一、数控宏程序编程的基本方法:1.定义宏变量:宏变量是宏程序中使用的变量,用于传递参数或保存临时数据。

定义宏变量可以使用#VAR指令,例如“#VARx=10”表示定义一个宏变量x并赋值为10。

2. 定义宏:宏是一个带有参数的程序段,可以通过调用宏来实现一系列操作。

定义宏可以使用#MACRO指令,例如“#MACRO move(x,y) G0Xx Yy”表示定义一个名为move的宏,参数为x和y,宏体为“G0 Xx Yy”。

3. 调用宏:调用宏可以使用#CALL指令,例如“#CALLmove(100,200)”表示调用名为move的宏,并传递参数为100和200。

4.结束宏程序:使用#END指令结束宏程序的编写。

二、数控宏程序编程的技巧:1.使用循环结构:可以使用循环结构来简化重复性的操作,提高程序的效率。

例如,使用FOR循环可以实现多次重复执行同样的操作。

2.使用条件判断:在宏程序中可以使用条件判断来根据不同的情况执行不同的操作。

例如,使用IF-THEN-ELSE语句可以根据条件的结果选择执行不同的指令。

3.使用局部变量:在宏程序中可以定义局部变量,用于保存临时数据。

使用局部变量可以减少全局变量的使用,提高程序的可读性和可维护性。

4.通过参数传递数据:宏程序可以通过参数来传递数据,使得宏的使用更加灵活。

在调用宏时,可以传递不同的参数来实现不同的操作。

三、数控宏程序编程的实例:以制作一个矩形的宏程序为例,实现自动绘制不同尺寸的矩形。

```#VAR width=100#VAR height=200#MACRO rectangle(x,y)G0XxYyG1 X(x+width) YyG1 X(x+width) Y(y+height)G1 Xx Y(y+height)G1XxYy#END#CALL rectangle(0,0)```上述的宏程序定义了一个名为rectangle的宏,参数为x和y,表示矩形的左上角坐标。

宏程序变量说明

宏程序变量说明

用户宏程序变量说明变量普通加工程序直接用数值指定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系统宏程序变量

Fanuc系统宏程序变量
刀具补偿值:用系统变量可以读和写刀具补偿值。

可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿和刀尖补偿。

当偏置组数小于等于200 时,也可使用#2001~#2400。

例:
当执行#1=#4002;时,在#1 中得到的值是17,18 或19。

对于不能使用的G 代码组,如果指定系统变量读取相应的模态信息,则发出P/S 报警。

当前位置位置信息:不能写,只能读
·第1 位代表轴号(从1 到3)。

·变量#5081~#5083 存储的刀具长度补偿值是当前的执行值,不是后面程序段的处理值。

·在G31(跳转功能)程序段中跳转信号接通时的刀具位置储存在变量#5061 到#5063 中。

当G31 程序段中的跳转信号未接通时,这些变量中储存指定程序段的终点值。

·移动期间不能读是指由于缓冲(预读)功能的原因,不能读期望值。

工件坐标系补偿值:工件零点偏移值的系统变量(工件零点偏移值)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

(相当于汇编语言里的INC AL;basic里的i=i+1;pascal里的inc(i);C 语言里的i++。

)再如,当前#1=3,则执行#1=#1EQ3后,#1的值是1。

2.算术运算和逻辑运算:①算术运算就是加减乘除(+-*/)。

计算四则混合运算式时,先算乘除后算加减,如果有括号则先算括号里的。

例如1+2*(7-4)=7。

通常计算机程序设计里的括号用圆括号表示,但数控编程里用方括号表示。

数控编程里的圆括号表示注释(相当于汇编语言的分号、basic里的rem、pascal里的{}或(*…*)、C语言里的/*…*/。

)②逻辑运算常见的有以下4种:与(and)、或(or)、非(not)、异或(xor)。

与、或、非是基本逻辑运算,异或不是基本逻辑运算。

A和B相异或的结果是AB+AB。

“与”的运算规则是全1出1,有0出0,如1 and 1=1; 0 and 1=0;“或”的运算规则是全0出0,有1出1,如1 or 1=1; 0 or 1=1;“非”是单目运算符,即0变1,1变0。

程序设计中的逻辑值(也叫布尔值,即“真”和“假”)在计算机中用1和0表示,通常1表示“真”,0表示“假”。

如果是两个整数进行逻辑运算,则是这两个数的二进制的各位进行运算,例如5 and 6=4; 5 or 6=7。

具体用法你可以回忆一下计算机程序设计中的用法,数控编程中也同样使用。

and、or、not、xor四种运算符分别相当于汇编、basic或pascal里的and、or、not、xor;C语言里的&、|、!、^。

③数控编程中也可以使用取余运算(mod),例如10 mod 3=1。

mod相当于汇编、basic或pascal里的mo d、C语言的%。

④数控编程中的比较运算符和汇编语言(指Intel80x86汇编语言)里的相同,即EQ(等于)、NE(不等于)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于)。

相当于b asic或pascal里的=、<>、<、<=、>、>=,C语言里的==、!=、<、<=、>、>=。

3.常用数学函数:数控编程中用到的函数主要是数学函数。

一般数控系统均提供下列函数:
绝对值函数abs(x);平方根函数sqrt(x);三角函数sin(x);cos(x);tan(x) (单位是度,但华中是弧度);反三角函数asin(x);acos(x);atan(x);对数函数ln(x);指数函数exp(x);四舍五入取整函数round(x);截断取整函数fix(x);进位取整函数fup(x);以及把8421BCD码转二进制的函数bin(x) 和把二进制转8421BCD码的函数bcd(x)。

大多数数控系统要求函数名必须用大写,括号则必须用方括号。

例如G[#1GT30]X[50+2*ABS[#1]],当#1=20时相当于G0X90。

4.程序流程控制:程序流程可以进行无条件转移、条件转移、循环,还可以调用子程序或宏程序。

无条件转移的格式是GOTO_。

GOTO后面的数是要转移到的程序行的标号(即N_)。

如果无条件往回跳转,则有可能造成死循环(即程序无法自然执行结束)。

条件转移的格式是IF[……] GOTO_或IF[……]THEN……。

方括号内是一个逻辑值,通常使用一个判断表达式表示。

循环的格式是WHILE[条件表达式]DO m …… END m。

DO m和END m之间的部分是循环体,m是一个整数,用于说明哪个END和哪个DO配对。

m可重复使用,只有在循环嵌套时才需要改变m。

在进行程序跳转时,可由循环体内跳转至循环体外,但不能循环体外跳转至循环体内(各种编程语言均如此)。

宏程序(用G65调用或直接写成G××)和子程序(用M98调用或直接写成M××)主要有以下区别:
①宏程序可以传递参数,子程序不能传递参数。

②M98指令可以指定标号,故可以把子程序和主程序写在一个程序中(因系统而异);G65指令不能指定标号,宏程序必须单独写成一个程序。

③子程序里的变量不区分层次,主程序里的#1和子程序里的#1是同一个变量;宏程序里的变量区分层次,主程序里的#1和宏程序里的#1不是同一个变量。

这类似于pascal里的函数嵌套(C语言不允许函数嵌套)。

各系统还有自己的特点,如三菱可以写G#1+#2,法那科必须写成G[#1+#2];三菱可以写I F[#1]GOTO1(想想C语言里的if(a)...)法那科不行;西门子的变量是R1、R2,无条件转移是gotof、gotob等,细节的差别太多了,你参考一下系统说明书。

宏程序可以定义成G代码(如G200,只要系统没用到),用法和系统原带的几乎没有区别。

实际上系统原带的G代码除了一些基本的(如G0~G4等)大都是用宏程序实现的,如G73~G89(孔加工)、M6(换刀)等。

(我交待一句:你可以打开它们的宏程序看看,但不要修改!)
我花很大工夫给你回帖,不知你觉得有用没有。

请问你是学生还是已经参加工作了?在什么地方?你要是参加工作了,我可以再详细说说怎么编宏程序,其中涉及到程序设计思想、数学计算、系统变量、参数传递方法等等。

我也愿意多交流交流经验。

如果你是学生,我再多说恐怕你嫌太枯燥了。

相关文档
最新文档