参数及表达式

这里介绍自定义界面支持的所有参数及表达式的书写规则。该页面内容为控件地址的书写规则,KUI支持的参数及表达式如下:

宏变量诊断参数系统参数伺服参数坐标参数自定义变量$m/$v系统内部数据可变变量表达式IO配置地址

参数

宏变量

  • 单通道系统中宏变量用变量符号(#)和后面的变量号指定,例如#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可写入。
  • T参数支持设置值和实际值,设置值写法为T10[conf],实际值写法为T10[cur]

    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新增)
    • __sp_axis_no[xxx]系统全局主轴对应的轴号(物理站号),其中XXX可以为数字、变量或表达式,表示主轴轴号。例如” __sp_axis_no[1]“代表全局主轴1对应的轴号
    • __sp_scode[xxx]主轴指令转速设置,其中XXX可以为数字、变量或表达式,表示主轴轴号,该参数支持显示和编辑。例如” __sp_scode[1]“代表全局主轴1对应的转速设置
    • __sp_m3_code[xxx]主轴正转M代码变量,__sp_m3_code[1]代表主轴1的正转M3代码,该参数分为整数和小数两种格式,并且支持显示和编辑。如下表格以主轴1为例:
      参 数 名 称 主轴M代码整数格式 (主轴1) 主轴M代码小数格式 (主轴1)
      正转(M3) __sp_m3_code[1] __sp_m3_code_f[1]
      反转(M4) __sp_m4_code[1] __sp_m4_code_f[1]
      停止(M5) __sp_m5_code[1] __sp_m5_code_f[1]
      定向(M19) __sp_m19_code[1] __sp_m19_code_f[1]
      夹紧(M38) __sp_m38_code[1] __sp_m38_code_f[1]
      松开(M39) __sp_m39_code[1] __sp_m39_code_f[1]
      位置(M60) __sp_m60_code[1] __sp_m60_code_f[1]
      速度(M61) __sp_m61_code[1] __sp_m61_code_f[1]
      扩展定向1(M192) __sp_m192_code[1] __sp_m192_code_f[1]
      扩展定向2(M193) __sp_m193_code[1] __sp_m193_code_f[1]
      切削主轴(M66) __sp_m66_code[1] __sp_m66_code_f[1]
  • 速率相关

    • __act_feed_speed通道反馈速率,其中__act_feed_speed$n__act_feed_speed@n的n只能为数字常量,代表通道n,默认为通道1。例如:__act_feed_speed$2代表通道2的进给速率、__act_feed_speed@2代表辅助通道2的进给速率。
    • __speed_rate[0]编程速率,当前通道的编程速率
    • __speed_rate[1]手动速率,当前通道的手动速率
  • 负载相关

    • __axis_torque[n]负载绝对值,其中n表示轴号,例如__axis_torque[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盘可用容量
  • 加工时间和系统时间

    • __cycle_time[0]单次加工时间:显示单位为秒 (V3.2新增)
    • __cycle_time[1]累计加工时间:显示单位为秒 (V3.2新增)
    • __sys_time[0]系统时间年
    • __sys_time[1]系统时间月
    • __sys_time[2]系统时间日
    • __sys_time[3]系统时间时
    • __sys_time[4]系统时间分
    • __sys_time[5]系统时间秒

注:V7支持获取浮点数的单次加工和累计加工时间
单次加工时间秒转小时:__cycle_time[0]//3600
单次加工时间秒转分钟:(__cycle_time[0]%3600)//60
单次加工时间秒转整数秒:(__cycle_time[0]%3600)%60
单次加工时间秒转小数秒:(__cycle_time[0]*100%6000)/100

  • 目标件数

    • __goal_count目标件数 (V3.2新增)
  • 其他变量

    • __plc_debug支持PLC调试开关的设置 (V3.9新增)
    • __remote_connect_status系统远程协助状态,0: 未请求远程协助; 1: 已请求,正在等待远程协助; 2: 正在远程协助中
    • __page_show[:id]自定义页面显示标记,其中id为页面id名称,例如:__page_show[:主页]表示当前显示页面的id名称为“主页”时该变量为1,否则为0。
    • __gcode_en[xxx]G代码使能标记,其中xxx为G代码编号,例如:__gcode_en[1]表示G00代码是否有效标记,1表示可用,0表示不可用。
    • __lang_code当前系统语言标记,例如:__lang_code表示当前系统语言标记,值为"chi"表示中文,值为"eng"表示英文,值为"rus"表示英文。此功能需带有iso-code标记的语言包
  • 示例

    datalabel("__act_feed_speed$2", (1, 1, 30, 100)) # 通道2当前反馈速率。  
    datalabel("__act_feed_speed@2", (1, 1, 30, 100)) # 辅助通道2当前反馈速率。
    datalabel("__speed_rate[0]", (1, 1, 30, 100)) # 当前通道编程速率。
    datalabel("__speed_rate[1]", (1, 1, 30, 100)) # 当前通道手动速率。
    

注:不支持多通道的系统软件会忽略$n。 $n表示主通道,@n表示辅助通道。

IO配置地址

dio函数,读取或设置某个IO配置的值,语法为dio参数1[参数2][参数3]]

其中:参数1: 范围0-3,分别表示DI、DO、DI-Valid、DO-Valid 参数2: 范围0-16,0表示本地模块,1-8表示总线模块1-8,32表示远程模块 参数3: 表示模块数据位,本地模块0-96,总线模块0-64,远程模块0-320

例如:表示DI,本地模块,数据位1,dio0[0][0]

datalabel("dio0[0][0]", (1, 1, 30, 100))

可变变量

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及之后的版本中才有意义,在之前的版本中结果是未定义的