快捷搜索:  汽车  科技

宏程序编程入门知识点汇总(这些知识必不可少)

宏程序编程入门知识点汇总(这些知识必不可少)一个在宏程序中局部使用的变量,其运算结果其他程序不可使用。1. 局部变量#1~#33变量的表示和使用一、变量表示#I(I=1 2 3 …)或#[<式子>]

现在很多数控技术人员都不懂宏程序,他们认为有了自动编程软件,就不需要学习宏程序了。事实上,宏程序的功能非常强大,比如编写一些批量、重复的程序,使用宏程序就只需要改动几个数据就可以了,没有必要进行大量重复的编程,可极大简化操作,大幅度提高工作效率。

宏程序可以使用变量进行算术运算、逻辑运算和函数的混合运算,还提供了循环语句、分支语句和子程序调用语句。

一般来说:宏程序适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程;适合抛物线、椭圆、双曲线等没有插补指令的曲线编程。

01

变量的表示和使用

一、变量表示

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

1. 局部变量#1~#33

一个在宏程序中局部使用的变量,其运算结果其他程序不可使用。

例: A宏程序 B宏程序

… …

#10=20 X#10 不表示X20

… …

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

2. 公共变量#100~#199,#500~#999

各用户宏程序内公用的变量 ,其运算结果任何程序调用都相同。

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

X#100表示X20

#100~#149 断电后清空

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

3. 系统变量

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

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

#5221值为X轴G54工件原点偏置值

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

03

运算指令

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

式中#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

四、函数

宏程序编程入门知识点汇总(这些知识必不可少)(1)

#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=ATAN[1]/[-1]时,#1为了35.0

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

例:设#1=1.2345,#2=2.3456,设定单位1μm

G91 X-#1;X-1.235

X-#2 F300;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重)

04

转移与循环指令

1. 无条件的转移

格式:GOTO n;

无条件地转移到程序段n去

n:程序段号(1-99999)

n也可用变量或表达式来代替

GOTO10;

GOTO #10;

2. 条件转移

IF [<条件表达式>] GOTO n;

若满足<条件表达式>,下步操作转移到程序段号为n的程序段去。

若不满足,执行下个程序段。

IF [<条件表达式>] THEN … ;

若满足<条件表达式>,执行THEN后的宏程序语句,只执行一个语句。

IF[#1EQ #2] THEN #3=0;

条件式:

宏程序编程入门知识点汇总(这些知识必不可少)(2)

#j 和#k也可用<表达式>来代替

例:IF[#1 GT 10] GOTO 100;

N100 G00 G91 X10;

例:求1到10之和

O9500;

#1=0

#2=1

N1 IF [#2 GT10] GOTO 2

#1=#1 #2;

#2=#2 1;

GOTO 1

N2 M30

3. 循环

格式:WHILE[<条件式>]DO m;(m=1,2,3)

ENDm

1.条件满足时,执行DOm到ENDm,则从DOm的程序段

不满足时,执行ENDm后面的程序段

2.省略WHILE语句只有DOm…ENDm 则从DOm到ENDm之间形成死循环

3.嵌套

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

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

例:求1到10之和

O0001;

#1=0;

#2=1;

WHILE [#2LE10] DO1;

#1=#1 #2;

#2=#2 #1;

END1;

M30;

猜您喜欢: