vhdl变量赋初值_B宏与A宏变量的方法

B宏的用法

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 F 100.0

此处的X、Y、Z不代表坐标字,F也不代表进给字,而是对应与宏程序中的变量号,变量的具体数值由引数后的数值决定;引用宏程序体中的变量对应关系有两种,见表2-4-2及表2-4-3.此两种方法可以混用,其中G、L、N、O、P不能作为引数替变量赋值。

例:变量赋值方法1

G65P0030 A50.0 140.0 J100.0 K0 120 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 P0O20 A50.0 X40.0 F 100

经赋值后#1=50.0, #24=40.0,#9=100.0。

变量的赋值方法1、2混合

G65 P0030 A50.0 D40.0 1100.0 K0 120.0

经赋值后,120.0与D40.0同时分配给变量#7,则后一个#7有效,所以变量#7=20.0,其余同上。

采用赋值后前面A类宏程序例题精加工程序可改写成如下形式:

0010 (主程序)

.........

G65 P0210X28.0Z-20. 0 A20.0BO R20.0 (赋值后, 24=28. 0, #26=-20.0, #1=20. 0, #2=0, #18=20. 0)

.....

0210; (精加工宏程序)

N1000 G01Z#26;

X#24

GO2 X#24 Y0 1-#24 J0;

#2=#2+0.1;

#1=SQRT[#18*#18-#2*#2]

#24=#1+8.0;

#26=-20.0+#2;

IP[#26 LB 0]GOTO 1000

G01Z20;

GO1X0.0 Y40.0;

M99;

3.运算指令

B类宏程序的运算指令与A类宏程序的运算指令有很大区别,它的运算类似于数学运算,用各种数学符号来表示。常用运算指令见表2-4-4.

宏程序计算说明如下

(1) 函数SINcos等的角度单位是度,分和秒要换算成带小数点的度。如9o" 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]G0T01000

格式二所示有条件转移语句,如果条件成立,则转到N程序段执行,如果条件不成立,则执行下一句程序。条件式的种类见表2-4-5.

(2)循环指令

WHILE[条件式]DOm (m=1、2、3.)。

......

ENDm;

当条件式满足时,就循环执行WHILE与END之间的程序段m次,当条件不满足时,就执行ENDm的下一个程序段。

三、编程实例与练习课题

例1用B类宏程序编写如图2-4-3所示椭圆凸台加工程序。

5ca22d2e3054ac2d6b66ea6e1d6b8556.png
911b80dc11e6cc96e328cd644789cf4b.png

00020; (主程序)

G90 G80 G40 G21 G17 G94; (程 序初始化)

G91 G28 Z0. 0;

G90 G54;

GOO X40.0 YO. 0;

G43 Z20. 0 H01;

S600 MO3;

G01 Z0. 0 F200;

M98 P0120 L9; (去余量, Z向分层切削,每次切深2mm)

G90 G01 Z20. 0;

GO1 X40.0 YO;

M98 P0220; (调用宏程序,加工椭圆锥台)

G91 G28 Z0. 0;

M05;

M30;

00120;(粗加工去余量子程序)

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 YO;

M99;

00220 (精加工椭圆锥子程序)

#110=0; (刀尖到底平面高度,见图2)

#111=-18.0; (刀尖Z坐标值)

#101=18.O; (短半轴半径)

#102=24.O; (长半轴半径)

N200#103-360.0; (角度变量)

G01 Z#111 F100;

N300#104=#101 * COS [#103]; (刀尖X坐标值)

#105=#102 * SIN [#103]; (刀尖Y坐标值)

G41 G01 X#104 Y#105 DO1;

#103=#103-1.0;

IF [#103 GE 0.0] GOTO 300; (循环加工椭圆)

G40 G01 X40.0 YO;

#110=#110+0.1;

#111=#111+0.1; (刀尖Z坐标值)

#101=18.0-#110*TAN [30. 0]; (短半轴半径变量)

#102=24.0-#110*TAN [30. 0]; (长半轴半径变量)

IF [#111 LE O.0] GOTO 200; (循环加工椭圆锥台)

M99;

1442a9a9c9f35495707e2cce2a14a3b9.gif

本资料来源于网络,如有侵权,请联系删除~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值