华中数控与FANUC宏程序的区别 下载本文

内容发布更新时间 : 2024/11/15 3:21:46星期一 下面是文章的全部内容请认真阅读。

华中数控与FANUC宏程序的区别

大家都在问宏程序。其实所谓宏就是用公式来加工零件的。比如说椭圆,如果没有宏程序的话,我们要逐点算出曲线上的点,然后慢慢用直线或曲线逼近,如果是个光洁度要求很高的工件,那么需要计算的点就会很多,可是应用了宏后,我们把椭圆公式输入到系统中,然后我们给出Z坐标或X坐标并且每次加一个很小的数值,那么宏就会自动算出X坐标或Z坐标,并且进行切削。实际上宏在程序中主要起到的是运算作用。 一、FANUC系统宏程序

宏一般分为A类宏和B类宏.A类宏是以G65HxxP#xxQ#xxR#xx的格式输入的,而B类宏程序则是:

以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广。由于现在B类宏程序的大量使用,很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用。 A

类宏是用

G65HxxP#xxQ#xxR#xx

G65HxxP#xxQxxRxx格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般

OTD系统中有

#0~#100~#149~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据。我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单。 1、用户宏程序

能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。

所存入的这一系列指令——用户宏程序 调用宏程序的指令————宏指令 特点:使用变量 1)变量的表示和使用

变量表示

#I(I=1,2,3,…)或#[<式子>]

例:#5,#109,#501,#[#1+#2-12] 变量的使用

地址字后面指定变量号或公式 格式:<地址字>#I <地址字>-#I <地址字>[<式子>]

例:F#103,设#103=15则为F15 Z-#110,设#110=250则为Z-250 X[#24+#18*COS[#1]] 2)变量号可用变量代替

例:#[#30],设#30=3则为#3 3)变量不能使用地址O,N,I 例:下述方法下允许 O#1; I#26.00×100.0; N#3Z200.0;

4)变量号所对应的变量,对每个地址来说,都有具体数值范围

例:#30=1100时,则M#30是不允许的 5)#0为空变量,没有定义变量值的变量也是空变量

6)变量值定义:

程序定义时可省略小数点,例:#123=149 MDI键盘输一.变量的种类 ①局部变量#1~#33

一个在宏程序中局部使用的变量 例:A宏程序B宏程序 ……

#10=20X#10不表示X20 ……

断电后清空,调用宏程序时代入变量值 ②公共变量#100~#149,#500~#531 各用户宏程序内公用的变量

例:上例中#10改用#100时,B宏程序中的 X#100表示X20 #100~#149断电后清空

#500~#531保持型变量(断电后不丢失) ③系统变量

固定用途的变量,其值取决于系统的状态 例:#2001值为1号刀补X轴补偿值 #5221值为X轴G54工件原点偏置值

入时必须输入小数点,小数点省略时单位为μm

运算指令

运算式的右边可以是常数、变量、函数、式子 式中#j,#k也可为常量 式子右边为变量号、运算式 ⑴定义 #I=#j ⑵算术运算 #I=#j+#k #I=#j-#k #I=#j*#k #I=#j/#k ⑶逻辑运算 #I=#JOK#k #I=#JXOK#k #I=#JAND#k ⑸函数

#I=SIN[#j]正弦 #I=COS[#j]余弦 #I=TAN[#j]正切 #I=ATAN[#j]反正切 #I=SQRT[#j]平方根 #I=ABS[#j]绝对值

#I=ROUND[#j]四舍五入化整 #I=FIX[#j]下取整 #I=FUP[#j]上取整

#I=BIN[#j]BCD→BIN(二进制) #I=BCN[#j]BIN→BCD ⑹说明

1)角度单位为度 例:90度30分为90.5度

2)ATAN函数后的两个边长要用“1”隔开 例:#1=ATAN[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 6)优先级

函数→乘除(*,1,AND)→加减(+,-,OR,XOR)

例:#1=#2+#3*SIN[#4];

7)括号为中括号,最多5重,园括号用于注释语句 例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重) 2、转移与循环指令 1)无条件的转移 格式:GOTO1; GOTO#10; 2)条件转移

格式:IF[<条件式>]GOTOn 条件式: #jEQ#k表示= #jNE#k表示≠ #jGT#k表示> #jLT#k表示< #jGE#k表示≥ #jLE#k表示≤

例:IF[#1GT10]GOTO100; …

N100G00691X10; 例:求1到10之和 O9500; #1=0 #2=1

N1IF[#2GT10]GOTO2 #1=#1+#2; #2=#2+1; GOTO1 N2M301.循环

格式:WHILE[<条件式>]DOm;(m=1,2,3) … … … ENDm 说明:

1)条件满足时,执行DOm到ENDm,则从DOm的

程序段

不满足时,执行DOm到ENDm的程序段 2)省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环 3)嵌套

4)EQNE时,空和“0”不同 其他条件下,空和“0”相同 例:求1到10之和 二、HNC-21M数控系统

为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。 1、宏变量及常量 1.宏变量

#0~#49当前局部变量 #50~#199全局变量 #200~#2490层局部变量 #250~#2991层局部变量 #300~#3492层局部变量 #350~#3993层局部变量 #400~#4494层局部变量 #450~#4995层局部变量 #500~#5496层局部变量 #550~#5997层局部变量

#600~#699刀具长度寄存器H0~H99

#700~#799刀具半径寄存器D0~D99#800~#899刀具寿命寄存器 2、常量 PI:圆周率π TRUE:条件成立(真) FALSE:条件不成立(假) 运算符与表达式

①算术运算符:+,-,*,/ ②条件运算符

EQ(=),NE(≠),GT(>), GE(≥),LT(<),LE(≤) ③逻辑运算符 AND,OR,NOT ④函数

SIN,COS,TAN,ATAN,ATAN2, ABS,INT,SIGN,SQRT,EXP

⑤表达式

用运算符连接起来的常数,宏变量构成表达式。 例如:175/SQRT[2]*COS[55*PI/180]; #3*6GT14; 赋值语句

格式:宏变量=常数或表达式

把常数或表达式的值送给一个宏变量称为赋值。 例如:#2=175/SQRT[2]*COS[55*PI/180]; #3=124.0;

条件判别语句IF,ELSE,ENDIF 格式(i):IF条件表达式 … ELSE … ENDIF

格式(ii):IF条件表达式 … ENDIF

循环语句WHILE,ENDW 格式:WIIILE条件表达式 … ENDW

例如:车削椭圆 %(FNAUC) O0001 N1G00X0Z150. N2G98

N3#24=80(短轴半径,X轴方向) N4#26=100(长轴半径,Z轴方向) N5#7=0.1(Z轴取点的间隔距离)

N6#1=#26+#7(Z轴方向最大值,假设为顶点) N7#23=3.15(Z轴方向最小值) N8WHILE[#1GT#23]DO1

N9#1=#1-#7(计算每次Z轴的坐标值) N10IF[#1GT#23]GOTO12

N11#1=#23(最后一次把Z轴终点坐标赋值给#1) N12#3=2*#24*SQRT[1-[#1*#1]/[#26*#26]](X轴坐标值计算,此处按直径编程) N13G01X#3Z#1F100 N14END1 N15M30 %