变量与数学函数.docx
- 文档编号:23717049
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:40
- 大小:4.24MB
变量与数学函数.docx
《变量与数学函数.docx》由会员分享,可在线阅读,更多相关《变量与数学函数.docx(40页珍藏版)》请在冰豆网上搜索。
变量与数学函数
第六章变量与数学函数
6.1变量
SINUMERIK数控系统变量是指系统内部已经命名和规划用途的参数。
学习和使用系统变量进行编写加工程序是属于高级编程阶段的内容,需要编程者已经对西门子数控系统比较了解,具有一定的加工编程经验和系统数据调试经验。
由于在编程中涉及系统参数的一些读取或写入操作,在验证所编写的程序时一定要注意操作安全,并做好数据记录。
系统变量的设计与规划用途的完整情况只能由系统研发人员作出说明,可能需要非常多的篇幅。
仅就828D系统而言,其支持软件系统有三个主要版本,某些变量又是针对某个版本设计规划的。
本书仅仅就选取出的部分以标示符$打头的、常用的变量使用方法进行说明,需要读者在机床上验证后使用。
通过使用变量,特别是计算机功能和控制结构的相关变量,可以使零件程序和循环的编写更为灵活。
为此,828D系统提供了三种不同类型的变量:
系统变量、预定义用户变量和用户定义变量。
6.1.1系统变量
系统变量是系统中定义有固定名称的供用户使用的一种标志符号,它们具有固定的预设含义。
系统变量的含义中的大部分属性也是由系统固定预设的。
用户只能小范围地对属性进行重新定义和匹配。
本系统中的系统变量分为预处理变量和主处理变量。
1)预处理变量。
预处理变量是指在于处理程序状态中,即在执行设定了系统变量的零件程序段进行编译时,读取和写入的系统变量。
2)主处理变量。
主处理变量是指在主运行状态中,即在执行编程了系统变量的零件程序段时,读取和写入的系统变量。
通过系统变量可在零件程序与循环中提供当前控制系统的参数,例如机床,控制系统和加工步骤状态。
3)变量前缀。
系统变量的一个显著特点是其名称通常包含一个前缀。
该前缀由一个$字符、一个或两个字母以及一条下划线构成。
系统规定:
如果数据在执行期间保持不变,则可以和预处理同步读入,为此在机床数据或设定数据的前缀中写入一个$字符。
如$M。
预处理时读取或写入的系统变量见表6-1和表6-2。
表6-1预处理时读取或写入的系统变量的第一个字符
$+第1个字母
数据类型
$+第1个字母
数据类型
$M
机床数据
$C
ISO固定循环的循环变量
$S
设定数据,保护区域
$P
程序变量,通道专用系统变量
$T
刀具管理参数
R
R参数(计算参数)。
在零件程序和工艺循环中使用R参数时,不写入前缀
$O
选项数据
表6-2预处理时读取或写入的系统变量的第二个字符
$+第1个字母
变量显示
$+第1个字母
变量显示
N
全局变量
A
轴专用变量
C
通用专用变量
前缀系统的特例:
$TC_…:
第2个字母C表示的不是通道专用变量,而是刀架专用系统变量。
6.1.2用户变量
(1)用户变量。
是用户自己定义的用于程序编写中表示某种(个)特定意义的一种标志号,系统不确知其含义,也不对其进行分析的变量。
1)预定义用户变量。
预定义用户变量是在系统中已经定义的变量,但是用户还需通过专门的机床数据对其数量进行参数设置。
例如循环指令中的变量。
2)用户定义变量。
用户定义变量是仅由用户定义的变量,到系统运行时才会创建这些变量。
它们的数量、数据类型和所有其他属性都完全由用户定义。
例如用户自己编制宏程序时设置的变量。
(2)用户变量名称的定义规则
1)“$”字符预留给系统变量,用户所定义的变量不可使用。
2)变量名称必须意义明确。
同一名称不可以用于不同的对象。
3)系统中已定义的或备用的关键子不可以用作名称。
4)变量名称的长度小于31个字符。
允许使用的字符有字母、数字和下划线。
5)书写变量名称,开始的两个字符必须是字母或下划线。
在单个字符之间不允许有分隔符。
6)预留的字符组合。
7)为了避免出现名称冲突,在设定名称时要注意避免使用下列字符:
①所有的以CYCLE”、“CUST_”、“GROUP_”或“S_”开始的名称均用于西门子标准循环。
②所有的以“CCS”开始的名称均用于西门子汇编循环。
③用户汇编循环以“CC”开始。
④名称“RL”预留给传统车床。
⑤以“E_”或“F_”开始的名称预留给EASY…STEP编程。
⑥已经被系统使用的指令,标志等名称。
8)建议用户选择有区别的且有一定含义的字符来定义变量名称,如以“U”(用户)开始的名称,因为系统、汇编循环和西门子循环不使用这些名称。
也可以方便区分和记忆所定义的变量。
9)一个程序段中只能定义一种类型的用户变量,可以定义同一种用户变量类型的多个用户变量。
6.1.3计算参数(R)
计算参数或R参数是名称为R的预定义用户变量,用字母R加数字表示,定义为REAL数据类型的数组。
由于历史原因,R参数既可以带数组索引编写,如R[10],也可不带数组索引编写,如R10。
(1)编程格式
R
R[<表达式>]
(2)指令参数说明
R:
作为预处理变量使用时的名称。
R参数编号,类型为整数型(INT)。
本系统为300个,数值为0~299。
<表达式>:
数组索引。
只要可将表达式结果转换为数据类型INT,则可设定任意表达式作为数组索引。
(3)参数值的赋值范围
1)可以在以下数值范围内给计算参数赋值:
0.0000001-99999999,8个数位,带符号小数点。
2)用指数表示法可以赋值更大的数值范围,±(10-300-10300)。
指数值写在“Ex”行号之后,EX范田为-300~+300。
Rl=-0.1EX-5;表示R1=-0.000001
R2=l.874EX8;表示R2=187400000
(4)赋值方法
1)直接赋值或通过函数表达式赋值。
可以用数值、算术表达式或计算参数对Nc地址赋值。
一个程序段中可以有多个赋值语句,也可以用计算表达式赋值。
如:
N10R1=10R2=20R3=10*2R4=R2-R1R5=SIN(30)
2)通过参数变量赋值。
通过给Nc地址分配计算参数或参数表达式,可以增加NC程序的通用性。
但对程序段段号N、加工指令G和调用子程序指令L例外。
赋值时在地址符之后写入字符“=”。
赋值语句也可以赋值一个负号。
给坐标轴地址(运行指令)赋值时,要求有一个独立的程序段。
(5)编程示例算数功能中R参数的赋值和应用。
程序代码注释
R0=3.5678;在预处理中赋值
R[1]=-37.3;在预处理中赋值
R3=-7;在预处理中赋值
R4=-0.1EX-3;在预处理中赋值:
R4=-0.1×105(R4=-0.0001)
R7=SIN(25.3);在预处理中赋值
$R[6]=l.87EX6;在主运行中赋值:
R6=1.87×106(R6=1870000)
R[R2]=R10;通过R参数间接地址赋值
R[(Rl+R2)*R3]=5;通过算术表达式间接地址赋值
X=(Rl+R2);给X轴赋值
Z=SQRT(Rl*R1+R2*R2);给Z轴赋值,运行至通过(R2l+R22)平方根确定位置
要使一个零件程序不仅适用于特定数值下的一次加工,或者在程序运行中需要计算出某些数值,这两种情况均可以使用计算参数。
可以在程序运行时由控制器计算或设定所需要的数值;也可以通过操作面板设定参数数值。
如果参数已经赋值,可以通过段号寻址变量并对其进行操作。
6.1.4定义用户变量
用户可通过DEF指令定义白己的变量并进行赋值。
在划分系统变量时,这些变量被称为用户定义变量或用户变量(UserData)。
根据变量的有效范围,即变量可见范围,用户变量可分为以下几个类别:
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<范围><类型><预处理停止><初始化时间><物理单位><限值><存取权限><名称>[<值_l>,<值_2>,<值_3>]=<初始化值>
在实际使用中,编程格式可以为:
DEF<类型><名称>[<值_1>,<值_2>,<值_3>]=<初始化值>
(2)指令参数说明
DEF:
用于定义用户变量GUD、PUD、LUD的指令。
<类型>:
数据类型
①INT:
带正负号的整数值。
②REAL:
实数型数值。
③B00L:
真值=TRUE
(1)/假值=FALSE(0)。
④CHAR:
ASCII一字符。
⑤STRING[<最大长度>]:
定义长度的字符串。
⑥AXIS:
进给轴或主轴标志符。
⑦FRAME:
静态坐标转换的几何设定。
<名称>:
变量名称。
规定与用户定义变量名称相同。
[<值_l>,<值_2>,<值_3>]:
设定1维至3维(最大)数组变量的数组长度(可选)。
<初始化值>:
初始化值(可选)。
(3)编程示例程序全局和局部用户变量(PUD/LUD)的定义。
程序代码注释
PROCMAIN;主程序
DEFINTVARl;程序全局用户变量PUD定义一个名称为“VARl”整型变量
VAR1=30;名称为VARl的变量更式初始值为30
...
SUB2;调用子程序
...
M30
PROCSUB2;子程序SUB2
DEFINTVAR2;局部用户变量LUD定义
...
IF(VAR1==1);程序全局用户变量PUD读取
VARl=VARl+l;程序全局用户变量PUD读取与写入
VAR2=l;局部用户变量LUD写入ENDIF
SUB3;调用子程序
...
M17
PROCSUB3;子程序
SUB3
...
IF(VAR1==1);程序全局用户变量PUD读取
VARl=VARl+l;程序全局用户变量PUD读取与写入
VAR2=l;错误:
SUB3中的局部用户变量LUD未知
ENDIF
...
M17
提示:
当设置了以下机床数据时,在主程序中定义的程序局部用户变量(PUD)同样在子程序中可见。
MD11120$MN_LUD_EXTENDED_SCOPE=1
设置MD11120=0时,在主程序中定义的程序局部用户变量只在主程序中可见。
6.2系统变量、用户变量和NC语言指令的重新定文(REDEF)
(1)指令功能在编写程序中,使用REDEF指令可对系统变量、用户变量和NC语言指令的属性进行更改。
重新定义的前提条件是必须在相应的定义后进行。
在重新定义中不能同时对多个属性进行更改。
必须为每个需要更改的属性编写单独的REDEF指令。
如果编写的多个属性更改之间有冲突,则最后进行的更改有效。
提示:
不能对局部用户变量(PUD/LUD)进行重新定义。
(2)编程格式
REDEF<名称><预处理停止>
REDEF<名称><限值>
REDEF<名称><初始化时间>
REDEF<名称><初始化时间><初始化值>
(3)指令参数说明
REDEF:
用于重定义系统变量、用户变量和NC语言指令的特定属性的指令。
<名称>:
已定义的变量或NC语言指令的名称。
<限值>:
下限或上限。
如果在重新定义一个用户变量的极限值时,当前实际值超出了新的定义范围,系统会输出报警,而不接收该极限值。
因此,在重新定义用户变量的极限值时,请注意值(极限值、实际值和初始化值)的修改应保持一致。
<初始化时间>:
变量重新初始化的时间。
INIP0:
通电。
INIRE:
主程序结束,NC复位或上电。
INICF:
重新配置或主程序结束,NC复位或通电。
PRLOC:
主程序结束,本地更改后NC复位或通电。
<初始化值>:
初始化值。
在定义初始化值时,必须设定初始化时间。
提示:
系统变量不可进行重新定义,也不可以删除已设定数据。
6.3存取权限(APR,APW,APRP,APWP,APRB,APWB)
对系统变量的读取与写入操作是一件非常严肃和认真的工作,来不得半点马虎。
为了保证数据读取和写入工作的严肃性和安全性,系统提出了严格的操作密级规定。
没有一定操作密级的密钥则无法进行相应的操作。
指令中的R表示“读”,指令中的W表示“写”。
1)存取权限对应了在编程时给定的保护等级。
最终用户口令密切一般设为“CUSTOMER”。
2)用户变量的定义(DEF)。
可以定义以下变量的存取权限(APR…/APW…):
全局用户数据(GUD)。
3)重新定义(REDEF)系统和用户变量。
可以重新定义以下变量的存取权限(APR…/APW…)。
①系统数据:
机床数据、设定数据、FRAME、过程数据、主轴螺距误差补偿(EEC)、垂度补偿(CEC)、象限误差补偿(QEC)、刀库数据、刀具数据、保护区、可定向刀梁、运动整、3D保护区、工作区域限制、IS0刀具数据等。
②用户数据:
R参数、EPS参数、刀具数据OEM、刀库数据OEM、全局用户变量(GUD)等。
在重新定义时可以自由确定变量的存取权限,这些变量处于最低保护等级7和自有保护等级如1(机床制造商)之问。
HMI本地存取权限在修改系统数据的存取权限时必须注意,该权限必须和HMI装置上定义的存取权限一致。
6.4定文和初始化数组变量(DEF,SET,REP)
6.4.1基本使用方法
(1)指令功能一个用户变量可以定义为1-3维数组。
用户变量可以定又为以下类型的数组:
B00L、CHAR、INT、REAL、STRING、AXIS、FRAME数组元素的赋値。
可以在以下时间为数组元素赋值:
l)定义数组时(初始化值)。
2)在程序执行过程中可以通过以下方法赋值:
①显式(编写时直接)指定一个数组元素(DEF)。
②显式指定一个数组元素为起始元素并给出值列表(SET)。
③显式指定一个数组元素为起始元素并给出值列表以及重复的频率(REP)。
说明:
不能向FRAME数据类型的用户变量分配初始化之值。
(2)编程格式
1维数组:
DEF<数据美型><变量名称>[
2维数组:
DEF<数据类型><变量名称>[
3维数组:
DEF<数据类型><变量名称>[
字行型(STRING)数据类型的用户变量可以最大定义为2维数组。
1)编程格式1(DEF)定义数组元素。
DEF<数据类型><变量名称>[
DEFSTRING[<字符串长度>]<变量名称>[
2)编程格式2(DEF…=SET…)使用值列表。
①定义时:
DEF<数据类型><变量名称>[
DEF<数据类型><变量名称>[
在通过值列表进行初始化时,可以选择给定SET。
②赋值时:
<变量名称>[
3)编程格式3(DEF…=REP…)使用重复值。
①定义时:
DEF<数据类型><变量名称>[
DEF<数据类型><变量名称>[
②赋值时:
<变量名称>[
<变量名称>[
(3)指令参数说明
DEF:
变量定义指令。
<数据类型>:
变量数据类型。
取值范围:
①对于系统变量:
B00L、CHAR、INT、REAL、STRING、AXIS。
②对于GUD或LUD变量:
B00L、CHAR、INT、REAL、STRING、AXIS、FRAME。
<字符串长度>:
STRING数据类型下允许的最大字符数。
<变量名称>:
变量名称。
[
数组长度或数组索引。
1维的数组长度或数组索引。
类型:
INT(对于系统变量也为AXIS);取值范围:
最大数组长度(65535);数组索引:
0≤n≤65534。
2维的数组长度或数组索引。
其余同上。
3维的数组长度或数组索引。
其余同上。
SET:
通过给出的值列表赋值。
(<值1>,<值2>,…):
值列表。
REP:
通过给出的<值>赋值。
<值>:
数组元素在带REP的初始化时具有的数值。
<数量_数组元素>:
使用给定<值>的数组元素的数量。
其他的数组元素取决于不同时间点:
①数组定义时初始化:
剩下的数组元素赋值为零。
②在程序运行过程中赋值:
数组元素的当前值保持不变。
如果没有定义该参数,所有的数组元素都会分配到<值>。
如果参数为零,则取决于不同的时间点:
①数组定义时初始化:
所有元素预定为零。
②在程序运行过程中赋值:
数组元素的当前值保持不变。
6.4.2数组索引
在使用航列表(SET)或使用值重复(REP)的赋值中,通过数组素引从右向左的循环构成数组元素的隐式顺序。
例l某3维数组的初始化,数组有24个元素。
程序代码注释
DEFINTFELD[2,3,4]=REP(1,24);相当于对下列24个
数组元素分别赋值
FELD[0,0,0]=1;第1个数组元素
FELD[0,0,1]=1;第2个数组元素
FELD[0,0,2]=1;第3个数组元素
FELD[0,0,3]=1;第4个数组元素
FELD[0,1,0]=1;第5个数组元素
FELD[0,1,1]=1;第6个数组元素
...
FELD[0,2,3]=1;第12个数组元素
FELD[1,0,0]=1;第13个数组元素
FELD[1,0,1]=1;第14个数组元素
...
FELD[1,2,3]=1;第24个数组元素
也可以使用计数循环语句(FOR···ENDFOR)进行数组初始化赋值。
程序代码
FORn=0T0l
FORm=0T02
FORo=0T03
FELD[n,m,o]=1
ENDFOR
ENDFOR
ENDFOR
例2如图6_l所示,按当前占用情况初始化整个变量数组。
[1,2]
N10:
定义时的初始化
N20/N30:
使用相同数值初始化
N40/N50:
使用相各种数値初始化
0
1
2
0
1
2
0
1
2
0
0
0
0
100
100
100
0
1
2
1
10
11
12
100
100
100
-10
-11
-12
2
20
20
20
100
100
100
-20
-20
-20
3
30
30
30
100
100
100
-30
0
0
4
40
40
40
100
100
100
0
-40
-40
5
0
0
0
-100
-100
-100
-50
-60
-70
6
0
0
0
-100
-100
-100
-100
-100
-100
7
0
0
0
-100
-100
-100
-100
-100
-100
8
0
0
0
-100
-100
-100
-100
8.1
8.2
9
0
0
0
-100
-100
-100
9.0
9.1
9.2
数值单元[5,1]-[9,2]已使用默认值(0,0)初始化
数值单元[3,l]-[4,0]已使用默认值(0,0)初始化数值单元[6,0]-[8,0]没有变化
图6-l按规定位置赋值的三维数
数之索引:
程序代码注释
定义时对数组初始化
Nl0DEFREALFELD1[10,3]=SET(0,0,0,10,11,12,20,20,20,30,30,30,40,40,40,)
;对变量数组单元[0,0]~[4,2]进行赋值
使用相同数值初始化
N20FELDl[0,0]=REP(l00);从数组单元[0,0]起赋值100
N30FELDl[5,0]=REP(-l00);从数组单元[5,0]起赋值-100
使用不同数值初始化
N40FELDl[0,0]=SET(0,l,2,-10,-1l,-12,-20,-20,-20,-30,-40,-40,-50,-60,-70)
;从数组单元[0,0]起赋值,其中[3,1~4,
0]赋值0
N50FELDl[8,l]=SET(8.1,8.2,9.0,9.1,9.2)
;从数组单元[8,1]起赋值6.4.3定义和
初始化数组变量(SET,REP)说明
1)使用值列表(SET)在定义时进行初始化。
①从第l个数组元素开始,按照值列表中的值和写入的元素数量进行初始化。
②值列表中没有显式指定值的数组元素(数值表中的空自)自动成值为0。
③对于AXIS数据类型的变量,值列表中不允许出现空白。
④如果值列表包含的值大于数组元素的数量,则显示报警。
2)使用值列表(SET)在程序执行中赋值。
以上说明的定义规则同样适用于程序执行中的赋值,此外还有以下方法:
①表达式也允许用作值列表的元素。
②从编程的数组索引开始赋值。
从而根据需要对部分数组赋值。
3)使用值列表(SET)的编程示例。
DEFINTFELD[5,5];数组定义
FELD[0,0]=SET(l,2,3,4,5);对前5个数组元素进行赋值[0,0]~
[0,4]进行空隙的赋值,数组元素
[0,2]和[0,3]=0
FELD[2,3]=SET(VARIABLE,4※5.6);带变量和表达式的赋值,自数组索引
[2,3]起:
[2,3]=VARIABLE[2,4]=4×
5.6=22.4
4)使用重复值(REP)在定义时进行初始化
①所有或指定数量的数组元素都会以给定值(常量)进行初始化。
②FRAME数据类型的变量无法进行初始化。
编程示例:
程序代码注释
DEFREALVARNAME[10]=REP(3,5,4);定义数组,数组元素[0]~[3]以值
3.5初始化
5)使用重复值(REP)在程序执行中赋值。
以上说明的定义规则同样适用于程序执行中的赋值。
此外,还可以使用以下方法:
①表达式也允许用作值列表的元素。
②从编程的数组索引开始赋值。
从而根据需要赋值部分数组。
6)使用重复值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 变量 数学 函数