KUI脚本语法与系统宏程序语法基本相同,不同之处在下面列出
''' '''
中,
作为"运行脚本"函数的参数。具体使用方法见相应控件的说明。KUI脚本中的字符串需要用双引号括起表示
从V2.5开始,未初始化的宏变量和KUI自定义变量在KUI脚本中使用其值时会报错"脚本执行错误"
包括IF、ELSEIF、ELSE、ENDIF
IFxxxTHEN // 此行为一个语句,占一行
xxx
ELSEIFxxxTHEN // 此行为一个语句,占一行
xxx
ELSE
xxx
ENDIF
WHILE语句使用ENDWHILE结束,WHILE语句可以嵌套使用,ENDWHILE与上边距离最近的未组合的WHILE DO组合。
WHILExxxDO // 此行为一个语句,占一行
xxx
ENDWHILE
支持FOR循环,语法为:
FOR a=b TO c BY d DO // a只能是一个自定义变量或宏变量中的局部变量,
xxx //[b,c]是一个闭区间。d为变量a每次的递增值,默认为1,可正、可负也可以是浮点数
ENDFOR // 当a不在[b,c]区间之内时结束循环
FOR #a1= 1 TO 20 DO // 此行为一个语句,占一行
xxx //中间代码循环20次
ENDFOR
FOR #1= 10 TO 1 BY -1.9 DO // 此行为一个语句,占一行
xxx //中间代码循环5次
ENDFOR
上面的三种 “条件” 及 “循环” 语句可以嵌套使用,例如IF语句中嵌套一个FOR循环
IFxxxTHEN // 此行为一个语句,占一行
FOR #1= 10 TO 1 BY -1.9 DO // 此行为一个语句,占一行
xxx //中间代码循环5次
ENDFOR
ELSE
xxx
ENDIF
支持自定义变量,自定义变量的名字由小写字母或小写字母+数字组成。自定义变量在KUI脚本中的使用方法为将变量名前面加上”#“直接使用,自定义变量语法格式与宏程序中的宏变量语法格式相同;自定义变量也可以在data控件中使用,格式为{变量名}。
data("{v2}", (1, 2)) #自定义变量为v2,在KUI脚本中使用格式为#v2,#v2的使用语法与宏程序中宏变量相同
KUI脚本支持设置和读取数控系统数据。(系统参数、宏变量、诊断参数(只有KDTC和F区的部分参数可以赋值)、伺服参数)
格式为:#["参数名称"]
// 这种直接使用的形式对诊断参数有一定限制,因为无法指定诊断参数的位数,均默认为u8。
// 可以使用下面介绍的PLC函数指定诊断参数的位数。
#103=#["P1115"] //读取系统参数P1115到#103
#["P1105.5-3"]=1 //系统参数P1105.5-3设置为1
#500=#["D5"] //读取D5的值到#500
#["K0.3"]=1 //K0.3设置为1
#["PA5-4"]=50 //伺服参数PA5-4设为50
EXPORT函数,输出数控系统的参数到U盘,目前只支持输出PLC配置参数,语法为:
menu("执行脚本", 运行脚本("EXPORT[\"plccfg\"]") #菜单名称"执行脚本",键按下时向U盘输出PLC配置参数
V1.5新增
执行伺服命令以TU2指令为例,语法为:
SVOPR["TU2", XXX] // XXX可以是轴名字符串,如"A";可以是轴号数字,如 1;也可以是KUI的自定义变量
#v1=#["D5"] // 在此处定义KUI自定义变量v1,赋值为系统诊断参数D区5号参数
SVOPR["TU2", #v1] // 此处操作的是v1代表的轴号
支持的伺服指令有DEF/BA/RS/TU1/TU2/TU3/B-TU3/TU4/TU5/TU6/TU7/A-TU7/B-TU7/TU8/TU9/TUF/D/CL
弹出对话框一般要根据操作者按下的软按键执行不同操作,故多和IF语句同时使用,格式如下:
下面的格式是将KUI脚本写成一个文件执行时的语法,当将脚本写成一个字符串时要将下面的\n
写成\\n
IF RESULT_YES==MSGBOX["是否执行TU2操作,选择执行将会执行TU2操作\n选择取消将不会执行TU2操作\n有疑问请咨询KND", MB_YESNOCANCEL, "提示"] THEN
SVOPR["TU2", "4"]
ENDIF
MSGBOX函数用于定义对话框的内容,MSGBOX[参数1,参数2,参数3],
MB_OK
:软按键处仅显示"确定 “一个选项,其选项值为0MB_OKCANCEL
:软按键处显示"确定”、“取消” 两个选项,其选项值为1MB_ABORTRETRYIGNORE
:软按键处显示"终止”、 “重试” 、“忽略” 三个选项,其选项值为2MB_CANCELRETRYCONTINUE
:软按键处显示"取消"、 “重试” 、“继续” 三个选项,其选项值为3MB_RETRYCANCEL
:软按键处显示"重试"、“取消” 两个个选项,其选项值为4MB_YESNO
:软按键处显示"是"、“否"两个选项,其选项值为5MB_YESNOCANCEL
:软按键处显示"是”、 “否” 、“取消” 三个选项,其选项值为6MSGBOX函数的返回值取决于操作者按下的软按键。下方表格列出了软按键名称、其对应的中文和按下之后的返回值。上面的七种组合形式为目前支持的所有形式,用户不能自定义新的组合。
软按键名称 | 中文名称 | 返回值 | 返回值数据 |
---|---|---|---|
MB_OK | 确定 | RESULT_OK | 1 |
MB_CANCEL | 取消 | RESULT_CANCEL | 2 |
MB_ABORT | 终止 | RESULT_ABORT | 3 |
MB_RETRY | 重试 | RESULT_RETRY | 4 |
MB_IGNORE | 忽略 | RESULT_IGNORE | 5 |
MB_CONTINUE | 继续 | RESULT_CONTINUE | 6 |
MB_YES | 是 | RESULT_YES | 7 |
MB_NO | 否 | RESULT_NO | 8 |
menu("TU2操作", action=运行脚本('''IF RESULT_YES==MSGBOX["是否执行TU2操作,选择执行将会执行TU2操作\\n选择取消将不会执行TU2操作\\n有疑问请咨询KND", MB_YESNOCANCEL, "提示"]
THEN SVOPR["TU2", "4"]
ENDIF'''))
如下图所示,对话框的标题为"提示",中间的文字内容在\\n
处换行,下方软按键处有三个选项为"是"、“否"和"取消”。按下"是"软按键时的返回值为 RESULT_YES,将执行TU2指令。
VAR函数,读取或设置某个宏变量的值,语法为:
第1个参数为宏变量号,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量;第2个参数为要赋给此宏变量的值,值的类型和第1个参数一样(可选)。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=VAR[12] //将宏变量#12的值赋给自定义变量v2。
#v2=VAR[12, 233] //将233赋值给宏变量#12,再赋值给自定义变量v2。
#v2=VAR[#v1, #v3] //将自定义变量v3的值赋给自定义变量v1表示的宏变量号。
#v2=VAR[#v1, PLC["D1", "u8"]] //将PLC参数D1的值赋值给自定义变量v1表示的宏变量号
第1个参数为PLC参数地址,可以是写在双引号中的地址字符串、表示字符串的KUI自定义变量或者STRCONCAT函数的返回值(此处不能将函数返回值赋值给变量), 支持位型地址;第2个参数为PLC参数的类型,当第1个参数为位型地址时此处类型写"u8";第3个参数为赋给PLC参数的值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(第3个参数是可选的)。
被赋值的PLC参数必须是可被赋值的。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=PLC["K1.1", "u8", 1] // 将PLC参数K1.1赋值为1,再将#v2赋值为1。
#v2=PLC["D1", "u8"] // 将PLC参数的D1的值赋给v2, D1数据类型为u8。
#v2=PLC["D1", "u8", 122]// 将PLC参数的D1的值设置为122,再赋给v2, D1数据类型为u8
#v2=PLC["D1", "u8", #v3]// 将自定义变量v3的值赋给D1,再赋给v2。
#v2=PLC["D88", "u32", PLC["D96", "u32"]] //将D96的值赋给D88。
#v2=PLC["D1", "u8", #["P1115"]] //将系统参数P1115赋值给D1,再赋给v2。
第1个参数为索引,第二个参数为值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(可选)
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=PLCCFG[0] //获取PLCCEG[0]的值赋给v2
#v2=PLCCFG[0,33] //获取PLCCEG[0]设置为33,再赋给v2
PRM函数,读取或设置某个系统参数的值,语法为:
第1个参数为参数号;第2个参数为位型索引,不是位型时需要将此参数设置为8;第3个参数为轴号,非轴型参数需要将此参数设置为0;第4个参数为赋给系统参数的值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(可选)。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=PRM[1105, 1, 2] //获取系统参数P1105.1-2的值赋给v2
#v2=PRM[1105, 1, 2, 1 ] //系统参数P1105.1-2设置为1,再赋给v2
#v2=PLC["D88", "u32", PRM[1115, 8, 0]] //将P1115的值赋给D88。
SVPRM函数,读取或设置某个伺服参数的值,语法为:
第1个参数为参数号;第2个参数为位型索引,不是位型时需要将此参数设置为8;第3个参数为轴号;第4个参数为赋给伺服参数的值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(可选)。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=SVPRM["PA10", 1, 2]//获取系统参数PA10.1-2的值赋给v2
#v2=SVPRM["PA10", 1, 2, 1 ]//系统参数PA10.1-2设置为1,再赋给v2
PAGE函数,跳转至某个自定义页面。
PAGE[xxx] // xxx为相应页面的id,运行此函数时将跳转到id为xxx的页面,xxx可以是双引号括起的字符串也可以是数字,取决于跳转到的页面的id。
脚本里支持打开和关闭面板 (v3.4新增)
PANEL["dlg1"] #打开面板dlg1
CLOSE_PANEL[""] #关闭面板
脚本里支持设置定时脉冲,可以增加弹窗提示 (v3.6新增)
menu("脉冲脚本", action=运行脚本('''IF RESULT_YES==MSGBOX["是否执行K1.1定时脉冲,有疑问请咨询KND", MB_YESNOCANCEL, "提示"] THEN
TIMER_PULSE["K1.1", 1000]
ENDIF'''))
ISNOTNULL函数,判断一个KUI自定义变量或者宏变量是否被初始化
V2.5新增
ISNOTNULL[xxx] // xxx为某个宏变量或者KUI自定义变量,当xxx未被初始化时返回false,已被初始化时返回true。
第1个参数为带有"转换说明符"的待格式化字符串,其中可以有1个或多个"转换说明符","转换说明符"由%和其右边一个字符组成,不同字符表示不同含义,%d格式化整数,向0取整;%u格式化无符号整数,小于0的数格式化为0,大于0的数向0取整;%s格式化字符串;从第2个参数开始的n个参数依次对应第1个参数中的第n个"转换说明符"。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2= STRFORMAT["D%d", #v1] //format D%d给v2
#v2= STRFORMAT["D%d F%s", #v1, #vm]//format D%d F%s给v2
#v2= PLC[STRFORMAT["D%d", #v1], "u32", 112] // 将112赋值给相应地址的D区参数,地址号由自定义变量v1决定。
此函数可以有2~n个参数,每个参数为写在双引号中的字符串/表示字符串的KUI自定义变量或者STRCONCAT函数的返回值。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2= STRCONCAT["D1 ", "D2"]//结果为"D1 D2"赋给v2
#v2= STRCONCAT["D1 ", "D2", "D3"]//结果为"D1 D2D3"赋给v2
#v2= STRCONCAT[STRCONCAT["D1 ", "D2"], "D3"] // 和上1行结果等价,第2个函数不能将返回值赋值给变量
格式化自定义变量为字符串,语法为:
[#v1:06u] // 中括号不能省略,"["右侧必须是一个自定义变量,冒号后面为格式化控制字符。
// 此语法主要用于生成程序时,将变量格式化为字符串,生成程序时所有的变量都会默认被当做数值处理,此语法可以更精细的控制生成程序的格式。
格式化控制字符主要由一些数字和字符组成,其详细含义和组合形式在下面给出。
最右侧的字符含义如下
c - 接受一个数字, 并将其转化为ASCII码表中对应的字符
d, i - 接受一个数字并将其转化为有符号的整数格式
o - 接受一个数字并将其转化为八进制数格式
u - 接受一个数字并将其转化为无符号整数格式
x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母
X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母
e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
f - 接受一个数字并将其转化为浮点数格式
g(G) - 接受一个数字并将其转化为e(E, 对应G)及f中较短的一种格式
q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
s - 接受一个字符串并按照给定的参数格式化该字符串
为进一步细化格式, 可以在字符左侧添加参数. 参数将以如下的顺序读入:
(1)符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
(2)占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3)对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4)宽度数值
(5)小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如5.3s)则设定该字符串只显示前n位.
<<
、>>
、~、&、^、XOR、|