6.1.4  定义用户变量(DEF)

6.1.4 定义用户变量(DEF)

用户可通过DEF指令定义自己的变量并进行赋值。在划分系统变量时,这些变量被称为用户定义变量或用户变量(User Data)。根据变量的有效范围,即变量可见范围,用户变量可分为以下几个类别:

1)局部用户变量(LUD)。局部用户变量(LUD)是执行时在调用零件程序时创建,并在零件程序结束或者NC复位时删除。而不是在主程序的零件程序中定义的变量。此变量只能在定义LUD的零件程序中存取该LUD。

2)程序全局用户变量(PUD)。程序全局用户变量(PUD)是在作为主程序的零件程序中定义的变量。此变量在零件程序开始时创建,在零件程序结束或NC复位时删除。可在主程序及所有子程序中存取PUD。

3)全局用户变量(GUD)。全局用户变量(GUD)是在数据块(SGUD,MGUD,UGUD,GUD4,…,GUD9)中定义的NC或通道全局变量,此变量通电后依然保留。可在所有零件程序中存取GUD。在使用(读/写)用户变量前对其进行定义时必须遵循以下规则:

①GUD必须在定义文件如_N_DEF_DIR/_M_SGUD_DEF中定义。

②PUD和LUD必须在零件程序的定义段中定义。

③必须在单独的程序段中进行数据定义。

④每次数据定义只能使用一种数据类型。

⑤每次数据定义可以定义多个相同数据类型的变量。

(1)编程格式 系统中定义的编程格式非常完整,规定的编程格式为:

DEF<范围><类型><预处理停止><初始化时间><物理单位><限值><存取权限><名称>[<值_1>,<值_2>,<值_3>]=<初始化值>

在实际使用中,编程格式可以为:

DEF <类型><名称>[<值_1>,<值_2>,<值_3>]=<初始化值>

(2)指令参数说明

DEF:用于定义用户变量GUD、PUD、LUD的指令。

<类型>:数据类型

①INT:带正负号的整数值。

②REAL:实数型数值。

③BOOL:真值=TRUE(1)/假值=FALSE(0)。

④CHAR:ASCII-字符。

⑤STRING[<最大长度>]:定义长度的字符串。

⑥AXIS:进给轴或主轴标志符。

⑦FRAME:静态坐标转换的几何设定。

<名称>:变量名称。规定与用户定义变量名称相同。

[<值_1>,<值_2>,<值_3>]:设定1维至3维(最大)数组变量的数组长度(可选)。

<初始化值>:初始化值(可选)。

(3)编程示例 程序全局和局部用户变量(PUD/LUD)的定义。

程序代码 注释

PROC MAIN ;主程序

DEF INT VAR1 ;程序全局用户变量PUD定义一个名称为“VAR1”整型变量

VAR1=30 ;名称为VAR1的变量赋初始值为30

SUB2 ;调用子程序

M30

PROC SUB2 ;子程序SUB2

DEF INT VAR2 ;局部用户变量LUD定义

IF(VAR1==1) ;程序全局用户变量PUD读取

VAR1=VAR1+1 ;程序全局用户变量PUD读取和写入

VAR2=1 ;局部用户变量LUD写入ENDIF

SUB3 ;调用子程序

M17

PROC SUB3 ;子程序

SUB3

IF(VAR1==1) ;程序全局用户变量PUD读取

VAR1=VAR1+1 ;程序全局用户变量PUD读取和写入

VAR2=1 ;错误:SUB3中的局部用户变量LUD未知

ENDIF

M17

提示当设置了以下机床数据时,在主程序中定义的程序局部用户变量(PUD)同样在子程序中可见。

MD11120$MN_LUD_EXTENDED_SCOPE=1

设置MD11120=0时,在主程序中定义的程序局部用户变量只在主程序中可见。