华中系统与FANUC系统宏程序区别

[复制链接]
查看124 | 回复0 | 2024-11-23 13:51:33 | 显示全部楼层 |阅读模式
>

华中系统与FANUC系统宏程序区别

一、宏编程

主要讲解华中系统与FANUC系统在宏编程的异同,主要包括变量的使用及编程语法规范方面内容,帮助使用者了解二者区别,并进行相关宏程序的改造来达到使用要求。


1、变量

局部变量:局部变量是指在宏程序内部使用的变量,即是在当前时刻下调用宏程序A中使用的局部变量#i与另一时刻下调用宏程序A中使用的#i不同。因此,在如多层调用一样从宏中调用宏时,有可能在宏中错误使用在宏中正在使用的局部变量,导致破坏该值。


华中系统:提供#0#49为局部变量,它们的访问属性为可读可写。

FANUC系统:提供#1#33为局部变量

其对比如下图表所示:

系统类型

变量范围

含义

读写权限

断电保存

华中8

#0-#49

当前子程序局部变量

/

FANUC

#0

空变量



#1-#23

局部子变量

/

局部变量用于传输自变量。其与自变量地址之间的对应关系当用户调用宏程序时,系统会将当前程序段中的自变量(AZ)的内容拷贝到相应的用户宏程序当前层的局部变量中去。


华中系统:

宏变量

自变量名

宏变量

自变量名

宏变量

自变量名

#0

A

#1

B

#2

C

#3

D

#4

E

#5

F

#6

G

#7

H

#8

I

#9

J

#10

K

#11

L

#12

M

#13

N

#14

O

#15

P

#16

Q

#17

R

#18

S

#19

T

#20

U

#21

V

#22

W

#23

X

#24

Y

#25

Z

#26

预留

#27

预留

#28

预留

#29

预留

#30

X轴位置

#31

Y轴位置

#32

Z轴位置

#33

A轴位置

#34

B轴位置

#35

C轴位置

#36

U轴位置

#37

V轴位置

#38

W轴位置

全局变量(公共变量):

华中系统:提供#50#199#500#999#54000#54999为全局变量,共计1650个,它们的访问属性为可读可写。#50#199在退出主程序运行或电源切断时被清除,而#500#999#54000#54999为断电可保存数据,并且#500#999#54000#54999为用户自定义宏变量,用户可根据需要自主配置相关参数,包括参数中文名称、参数显示范围等。


FANUC系统:提供#100#199#500#999为公共变量,共计600个。#100#199 将会由于电源切断而被清除,但是,#500#999 即使在电源切断之后仍会被保留起来。同时FANUC系统可对于公共变量写保护,通过在参数(No.60316032)中设定变量号,即可对多个公共变量(#500#999)进行保护,也即将其属性设定为只读。


其华中系统与FANUC系统的对比如下表所示

系统类型

变量范围

含义

读写权限

断电保存

华中8

#50-#199

公共变量,初始化为空

/

#500#999

#54000#54999

用户自定义宏变量,数据可保存

/

保存

/

保存

FANUC

#100#199

公共变量,初始化为空

/

#500#999

公共变量,数据可保存

 

/

保存

时间信息:

系统类型

变量范围

含义

读写权限

华中8

#3000

该变量用于读取当前的日期(年//日)。年//日信息转换成十进制数。例如,2024 10

17 日表示为20241017

#3001

该变量用于读取当前的时间(时//秒)。时//秒信息转换成十进制数。例如,下午34 56 秒表示为153456

FANUC

#3011

同华中#3000

#3012

同华中#3001

 

FANUC系统相关系统变量:

、宏编程语句:

赋值语句:把常数或表达式的值传送给一个宏变量称为赋值,这条语句称为赋值语句,如下:

普通赋值语句二者一致,如下,

#2 = 175 / SQRT[2] * COS[55*PI/180]

#2 = 175 / SQRT[2] * COS[55*PI/180]

但复杂赋值语句二者有区别:


FANUC系统:

#1=[#[#1+5]+#[#1+7]]/2

华中系统:若宏变量表达式参加计算,必须用中括号单段

#1=[[#[#1+5]]+[#[#1+7]]]/2


      1、宏语句

跳转语句:

GOTO 后跟数字,例如 GOTO 4 将跳转到N4 程序段(该程序段头必须写N4)。

格式:GOTO n;

GOTO 1

GOTO #10(目前华中V1.24.00DMTG1.14.10;以上包括版本可用,DMTG1.14.10)

条件判断转移语句:

类型

华中系统

FANUC系统

类型1

IF [条件表达式];       

ENDIF

例:

IF[#1 EQ 10]GOTO 2

ENDIF

N2 G90G01x10Y10F1000

IF [条件表达式] GOTO n 

:

IF[#1 EQ 10] GOTO 2

N2 G90G01x10Y10F1000

类型2

IF [条件表达式];       

……

ELSE

……

ENDIF

:IF[#1 EQ #2]

    ELSE

#3=0

ENDIF

IF [条件表达式] THEN

如:IF[#1 EQ #2] THEN #3=0

 

2、循环(WHILE语句)

数控驿站

华中系统

FANUC系统

含义

WHILE后指定条件表达式,当指定的条件表达式满足时,执行从WHILEENDW之间的程序。当指定条件表达式不满足时,退出WHILE循环,执行ENDW之后的程序行。

 

WHILE 后指定一个条件表达式。当指定条件满足时,执行从DO END 之间的程序。否则,转到END 后的程序段。

调用格式

WHILE [条件表达式]

……

ENDW

 

WHILE [条件表达式] DO m m=1,2,3

……

END m

例子

#1=0

#2=1

WHILE [#2 LE 20]

#1=#1+#2

#2=#2+1

ENDW

 

#1=0

#2=1

WHILE [#2 LE 20] DO 1

#1=#1+#2

#2=#2+1

END1

 

3、 嵌套调用

对于IF语句或者WHILE语句而言,系统允许嵌套语句,但有一定的限制规则,具体如下:

IF语句最多支持8层嵌套调用,大于8层系统将报错;

WHILE语句最多支持8层嵌套调用,大于8层将报错;

系统支持IF语句与WHILE语句混合使用,但是必须满足IF-ENDIFWHILE-ENDW的匹配关系。如下面这种调用方式,系统将报错。

华中与FANUC嵌套调用对比如下

华中系统

FANUC系统

状态

WHILE [ …]

WHILE [ …]

      …

      WHILE [ …]

        ……

      ENDW

    ……

ENDW

……

ENDW

 

WHILE [ …] DO 1

WHILE [ …] DO 2

      …

      WHILE [ …]  DO 3

        ……

      END3

    ……

END2

……

END1

 

正确

二者可兼容

IF [条件表达式1]    

WHILE [条件表达式2]

ENDIF

ENDW

IF [条件表达式1]   GOTO n

WHILE [条件表达式2] DO 2

N n …

END2

 

错误

转移语句不能进入循环内部


三、宏程序运算指令表

运算种类运算指令 含义

算术运算

#i = #i + #j 加法运算,#i #j

#i = #i - #j 减法运算,#i #j

#i = #i * #j 乘法运算,#i #j

#i = #i / #j 除法运算,#i #j

条件运算

#i EQ #j 等于判断(=

#i NE #j 不等于判断(

#i GT #j 大于判断(>

#i GE #j 大于等于判断(

#i LT #j 小于判断(<

#i LE #j 小于等于判断(

逻辑运算

#i = #i & #j 与逻辑运算

#i = #i | #j 或逻辑运算

#i = ~#i 非逻辑运算

函数

#i= SIN[#i] 正弦(单位:弧度)

#i=COS[#i] 余弦(单位:弧度)

#i=TAN[#i] 正切(单位:弧度)

#i=ATAN[#i ] 反正切

#i=ABS[#i] 绝对值

#i=INT[#i] 取整(向下取整)

#i=SIGN[#i] 取符号

#i=SQRT[#i] 开方

#i=EXP[#i] 指数,以e2.718)为底数的指数


四、华中系统宏变量表

变量
含义

读权限

写权限

断电保存

0-49

当前子程序局部变量(G65带参数的调用时#0-#25 依次对应字母A-Z

50-199

(不建议使用)



200-499

50个一组,分别为0层、1层、2层、3层、4层、5层子程序局部变量

500-999

用户自定义

1000-1008

机床当前位置



1100-1109

G92零点



1030-1039

工件零点



1040-1048

G54

1050-1058

G55

1060-1068

G56

1070-1078

G57

1080-1088

G58

1090-1098

G59

40100-41180

G54.X

1150-1189

G代码0-39组的模态


1340-1349

测量机床指令


1360-1369

测量机床实际


1380-1380

机床外部零点偏移

1190

用户输入




1191

用户输出




1220

M3/4/5




1227

生效的半径补偿D


1228

生效的长度补偿H


3000-3001

时间与日期


54000-54999

用户自定义

70006

1号刀长度补偿值(70000-70199对应1号刀,70200-70399对应2号刀,以此类推,每把刀的占用200个数据)

70011

1号刀半径补偿值

70029

1号刀长度磨损值

70034

1号刀半径磨损值

70107

1号刀刀具使用最大次数

70108

1号刀刀具使用预警次数

70109

1号刀刀具已使用次数

100000

R寄存器



110000

X寄存器



120000

Y寄存器



130000

F寄存器



140000

通道F寄存器



150000

系统F寄存器



160000

G寄存器



170000

通道G寄存器



180000

系统G寄存器



190000

B寄存器



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则