首页 理论教育CNC编程中的基本概念与变量输入格式

CNC编程中的基本概念与变量输入格式

【摘要】:在上述程序段中,当#1=01、#2=50.0时,程序段就相当于G01 X50.0 Y150.0;如果#1=00、#2=100.0,则相当于G00 X100.0 Y200.0等。例如,利用指令#100=#1000,可以读入来自PMC的开关量输入信号G054.0;利用指令#1100=1,可将PMC的信号F054.0直接置为ON状态等。5)变量采用的是计算机小数点输入方式,即123.000可以直接以123表示。6)在不同地址下,变量可根据CNC的输入格式,自动四舍五入,例如,当X的输入单位为0.001mm时,如#1=123.456789,X#1自动成为X123.457。

1.宏程序及特点

用户宏程序简称宏程序,这是一种FANUC数控系统的特殊编程功能。宏程序与普通加工程序比较,其主要区别如下:

1)宏程序可用“变量”代替程序字中的“数字”进行编程,程序可使用算术运算式、逻辑运算式、条件转移等高级语言编程指令,因此,它可充分利用CNC的计算功能,来减少编程的计算工作量、提高效率和可靠性。例如,宏程序可使用如下形式的编程指令:

978-7-111-41794-1-Chapter05-1.jpg

程序中的#1、#2、#3就是变量,它可根据要求通过赋值、运算等方法改变。在上述程序段中,当#1=01、#2=50.0时,程序段就相当于G01 X50.0 Y150.0;如果#1=00、#2=100.0,则相当于G00 X100.0 Y200.0等。

2)宏程序可使用赋值、调用指令,实现参数化编程功能,其程序设计灵活、方便。例如,编制如下宏程序:

978-7-111-41794-1-Chapter05-2.jpg

978-7-111-41794-1-Chapter05-3.jpg

图5.1-1 变量的调用和赋值

主程序使用如下宏程序调用指令:

978-7-111-41794-1-Chapter05-4.jpg

通过改变调用指令G65中的xyra值,便可实现图5.1-1所示中心为(xy)、半径为r、角度为a的任意圆周位置进行定位,实现定位程序的参数化编程。调用指令中的X、Y、R、A分别为宏程序变量#24、#25、#18、#1的赋值地址,有关内容见后述。

3)宏程序可以通过变量读取或改变CNC的内部数据,并在程序中使用。例如,利用宏程序指令#100=#5021,可将X轴机床坐标系上的当前位置值读入到变量#100中;利用指令#2201=150.32,可将现行刀具长度补偿号H01所对应的长度补偿值更改为150.32等。

4)宏程序可直接读入/写出集成PMC的开关量信号,检测或控制PMC程序运行和机床动作,因此,可用于自动换刀、工作台交换等特殊控制。例如,利用指令#100=#1000,可以读入来自PMC的开关量输入信号G054.0;利用指令#1100=1,可将PMC的信号F054.0直接置为ON状态等。

2.变量引用与赋值

在FS-0iD上,宏程序变量(Variable)用字符“#”和后续的数字表示,如#1、#130、#1005等。变量引用需要注意以下基本问题:

1)变量可直接代替程序中的数值,如X#1、Y#130、G#2等,但地址O(程序号)、N(程序段号)、/(选择跳段)不允许使用变量。

2)程序中的数值也可用变量运算的表达式代替,如Z[#2+#1∗#4]等;当数值需要取负时,符号应加在表达式前,如Z-[#2+#1/#4]等。

3)变量号也可以为变量或表达式,其表示形式为#[#100]、#[#100-30]等。

4)变量的取值范围为-1047~+1047,但在实际CNC上,由于-10-29~+10-29之间的数值(0除外)已超出CNC的运算精度范围,故不能使用。

5)变量采用的是计算机小数点输入方式,即123.000可以直接以123表示。

6)在不同地址下,变量可根据CNC的输入格式,自动四舍五入,例如,当X的输入单位为0.001mm时,如#1=123.456789,X#1自动成为X123.457。

变量在CNC上的显示如图5.1-2所示,当变量值超过了CNC显示范围时,LCD将显示字符“∗∗∗∗∗∗∗∗”或“+未溢出”、“+溢出”等(详见第8章8.3节),但数值仍有效。变量可利用MDI/LCD面板输入或利用程序进行赋值,有关内容详见后述。

978-7-111-41794-1-Chapter05-5.jpg

图5.1-2 变量的显示

3.空变量和0变量

在宏程序中,未定义的变量称“空变量(Null Variable)”;数值为“0”的变量称“0变量”,空变量和0变量有如下区别:

1)显示不同。在CNC的LCD上,空变量显示为“数据空(DATA EMPTY)”,而0变量则直接显示数值0。变量#0规定为空变量,且只能用于读出(只读变量)。

2)在程序中,0变量作为数字0处理,但引用空变量时,将连同地址一起被忽略,例如,执行指令:

978-7-111-41794-1-Chapter05-6.jpg

当#1为0变量时,相当于程序段“G90 G00 X50.0 Y100.0;”;当#1为空变量时,则相当于程序段“G90 X50.0 Y100.0;”。

3)如变量用于表达式时,除赋值、判断指令外,其余空变量与0变量相同;用空变量赋值的变量仍为空变量,空变量只能进行等于(EQ)、不等于(NE)判别,而用0变量赋值的变量值为0,0变量可在所以判别式上使用。

4.变量的分类

FS-0iD的变量分表5.1-1所示的局部变量、公共变量和系统变量三类,三者通过变量号区别,且有不同的性质和用途。

表5.1-1 变量的汇总与比较

978-7-111-41794-1-Chapter05-7.jpg

(1)局部变量

局部变量(Local Variable)在所有宏程序中可自由使用,变量无规定的用途和意义,它们在CNC断电时自动清除,变为空变量。通过CNC参数PRM6001.7(CLV)的设定,可选择CNC复位是否清除局部变量,设定0时,CNC复位可清除局部变量;设定1时,不清除。局部变量的变量号为#1~#33;它们可以通过宏程序调用指令上的地址A~Z,利用自变量传送功能对其进行赋值。

(2)公共变量

公共变量(Common Variable)是所用宏程序共用的变量,其值统一,因此,利用公共变量,可将某一个宏程序的运算结果用于其他宏程序。公共变量的变量号为#100~#199、#500~#999;#100~#199为断电清除型,#500~#999可断电保持;公共变量的用途和意义也无规定。通过CNC参数PRM6001.6(CCV)的设定,可选择CNC复位是否清除变量#100~#199,设定0,CNC复位可清除变量#100~#199;否则不清除。通过CNC参数PRM6031、PRM6032的设定,可将该范围的公共变量设定为“只读”。

公共变量中的#500~#549可通过宏程序指令SETVNn定义1个或连续多个变量的变量名,定义了变量名的变量在程序中可以直接以变量名代替变量。例如,执行指令:

SETVN510[POS_X,POS_Y,CEN_X,CEN_Y];

#510的变量名被定义为POS_X、#511的变量名被定义为POS_Y、#512的变量名被定义为CEN_X、#512的变量名被定义为CEN_Y,指令“G02 X#510 Y#511 I#512 J#512;”便可以用指令“G02 X[#POS_X]Y[#POS_Y]I[#CEN_X]J[#CEN_Y]代替。

(3)系统变量

变量号超过#1000的变量称为系统变量(System Variable),其名称、性质和用途固定不变。通过系统变量,用户可对CNC参数、内部数据进行读写或修改,系统变量多用于机床特定控制程序。