宏程序.docx
《宏程序.docx》由会员分享,可在线阅读,更多相关《宏程序.docx(12页珍藏版)》请在冰豆网上搜索。
宏程序
宏程序
什么是宏程序?
数控程序中含有变量的程序称为宏程序
宏程序由于允许使用变量、算术和逻辑运算以及条件转移等使得编制相同的加工程序更简便。
宏程序主要用于编写二次曲线加工程序和加工类似零件以及其它特殊场合
什么是变量?
相对于常量而言,变量就是指可以根据用户的需要随时变化的量
变量的表示方法:
◆变量符号(#)+变量号如:
#1#100
◆变量号可用表达式来代替表示如:
#[#1+2]表达式必须封闭在[]内
⏹变量的使用
1、在地址符后面直接指定变量号或公式
格式:
<地址符>#I
<地址符>-#I
<地址符>[公式]
例:
F#1设#1=100则为F100
Z-#2设#2=200则为Z-200
X[#3+TAN[#4]]
2、变量号可以用变量代替例:
#[#10]设#10=10则为#10
3、程序号、顺序号和程序跳转号不能使用变量例:
O#1/#2G00X100N#3Z100
4、地址符引用的变量号所对应的变量都有具体的数值范围例:
#10=150则M#10是不允许的
5、#0为空变量,没有定义变量值的变量都是空变量
6、程序定义变量值时可省略小数点例:
#123=150
⏹变量值的范围
局部变量和公共变量可以为0或下面范围中的值
-1047~-10-29或10-29~1047
⏹变量的引用
在地址符后指定变量号即可引用其变量值。
如:
G01X#1F0.1
当用表达式指定变量时,要把表达式放在括号中。
如:
G01X[#1+#2]F#3
被引用变量的值根据地址的最小设定单位自动地舍入如:
系统的最小输入增量为1/1000mm时#1=12.3456当指定G01X#1时,实际指令值为G01X12.346
引用空变量时,地址本身也被忽略
变量的分类
根据变量号分类
⏹系统变量
系统变量用于读和写NC内部数据,系统变量是自动控制和通用程序开发的基础。
1、接口信号
接口信号是可编程机床控制器(PMC)和用户宏程序之间交换的信号。
2、刀具补偿值
用系统变量可以读和写刀具补偿值
3、宏程序报警
算术和逻辑运算
包含定义,加、减、乘、除、三角函数计算、开平方、逻辑运算等等
表中列出的运算可以在变量中执行。
运算符右边的表达式可包含常量或由函数或运算符组成的变量。
表达式中的变量#j和#k可以用常数替换。
左边的变量也可以用表达式赋值。
⏹逻辑运算:
等于:
EQ格式:
#jEQ#k
不等于:
NE格式:
#jNE#k
大于:
GT格式:
#jGT#k
小于:
LT格式:
#jLT#k
大于等于:
GE格式:
#jGE#k
小于等于:
LE格式:
#jLE#k
算术与逻辑运算指令的缩写程序中指令函数时,函数名的前二个字符可以用于指定该函数
例如:
⏹ROUND→RO
⏹FIX→FI
运算次序
⏹①函数
⏹②乘和除运算(*、/、AND)
⏹③加和减运算(+、-、OR、XOR
括号嵌套
⏹括号用于改变运算次序。
括号可以使用5级,包括函数内部使用的括号。
当超过5级时,出现P/S报警No.118。
宏程序语句和NC语句
下面的程序段为宏程序语句:
包含算术或逻辑运算(=)的程序段。
包含控制语句(例如,GOTO,DO,END)的程序段。
包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段。
除了宏程序语句以外的任何程序段都为NC语句。
使用GOTO语句和IF语句可以改变控制的流向。
有三中转移和循环可供使用。
GOTO无条件转移
IF条件转移
WHILE当型循环
1、无条件转移
GOTOn;n为顺序
例如:
GOTO1;
GOTO#10;
2、条件转移
IF[<条件表达式>]GOTOn
例如:
IF[#1GT10]GOTO2
程序
N2G00G91X10.0
IF[<条件表达式>]THEN<表达式>
例如:
IF[#1EQ#2]THEN#3=0
3、当型循环
WHILE[<条件表达式>]DOm;
程序;
ENDm;
程序;
说明:
①m=1,2,3,可以多次使用。
②最多嵌套三层。
③省略WHILE,则产生从DO到END的无限循环。
④WHILE比GOTO处理快。
标号可以多次使用:
WHILE[…]DO1;
程序;
END1;
﹕
WHILE[…]DO1;
程序;
END1;
可以嵌套3层:
WHILE[…]DO1;
﹕
WHILE[…]DO2;
﹕
WHILE[…]DO3;
程序;
END3;
﹕
END2;
﹕
END1;
可以跳到循环外边:
WHILE[…]DO1;
IF[…]GOTOn;
END1;
Nn
DO的范围不能交叉:
WHILE[…]DO1;
程序;
WHILE[…]DO2;
﹕
END1;
程序;
END2;
转移不能进入循环区:
IF[…]GOTOn;
﹕
WHILE[…]DO1;
N1…;
END1;
变量的赋值(对应)关系1
程序中的地址
在宏程序体中的变量
程序中的地址
在宏程序体中的变量
A
#1
Q
#17
B
#2
R
#18
C
#3
S
#19
D
#7
T
#20
E
#8
U
#21
F
#9
V
#22
H
#11
W
#23
I
#4
X
#24
J
#5
Y
#25
K
#6
Z
#26
M
#13
程序中的地址
在宏程序体中的变量
程序中的地址
在宏程序体中的变量
程序中的地址
在宏程序体中的变量
A
#1
J4
#14
K8
#27
B
#2
K4
#15
I9
#28
C
#3
I5
#16
J9
#29
I1
#4
J5
#17
K9
#30
J1
#5
K5
#18
I10
#31
K1
#6
I6
#19
J10
#32
I2
#7
J6
#2
K10
#33
J2
#8
K6
#21
K2
#9
I7
#22
I3
#10
J7
#23
J3
#11
K7
#24
K3
#12
I8
#25
I4
#13
J8
#26
自变量指定Ⅰ、Ⅱ混合使用CNC内部自动识别自变量指定Ⅰ和自变量指定Ⅱ。
如果自变量指定Ⅰ和自变量指定Ⅱ混合指定,后指定的自变量类型有效。
G65A1.0B2.0I-3.0I4.0D5.0P1000
变量:
#1:
1.0#2:
2.0#4:
-3.0#7:
4.0#7:
5.0
精加工走刀路线描述
O0001
T0101M03S800
G00X33Z2快速定位至起刀点
X0 到达X向零点
#1=15 自变量初始化
WHILE[#1GE0]DO1 当自变量大于等于0执行DO1至END1循环
#2=10*SQRT[15*15-#1*#1]/15 因变量计算(椭圆方程)
G01X[2*#2] Z[#1-15]F0.1 直线插补方式到达目标点
#1=#1-0.3 到达目标点后自变量作递减计算
END1 如果自变量值小于0则循环到此结束执行下面程序
G01W-5
X28
W-15
X33
G00X100Z100
M30
精加工走刀路线描述
O0002
T0101M03S800
G00X33Z2
G00X0
#1=0 自变量初始化为0°(与Z轴的夹角)
WHILE[#1LE144]DO1 当夹角小于等于144°执行循环
#2=14*SIN[#1] 因变量计算(X方向)
#3=20*COS[#1] 因变量计算(Z方向)
G01X[2*#2]Z[#3-20]F0.1 直线插补方式到达目标点
#1=#1+1 自变量递增1°
END1 当夹角大于144°结束循环,程序往下执行
G01Z-40
……
精加工走刀路线描述
O0002
T0101M03S800
G00X33Z2
#1=15.6 自变量初始化
WHILE[#1GE-15.6]DO1 当自变量大于等于-15.6执行循环
#2=16*SQRT[20*20-#1*#1]/20 因变量计算
G01X[2*#2]Z[#1-15.6]F0.1 插补方式到达目标点
#1=#1-0.4 自变量递减
END1 当自变量小于-15.6就跳出循环,程序往下执行
G01W-8
……
精加工走刀路线描述
O0002
T0101M03S800
G00X33Z2
#1=44/2-8 Z向起点赋值
#2=10*SQRT[20*20-#1*#1]/20 计算X向起点坐标
G00X[2*[17.15-#2]] 快速定位至起点直径
#3=#1 自变量赋值
WHILE[#3GE-#1]DO1 当自变量大于等于-#1执行循环
#4=10*SQRT[20*20-#3*#3]/20 因变量计算
G01X[2*[17.15-#4]]Z[#3-22]F0.1 插补方式到达目标点
#3=#3-0.4 自变量递减
END1 当自变量小于-#1,跳出循环
G01W-8
……