B类宏程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、教学过程
1.变量
B类宏程序的变量与A类宏程序的变量基本相似,但也略有不同,主要区别有以下几个方面。
(1)变量的表示:B类宏程序除可采用A类宏程序的变量表示方法外,还可以用表达式表示,但表达式必须封闭在方括号“[ ]”中。程序的圆括号“()”用于注释。
例# [#1+#2+10] 当#1=10,#2=100时,该变量表示#120。
(2)变量的引用:引用变量也可以用表达式表示
例G01 X [#100-30.0] Y- #101 F [#101+#103] ;
当#100=100时、#101=50、#103=80时,上式即表示为G01 X70.0 Y-50.0 F130;
(3)变量的种类:B类与A类宏程序的变量种类相同
2.变量的赋值
(1)直接赋值变量可以在操作面板上用MID方式直接赋值,也可在程序中以等式方式赋值,在等号左边不能用表达式。
例#100 =100.0;#100 =30.0+20.0
(2)引数赋值宏程序以子程序方式出现,所用的变量可在宏调用时赋值。如下所示:
例G65 P1000 X100.0 Y30.0 Z20.0 F100.0;
此处的X、Y、Z不代表坐标字,F也不代表进给字,而是对应与宏程序中的变量号,变量的具体数值由引数后的数值决定。引用宏程序体中的变量对应关系有两种,见表2—4—2及表2—4—3。此两种方法可以混用,其中G、L、N、O、P不能作为引数替变量赋值。
例变量赋值方法1
G65P0030 A50.0 I40.0 J100.0 K0 I20 J10.0 K40.0;
经赋值后#1=50.0,#4=40.0,#5=100.0,#6=0,#7=20.0,#8=10.0,#9=40.0。
变量赋值方法2
G65 P0020 A50.0 X40.0 F100
经赋值后#1=50.0,#24=40.0,#9=100.0。
变量的赋值方法1、2混合
G65 P0030 A50.0 D40.0 I100.0 K0 I20.0
经赋值后,I20.0与D40.0同时分配给变量# 7,则后一个# 7有效,所以变量# 7=20.0,其余同上。
采用赋值后前面A类宏程序例题精加工程序可改写成如下形式:
O010;(主程序)
…
G65 P0210 X28.0 Z-20.0 A20.0 B0 R20.0;(赋值后,#24=28.0,#26=-20.0,#1=20.0,#2=0,#18=20.0)…
O210;(精加工宏程序)
N1000 G01Z#26;
X#24;
G02 X#24 Y0 I-#24 J0;
#2=#2+0.1;
#1=SQRT[#18 * #18-#2 * #2]
#24=#1+8.0;
#26=-20.0+#2;
IF[#26 LE 0]GOTO 1000
GO1Z20;
G01X0.0 Y40.0;
M99;
3.运算指令
B类宏程序的运算指令与A类宏程序的运算指令有很大区别,它的运算类似于数学运算,用各种数学符号来表示。常用运算指令见表2—4—4。
宏程序计算说明如下
(1)函数SIN COS 等的角度单位是度,分和秒要换算成带小数点的度。如90°30′表示90.5°。
而30°18′表示30.3°。
(2)宏程序数学运算计算的次序依次为:函数运算(SIN COS ATAN 等),乘和除运算(*、/、AND 等),加和减运算(+、-、OR、XOR等)
例 #1 = #2 + #3 * SIN [ #4 ];
运算次数为:①函数SIN[ # ]4
②乘和除运算 #3 * SIN[ # 4]
③加和减运算 #2 + #3 * SIN[ #4 ]
(3)函数中的括号用于改变运算次序,函数中的括号允许嵌套使用,但最多只允许嵌套5级。
例 #1=SIN[[[ #2 + #3 ] * 4 + #5 ] / #6]
(4)CNC处理数值取整运算时,若操作产生的整数大于原数时为上取整,反之则为下取整。例设#1=1.2,#2=-1.2。
执行#3=FUP[#1]时,2.0赋给#3;执行#3=FIX[#1]时,1.0赋给#3;执行#3=FUP[#2]时,-2.0赋给#3;执行#3=FIX[#2]时,-1.0赋给#3;
控制指令:控制指令到控制程序流向的作用。
(1)分支语句
格式一 GOTOn;
例 GOTO 1000;
格式一所示无条件转移语句,当执行该程序时,无条件转移到N1000程序段执行。
格式二IF[条件表达式]GOTOn;
例 IF [ #1 GT #100]GOTO1000;
格式二所示有条件转移语句,如果条件成立,则转到N程序段执行,如果条件不成立,则执行下一句程序。条件式的种类见表2—4—5。
(2)循环指令
WHILE[条件式]DOm(m=1、2、3…);
…
ENDm;
当条件式满足时,就循环执行WHILE与END之间的程序段m次,当条件不满足时,就执行ENDm;的下一个程序段。
三、编程实例与练习课题
例1 用B类宏程序编写如图2—4—3所示椭圆凸台加工程序。
O0020;(主程序)
G90 G80 G40 G21 G17 G94;(程序初始化)
G91 G28 Z0.0;
G90 G54;
G00 X40.0 Y0.0;
G43 Z20.0 H01;
S600 M03;
G01 Z0.0 F200;
M98 P0120 L9;(去余量,Z向分层切削,每次切深2mm)
G90 G01 Z20.0;
G01 X40.0 Y0;
M98 P0220;(调用宏程序,加工椭圆锥台)
G91 G28 Z0.0;
M05;
M30;
O0120;(粗加工去余量子程序)
G91 G01 Z-2.0;
G90;
#103=360;(角度变量赋初值)
N100 #104=18.0 * COS [# 103]; (X坐标值变量)
#105=24.0 * SIN[#103];(Y坐标值变量)
G41 G01 X#104 Y#105 D01;
#103=#103-1.0;(角度每次增量为-1°)
IF [#103 GE 0.0] GOTO 100;(如果角度大于等于0°,则返回执行循环。) G40 G01 X40.0 Y0;
M99;