简体中文简体中文 EnglishEnglish RussianRussian 您好!欢迎访问武汉世佳伟业科讯电子技术有限公司主营:台达变频器 变频器维修 变频器控制柜 二次供水系统
国家高新技术企业台达工业自动化产品授权服务商
全国咨询热线:400 110 0223
热门关键词:
您的位置: 世佳伟业 > 新闻中心 > 技术分享

咨询热线

400 110 0223

华中数控与FANUC宏程序的区别,一文全部读懂

作者: 日期:2024-05-02 09:30:17 点击数:

信息摘要:

大家都在问宏程序。其实所谓宏就是用公式来加工零件的。比如说椭圆,如果没有宏程序的话,我们要逐点算出曲线上的点,然后慢慢用直线或曲线逼近,如果是个光洁度要求很高的

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

%

%0001(华中系统)

N1M03S1000T0101

N2G00X20Z5

N3#21=100(长轴半径,Z轴方向)

N4WHILE#21GT[-100]

N5#20=0.8*SQRT[100-#21*#21](计算每次X轴的坐标值)

N6G01X[#20*2]Z[#21]F100(加工椭圆)

N7#21=#21-0.05(计算每次Z轴的坐标值)

N8ENDW

N9M30


Baidu
map