参数及表达式
这里介绍自定义界面支持的所有参数及表达式的书写规则。
参数
宏变量
- 单通道系统中宏变量用变量符号(#)和后面的变量号指定,例如#540。
- 多通道系统的主通道宏变量写法为 #540@Pxx,xx为通道号,省略@Pxx时为通道1。(控件中使用)
- 辅助通道宏变量为 #540@Axx,xx为辅助通道号。(控件中使用)
- 多通道系统中还可以使用宏变量的别名如#ABSOT[1],代表1轴当前绝对坐标值,系统支持的宏变量别名及含义见V6多通道补充说明,也可在后面加入@Pxx或@Axx表示通道及索引。
- 脚本中支持主通道宏变量和辅助通道宏变量: (V3.6.2新增)
- 主通道宏变量格式示例:#540$1、#540$2,省略$xx时为通道1
- 辅助通道宏变量格式示例:#540@1
诊断参数
- 诊断参数包括K/D/T/C/X/Y/R/S/F/G区参数,分为位型和字节型两种。
- 位型参数书写格式为"字母+参数号+位号",例如K0.1为K区0号参数第1位。
- 字节型数据可以根据需要设定数据类型,共6种,u8/u16/u32/s8/s16/s32,s表示有符号数,u表示无符号数,数字表示数据的位数,默认为u8。形式为xxx[type],如F660[u16],表示F区660号参数,参数类型为无符号16位。16位参数的参数号必须为偶数,即2个字节的倍数;32位参数的参数号必须为4的倍数。
- K/D参数可写,F区中有部分参数是可写的,其余参数均是只读的。其中V5版本的数控系统软件F区写入范围为F5200~F5231,V6版本的数控系统软件F区写入范围为F19000~F19031。当G138设置为181时R17000~R170100可写入。
系统参数
- 系统参数对应系统中参数页面中的参数,用P表示,分为位型和非位型两种。
- 非位型参数中非轴型参数用"P+参数号"表示,例如P11。轴型参数用"P+参数号+[轴号]“表示,例如P415[1]代表系统参数页面的P415-1号参数。轴号也可以是变量或表达式,例如P415[D1],则轴号由变量"D1"决定。
- 位型参数中非轴型参数用"P+参数号+位号"表示,例如P1.1。轴型参数用"P+参数号+位号+[轴号]“表示,例如,P405.0-[1]表示405-1号参数的第0位。轴号可以是变量或表达式,例如P405.0-[D1],则轴号由变量"D1"决定。
伺服参数
- 支持伺服参数PA,ZA-ZF/ZP
- 伺服参数的写法为"参数号”+"[轴号]",例如PA1[2]表示第2轴的伺服参数PA1。位型参数的写法为"参数号”+“位号”+"[轴号]",例如PA08.2[1]。
- 伺服参数的"轴"号可以是变量或表达式,例如PA1[D1]代表的轴号由变量"D1"决定。
坐标参数
- 在coor控件中可直接使用类似“X”的轴名称或形如“coor1"的轴号表示。
- 在表达式中可以使用“轴名称[xx]“的形式
- 例如:
数据格式1 |
数据格式2 |
含义 |
X[abs] |
coor1[abs] |
绝对坐标 |
X[mt] |
coor1[mt] |
机床坐标 |
X[rel] |
coor1[rel] |
相对坐标 |
X[inot] |
coor1[inot] |
余移动量 |
自定义变量
- KUI界面可以自定义变量,自定义变量名称可以为小写字母或小写字母+数字,不支持大写字母。在控件中使用的自定义变量是自定义界面的全局变量,即可以在同
一页面中的不同控件中使用同一个自定义变量,也可以在同一个自定义界面中的不同页面中使用一个自定义变量。自定义变量可以同时在控件和脚本中使用。为了区别
于系统数据,在控件中使用自定义变量时将其包含在大括号{ }内,形如{v1},在KUI脚本中将变量名前面加上符号(#),作为一个普通宏变量使用,形如#v1。
- 仅在KUI脚本中使用的自定义变量是KUI脚本的局部变量。
- 自定义变量未初始化时处于一个无值的非法状态,局部自定义变量是非保持型变量,全局自定义变量分为保持型和非保持型两种:在控件中使用自定义变量时在{ }
前面加两个下划线 “__” 说明此变量是全局非保持型变量,全局非保持型变量在第一次赋值前处于无值的非法状态,赋过一次值后关机、再开机其值为0;
全局保持型变量在第一次赋值前处于无值的非法状态,赋过一次值后关机再开机,其值与关机前一致。(V2.5新增)
$m
/$v
$m
/$v
是在测量、加输入、加输入三个菜单中使用的两个变量。
$v
是当前捕获光标的teach控件的编辑值。
$m
是在teach控件中使用的变量,其值与$v
相关,详细用法见上面三个菜单的教程。
系统内部数据
以 __开头的表示系统内部数据,目前支持的系统内部数据有:
-
主轴原始角度(单位是°),其名称为__sp_angle_pos[xxx]
,其中XXX可以为数字、变量或表达式,表示主轴轴号。例如” __sp_angle_pos[1]“代表
主轴1的原始角度,"__sp_angle_pos[D10]“代表主轴轴号为D10的主轴原始角度,不受主轴类型 (A/B/C/D类旋转轴) 所影响的角度,取值范围为0~360°。(V1.8新增)
-
速率
-
主通道反馈速率,其名称为 __act_feed_speed$n
,其中n只能为数字常量,代表通道n,默认为通道1 (V1.8新增)
-
辅助通道反馈速率,其名称为 __act_feed_speed@n
,其中n只能为数字常量,代表通道n,默认为通道1 (V3.9新增)
-
编程速率__speed_rate[0]
(V3.2新增)
-
手动速率__speed_rate[1]
(V3.2新增)
-
示例
datalabel("__act_feed_speed$2", (1, 2, 1, 1)) # 通道2当前反馈速率。
datalabel("__act_feed_speed@2", (2, 2, 1, 1)) # 辅助通道2当前反馈速率。
datalabel("__speed_rate[0]", (3, 2, 1, 1)) # 编程速率
datalabel("__speed_rate[1]", (4, 2, 1, 1)) # 手动速率
-
程序列表信息:其名称为__prog_list_info[x]
(V3.0新增)
__prog_list_info[0]
表示程序已用
__prog_list_info[1]
表示程序可用
__prog_list_info[2]
表示空间可用
__prog_list_info[3]
表示空间已用
-
U盘列表信息:其名称为__usb_list_info[x]
(V3.0新增)
__usb_list_info[0]
表示文件数
__usb_list_info[1]
表示写保护
__usb_list_info[2]
表示U盘容量
__usb_list_info[3]
表示U盘可用容量
-
负载绝对值:其名称为__axis_torque[n]
,其中n表示轴号,例如__axis_torque[1]
表示1轴负载绝对值,(V3.0新增)
-
时间
- 循环时间
__cycle_time[0]
:显示单位为秒 (V3.2新增)
- 总加工时间
__cycle_time[1]
(V3.2新增)
-
工件数量
- 目标件数
__goal_count
(V3.2新增)
-
支持PLC调试开关的设置:其名称为 __plc_debug
(V3.9新增)
可变变量
这种变量的地址是可变的,根据某一确定变量的值将此变量绑定到不同变量(可以是此页上面列出的任意变量)。语法格式有下面两种
- select{var, (val1, var1), (val2, var2), (val3, var3)…} 式中var/var1/var2/var3表示变量名,val1/val2/val3表示数值,省略号
表示可以为任意数量。此变量将绑定到与var的值相等的valn对应的varn变量,当var的值不与任意给出的valn的值相等时此变量处于一个非法状态,此时变量的值为0,
且不能给变量赋值。举例:
select{D10, (1,D11), (2,D12), (3,D13)} // 当D10值为1时此变量被绑定到D11,当D10值为2时此变量被绑定到D12...,当D10的值不为1/2/3中的任意一个时此变量处于非法状态,值为0,且不可对其赋值。
- select{var, var1, var2, var3…} 式中var/var1/var2/var3表示变量名,,省略号表示可以为任意数量。var的值为1/2/3时此变量将分别被绑
定到var1/var2/var3,当var的值不与1/2/3中任意一个值相等时此变量处于一个非法状态,此时变量的值为0,且不能给变量赋值。举例:
select{D10, D11, D12, D13} // 当D10值为1时此变量被绑定到D11,当D10值为2时此变量被绑定到D12...,当D10的值不为1/2/3中的任意一个时此变量处于非法状态,值为0,且不可对其赋值。
表达式
- 表达式算数运算符支持加减乘法除和小括号”+"、"-"、"*"、"/"、"()"。
- 表达式比较运算符支持大于/小于/小于等于/大于等于/等于/不等于”>"、"<"、"<="、">="、"=="、"!=" 。未初始化的宏变量和未初始化的自定义变量被认定为
NULL
。在进行比较运算时将空值特殊处理:NULL
和 NULL
相等、NULL
和其他值不等、且NULL
和其他值除 “!=“运算外的其他比较运算均返回false。
|
== |
!= |
< |
> |
<= |
>= |
NULL和NULL |
1 |
0 |
0 |
0 |
1 |
1 |
NULL和其他值 |
0 |
1 |
0 |
0 |
0 |
0 |
- 表达式支持的变量为坐标参数、系统参数、伺服参数、宏变量、可变变量。
- 表达式支持逻辑 “&&” 和 " ||” 运算符。逻辑运算符和C语言中相应的运算符类似。a && b,当a不为0且b不为0时运算结果为1,其他情况下运算结果为0。 a || b,当a为0,且b为0时运算结果为0,其他情况下运算结果为1。
- 通过中括号”[]“来表示地址的属性,如D100[u8],表示PLC参数D100,D100的属性为u8。
- 输入变量来源宏变量支持号为动态的表达式(v3.3新增)
teach("#[#500-2]", "coor1", (1, 2), group=0) #宏变量号为#500-2
textbox("#[D10+10*2]", (1, 3)) #宏变量号为D10+10*2
combobox("#[{v1}-1+D5]", (1, 4), choices={0: "这是正确的", 1: "这是一个错误"}) #宏变量号为{v1}-1+D5
datalabel("#[#500+5]", (2, 1)) #宏变量号为#500+5
- 需要描述的属性为:
- PLC参数属性u8、s8、u16、s16、u32、s32, 如D100[u8],表示PLC参数D100,D100的属性为u8。
- 坐标属性abs、mt、rel、inot,如X[abs], 表示X绝对坐标。
- 由于XYC地址既可以做PLC参数,也可以做坐标轴,使用XYC地址时必须加入属性。
- 表达式举例:#500+X[abs]*2-K10[u8]。
- PLC赋值表达式溢出时会自动强制转换为当前的类型,如F5210[u8]=F5210[u8]+ 1,当值超过255时,F5210为8位,会转为0。
当#530=F5210[u8]=F5210[u8]+ 1,F5120[u8]溢出时,#530也会被赋值为溢出后的值。
从V2.2开始,未初始化的宏变量和未初始化的自定义变量被认定为 NULL
在进行逻辑运算时 NULL
相当于0。
空值比较运算在V2.2及之后的版本中才有意义,在之前的版本中结果是未定义的