参数及表达式

这里介绍自定义界面支持的所有参数及表达式的书写规则。

参数

宏变量

  • 单通道系统中宏变量用变量符号(#)和后面的变量号指定,例如#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可写入。

    R区可写为V3.0新增

系统参数

  • 系统参数对应系统中参数页面中的参数,用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] 余移动量

V2.4新增相对坐标和余移动量

自定义变量

  • KUI界面可以自定义变量,自定义变量名称可以为小写字母或小写字母+数字,不支持大写字母。在控件中使用的自定义变量是自定义界面的全局变量,即可以在同 一页面中的不同控件中使用同一个自定义变量,也可以在同一个自定义界面中的不同页面中使用一个自定义变量。自定义变量可以同时在控件和脚本中使用。为了区别 于系统数据,在控件中使用自定义变量时将其包含在大括号{ }内,形如{v1},在KUI脚本中将变量名前面加上符号(#),作为一个普通宏变量使用,形如#v1。
  • 仅在KUI脚本中使用的自定义变量是KUI脚本的局部变量。
  • 自定义变量未初始化时处于一个无值的非法状态,局部自定义变量是非保持型变量,全局自定义变量分为保持型和非保持型两种:在控件中使用自定义变量时在{ } 前面加两个下划线 “__” 说明此变量是全局非保持型变量,全局非保持型变量在第一次赋值前处于无值的非法状态,赋过一次值后关机、再开机其值为0; 全局保持型变量在第一次赋值前处于无值的非法状态,赋过一次值后关机再开机,其值与关机前一致。(V2.5新增)

$m/$v

  • $m/$v是在测量加输入加输入三个菜单中使用的两个变量。
  • $v是当前捕获光标的teach控件的编辑值。
  • $m是在teach控件中使用的变量,其值与$v相关,详细用法见上面三个菜单的教程。

系统内部数据

V1.8开始支持

以 __开头的表示系统内部数据,目前支持的系统内部数据有:

  • 主轴原始角度(单位是°),其名称为__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)) # 手动速率
      

    注:不支持多通道的系统软件会忽略$n。

  • 程序列表信息:其名称为__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新增)

可变变量

V2.0开始支持

这种变量的地址是可变的,根据某一确定变量的值将此变量绑定到不同变量(可以是此页上面列出的任意变量)。语法格式有下面两种

  1. 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,且不可对其赋值。
  1. 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。在进行比较运算时将空值特殊处理:NULLNULL相等、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及之后的版本中才有意义,在之前的版本中结果是未定义的