预定义用户变量是在SINUMERIK系统中预先定义好的变量,其数量通过对专门的机床数据进行参数设定后确定。它可细分为计算参数(R参数,下同)和链接变量。
(1) R参数
R参数是名称为R的预定义用户变量,是被定义为REAL(即实数)等数据类型的数组或表达式。
在SINUMERIK 828D/840D/840Dsl系统中,R参数的个数经通道专用机床数据MD28050($MC_MM_NUM_R_PARAM)给定,设定范围为0~32535,例如Oerlikon C50型螺旋锥齿轮切齿机中MD28050=1200。
在SINUMERIK 802D/802Dsl/808D系统中,R参数的个数通常为300个——R0~R299,其中R0~R99为程序中自由使用的自由参数,R100~R249为加工循环传递参数,R250~R299为加工循环内部计算参数,R100~R299在程序未使用加工循环时也可自由使用。
1) R参数的功能。在用R参数编写出包含逻辑计算公式的“宏程序(子程序)”后,CNC会根据R参数值的条件,多次调用执行该“宏程序(子程序)”,从而使得零件程序简明精炼、计算准确无误,并实现结构类似零件和复杂图形零件(如非圆曲线)的便利加工。
2) R参数的句法形式。在R参数作为预处理变量使用(如零件程序中)时,可带数组索引编写——R[n],也可不带数组索引编写——R<n>;还可用表达式代替数组索引,此时须将表达式放在方括号“[ ]”内,句法形式为R[<表达式>],如R[(R1+R2)*R3]。
在R参数作为主运行变量使用(如同步动作)时,必须写入字符“$”作为前缀,其句法形式分别为$R<n>和$R[<表达式>]。
在R<n>中,数组索引<n>代表R参数的编号,其数据类型为INT(即带+、-符号的整数值),取值范围为0~MAX_INDEX。其中,MAX_INDEX=R参数个数-1=MD28050-1。
在R[<表达式>]中,<表达式>在其结果能够被转换为数据类型INT时,可设定任意表达式作为数组索引(INT、REAL、逻辑值BOOL、ASCII字符CHAR)。
3) R参数的取值范围。
在非指数写入方式中,R参数的取值范围为±(0.000 0001~9999 9999),小数点后位数不可超过8位,整数时小数点可去掉,正数的“+”可省略。例如,R0=3.5678,R[1]=-37.3,R4=-45678.123。
在“<底数>EX<指数>”的指数写入方式中,R参数的取值范围为±(1*10-300~1*10+300),指数值写在符号EX之后;包含符号和小数点在内的字符数不可超过10。例如,R0=-0.1EX-5表示R0=-0.000 001,R1=1.874EX8表示R1=187 400 000。
(2) 链接变量 在SINUMERIK 828D/840D/840Dsl系统中,使用系统全局用户变量性质的链接变量,可在“NCU链接”功能有效的范围内,循环交换一个网络中相连的多个NCU之间的数据,以快速访问(读取或写入)链接变量存储器中特定格式的数据,如零件程序段、加工循环、全局机床状态及夹具松开/闭合等。在“NCU链接”功能无效时,链接变量可作为CNC系统本地全局用户变量使用,其内容、类型和应用多由机床制造商确定。当然,链接变量也可在同步动作中使用。
1) 链接变量的句法形式,见表。
表 SINUMERIK 828D/840D/840Dsl系统中链接变量的句法形式
No. 句法形式 句法含义 取值范围
1 $A_DLB[<i>] 数据格式为BYTE(1字节) 0~255
的链接变量,其数据类型为INT
i=n*1字节=0,1,2,…,MAX_INDEX
2 $A_DLW[<i>] 数据格式为WORD(2字节)的链接 -32768~32767
变量,其数据类型为INT
i=n*2字节=0,2,4,…,MAX_INDEX
3 $A_DLD[<i>] 数据格式为DWORD(4字节)的链接 -2147483648~
变量,其数据类型为INT 2147483647
i=n*4字节=0,4,8,…,MAX_INDEX
4 $A_DLR[<i>] 数据格式为REAL(8字节)的链接变量, ±(4.19*10-308~
其数据类型为REAL 1.8*10+308)
i=n*8字节=0,8,16,…,MAX_INDEX
说明:n=0,1,2,…。MAX_INDEX由通用机床数据MD18700($MN_MM_SIZEOF_LINKVAR_DATA)设定的NCU链接变量存储器大小得出,MAX_INDEX=MD18700-1。
2) 链接变量应用示例。
某大型数控机床配置了SINUMERIK 840Dsl系统,并装有NCU1和NCU2两个NCU。
其中,NCU1已激活了机床轴AX2,NCU2已将AX2轴作为链接轴运行,NCU链接变量存储器大小的设定参数MD18700=24,即MAX_INDEX=24-1=23。
① 在CNC执行程序给定的单独程序段“N110 IDS=1 WHENEVER TRUE DO $A_DLR[16]=$VA_CURR[AX2]”时,NCU1会在静态同步动作的IPO周期中,通过数据格式为REAL(8字节)的链接变量$A_DLR[16],将AX2轴的电流实际值($VA_CURR)循环写入链接变量存储器内。IDS=1表示静态同步动作在所有工作方式中模态有效;指令WHENEVER是在每个插补节拍中对条件(如TRUE)进行循环检查,一旦条件满足则在每个插补节拍中执行相应的动作(如DO…);指令DO是在条件满足时执行同步动作中的1个动作或工艺循环。
② 在CNC执行程序给定的单独程序段“N220 IDS=1 WHEN $A_DLR[16]>23.0 DO SETAL(65000)”时,NCU2会在静态同步动作的IPO周期中,通过数据格式为REAL(8字节)的链接变量$A_DLR[16],循环读取链接变量存储器内AX2轴的电流实际值;若电流实际值大于23A,则屏显用户循环报警65000。指令WHEN是在每个插补节拍中对条件(如$A_DLR[16]>23.0)进行查询,直至该条件被满足时查询停止,并将相应的动作(如DO…)执行1次;指令SETAL用于同步动作中故障应答的编程,其后紧跟取值范围在65000~69999之内的<报警编号>。