您现在的位置:

FUNAC用户宏程序简介

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

l 所存入的这一系列指令——用户宏程序

l 调用宏程序的指令————宏指令

l 特点:使用变量

一. 变量的表示和使用

(一) 变量表示 

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

例:#5,#109,#501,#[1+#212]

(二) 变量的使用 

1 地址字后面指定变量号或公式

格式: <地址字>#I

<地址字>-#I

<地址字>[<式子>]

例:F103,设#10315 则为F15

Z-#110,设#110250 则为Z250

X[24+#18COS[1]]

2 变量号可用变量代替

例:#[30],设#303 则为#3

3 变量不能使用地址ONI

例:下述方法下允许

O1

I2 6.00×100.0;

N3 Z200.0

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

例:#301100时,则M30是不允许的

5 0为空变量,没有定义变量值的变量也是空变量

6 变量值定义:

程序定义时可省略小数点,例:#123149

MDI键盘输一. 变量的种类

1. 局部变量#1~33

一个在宏程序中局部使用的变量

例:   A宏程序     B宏程序

      …        …

     #1020     X10 不表示X20

      …        …

断电后清空,调用宏程序时代入变量值

2. 公共变量#100~149,#500~531

各用户宏程序内公用的变量

例:上例中#10改用#100时,B宏程序中的

  X100表示X20

100~149 断电后清空

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

3. 系统变量

固定用途的变量,其值取决于系统的状态

例:#2001值为1号刀补X轴补偿值

  #5221值为XG54工件原点偏置值

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

 

一. 运算指令

运算式的右边可以是常数、变量、函数、式子

式中#j,#k也可为常量

式子右边为变量号、运算式

1 定义

I=#j

2 算术运算

I=j+k

I=j-#k

I=j*#k

I=j/#k

3 逻辑运算

I=#JOKk

I=#JXOKk

I=#JANDk

4 函数

ISIN[j] 正弦

ICOS[j] 余弦

ITAN[j] 正切

IATAN[j] 反正切

ISQRT[j] 平方根

IABS[j] 绝对值

IROUND[j] 四舍五入化整

IFIX[j] 下取整

IFUP[j] 上取整

IBIN[j] BCDBIN(二进制)

IBCN[j] BINBCD

1 说明

1) 角度单位为度

例:9030分为905

2) ATAN函数后的两个边长要用“1”隔开

例:#1ATAN[1][1]时,#1为了350

3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入

例:设#112345,#223456,设定单位1μm

G91 X-#1X1235

X-#2 F300X2346

X[1+#2]X3580

未返回原处,应改为

X[ROUND[1]ROUND[2]]

4) 取整后的绝对值比原值大为上取整,反之为下取整

例:设#112,#2=-12

若#3FUP[#1]时,则#320

若#3FIX[#1]时,则#310

若#3FUP[#2]时,则#3=-20

若#3FIX[#2]时,则#3=-10

5) 指令函数时,可只写开头2个字母

例:ROUNDRO

FIXFI

6) 优先级

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

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

7) 括号为中括号,最多5重,园括号用于注释语句

例:#1SIN[[[#2+#3]*#4+#5]*#6];(3重)

一. 转移与循环指令

1.无条件的转移

格式: GOTO 1

    GOTO #10

2.条件转移

格式: IF[<条件式>] GOTO n

条件式:

j EQk 表示=

j NEk 表示≠

j GTk 表示>

j LTk 表示<

j GEk 表示≥

j LEk 表示≤

例: IF[1 GT 10] GOTO 100

   …

   N100 G00 691 X10

例:求110之和

  O9500

  #10

  #21

  N1 IF [2 GT10] GOTO 2

  #1=#1+#2

  #2=#21

  GOTO 1

  N2 M301.循环

格式:WHILE[<条件式>]DO m;(m123

ENDm

说明:1.条件满足时,执行DOmENDm,则从DOm的程序段

    不满足时,执行DOmENDm的程序段

   2.省略WHILE语句只有DOmENDm,则从DOmENDm之间形成死循环

   3.嵌套

4EQ NE时,空和“0”不同

其他条件下,空和“0”相同

 例:求110之和

   O0001

   #10

   #21

   WHILE [2LE10] DO1

   #1=#1+#2

   #2=#2+#1

   END1

   M30