6.8.4  最大变量、最小变量和变量区域指令(MINVAL,MAXVAL,BOUND)

6.8.4 最大变量、最小变量和变量区域指令(MINVAL,MAXVAL,BOUND)

(1)指令功能 使用指令MINVAL和MAXVAL可以比较两个变量的值。其中的较小值(采用MINVAL时)或较大值(采用MAXVAL时)会作为结果返回。

使用BOUND指令功能可以检查待检变量的值是否在定义的值域内。

(2)编程格式

<较小值>=MINVAL(<变量1>,<变量2>)

<较大值>=MAXVAL(<变量1>,<变量2>)

<返回值>=<BOUND>(<最小>,<最大>,<待检变量>)

(3)指令参数说明

MINVAL:确定两个变量(<变量1>,<变量2>)中的较小值。

MAXVAL:确定两个变量(<变量1>,<变量2>)中的较大值。

BOUND:检查(<待检变量>)是否在已定义的值域(最小与最大)中。

<返回值>:指令BOUND的结果变量。

如果待检变量的值在定义的取值范围内,结果变量为此待检变量。

如果待检变量的值大于最大值,结果变量为取值范围的最大值。

如果待检变量的值小于最小值,结果变量为取值范围的最小值。

如果待检变量的值与值域的阈值(即MINVAL或MAXVAL值)相等,结果变量为待检变量的值。

(4)编程示例

例1 比较函数功能验证。

程序代码 注释

DEF REAL rVar1=10.5,rVar2=33.7,rVar3,rValMin,rValMax,rRetVar

rValMin=MINVAL(rVar1,rVar2) ;rValMin设为值10.5

rValMax=MAXVAL(rVar1,rVar2) ;rValMax设为值33.7

rVar3=19.7 ;赋待检数值

rRetVar=BOUND(rVar1,rVar2,rVar3) ;rVar3在极限值范围内,rRetVar为19.7

rVar3=1.8 ;赋待检数值

rRetVar=BOUND(rVar1,rVar2,rVar3) ;rVar3小于最小值,rRetVar为10.5

rVar3=45.2 ;赋待检数值

rRetVar=BOUND(rVar1,rVar2,rVar3) ;rVar3大于最大值,rRetVar为33.7

rVar3=10.5 ;赋待检数值

rRetVar=BOUND(rVar1,rVar2,rVar3) ;rVar3等于最小值,rRetVar为10.5

rVar3=33.7 ;赋待检数值

rRetVar=BOUND(rVar1,rVar2,rVar3) ;rVar3等于最大值,rRetVar为33.7

例2 对图5-7所示的不通孔进行铣削加工,使用比较指令BOUND的编程方法。

程序代码 注释

N10 R1=0 ;起始深度

N20 R2=-31 ;终止深度

N30 R3=5 ;每层深度

N40 R4=R1-R3 ;第一层深度

N50 T=“16”M06 ;选择并调用直径为16mm的立铣刀

N60 G90 G17 G0 G54 X0 Y0 ;设定加工平面及工件坐标原点

N70 D1 Z50 S1500 M03 M08 ;建立刀具长度补偿及切削参数

N80 Z5 ;移动至安全高度

N90 LA1:G1 Z=R4 F300 ;吃刀量跳转标志,工进切入

N100 G41 X20 F800 ;建立刀具半径补偿

N110 G03 X20 Y0 I-20 J0 ;铣削圆

N120 G1 G40 X0 ;取消刀具半径补偿

N130 IF R4==R2 GOTOF END_1 ;判断,已经完成最终吃刀量后跳转至抬刀程序段

N140 R4=BOUND(-31,0,R4-R3) ;计算并获取下一次吃刀量

N150 IF R4>=R2 GOTOB LA1 ;判断,实际吃刀量与最终位置

N160 END_1:G0 Z100 M09 ;抬刀,返回初始高度

N170 M30 ;程序结束