文档库 最新最全的文档下载
当前位置:文档库 › FANUC+宏程序宏变量说明.pdf

FANUC+宏程序宏变量说明.pdf

FANUC+宏程序宏变量说明.pdf
FANUC+宏程序宏变量说明.pdf

新代数控车床宏程序说明

一.用户宏程序的基本概念 用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。 用户宏有以下四个主要特征: 1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式; 2)能够进行变量之间的各种运算; 3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参; 4)容易实现程序流程的控制。 使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。 二.基本书写格式 数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。“@MACRO”关键词必须是大写字母。 对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。 例一:MACRO格式文档 % @MACRO //用户宏程序文档,必须包含“@MACRO”关键词 IF @1 = 1 THEN G00 X100.; ELSE G00 Z100.; END_IF; M99; 例二:ISO格式文档 % 这是标题行,可当作档案用途说明,此行可有可无 G00 X100.; G00 Z100.; G00 X0; G00 Z0; M99;

宏程序变量

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.常用数学函数:数控编程中用到的函数主要是数学函数。一般数控系统均提供下列函数:

宏程序变量说明

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

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

自变量的两种赋值方法 注意: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重(包括函数中的括号) 控制命令

宏程序的基本概念知识讲解

数控铣削宏程序编程(一) 一、宏程序的基本概念 1、宏程序的定义 以一组子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程序;调用宏程序的指令称为“用户宏程序指令”,或宏程序调用指令(简称宏指令)。 宏程序与普通程序相比较,普通的程序字为常量,一个程序只能描述一个几何形状,所以缺乏灵活性和适用性。而在用户宏程序的本体中,可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处理。通过使用宏程序能执行一些有规律变化(如非圆二次曲线轮廓)的动作。 宏程序分A类和B类两种,FANUCi系统采用B类宏程序进行编程。 2、宏程序中的变量 在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址,为了使程序更加具有通用性、灵活性,故在宏程序中设置了变量。 1)、变量的表示:一个变量由符号“#”和变量序号组成,如:#I(I=1,2,……)。此外,变量还可以用表达式进行表示,但其表达式必须全部写入方括号“[]”中。 例:#100,#500,#5,#[#1+#2+#10]; 2)、变量的引用:将跟随在地址符后的数值用变量来代替的过程称为引用变量。同样,引用变量也可以用表达式。 例G01X#100 Y—#101F[#101+#103];

当#100=100.0、#101=50.0、#103=80.0时,上例即表示为G01 X100.0 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、变量的赋值 变量的赋值方法有两种,即直接赋值和引数赋值,其中直接赋值

数控宏程序的使用方法

数控宏程序的使用方法 一、A类宏程序 1)变量的定义和替换#i=#j 编程格式G65 H01 P#i Q#j 例G65 H01 P#101 Q1005;(#101=1005) G65 H01 P#101 Q-#112;(#101=-#112) 2)加法#i=#j+#k 编程格式G65 H02 P#i Q#j R#k 例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 例G65 H04 P#101 Q#102 R#103;(#101=#102×#103) 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│) 8)复合平方根1 #i= 编程格式G65 H27 P#i Q#j R#k 例G65 H27 P#101 Q#102 R#103;( #101= 9)复合平方根2 #i= 编程格式G65 H28 P#i Q#j R#k 例G65 H28 P#101 Q#102 R#103 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) 2)逻辑与#i=#j AND #k 编程格式G65 H12 P#i Q#j R#k 例G65 H12 P#101 Q#102 R#103;#101=#102 AND #103 (3)三角函数指令 1)正弦函数#i=#j×SIN(#k) 编程格式G65 H31 P#i Q#j R#k (单位:度) . 例G65 H31 P#101 Q#102 R#103;(#101=#102×SIN(#103)) 2)余弦函数#i=#j×COS(#k) 编程格式G65 H32 P#i Q#j R#k (单位:度) 例G65 H32 P#101 Q#102 R#103;(#101=#102×COS(#103)) 3)正切函数#i=#j×TAN#k 编程格式G65 H33 P#i Q#j R#k (单位:度) 例G65 H33 P#101 Q#102 R#103;(#101=#102×TAN(#103)) 4)反正切#i=A TAN(#j/#k) 编程格式G65 H34 P#i Q#j R#k (单位:度,0o≤ #j ≤360o) 例G65 H34 P#101 Q#102 R#103;(#101=A TAN(#102/#103) (4)控制类指令 编程格式G65 H80 Pn (n为程序段号) 例G65 H80 P120;(转移到N120) 2)条件转移1 #j EQ #k(=) 编程格式G65 H81 Pn Q#j R#k (n为程序段号) 例G65 H81 P1000 Q#101 R#102 当#101=#102,转移到N1000程序段;若#101≠ #102,执行下一程序段。 3)条件转移2 #j NE #k(≠) 编程格式G65 H82 Pn Q#j R#k (n为程序段号) 例G65 H82 P1000 Q#101 R#102 当#101≠ #102,转移到N1000程序段;若#101=#102,执行下一程序段。 4)条件转移3 #j GT #k (> ) 编程格式G65 H83 Pn Q#j R#k (n为程序段号) 例G65 H83 P1000 Q#101 R#102 当#101 > #102,转移到N1000程序段;若#101 ≤#102,执行下一程序段。 5)条件转移4 #j LT #k(<) 编程格式G65 H84 Pn Q#j R#k (n为程序段号) 例G65 H84 P1000 Q#101 R#102 当#101 < #102,转移到N1000;若#101 ≥ #102,执行下一程序段。 6)条件转移5 #j GE #k(≥) 编程格式G65 H85 Pn Q#j R#k (n为程序段号) 例G65 H85 P1000 Q#101 R#102 当#101≥ #102,转移到N1000;若#101<#102,执行下一程序段。 7)条件转移6 #j LE #k(≤) 编程格式G65 H86 Pn Q#j Q#k (n为程序段号) 例G65 H86 P1000 Q#101 R#102 当#101≤#102,转移到N1000;若#101>#102,执行下一程序段。 二、B类宏程序 1.定义 #I=#j 2.算术运算 #I=#j+#k (加) #I=#j-#k (减) #I=#j×#k (乘) #I=#j/#k (除) 3.1 逻辑函数之布尔函数 =EQ等于 ≠NE不等于 >GT大于 ]GOTO n 条件式:例:#j=#k用#j EQ #k 表示,即IF[#j EQ #k] GOTO n 3〉.条件转移2格式:IF[<条件式>]THEN #I 例:IF[#j EQ #k] THEN #a=#b 4〉.循环格式:WHILE [<条件式>] DOm ,(m=1、2、3) N10~~~~~~~~~ N20~~~~~~~~~~~~ ENDm (上下两个m只能为1、2、3且必须相 同,这样才能够成一段程序的循环) 1.说明1) 角度单位为度例:90度30分为90.5度 2) A TAN函数后的两个边长要用“1”隔开例:#1=A TAN[1]/[-1]时,#1为了35.0 3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入 例:设#1=1.2345,#2=2.3456,设定单位1μm G91X-#1;X-1.235 X-#2F300;X-2.346 X[#1+#2];X3.580 未返回原处,应改为X[ROUND[#1]+ROUND[#2]]; 4) 取整后的绝对值比原值大为上取整,反之为下取整例:设#1=1.2,#2=-1.2时若#3=FUP[#1]时,则#3=2.0 若#3=FIX[#1]时,则#3=1.0 若#3=FUP[#2]时,则#3=-2.0 若#3=FIX[#2]时,则#3=-1.0 5) 简写函数时,可只写开头2个字母例:ROUND→RO FIX→FI GOT O→GO 6) 优先级函数→乘除(*,1,AND)→加减(+,-,OR,XOR)例:#1=#2+#3*SIN[#4]; 7) 括号为中括号,最多5重,园括号用于注释语句例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重) 转移与循环指令

FANUC系统变量在宏程序中的应用

intelligent manufacture 智能制造 2019年 第1期冷加工 https://www.wendangku.net/doc/b8378519.html, 76 FANUC 系统变量在宏程序中的应用 ■■宜宾普什联动科技有限公司 (四川 644000) 王 强 摘要:在现代数控加工中,加工工艺相同的一些零件或零件的某一部分,多采用局部、公共变量的宏编程方法编制制成固定的循环程序,可减少编程时的重复工作,提高效率,减少占用机床系统空间。宏程序中加入系统变量,可以对一些需要重复设置的系统参数值进行自动校对,防止由于人为不稳定因素导致的错误。 大型航空铝合金C 形结构件附加值高,是我公司加工的主要产品。每个产品都有一个耳片槽,槽宽针对不同型号尺寸有所差异,加工的开口槽相对于耳片厚度中心对称度要求较高。实际 生产中为了切槽对刀方便,原有程序设置了与加工外形不同Z 零点的工件坐标系,操作者偶尔会因为操作失误,导致在设置G54、G55坐标系时X 、Y 零点机械坐标值不一致(程序要求一致)的情况;其次,对刀时Z 坐标偶尔也会因为加减对刀块尺寸而计算错误。为此,针对FANUC 系统在原有宏程序的基础上,加入了平时使用较少的系统变量,在加工前 自行进行G54、G55坐标系的比对,对切槽坐标系G55的Z 坐标与基础数据进行±0.1m m 的比对,达到了预期效果。 FANUC 系统各变量类型及用途如附表所示。 1.示例 下面以MAZAK V1400 A/B 轴的五轴机床为例进行宏程序说明,系统为FANUC Series 15i -M 。零件外形如图1所示,为了保证切槽宽度与耳片厚度对称度,切槽程序Z 值加工零点与其外形程序不是同一个工件坐标系,分别为G54、G55两个工件坐标系,X 、Y 零点一样,Z 零点需要单独设置。 切槽宏程序中引用了系统变量,主要起到了以下作用:①自动核对G54、G55坐标系中X 、Y 零点机械坐标值是否一致。②自动核对G55中Z 零点机械坐标值是否在基础值-342.74m m 范围内 FANUC 系统变量表 变量号变量类型功能及用途 #0总是0此变量永远是0,不能赋值。 #1-#33局部变量只能用在当前宏程序中存储变量,断电后数据初始化。 #100-#199#500-#999公共变量不同的宏程序可以共享共用的变量。当切断电源时,变量#100-#199被清空,初始化为0;变量#500-#999在切断电源后能保持数据,属于保持型变量。 #1000~ 系统变量 可用于读写CNC 运行时的各种数据,如当前的工件坐标系中的位置和刀具数据偏置。

FANUC数控系统宏程序编程

FANUC数控系统宏程序编程 2009-09-16 21:11 2009-05-15 04:25 统宏程序编程 一变量 普通加工程序直接用数值指定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 当引用未定义的变量时,变量及地址都被忽略。 例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。 双轨迹(双轨迹控制)的公共变量 对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。 未定义的变量 当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 引用 当引用一个未定义的变量时,地址本身也被忽略。 当#1= 当#1=0 G90 X100 Y#1 G90 X100 G90 X100 Y#1 G90 X100 Y0 (b) 运算 除了用赋值以外,其余情况下与0相同。 当#1=时 当#1=0时 #2=#1 #2= #2=#1 #2=0 #2=#*5 #2=0 #2=#*5 #2=0 #2=#1+#1 #2=0 #2=#1+#1

宏程序使用说明

第五章用户宏程序 变量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用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报警. ●小数点的省略 当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1的实际值是。 ●变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。

例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如: 当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。 例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。 例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。 ●双轨迹(双轨迹控制)的公共变量 对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数和6037的设定,某些公共变量可同时用于两个轨迹。 ●未定义的变量 当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 (a)引用 当引用一个未定义的变量时,地址本身也被忽略。 当#1=<空>当#1=0 G90 X100 Y#1 ↓ G90 X100G90 X100 Y#1 ↓ G90 X100 Y0 (b) 运算 除了用<空>赋值以外,其余情况下<空>与0相同。 当#1=<空>时当#1=0时 #2=#1 ↓ #2=<空>#2=#1 ↓ #2=0 #2=#*5 ↓ #2=0#2=#*5 ↓ #2=0 #2=#1+#1 ↓ #2=0#2=#1+#1 ↓ #2=0 (c)条件表达式 EQ和NE中的<空>不同于0。 当#1=<空>时当#1=0时 #1EQ#0 ↓ 成立#1EQ#0 ↓ 不成立 #1 NE #0 ↓ 成立#1 NE #0 ↓ 不成立

Fanuc系统宏程序变量

系统变量用于读和写NC 内部数据,例如,刀具偏置值和当前位置数据。但是,某些系统变量只能读。系统变量是自动控制和通用程序开发的基础。说明接口信号是可编程机床控制器(PMC)和用户宏程序之间交换的信号。 刀具补偿值:用系统变量可以读和写刀具补偿值。 可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿和刀尖补偿。当偏置组数小于等于200 时,也可使用#2001~#2400。 宏程序报警:

例: #3000=1(TOOL NOT FOUND) →报警屏幕上显示“3001 TOOL NOT FOUND”(刀具未找到) 停止和信息显示:程序停止执行并显示信息。 时间信息:时间信息可以读和写。

自动运行控制:可以改变自动运行的控制状态。 ·当电源接通时,该变量的值为0。 ·当单程序段停止无效时,即使单程序段开关设为ON,也不执行单程序段停止。 ·当指定不等待辅助功能(M,S 和T 功能)完成时,在辅助功能完成之前,程序即执行到下一程序段。而且分配完成信号DEN 不输出。

·当电源接通时,该变量的值为0。 ·当进给暂停无效时: (1)当进给暂停按钮被按下时,机床以单段停止方式停止。但是,当用变量#3003 使单程序段方式无效时,单程序段停止不执行。 (2)当进给暂停按钮压下又松开时,进给暂停灯亮,但是,机床不停止;程序继续执行,并且机床停在进给暂停有效的第一个程序段。 ·当进给速度倍率无效时,倍率总为100%,而不管机床操作面板上的进给速度倍率开关的设置。 ·当准确停止检测无效时,即使那些不执行切削的程序段也不进行准确停止检测(位置检测)

KND宏程序说明

附: 用户宏程序说明 把由一组指令实现的某种功能象子程序一样事先存入存储器中,用一个命令代表这些功能。程序中只要写出该代表命令,就能实现这些功能。把这一组命令称为用户宏程序本体,把代表命令称为"用户宏命令"。用户宏程序本体有时也简称宏程序。用户宏指令也称为宏程序调用命令。 主程序 用户宏程序命令用户宏程序本体完成某功能的一 组指令 编程人员不必记忆用户宏程序本体,只要记住作为代表命令的用户宏指令就行了。 用户宏程序最大特点是在用户宏程序本体中,能使用变量。变量间可以运算,并且用宏指令命令, 可以给变量赋值。 1 用户宏指令 用户宏指令是调用用户宏程序本体的命令。 M98 P 被调用的宏程序本体的程序号。 利用上述指令,可调用用P 指定的宏程序本体。 2 用户宏程序本体 在用户宏程序本体中,可以使用一般的CNC指令,也可使用变量,运算及转移指令。 用户宏程序的本体,以O后续的程序号开始,用M99结束。 O8000 ; G65 H01 ... ... ; G90 G00 X#101 ... .. ; ... ... ... G65 H82 ... ; ... ... M99 ;程序号 运算指令 使用变量的CNC指令转移指令 用户宏程序本体结束 用户宏程序本体的构成

2.1 变量的使用方法 用变量可以指令用户宏程序本体中的地址值。变量值可以由主程序赋值或通过LCD/MDI设定,或者在执行用户宏程序本体时,赋给计算出的值。 可使用多个变量,这些变量用变量号来区别。 (1) 变量的表示 用#后续变量号来表示变量, 格式如下: #i (i = 200, 202, 203, 204 ……) (例) #205, #209, #1005 (2) 变量的引用 用变量可以置换地址后的数值。 如果程序中有<地址>#i或者<地址>-#i,则表示把变量的值或者把变量值的负值作为地址值。 (例)F#203…当#203 = 15时,与F15指令是同样的。 Z-#210…当#210 = 250时,与Z-250是同样的。 G#230…当#230 = 3时,和G3是同样的。 用变量置换变量号时,不用##200描述,而写为#9200,也就是#后面的"9" 表示置换变量号,下面的三行是置换变量号的实例。 (例)#200 = 205, #205 = 500时。 X#9200和X500指令是同样的。 X-#9200和X-500指令是同样的。 注1: 地址O和N不能引用变量。不能用O#200,N#220编程。 注2: 如果超过了地址所规定的最大指令值,不能使用。#230 = 120时, M#230超过了最大指令值。 注3: 变量值的显示和设定:变量值可以显示在CRT画面上,也可以用MDI键给变量设定值,其操作方法,请参照Ⅲ10.3用户宏程序的变量值一项。 2.2 变量的种类 根据变量号的不同,变量分为公用变量和系统变量,它们的用途和性质都不同。 (1) 公用变量#200~#231,#500~#515 公用变量在主程序以及由主程序调用的各用户宏程序中是公用的。即某一用户宏程序中使用的变量#i 和其它宏程序使用的#i是相同的。因此,某一宏程序中运算结果的公用变量#i可以用于其他宏程序中。 公用变量的用途,系统中不规定,用户可以自由使用。 公用变量#200~#231,切断电源时清除,电源接通时全部为"0"。 公用变量#500~#531,即使电源切断了也不能清除,其值保持不变。 (2) 系统变量 此变量的用途在系统中是固定的。 在此ITBII型系统中无。 2.3 运算命令和转移命令(G65) 一般形式: G65 Hm P#i Q#j R#k ; m: 01~99表示运算命令或转移命令功能。 #i: 存入运算结果的变量名。 #j: 进行运算的变量名1。也可以是常数。常数直接表示,不带#。 #k: 进行运算的变量名2。也可以是常数。

新代数控车床宏程序说明.doc

一.用户宏程序的基本概念 用一指令构成某功能,并且象子程序一存在存器中,再把些存的功能由一个指令来代表,行只需写出个代表指令,就可以行其相的功能。 在里,所存的一指令叫做宏程序体 (或用宏程序 ),称用宏。其代表指令称用宏命令,也称作宏程序用指令。 用宏有以下四个主要特征: 1)在用用宏程序中可以使用量,即宏程序体中能含有复的表达式; 2)能行量之的各种运算; 3)可以用用宏指令量行,就象多高言中的参函数或程, 参能形参; 4)容易程序流程的控制。 使用用宏的主要方便之在于由于可以用量代替具体数,因而在加工同一的 工件.只得将的予量既可,而不需要每个不同的零件都一个程序。 二.基本书写格式 数控程序文档中,一般以“ %”字符作第一行的起,行将被行。当行含有关字 “ @MACRO ” 整个文档就会以系所定的 MACRO 法理。如果行无“ @MACRO ”关 此档案就会被一般 ISO 程序文档格式理,此将不能写用宏和使用其 MACRO 法。而当写 ISO 程序文档行一般可以省略,直接写数控程序。“ @MACRO ”关必是大写字母。 于程序的注可以采用“//??”的形式,和高言C++一。 例一: MACRO 格式文档 % @MACRO//用宏程序文档,必包含“@MACRO ”关 IF @1 = 1 THEN G00 X100.; ELSE G00 Z100.; END_IF; M99; 例二: ISO 格式文档 %是行,可当作档案用途明,此行可有可无 G00 X100.; G00 Z100.; G00 X0; G00 Z0; M99; 第1页

三.用户宏程序的编写 如前所述,量是指可以在用宏程序中的地址后代替具体数,在用宏程序行的符号# i (i = 1,2,3,? )。使用量可以使用宏程序具有通用性。用宏程序中可以使用多个量,以量号行。 1、量的形式 量是用符号#或 @后面加上量号所构成的,即: #i(i = 1, 2, 3,? ) 例如:# 5 #109 #1005 也可用# [ <表达式> ] 的形式来表示。 例如:# [#100] #[#1001-1] #[#6/2] 其,通用符号 @后面加上量号也可构成的量,即: @ i(i =1,2,3,? ) 例如: @5 @ [@5] 但一般地,由符号 @后面加上量号构成的量称全局量,不提倡在用宏程序中使用,具体后面的介。 2、量的引用 在地址符后的数可以用量置。 例如: 若写成 F#33, 当# 33=1.5 ,与 F1.5 相同。 若写成 Z-#18, 当# 18=20.0 ,与 Z-20.0 相同。 但需要注意,作地址符的O、N、/等,不能引用量。 例如, O#27、N#1 等,都是的。 3、未定量 尚未被定的量,被称空(VACANT )。 量# 0,@0 始空,常被用作空量使用。 3.变量赋值和引数赋值 量:用宏程序中量使用运算符“:=”,不可用“ =”符号。 因在本系中符号“ =”是被定关系运算符,用来比是否相等的。 例如 #30:=100,会将量 #30 整数 100;而 #30=100,将不能量 #30 ,上是比量 #30 是否与整数 100 相等。 第2页

宏程序变量设置

宏程序 大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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内

相关文档