脚本编程手册

文档版本:V3.3.2

App版本号:V3.3.6

控制器版本号:V3.4.0_alpha3

image1注意:

协作机器人的定义遵循国际ISO标准及国标相关规定来保护作业者的安全,我们不推荐直接将机器人本体应用于作业对象为人体的场合。但机器人应用者或应用开发者确有需要涉及机器人作业对象为人体的场合时,需要在应用者或应用开发者充分评估在人员安全得到保障的前提下,为机器人本体配置安全可靠、经过充分测试及认证的安全防护系统,以保护人员安全。

此App使用手册所包含的内容是上海节卡机器人股份有限公司(后文统称为节卡)的专有财产,未经节卡的书面同意,不得以任何形式使用其内容。

节卡会定期对App使用手册进行修正和完善,其内容可能会更改,恕不另行通知。使用本手册前请认真核对实际产品信息。

App使用手册所包含的信息不是节卡的承诺,节卡对本手册中可能出现的任何错误以及对使用本手册及其所介绍产品而引起的意外或间接伤害概不负责。安装、使用产品前,请仔细阅读本手册。

本手册图片仅供参考,请以实物为准。

若机器人本体出现被改造或者拆卸的情况,节卡不负责售后工作。

节卡提醒用户在使用、维修JAKA机器人时必须使用安全设备,必须遵守安全条款。

节卡机器人的程序设计者、机器人系统的设计和调试者,必须熟悉JAKA机器人的编程方式和系统应用安装。

手册使用说明

本手册主要包含JAKA Zu App的脚本编程介绍与使用等部分。

本手册面向的用户应接受过基本的机器人使用培训,这将更加有助于JAKA Zu软件脚本编程使用。

更多信息

image2如果您还想了解更多的产品信息,请扫描右侧二维码访问我们的官网www.jaka.com。

JAKA编程脚本简介

JAKA编程脚本是控制节卡机器人的专用编程语言。用户可以根据JAKA编程脚本所规定的语法进行编程来控制机器人。

JAKA编程脚本基础

JAKA基础语法

标识符

在JAKA编程脚本中,标识符区分大小写,and 是一个保留字,但And和AND是两个不同的有效的名称。按照惯例,程序应当避免创建以下划线后跟一个或多个大写字母开头的名称(例如:_VERSION)。

另外命名需要满足以下规则:

·只能使用英文字母、数字和下划线

·第一个字符不能是数字

·不能将关键字用作标识符

·最长支持255个字符,建议不超过30个字符,1个汉字按3个字符计算

示例:

# legal
\_var1 = 1
var2 = 1
VAR3 = 1
\_2KDDinKAEld74Zl8WzKP = 1
# illegal
4VAR = 1
if = 1

预留关键字

下表展示了在JAKA机器人编程脚本中的保留字。这些保留字不能用作常数或变量,或任何其他标识符名称。

and

break

do

else

elif

end

false

for

function

goto

if

in

local

nil

not

or

repeat

return

then

true

until

while

脚本注释

JAKA机器人编程脚本支持单行注释,不支持多行注释。单行注释采用 # 开头,从#开始至该行末尾的所有字符串作为注释内容。

示例:

# the first comment
str = “Hello, World!” #the second comment

语句

JAKA机器人编程脚本支持多个语句或表达式使用分号分隔,写在同一行,解析器会根据优先级自左向右顺序执行。不支持一行语句拆分到多行书写。

基本类型

JAKA机器人编程脚本提供标量、字符串与数组三种基本类型数据支持。在数组的基础上,用户可以使用预定义的系统变量。

标量

JAKA 机器人编程脚本不区分布尔类型、整形与浮点型数据。对布尔类型,false对应0,true对应1。

示例:

var = 1
# or
var = 1.0
# or
var = (expr1 > expr2)

字符串

用户定义字符串时需要使用英文双引号(“”)进行包裹。目前JAKA Script支持的转义字符如下表,用户在定义字符串时需要注意,否则会造成解析错误。

表 1 转义字符

转义字符

描述

\\

反斜杠符号

\'

单引号

\"

双引号

\n

换行

\t

横向制表符

\r

回车

示例:

string = “this is a \\“string\””
string = “This is a string \\n”

数组

数组是存放一组数据的容器。目前数组中的内容可以是标量、字符串,也可以是另一个数组。

·数组定义

语法形式:

arr = [...] #定义一个数组
arr = [] #定义一个空数组
arr_num = [1,2,3,4] # 标量数组
arr_str = [“aa”, “bb”, “cc”] #字符串数组
arr_arr = [[1,2,3],[4,5,6],[7,8,9]] #嵌套数组
#结果
# arr_num[0] : 1
# arr_str[1] : bb
# arr_arr[2][2]: 9

·单元素的索引访问

假设数组变量array的长度为N,对于单个元素的访问,支持以下形式:

array[index],其中index范围支持 [0, N-1]。

当index取值不在支持范围内,获取到的值为默认的空值nil。

示例:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
b = a[0] # b = a[0]
Index = 1
b = a[Index] # b = a[1]
b = a[100] # b=nil

·数组的子区间访问

提供脚本函数 subarr = slice(arr, start, end, step) 用于数组的切片访问。

示例:

arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
#使用切片语法
#a5 = arr[5]
slice1 = arr[1:5:2]   #获取索引 2 到 5 的元素 (不包括 5)
log_message(1,slice1) #
slice2 = slice(arr, 1,5,2)
log_message(1,slice2) # 输出:20,40
slice3 = slice(arr, 1,8,2)
log_message(1,slice3) # 输出:20,40,60,80
slice4 = slice(arr, 1,5)
log_message(1,slice4) # 输出:20,30,40,50
slice5 = slice(arr, 1,100)
log_message(1,slice5) # 输出:20,30,40,50,60,70,80,90
# 输出日志
2026/02/28 17:18:17:793 # 1 # 0 # 20,40
2026/02/28 17:18:17:800 # 1 # 0 # 20,40
2026/02/28 17:18:17:809 # 1 # 0 # 20,40,60,80
2026/02/28 17:18:17:818 # 1 # 0 # 20,30,40,50
2026/02/28 17:18:17:824 # 1 # 0 # 20,30,40,50,60,70,80,90

支持访问指定数组区间内按指定间隔选取的子序列,并以数组形式返回。访问格式为 array[num_start: num_end: num_step]。

参数 num_start、num_end、num_step 必须为整型常数字面量,暂不支持使用变量作为参数。当 num_step 为0时,程序报错并终止执行;其他情况下,即使参数超出数组边界,也不会报错,只返回数组有效范围内满足条件的值;如不存在则返回空数组。

示例:

a = [1,2,3,4,5,6,7,8,9,0]
b = a[0:5:1] #[1, 2, 3, 4, 5]
# illegal
Start = 0
End = 5
Step = 1
B = a[Start: End: Step] # num_start、num_end、num_step,必须为整形常数字面量,暂不支持使用变量作为参数

·数组与位姿表示

在JAKA机器人编程脚本中,采用6元素数组表示机器人关节位置或空间位姿。关节位置数组的各元素为 [joint1, joint2, joint3, joint4, joint5, joint6],分别表示各关节相对于零位的角度值,单位为°。空间位姿的各元素为 [Tx, Ty, Tz, Rx, Ry, Rz],其中Tx、Ty、Tz和Rx、Ry、Rz分别为机器人末端TCP(Tool Center Point)相对于机器人坐标系的平移距离和旋转角度,单位分别为mm和°。

示例:

endPosJ = [90, 90, 90, 90, 90, 90] #关节空间位置数组
endPosL = [663.5, 8.159996, 6.950005, 90, 0, 0] #笛卡尔空间位置数组

·数组赋值

两个数组的赋值是引用传递,而不是拷贝。例如:

a = [1, 2, 3, 4] # 定义并初始化数组 a,内容为 [1,2,3,4]
b = [] # 定义一个空数组 b(此步骤实际上没有意义,因为下一行会覆盖)
b = a # b 和 a 现在引用同一个数组
b[1] = 11 # 修改 b[1],实际上修改的是 a 和 b 共同引用的那个数组
# a[1] = b[1] = 11,因为 a 和 b 指向同一个数组

若需要实现拷贝赋值,可使用内部指令 table.move(a1, s, e, t, a2)。该指令将数组a1中从 a1[s] 到 a1[e] 的元素,复制到数组a2中从 a2[t] 开始的位置。目标范围可以与源范围重叠,待移动的元素数量必须在数组索引可表示的范围内。

示例:

a = [1, 2, 3, 4] # 定义并初始化数组 a,内容为 [1,2,3,4]
b = [] # 定义一个空数组 b
table.move(a,0,get_length(a),0,b) # 将数组a 的所有元素 拷贝给 数组b ;b = [1,2,3,4]
b[1] = 66 # 修改b[1]为66
# b[1] = 66; a[1] = 1

全局变量

在作业程序中定义的变量(程序变量)在程序执行结束之后将被释放。对于希望值能够持久保存的变量,JAKA编程脚本提供全局变量机制。全局变量分为持久化全局变量和非持久化全局变量。

持久化全局变量需通过APP预先定义,设置别名并自动随机分配ID(ID为大于等于0小于2147483647的整数),定义好后,可在脚本程序中直接通过ID访问.访问方式为: SYSVAR[ID]。

非持久化全局变量的定义与程序变量相同,区别在于非持久化全局变量在定义后可以在主线程调用的其他程序或子线程中使用,但是程序停止后会被释放,不会保存到文件中。

全局变量值的类型支持标量、字符串和数组,数组元素值的类型同样支持标量、字符串和数组。

数组类型的全局变量支持区间访问,访问方式与数组子区间访问相同。

示例:

SYSVAR[5500] = 100
a = SYSVAR[5500]
SYSVAR[234512] = “this is string”
b = SYSVAR[234512]
SYSVAR[34321] = [1,2,3,4,5,6,7,8,9,10,11,12]
c = SYSVAR[34321][1] # c=2
SYSVAR[34321][0]=”str” # SYSVAR[34321] = [“str”,2,3,4,5,6,7,8,9,10,11,12]
SYSVAR[34321][11]=[11,22,33] # SYSVAR[34321] = [“str”,2,3,4,5,6,7,8,9,10,11,[11,22,33]]
arr = SYSVAR[34321][1:5:1] # arr = [2,3,4,5]

注:

  1. 全局变量暂不支持负索引。

  2. 全局变量的ID索引值大于等于0,小于2147483647.

  3. 解析器在执行全局变量的赋值和读取时,都会先进行指令同步操作,即指令队列中的指令都执行完,队列清空后才执行全局变量的赋值和读取(原因:全局变量会被用在多线程间交互数据,操作全局变量前进行同步可避免执行逻辑的混乱)。潜在影响:若全局变量操作指令前后存在运动指令,则前后两条运动指令之间的转接会被打断。

表达式

算术运算符

算术运算符用来进行四则运算,按照运算符优先级将其分组,(、/、%、*)的优先级高于(+、-)。优先级高的运算符比优先级低的运算符结合得更加紧密,下表的运算符满足左结合律,即当运算符优先级相同时按照从左向右的顺序进行。

算术运算符

运算符

功能

用法

*

乘法

expr * expr

/

除法

expr / expr

%

求余

expr % expr

**

求幂

expr ** expr

+

加法

+expr

-

减法

-expr

逻辑与关系运算符

关系运算符作用于算术类型,逻辑运算符作用于任意能转换成布尔值的类型。逻辑运算符和关系运算符的返回值类型都是布尔类型。

逻辑运算符和关系运算符

结合律

运算符

功能

用法

支持的输入数据类型

右

!

逻辑非

!expr

整型、布尔型

左

&&

逻辑与

expr && expr

整型、布尔型

左

||

逻辑或

expr || expr

整型、布尔型

左

<

小于

expr < expr

整型、字符串

左

>

大于

expr > expr

整型、字符串

左

==

等于

expr == expr

整型、字符串

左

!=

不等于

expr != expr

整型、字符串

左

<=

小于等于

expr <= expr

整型、字符串

左

>=

大于等于

expr >= expr

整型、字符串

位运算符

位运算符作用于整数类型的运算对象,并把运算对象看作是二进制位的集合,目前仅支持异或操作。

位运算符(左结合律)

运算符

功能

用法

^

异或

expr1 ^ expr2

语句

通常情况下,语句是顺序执行的。但这仅适用于最简单的程序,因此JAKA编程脚本提供了一组控制流语句以支持更复杂的执行控制。

简单语句

JAKA机器人编程脚本中,要求语句单独成行,且大多数语句无需结束符。简单语句包括表达式语句、函数调用语句等。

条件语句

·if…end语句

if语句的作用是:判断一个指定的条件是否为真,根据判断结果决定是否执行另外一条语句。if语句包括两种形式,一种含有else分支,另一种没有。

语法形式如下:

if(condition):
    statement
end

示例:

condition = get_digital_output(0, 1)
if(condition):
endPosJ = [0, 0, 0, 0, 0, 0]
movj(endPosJ, 0, 60, 200, 0)
end

·if…else…end语句

语法形式如下:

if(condition):
    statement
else:
    statement
end

示例:

condition = get_digital_output(0, 1)
if(condition):
    endPosJ = [0, 0, 0, 0, 0, 0]
    movj(endPosJ, 0, 60, 200, 0)
else:
    endPosL = [663.5, 8.159996, 6.950, 90, 0, 0]
    movl(endPosL, 0, 250, 250, 0)
end

·if…elif…else…end语句

语法形式如下:

if(condition1):
    statement
elif(condition2):
    statement
else:
    statement
end

示例:

condition1 = get_digital_output(0,1)
condition2 = get_digital_output(0,2)
if(condition1):
    endPosJ = [0,0,0,0,0,0]
    movj(endPosJ,0,60,200,0)
elif(condition2):
    endPosL =[663.5,8.159996,6.950,90,0,0]
    movl(endPosL,0,250,250,0)
else:
    endPosL =[663.5,8.159996,6.950,90,0,0]
    movl(endPosL,0,1000,250,0)
end

循环语句

·while循环语句

只要条件为真,while语句就会重复地执行循环体。

语法形式如下:

while(condition):
    statement
end

在while结构中,只要condition的求值结果为真,就会一直执行statement(通常是一个语法块),condition不能为空。如果condition第一次求值就是false,statement一次都不执行。

示例:

i = 0
while(i <= 4):
endPosJ1 = [0, 90, 90, 90, -90, 0]
movj(endPosJ1, 0, 10, 600, 0)
endPosJ2 = [90, 90, 90, 90, -90, 0]
movj(endPosJ2, 0, 10, 600, 0)
i = (i+1)
end

跳转语句

跳转语句可以中断当前while语句的执行过程,JAKA编程脚本提供了两种跳转语句,break和continue。

·break语句

break语句负责终止离它最近的while语句,并从这些语句之后的第一条语句开始继续执行。break的作用范围仅限于最近的while循环。

示例:

statement是语句块,condition1和condition2是判断条件。

while(condition1):
    statement
    ...
    if(condition2):
        break
    end
    ...
    statement
end

·continue语句

continue语句终止最近循环中的当前迭代并立即开始下一次迭代。continue语句只能出现在while循环体的内部。和break类似,continue的作用范围仅限于最近的while循环。continue中断当前的迭代,但会继续执行当前的循环,对于while语句来说即继续判断条件的值。

示例:

statement是语句块,condition1和condition2是判断条件。

while(condition1):
    statement
    ...
    if(condition2):
        continue
    end
    ...
    statement
end

多线程

最新的控制器软件支持多线程功能,用户可以在非主线程中使用特定的非运动相关类指令。

线程的创建

用户使用多线程时,需要通过子程序文件的方式定义线程的执行体,即线程执行体被单独保存在以jks为后缀的脚本文件中。线程创建时需指定线程执行体子程序文件的绝对路径,线程创建后将自动开始执行。JAKA控制器支持子线程数量为5个。

线程创建时需要同步写入线程名称,线程的名称用于对子线程资源的管理,如线程的销毁、同步、暂停等操作。

示例:

/path/to/thread/file.jks为子线程对应脚本文件的绝对路径,thread_name为标识该线程的唯一字符串。

thread_create(“/path/to/thread/file.jks”, “thread_name”)

注: 子线程中默认使用主线程环境下的函数定义。如果子线程执行独立作业工程文件对应的JKS文件,且该文件定义了独立函数,执行时会报“函数未定义”错误。

线程的操作

JAKA脚本编程语言支持线程等待(join)与线程销毁操作,支持线程分离(detach)。主线程结束后所有的子线程均将被终止,所使用的资源也将会被回收。线程的相关操作仅支持在主线程中调用,在子线程中调用无效;线程操作中必须保证是有效的线程名称,线程操作指令传入的线程名称若无效,指令执行时解析器找不到对应线程的名称,默认认为对应名称的线程已经执行结束或关闭。

运动相关类、部分设置类(如:负载设置,坐标系设置)指令只能在主线程中使用,在子线程中这些指令将会被跳过,不会被执行。

示例:

thread_name为线程名称
线程同步:thread_join (“thread_name”)
线程销毁:thread_destroy (“thread_name”)

此外,子线程与主线程可以调用程序暂停指令,暂停指令执行后,程序中所有的线程都将进入暂停状态;程序恢复则所有线程都恢复,继续运行。

线程的调度

用户在作业程序中创建的所有子线程保持相同的优先级,且不支持修改。在控制指令周期内仅允许一个线程拥有底层控制接口调用权,各线程之间需要通过竞争实现。在竞争的过程中,线程其他的任务也将被阻塞运行。

线程的互斥

多个线程同时访问共享数据或资源(如系统变量)时可能会冲突,JAKA机器人编程脚本提供进入和退出临界区的操作接口以解决资源冲突。在多个线程同时准备进入该临界区域时,只有一个线程能获得该临界区域的操作权限,其他所有的线程将处于等待状态,直到线程退出临界区域。由于进入临界区域相当于独占运行权限,为保证其他线程能够正常运行,要求在进入与退出临界区域期间执行的指令尽量简短。

示例:

thread_enter_critical()
# do some stuff
thread_exit_critical()

函数

从JAKA控制器软件版本V3.3.3起,支持用户定义函数并调用。JAKA脚本中函数定义如下:

function functionName(parameters):
# 函数体
return result
end

示例如下:

function greet(name):
log_message(1, string_concat("Hello, ", name))
end
greet("Jack") #日志输出Hello, Jack

函数支持多个返回值,如下所示。

function calculate(x, y):
return x + y, x - y, x \* y, x / y
end
ret1, ret2, ret3, ret4 = calculate(4,2) #结果依次为: 6,2,8,2

此外,允许用户将要要用的函数名以字符串参数传入,以实现函数的动态调用。在此基础上,支持函数参数的传入。脚本指令的函数原型如下:

函数原型

参数说明

succ, <...> = call_function( func_name, <...>)

输入func_name: 期望调用的函数名字符串变量;不声称支持多语言;

输入<...>:拟调用的函数的输入参数;

返回值succ: 为函数执行是否成功,1为成功, 0为失败。当函数不存在、函数参数错误等情况下,该均返回0而不终止程序执行。

返回值<...>: 如果succ为0,则返回值为错误信息字符串;如果succ为1,则返回值为所调用函数的返回值。

示例如下:

function greet(name):
log_message(1, string_concat("Hello, ", name))
end
succ = call_function("great", "Jack") #输出日志 Hello, Jack

注:

  1. 当使用JAKA图形化编程软件时,函数的定义存储于工程下独立的函数定义文件中,函数定义可以供该工程下的主线程、子线程所调用;

  2. 当涉及到跨文件的程序调用(execute_script)或子线程执行(thread_create)时,会后台隐式加载所执行工程下的函数定义,而不是其所在路径下的函数工程定义。

JAKA脚本预置函数

运动相关指令

基本运动

movel

指令原型:

movl(var_pos, rel_flag, vel, acc, tol) # 5个参数
movl(var_pos, rel_flag, vel, acc, tol, end_cond) # 6个参数
movl(var_pos, rel_flag, vel, acc, tol, end_cond,ori_vel) # 7个参数
movl(var_pos, rel_flag, vel, acc, tol, end_cond, ori_vel, ori_acc) # 8个参数
movl(var_pos, rel_flag, vel, acc, tol, end_cond, ori_vel, ori_acc, planner_type) # 9个参数
movl(var_pos, rel_flag, vel, acc, tol, end_cond, ori_vel, ori_acc, planner_type, robot_id) # 10个参数

指令说明:

用于控制机器人执行笛卡尔空间直线运动。

参数介绍:

var_pos

六元素数组变量,用于指定笛卡尔空间目标位置,需提前定义。

rel_flag

指定该段运动是相对运动还是绝对运动。

·0为绝对运动,此时var_pos给定值将被解释为笛卡尔空间某绝对位置;

·1为相对当前用户坐标系的增量运动,此时var_pos给定值将被解释为笛卡尔空间位置增量;

·2为相对当前工具坐标系的增量运动。

vel

运动速度,单位mm/s。

acc

直线加速度,单位mm/ s^2。

tol

到达指定终点的容许偏差。

若为0,则将准确到达目标点;

若为正值,则位置可能会与后续段混合,不能准确到达目标点。

end_cond

该段指令停止条件,可选参数为一个包括3个参数的数组,包括:

di_type:IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

di_index: IO 地址。

di_state: IO 满足条件的状态0/1。

ori_vel

姿态速度,是可选参数,单位deg/s。

不输入该参数的话,机器人将采用最大姿态速度运行。

ori_acc

姿态加速度,是可选参数,单位deg/s^2。

不输入该参数的话,机器人将采用最大姿态加速度运动。

planner_type

速度规划类型,是可选参数,根据不同的场景灵活选择。

0: 采用节拍优先的速度规划方式;

1: 采用柔顺优先的速度规划方式。

robot_id

机器人ID,用于双机械臂臂或多机械臂运动控制。

0:(default) 控制器机型文件中id为0 的机械臂。

1:控制器机型文件中id为1的机械臂。

返回值:无

示例:

#Zu15机型
endPosJ = [0,0,0,0,0,0]
endPosL = [0,0,0,0,0,0]
pos_mvl = [0,0,0,0,0,0]
pos_waypoint = [0,0,0,0,0,0]
set_tool_id(0)
set_user_frame_id(0)
endCon_UVOTzWMDQPCvnYNDMZ78 = [-1, -1, -1]
endPosJ = [13.187 ,80.642 ,97.289 ,91.046 ,-88.980 ,-5.741]
movj(endPosJ, 0, 60, 200, 0, endCon_UVOTzWMDQPCvnYNDMZ78,1)
endCon_Hj5Vu0vPxcRWewys6tA6 = [-1, -1, -1]
endPosJ = [13.187 ,92.258 ,129.041 ,47.678 ,-88.980 ,-5.741]
endPosL = [-615.884 ,20.989 ,365.746 ,-178.880 ,0.912 ,108.946]
movl(endPosL, 0, 60, 200, 0) #5 个参数
endCon_P0z9CPUaM6VViMjrX8mf = [-1, -1, -1]
endPosJ = [39.212 ,97.420 ,123.280 ,47.933 ,-89.532 ,20.280]
endPosL = [-615.884 ,-293.012 ,365.746 ,-178.880 ,0.912 ,108.946]
movl(endPosL, 0, 250, 250, 0, endCon_P0z9CPUaM6VViMjrX8mf) #6 个参数
endCon_XEQqXa4nuSqkFUu3nwAX = [-1, -1, -1]
endPosJ = [39.212 ,87.254 ,80.052 ,101.327 ,-89.532 ,20.280]
endPosL = [-615.884 ,-293.012 ,867.746 ,-178.880 ,0.912 ,108.946]
movl(endPosL, 0, 60, 200, 0, endCon_XEQqXa4nuSqkFUu3nwAX,180) #7 个参数
endCon_bzy9YphvZS3it4mu6Ck3 = [-1, -1, -1]
endPosJ = [-30.905 ,100.209 ,65.705 ,104.061 ,-88.556 ,-49.841]
endPosL = [-615.884 ,554.989 ,867.746 ,-178.880 ,0.912 ,108.946]
movl(endPosL, 0, 250, 250, 0, endCon_bzy9YphvZS3it4mu6Ck3,180,360) #8 个参数
endCon_n0BaqEHl2zaXDidMteQp = [-1, -1, -1]
endPosJ = [-30.905 ,99.882 ,92.474 ,77.619 ,-88.556 ,-49.841]
endPosL = [-615.884 ,554.989 ,607.746 ,-178.880 ,0.912 ,108.946]
movl(endPosL, 0, 60, 200, 0, endCon_n0BaqEHl2zaXDidMteQp,180,360,1) #9 个参数
endCon_kSap6DB6Kb5jXbv27vow = [-1, -1, -1]
endPosJ = [-13.013 ,104.031 ,87.355 ,78.146 ,-88.633 ,-31.944]
endPosL = [-807.884 ,350.988 ,607.746 ,-178.880 ,0.912 ,108.946]
movl(endPosL, 0, 250, 250, 0, endCon_kSap6DB6Kb5jXbv27vow,180,360,1,0) #10 个参数

movej

指令原型:

movj(var_pos, rel_flag, vel, acc, tol) # 5个参数
movj(var_pos, rel_flag, vel, acc, tol, end_cond) # 6个参数
movj(var_pos, rel_flag, vel, acc, tol, end_cond, planner_type) # 7个参数
movj(var_pos, rel_flag, vel, acc, tol, end_cond, planner_type,robot_id) # 8个参数

指令说明:

用于控制机器人执行关节空间运动。

参数介绍:

var_pos

六元素数组变量,用于指定关节空间目标位置,需提前定义。

rel_flag

指定该段运动是相对运动还是绝对运动。

·0为绝对运动,此时var_pos给定值将被解释为关节空间某绝对位置;

·1为相对运动,此时var_pos给定值将被解释为关节空间位置增量。

vel

各关节指令速度,单位deg/s。

实际运动时,将受各关节实际最大速度约束。

acc

直线加速度,单位: deg/ s^2。

tol

到达指定终点的容许偏差。

若为0,则将准确到达目标点;

若为正值,则可能会与后续段混合,不能准确到达目标点。

end_cond

该段指令停止条件,可选参数为一个包括3个参数的数组,包括:

di_type:IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

di_index: IO 地址。

di_state: IO 满足条件的状态0/1。

planner_type

速度规划类型,是可选参数,根据不同的场景灵活选择。

0: 采用节拍优先的速度规划方式;

1: 采用柔顺优先的速度规划方式。

robot_id

机器人ID,用于双机械臂臂或多机械臂运动控制。

0:(default) 控制器机型文件中id为0 的机械臂。

1:控制器机型文件中id为1的机械臂。

返回值:无

示例:

#Zu15机型
endPosJ = [0,0,0,0,0,0]
endPosL = [0,0,0,0,0,0]
pos_mvl = [0,0,0,0,0,0]
pos_waypoint = [0,0,0,0,0,0]
set_tool_id(0)
set_user_frame_id(0)
endPosJ = [13.187 ,80.642 ,97.289 ,91.046 ,-88.980 ,-5.741]
movj(endPosJ, 0, 60, 200, 0) #5 个参数
endCon_Hj5Vu0vPxcRWewys6tA6 = [-1, -1, -1]
endPosJ = [44.483 ,80.642 ,97.289 ,91.046 ,-88.980 ,-5.741]
movj(endPosJ, 0, 60, 200, 0, endCon_Hj5Vu0vPxcRWewys6tA6) #6 个参数
endCon_P0z9CPUaM6VViMjrX8mf = [-1, -1, -1]
endPosJ = [13.187 ,80.642 ,97.289 ,91.046 ,-88.980 ,-5.741]
movj(endPosJ, 0, 60, 200, 0, endCon_P0z9CPUaM6VViMjrX8mf,1) #7 个参数
endCon_XEQqXa4nuSqkFUu3nwAX = [-1, -1, -1]
endPosJ = [44.483 ,80.642 ,97.289 ,91.046 ,-88.980 ,-5.741]
movj(endPosJ, 0, 60, 200, 0, endCon_XEQqXa4nuSqkFUu3nwAX,1,0) #8 个参数

movec

指令原型:

movc(var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt) #7个参数
movc(var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt, end_cond) # 8个参数
movc(var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt, end_cond, movc_mode) # 9个参数
movc(var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt, end_cond, movc_mode, planner_type)
movc(var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt, end_cond, movc_mode, planner_type, robot_id)

指令说明:

用于控制机器人执行笛卡尔空间圆弧运动。

参数介绍:

var_pos_mid

六元素数组变量,用于指定空间圆弧的中间经过点,需提前定义。

var_pos_end

六元素数组变量,用于指定空间圆弧的停止点,需提前定义。

rel_flag

指定该段运动是相对运动还是绝对运动,目前仅支持绝对运动。

·0为绝对运动,此时var_pos给定值将被解释为笛卡尔空间某绝对位置。

vel

各关节指令速度,单位deg/s。

实际运动时,将受各关节实际最大速度约束。

acc

用于指定运动的加速度,单位mm/s^2。

tol

到达指定终点的容许偏差。

若为0,则将准确到达目标点;

若为正值,则可能会与后续段混合,不能准确到达目标点。

turn_cnt

用户指定圆弧运动圈数(非负实数)。

当圈数为0时,则按三点确定圆弧运动;

如果圈数为非0,则按三点确定的圆弧运动指定圈数,姿态保持初始点姿态与转轴的夹角相同。

end_cond

该段指令停止条件,可选参数为一个包括3个参数的数组,包括:

di_type:IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

di_index: IO 地址。

di_state: IO 满足条件的状态0/1。

movc_mode

指定姿态在圆弧运动中的模式,为可选参数,当turn_cnt为0时生效。

·0为最小姿态变化模式,机器人的姿态将绕起始-终止姿态转轴以最小角度变化方向运动;

·1为较大姿态变化模式,机器人的姿态将绕起始-终止姿态转轴较大角度变化方向(即最小角度变化方向的反方向)运动;

·2 为中间点姿态适配模式,机器人的姿态将根据中间点姿态自动选择最小姿态变换或较大姿态变化;

·3 为姿态夹角固定模式,机器人圆弧运动中的工具姿态与笛卡尔圆弧轴线-半径所构成坐标系的变换夹角固定。

planner_type

单条运动指令速度规划类型,是可选参数,根据不同的场景灵活选择。

0: 采用节拍优先的速度规划方式;

1: 采用柔顺优先的速度规划方式。

robot_id

机器人ID,用于双机械臂臂或多机械臂运动控制。

0:(default) 控制器机型文件中id为0 的机械臂。

1:控制器机型文件中id为1的机械臂。

返回值:无

示例:

#Zu15机型
endPosJ = [0,0,0,0,0,0]
endPosL = [0,0,0,0,0,0]
pos_mvl = [0,0,0,0,0,0]
pos_waypoint = [0,0,0,0,0,0]
set_tool_id(0)
set_user_frame_id(0)
endCon_UVOTzWMDQPCvnYNDMZ78 = [-1, -1, -1]
endPosJ = [37.399 ,62.195 ,113.698 ,94.107 ,-90.000 ,37.399]
movj(endPosJ, 0, 60, 200, 0, endCon_UVOTzWMDQPCvnYNDMZ78,1)
endCon_vx4cnIAdgBWueR0AUS2J = [-1, -1, -1]
passPos = [-600.000,100.000,700.000,-180.000,0.000,90.000]
endPos = [-800.000,-100.000,700.000,-180.000,0.000,90.000]
movc(passPos, endPos, 0, 250, 1200, 0, 1) #7个参数
endCon_5GIIkUcWwXQJ88GjuoeN = [-1, -1, -1]
endPosJ = [37.399 ,62.195 ,113.698 ,94.107 ,-90.000 ,37.399]
movj(endPosJ, 0, 60, 200, 0, endCon_5GIIkUcWwXQJ88GjuoeN,1)
endCon_wgO4L4bhhf9FaMELLH4P = [-1, -1, -1]
passPos = [-600.000,-300.000,700.000,180.000,0.000,90.000]
endPos = [-800.000,-100.000,700.000,180.000,0.000,90.000]
movc(passPos, endPos, 0, 250, 1200, 0, 1, endCon_wgO4L4bhhf9FaMELLH4P) #8个参数
endCon_wgn4JqmGzgnoR7czsXfw = [-1, -1, -1]
endPosJ = [37.399 ,62.195 ,113.698 ,94.107 ,-90.000 ,37.399]
movj(endPosJ, 0, 60, 200, 0, endCon_wgn4JqmGzgnoR7czsXfw,1)
endCon_48LioWCySzmj4freJNnS = [-1, -1, -1]
passPos = [-400.000,-300.000,500.000,180.000,0.000,90.000]
endPos = [-400.000,-100.000,300.000,180.000,0.000,90.000]
movc(passPos, endPos, 0, 250, 1200, 0, 1, endCon_48LioWCySzmj4freJNnS,0) #9个参数
endCon_a9ZrKEqwWmgcGFOJrasw = [-1, -1, -1]
endPosJ = [37.399 ,62.195 ,113.698 ,94.107 ,-90.000 ,37.399]
movj(endPosJ, 0, 60, 200, 0, endCon_a9ZrKEqwWmgcGFOJrasw,1)
endCon_GPiBONpvTms1as0TVpus = [-1, -1, -1]
passPos = [-400.000,100.000,500.000,180.000,0.000,90.000]
endPos = [-400.000,-100.000,300.000,180.000,0.000,90.000]
movc(passPos, endPos, 0, 250, 1200, 0, 1, endCon_GPiBONpvTms1as0TVpus,0,1) #10个参数
endCon_UVOTzWMDQPCvnYNDMZ78 = [-1, -1, -1]
endPosJ = [37.399 ,62.195 ,113.698 ,94.107 ,-90.000 ,37.399]
movj(endPosJ, 0, 60, 200, 0, endCon_UVOTzWMDQPCvnYNDMZ78,1)
endCon_vx4cnIAdgBWueR0AUS2J = [-1, -1, -1]
passPos = [-600.000,100.000,700.000,-180.000,0.000,90.000]
endPos = [-800.000,-100.000,700.000,-180.000,0.000,90.000]
movc(passPos, endPos, 0, 250, 1200, 0, 1, endCon_GPiBONpvTms1as0TVpus,0,1,0) #11个参数

move_ext

指令原型:

move_ext(ext_id,var_pos, rel_flag, vel, acc, tol,end_cond, planner_type)

指令说明:

用于设置外部轴运动指令 。

参数介绍:

ext_id

int型,运动单元id。

var_pos

数组,维数与外部轴的自由度相同,表示目标点位信息。也可传入目标点位ID(整数)。

rel_flag

int型,指定该段运动是相对运动还是绝对运动。

·0为绝对运动;

·1为相对运动;

·2为相对当前工具坐标系的增量运动。

vel

指令速度:

·外部轴为直线轴时,单位mm/s;

·外部轴为旋转轴时,单位deg/s。

acc

直线加速度:

·外部轴为直线轴时,单位mm/s^2;

·外部轴为旋转轴时,单位deg/ s^2。

tol

到达指定终点的容许偏差。

若为0,则将准确到达目标点;

若为正值,则可能会与后续段混合,不能准确到达目标点。

end_cond

该段指令停止条件,可选参数为一个包括3个参数的数组,包括:

di_type:IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

di_index: IO 地址。

di_state: IO 满足条件的状态0/1。

planner_type

速度规划类型,是可选参数,根据不同的场景灵活选择。

0: 采用节拍优先的速度规划方式;

1: 采用柔顺优先的速度规划方式。

返回值:

无

示例:

#外部轴运动示例
endCon_FSnDVILoIRCaoIsHCCcO = [-1, -1, -1]
end_ext_0 = [50]
move_ext(0, end_ext_0, 0, 80, 80, 0, endCon_FSnDVILoIRCaoIsHCCcO,0)

set_move_multi_info

指令原型:

set_move_multi_info(move_info_string, move_unit_type, motion_type, move_unit_id, motion_cmd_info)

指令说明:

用于设置协同运动时运动单元的运动段信息 。

参数介绍:

move_info_string

字符串类型,表示命名运动段信息的标签,可命名但不限于: "movj_rob_0", "movj_ext_0", "movl_rob_0", "movc_rob_0"。

move_unit_type

int型,表示运动单元类类型 :

·0为机器人;

·1为外部轴。

motion_type

int型,表示运动段类型:

·0为关节运动;

·1为直线运动;

·2为圆弧运动;

当move_unit_type为1时,仅支持关节运动。

move_unit_id

int型,表示运动单元在控制器中id。

motion_cmd_info

运动段指令信息,根据参数“move_unit_type”以及参数“motion_type”的值确定传参个数和格式。

·move_unit_type = 0,motion_type = 0,即,运动单元是机器人,运动段类型是关节运动时,依次传参:var_pos, rel_flag, vel, acc, tol,参数含义与movej中相同;

·move_unit_type = 0,motion_type = 1,即,运动单元是机器人,运动段类型是直线运动时,依次传参:var_pos, rel_flag, vel, acc, tol, ori_vel, ori_acc,参数含义与movel中相同;

·move_unit_type = 0,motion_type = 2,即,运动单元是机器人,运动段类型是圆弧运动时,依次传参:var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt, movc_mode,参数含义与movec中相同;

·move_unit_type = 1,motion_type = 0,即,运动单元是外部轴,运动段类型是关节运动时,依次传参:var_pos, rel_flag, vel, acc, tol,var_pos是与维数外部轴自由度相同的数组,其他参数含义与movej中相同;

返回值:

无

示例:

#机器人关节运动示例
endPosJ = [0.000 ,90.000 ,90.000 ,90.000 ,90.000 ,0.000]
set_move_multi_info( "movj_rob_0", 0, 0, 0, endPosJ, 0, 60, 200, 0)
#机器人直线运动示例
endPosL = [-356.145 ,-245.514 ,587.150 ,0.000 ,0.000 ,-40.000]
set_move_multi_info("movl_rob_0", 0, 1, 0, endPosL, 0, 60, 200, 0,180,720)
#机器人圆弧运动示例
passPos = [-356.145,-245.514,587.150,0.000,0.000,-40.000]
endPos = [-300.000,-240.000,587.150,0.000,0.000,-40.000]
set_move_multi_info("movc_rob_0", 0, 2, 0, passPos, endPos, 0, 60, 200, 0, 0,0)
#外部轴关节运动示例
end_ext_posJ_0 = [50]
set_move_multi_info("movj_ext_0", 1, 0, 0, end_ext_posJ_0, 0, 80, 80, 0)

move_multi

指令原型:

move_multi(var_move_seg_num, move_info_string1, move_info_string2,... ,end_cond, planner_type)

指令说明:

用于设置协同运动指令,与set_move_multi_info指令结合使用 。

参数介绍:

var_move_seg_num

int型,标签总数,即协同运动包含多少个运动单元/运动段,不可大于10。

move_info_string1, move_info_string2,...

即set_move_multi_info指令中的参数“move_info_string”,string型,运动段信息标签,个数对应var_move_seg_num。

end_cond

该段指令停止条件,可选参数为一个包括3个参数的数组,包括:

di_type:IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

di_index: IO 地址。

di_state: IO 满足条件的状态0/1。

planner_type

速度规划类型,是可选参数,根据不同的场景灵活选择。

0: 采用节拍优先的速度规划方式;

1: 采用柔顺优先的速度规划方式。

返回值:无

示例:

#机器人与外部轴协同关节运动示例
endCon_ozAy4xNbJVWhp9r7qvnS = [-1, -1, -1]
endPosJ = [0.000 ,90.000 ,90.000 ,90.000 ,90.000 ,0.000]
set_move_multi_info( "movj_rob_0", 0, 0, 0, endPosJ, 0, 60, 200, 0)
end_ext_posJ_0 = [50]
set_move_multi_info("movj_ext_0", 1, 0, 0, end_ext_posJ_0, 0, 80, 80, 0)
move_multi(2, "movj_rob_0", "movj_ext_0", endCon_ozAy4xNbJVWhp9r7qvnS,0)

get_atl_joint_pose

指令原型:

atlJntPos = get_atl_joint_pose()

指令说明:

用于获取当前机器人实际关节位置。

返回值:

返回当前实际关节位置。

get_atl_tcp_pose

指令原型:

atlTcpPos = get_atl_tcp_pose()

指令说明:

用于获取当前机器人实际末端工具中心点位姿。

返回值:

返回当前实际工具末端中心点位姿。

get_atl_flange_pose

指令原型:

atlFlangePos = get_atl_flange_pose()

指令说明:

用于获取当前机器人末端法兰中心点位姿。

返回值:

返回当前实际末端法兰中心点位姿。

enable_speed_override

指令原型:

enable_speed_override(type, vel, acc)
enable_speed_override(type, vel, acc, ori_vel, ori_acc)

指令说明:

用于设置函数块的速度与加速度。

参数介绍:

type

·0表示笛卡尔空间运动类型

·1表示关节空间运动类型

·2 表示外部直线轴

·3 表示外部旋转轴

vel

double类型数据,表示设置的覆盖速度。

acc

double类型数据,表示设置的覆盖加速度。

ori_vel

double类型数据,表示设置的覆盖的姿态速度。默认值:90.0

ori_acc

double类型数据,表示设置的覆盖的姿态加速度。默认值:180.0

返回值:

无

disable_speed_override

指令原型:

disable_speed_override(type)

指令说明:

用于取消函数块的速度与加速度设置。

参数介绍:

type

·0表示笛卡尔空间运动类型

·1表示关节空间运动类型

返回值:

无

enable_planner_override

指令原型:

enable_planner_override(type)

指令说明:

用于设置全局速度规划器类型。

参数介绍:

type

全局速度规划类型,根据不同的场景灵活选择。

0: 采用节拍优先的速度规划方式;

1: 采用柔顺优先的速度规划方式。

使用全局速度规划指令时,单条指令中的速度规划参数将会失效。

返回值:

无

disable_planner_override

指令原型:

disable_planner_override()

指令说明:

用于取消全局速度规划器类型的设置。

返回值:

无

vib_suppress_on

指令原型:

vib_suppress_on (var_freq)

指令说明:

用于开启抖动抑制,抖动抑制生效范围在该指令之后、vib_suppress_off之前的运动段。

参数介绍:

var_freq

double型,抖动抑制频率。有效范围为 [2.5, 50.0] Hz,超出范围时自动限制到边界值。

返回值:

无

vib_suppress_off

指令原型:

vib_suppress_off ()

指令说明:

关闭抖动抑制 。

返回值:

无

movs

指令原型:

movs(coefs_a, coefs_b, coefs_c, coefs_d, coef_time)
movs(coefs_a, coefs_b, coefs_c, coefs_d, coef_time, smooth_space)
movs(coefs_a, coefs_b, coefs_c, coefs_d, coef_time, smooth_space, robot_id)

指令说明: 用于控制机器人执行多项式轨迹运动(按给定多项式系数规划各轴轨迹)。

参数介绍:

velcoefs_a/coefs_b/coefs_c/coefs_d

多项式系数数组(6或7个元素,对应轴数),支持数组变量或系统变量。

coef_time

运动时间,单位s。

smooth_space

可选参数,空间类型:·0为关节空间 ·1为笛卡尔空间。

robot_id

可选参数,机器人ID,默认为0。

返回值: 无

movs_vel_settings

指令原型:

movs_vel_settings(movs_syn_vel, movs_enable_jacc, robot_id)

指令说明:

用于设置movs运动的同步速度与加加速度限制。

参数介绍:

movs_syn_vel

同步速度,须不小于0.001

movs_enable_jacc

是否启用加加速度限制:·1为启用 ·0为不启用。

robot_id

机器人ID。

返回值: 无

kine_inverse_ext

指令原型:

res = kine_inverse_ext (posJ, posP)

指令说明:

该指令用于计算运动学逆解(扩展版本),在kine_inverse基础上支持外部轴等扩展信息。

参数介绍:

posJ

posJ为参考关节值,用于确定逆解多解的选取。

posP

需要进行逆解的笛卡尔空间位姿。

返回值:

返回逆运动学计算结果。当逆解失败时,程序报错终止。

传送带跟踪

enable_conveyor_linear_track

指令原型:

enable_conveyor_linear_track(dir, mm_per_pulse, trigger, com_dis, max_dis)

指令说明:

用于使能直线传送带跟踪。

参数介绍:

dir

跟踪方向数组,至少包含3个元素的方向向量。如[1,0,0]表示沿X+方向,[-1,0,0]表示X-方向,以此类推。

mm_per_pulse

用于指定脉冲当量,即跟踪传送带上的编码器反馈每个脉冲对应传送带方向的位移,单位为mm。

trigger

可选参数,为机器人运动起始点到开始跟踪传送带之间的距离。用于自定义机器人开始跟踪传送带的位置,范围为0~3000 mm。

com_dis

用于补偿实际位置与示教位置之间的误差,范围为±100 mm。

max_dis

可选参数,为机器人运动起始点到运动终点之间的距离。用于限制机器人跟踪距离,避免机器人超出传送带范围或达到奇异点,范围为1~3000 mm。

返回值:

无

enable_conveyor_circular_track

指令原型:

enable_conveyor_circular_track(convey_P1, convey_P2, convey_P3, rad_per_pulse, rotate_tool, com_dis, max_dis)

指令说明:

用于使能圆形传送带跟踪。

参数介绍:

convey_P1

convey_P2

convey_P3

表示世界坐标系下一点的位置向量,例如:

convey_P1 = [P1x, P1y, P1z]

convey_P2 = [P2x, P2y, P2z]

convey_P3 = [P3x, P3y, P3z]

convey_P1, convey_P2, convey_P3为传送带上共圆三点在世界坐标系下的位置坐标,在传送带转动方向依次选取,用于获取传送带圆心坐标系{O}在世界坐标系下的变换矩阵,可通过直接输入或示教得到。

rad_per_pulse

用于指定脉冲当量,指跟踪传送带的编码器每反馈一个脉冲对应地在Oz轴正方向(右手定则)上旋转的角度,单位为°/cnt。

rotate_tool

·0圆形传送带跟踪过程中末端姿态保持不变

·1末端绕传送带轴线转动,姿态改变(App默认为1)

com_dis

用于补偿实际位置与示教位置之间的误差,范围为±20° 。

max_dis

为机器人运动起始点到运动终点之间的距离。用于限制机器人跟踪距离,避免机器人超出传送带范围或达到奇异点,范围为1~20°(输入超出20°时按20°执行)。

返回值:

无

disable_convayor_track

指令原型:

disable_convayor_track()

指令说明:

用于关闭传送带跟踪。

返回值:

无

record_pulse_cond()

指令原型:

record_pulse_cond(type, index, state)

指令说明:

用于获取并存储传送带上的物料位置,与IO绑定,防止因传送带运动速度较快,机器人来不及处理每一个物料而漏料。此指令需要与“传送带队列取值”搭配使用。使用此指令后,传送带上触发IO的物料位置信息被记录在控制器内,当程序运行“传送带队列取值”指令后,存储的物料位置信息按存储的先后顺序被获取。

参数介绍:

type

IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

所控制数字输出的编号,从0开始索引。

state

·1为开

·0为关

返回值:

无

get_pulse_cond()

指令原型:

get_pulse_cond()

指令说明:

用于获取存储的传送带脉冲队列信息

返回值:

无

clear_pulse_cond()

指令原型:

clear_pulse_cond()

指令说明:

用于清空存储的传送带脉冲队列信息

返回值:

无

record_pos_cond()

指令原型:

record_cond(array)

指令说明:

用于存储位姿数组变量队列,可搭配传送带视觉跟随使用,存储相机发送的位姿信息

参数介绍:

array

位置变量或程序变量,必须为12位数组。

返回值:

无

get_pos_cond()

指令原型:

get_pos_cond()

指令说明:

用于获取存储的位姿队列信息,

返回值:

从位姿队列中获取到的位姿数组变量

clear_pos_cond()

指令原型:

clear_pos_cond()

指令说明:

用于清空存储的位姿队列信息

返回值:

无

get_pulse_num()

指令原型:

get_pulse_num()

指令说明:

用于获取当前传送带脉冲队列所存储目标的个数

返回值:

当前传送带脉冲队列所存储目标的个数

get_pos_num()

指令原型:

get_pos_num()

指令说明:

用于获取当前位姿队列所存储目标的个数

返回值:

当前位姿队列所存储目标的个数

运动柔顺控制

set_compliance_ft_config

指令原型:

set_compliance_ft_config(id, admitctrlconfig, immed)

指令说明:

用于恒力柔顺控制配置。admitctrlconfig是配置参数数组。

参数介绍:

id

代表配置轴编号[0, 5]

admitctrlconfig

= [opt, FTuser, FTreboundK, FTconstant, FTnormalTrack]

opt:在该方向(由id参数指定的轴方向)上是否开启恒力柔顺,1代表开启,0代表不开启。

FTuser:机器人在恒力柔顺控制过程中所表现出的刚度,一般力方向上需要设置大于5,力矩方向上设置大于0.2。

FTreboundK:机器人外力作用下,偏离原位置后产生向原位置反弹的运动趋势时所表现出的弹性系数。需要设置为非负数,其中设置为0代表不进行反弹。

FTconstant:代表目标恒力。

FTnormalTrack:内部预留参数,必须给定固定数值0。

immed

内部预留参数,必须给定固定数值1。

返回值:

无

disable_force_control

指令原型:

disable_force_control()

指令说明:

用于关闭力控。

返回值:

无

enable_force_control

指令原型:

enable_force_control(type, compensation, robot_id=0)

指令说明:

用于柔顺控制类型配置和传感器补偿。

参数介绍:

type

预留参数,当前版本不生效。

compensation

预留参数,当前版本不生效。

robot_id

可选参数,机器人ID,默认为0。

返回值:

无

set_end_force_condition

指令原型:

condition = [enableEndCond, lowFlag, lowLimitForce, upFlag, upLimitForce]
set_end_force_condition(axis, condition, robot_id)

指令说明:

用于设置力控终止条件。设置力控终止条件,不能立即生效,默认是非即时指令,作用且仅作用于其后的第一条运动指令。此终止条件触发时,该运动指令将被立刻终止,程序跳转至该运动指令的下一行继续执行。

参数介绍:

axis

代表轴号,取值范围是[0, 5]

enableEndCond

是否使能,1代表生效,0则相反

lowFlag

运动终止力下限生效标志位,1代表生效,0则相反

lowLimitForce

运动终止力下限

upFlag

运动终止力上限生效标志位,1代表生效,0则相反

upLimitForce

运动终止力上限

robot_id

可选参数,机器人ID,默认为0。

返回值:

无

set_force_control_frame

指令原型:

set_force_control_frame(ftFrame, robot_id)

指令说明:

该函数用于设置力控坐标系。

参数介绍:

ftFrame

·0 表示工具坐标系;·1 代表世界坐标系。

robot_id

可选参数,机器人ID,默认为0。

返回值:

无

get_sensor_torque

指令原型:

torq = get_sensor_torque(type, sensor_id)

指令说明:

用于获取力矩底座或末端力矩传感器的力矩值,该值为补偿传感器末端负载后的净力矩值。

参数介绍:

type

·0 为末端力矩传感器;·1 为保留值(当前版本查询不区分该参数)。

sensor_id

可选参数,传感器ID,默认为0。

返回值:

六维数组表示的六维力矩传感器读数

set_force_sensor_zero

指令原型:

set_force_sensor_zero()

指令说明:

末端力传感器校零。

参数介绍:

无

返回值:

无

接口设置与查询

IO控制与查询

set_digital_output

指令原型:

set_digital_output(type, index, tarState, immed)

指令说明:

用于控制数字输出信号。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

所控制数字输出的编号,从0开始索引。

tarState

·1为开

·0为关

immed

·1为即时指令

·0为非即时指令

若为非即时指令,则该指令的实际执行将在下一条运动指令之前执行。

注:

即时IO指令会打断不同运动段之间的转接,非即时仅限于控制柜DO/AO可用。

返回值:

无

set_analog_output

指令原型:

set_analog_output(type, index, tarValue, immed)

指令说明:

用于控制模拟输出信号。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

所控制模拟输出的编号,从0开始索引。

tarValue

Real类型值,用于指定模拟输出的目标值。

immed

·1为即时指令

·0为非即时指令

若为非即时指令,则该指令的实际执行将在下一条运动指令之前执行。

注:

即时IO指令会打断不同运动段之间的转接。

返回值:

无

get_digital_output

指令原型:

get_digital_output(type, index)

指令说明:

用于获取指定数字输出的状态。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

数字输出索引

返回值:

函数返回查询结果:0 -> off, 1 -> on

get_analog_output

指令原型:

get_analog_output(type, index)

指令说明:

用于获取指定模拟输出的状态。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

模拟输出索引

返回值:

函数返回double类型的查询结果。

get_digital_input

指令原型:

get_digital_input(type, index)

指令说明:

获取指定数字输入的状态。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

数字输入索引

返回值:

函数返回查询结果:0 为关,1 为开。

get_analog_input

指令原型:

get_analog_input(type, index)

指令说明:

获取指定模拟输入的状态。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

模拟输入索引

返回值:

函数返回double类型的查询结果。

set_multiple_digital_outputs

指令原型:

set_multiple_digital_outputs(type, indexArr, valueArr, syncFlag)

指令说明:

用于设置多个DO的状态值。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

indexArr

所控制的IO索引数组(同一模块),索引从0开始计数。

valueArr

所控制IO的目标数值数组,单个IO状态1为开,0为关。

syncFlag

同步标志位,当syncFlag为1时会等待前序所有指令均执行完才执行(会打断该指令前后段运动转接),当syncFlag为0时则解析后即执行。

注:

该指令不支持缓冲指令,即在不影响转接的情况下批量设置IO。

返回值:

无

set_multiple_analog_outputs

指令原型:

set_multiple_analog_outputs(type, indexArr, valueArr, syncFlag)

指令说明:

用于批量设置多个模拟输出通道的目标值。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

indexArr

所控制的IO索引数组(同一模块),索引从0开始计数。

valueArr

对应通道的目标值数组(浮点数值,单位取决于量程)。

syncFlag

同步标志位,当syncFlag为1时会等待前序所有指令均执行完才执行(会打断该指令前后段运动转接),当syncFlag为0时则解析后即执行。

注:

该指令不支持缓冲指令,即在不影响转接的情况下批量设置IO。

返回值:

无

get_multiple_digital_outputs

指令原型:

retArr = get_multiple_digital_outputs(type, indexArr)

指令说明:

用于批量读取多个数字输出通道的当前状态。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

indexArr

所控制的IO索引数组(同一模块),索引从0开始计数。

返回值:

对应通道的状态值数组(0/1值,0 为off, 1为on)。

get_multiple_analog_outputs

指令原型:

retArr = get_multiple_analog_outputs(type, indexArr)

指令说明:

用于批量读取多个模拟输出通道的当前输出值。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

indexArr

所控制的IO索引数组(同一模块),索引从0开始计数。

返回值:

对应通道的当前输出值数组(浮点数)。

get_multiple_digital_inputs

指令原型:

retArr = get_multiple_digital_inputs(type, indexArr)

指令说明:

用于批量读取多个数字输入通道的当前状态。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

indexArr

所控制的IO索引数组(同一模块),索引从0开始计数。

返回值:

对应通道的输入状态数组(0/1值,0 为off, 1为on)。

get_multiple_analog_inputs

指令原型:

retArr = get_multiple_analog_inputs(type, indexArr)

指令说明:

批量读取多个模拟输入通道的当前输入值。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

indexArr

所控制的IO索引数组(同一模块),索引从0开始计数。

返回值:

对应通道的输入值数组(浮点数)。

wait_input

指令原型:

wait_input(type, index, state, time)

指令说明:

用于等待指定输入变成指定状态,若超出最大等待时间,则置TIMEOUT状态标志,可用GETTIMEOUT函数查询。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

输入的索引

state

期待的输入状态

time

最长等待时间,0为无限等待。

返回值:

无

get_timeout

指令原型:

get_timeout()

指令说明:

该函数用于获取wait_input指令的执行结果。

1为等待超时,0为在指定时间内成功等到该信号。

返回值:

无

set_motion_digital_output

指令原型:

set_motion_digital_output(type, index, refpoint, distance, tarState)

指令说明:

用于控制运动过程中输出数字信号。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

所控制数字输出的编号,从0开始索引。

refpoint

信号触发距离所选参考点

·0为起始点

·1为终止点

distance

信号触发距离。

tarState

·1为开

·0为关

注:

运动中设置IO指令之后需要存在运动指令才生效。两段运动指令中间最多可设置8个运动中设置IO指令。

返回值:

无

set_motion_analog_output

指令原型:

set_motion_analog_output(type, index, refpoint, distance, tarValue)

指令说明:

用于控制运动过程中输出模拟信号。

参数介绍:

type

IO类型与模块ID(注:模块ID适用于机器人做主站扩展多个IO模块,从0开始索引)的复合字段,低16位为IO类型,高16位为模块ID(若不适用,则为0)。IO类型定义如下:

  • 0:标准IO(控制柜IO)

  • 1:工具IO

  • 2:Modbus扩展IO (机器人做主站)

  • 4:Modbus IO (机器人做从站)

  • 5:Profinet IO (机器人做从站)

  • 6:EtherNet/IP IO (机器人做从站)

  • 9:Profinet扩展IO (机器人做主站)

  • 12:CCLink IO (机器人做从站)

  • 13:EtherCAT扩展IO (机器人做主站)

  • 3,7,8,10,11:保留

index

所控制模拟输出的编号,从0开始索引。

refpoint

信号触发距离所选参考点

·0为起始点

·1为终止点

distance

信号触发距离。

tarValue

Real类型值,用于指定模拟输出的目标值。

注:

运动中设置IO指令之后需要存在运动指令才生效。两段运动指令中间最多可设置8个运动中设置IO指令。

返回值:

无

TIO+控制与查询

tio_update_signal

指令原型:

tio_update_signal(strId, freq)

指令说明:

用于以一定周期刷新指定的TIO Modbus RTU信号。

参数介绍:

strId

信号量的标识符

freq

为0时,仅刷新一次;

为其他正值时为刷新频率,刷新频率内部自动受限于CAN通讯瓶颈。

返回值:

无

tio_get_signal_value

指令原型:

res = tio_get_signal_value(strId)

指令说明:

用于获取指定信号的值。

参数介绍:

strId

信号量的标识符

返回值:

返回信号的值。

tio_send_command

指令原型:

tio_send_command(chnId, cmdBuf, crcType, immed)

指令说明:

用于向指定的TIO RS485通道发送字节数据。

参数介绍:

chnId

通道编号。

·0为RS485通道1

·1为RS485通道2

cmdBuf

字节数组

crcType

发送数据类型,当且指定通道为RS485透传时生效,Modbus RTU时写0。

immed

0为即时指令,1为非即时指令。若为非即时指令,则该指令的实际执行将在下一条运动指令之前执行。

返回值:

无

网络通讯

socket_open

指令原型:

sockid = socket_open(ip, port, ssl_enable, keepAlive, keepIdle, keepInterval, keepCount)

指令说明:

用于打开指定的IP与端口号,并将创建的SOCKET句柄保存在变量并返回。

参数介绍:

ip

字符串形式TCP服务器地址,如“192.168.1.10”

port

TCP服务器端口

ssl_enable

是否启动ssl,0为不启用,1为启用

keepAlive

可选参数,是否启用TCP保活(SO_KEEPALIVE),0或1

keepIdle

可选参数,保活空闲时间(秒)。

keepInterval

可选参数,保活探测间隔(秒)。

keepCount

可选参数,保活探测次数。

返回值:

返回socket句柄

socket_close

指令原型:

socket_close(sockid)

指令说明:

用于关闭指定的套接字。

参数介绍:

sockid

需要关闭的套接字连接

返回值:

无

socket_get_var

指令原型:

varname = socket_get_var(sockid, type, argname, timeout,timeopt,defaultvalue)

指令说明:

用于请求远端对参数的设置。

参数介绍:

sockid

套接字ID,需事先创建。

type

参数类型。

·0为整型

·1为浮点数

·2为字符串

argname

字符串类型的变量名,表示想要获取的变量的值。

形式为“argname”或<argname>

timeout

获取反馈等待超时,0为永久等待。

timeopt

可选参数,默认值为2。

接收变量超时后的操作:

0:接收变量超时后停止运行

1:接收超时后暂停运行

2:收变量超时后继续运行

defaultvalue

可选参数。发生超时等异常后作为接收指令的返回值。

返回值:

返回值储存变量。

该函数将通过socket发送字符串get <arg_varname>,并期望接收数据格式<arg_varname><value>。默认有2s的超时,超时后返回0。

当期望发送一个数组时,上位机发送格式为:

<arrName><{num1, num2, ..., numN}>

当期望发送一个字符串时,上位机发送格式为:

<strName><“stringValue”>

示例:

\_b41s50sf7mpd9j5j = [-99.991,-399.991,300,180,0.0,90.008,92.016,82.182,120.004,67.814,-90.000,92.008]
\_jaka_socket_server_1 = socket_open("192.168.58.1", 1000, 0)
\_xs7fOkKGQRfrBycO9rAx = socket_get_var(_jaka_socket_server_1, 0, "pos1", 1, 2, \_b41s50sf7mpd9j5j)
\_b41s50sf7mpd9j5j = \_xs7fOkKGQRfrBycO9rAx
socket_close(_jaka_socket_server_1)

socket_read_real

指令原型:

res = socket_read_real(sockid, num, timeout, timeopt, defaultvalue)

指令说明:

用于通过制定的套接字从外界获取(一组)数,并存储在数组变量中。

参数介绍:

sockid

套接字ID,需事先创建。

num

期望接收的数的数量。

timeout

获取反馈等待超时时间,单位为秒,0为永久等待。

timeopt

可选参数,默认值为2。 接受变量超时后的操作:

0,接收变量超时后停止运行

1,接收超时后暂停运行

2,接收超时后继续运行

defautvalue

可选参数。 发生超时等异常后作为接收指令的返回值。

返回值:

接收的数据结果。

若接收失败,则返回标量0,成功接收则均存在数组中。

默认有2s的超时,若接收失败,将返回0。

示例:

\_1c25p8d6c3kkeche = [1,2,3,4,5]
\_jaka_socket_server_1 = socket_open("192.168.58.1", 1000, 0)
\_xV0CEY1c02D5XkiCQKLa = socket_read_real(_jaka_socket_server_1, 5, 1)
\_1c25p8d6c3kkeche = \_xV0CEY1c02D5XkiCQKLa
socket_close(_jaka_socket_server_1)

socket_read_string

指令原型:

res = socket_read_string(sockid, prefix, suffix, timeout)

指令说明:

用于通过指定的套接字从外界获取一段字符串,并存储在变量中。

函数返送格式为get#string#prefix#suffix#,期望接收数据格式为prefixSTRINGsuffix。

参数介绍:

sockid

套接字ID,需事先创建。

prefix

期望接收字符串的前缀要求。

suffix

期望接收的字符串的后缀要求。

timeout

获取反馈等待超时,0为永久等待。

返回值:

接收的数据结果。

默认2s的超时,若接收失败,将返回空的字符串。

示例:

sockid = socket_open("192.168.58.1", 1000, 0)
prefix = "abc"
suffix = "xyz"
res = socket_read_string(sockid, prefix, suffix, 3)
# server 端发送 abcSTRINGxyz
# res = "STRING"
socket_close(sockid)

socket_send

指令原型:

res = socket_send(sockid, var)

指令说明:

用于通过指定的SOCKET以字符串形式发送一个变量的值。

参数介绍:

sockid

套接字ID,需事先创建。

var

期望发送的变量,变量目前支持Number,Number数组,以及 String类型。

发送数组时,发送的字符串格式为“{Num1, Num2, ...}”

返回值:

res为发送结果标志。

默认有2s的发送超时,如果发送成功,返回实际发送的字节数(正整数),否则返回0。

发送的数据格式为:

<varName><varValue>

<intVar><12>

<strVar><“string”>

<listVar><{ele1, ele2, ele3, ...}>

socket_recv

指令原型:

res = socket_recv(sockid, timeout, timeopt, defaultvalue)

指令说明:

用于从指定的socket接收数据,用户可设置超时时间。

注:

该指令单纯用于接收数据,不会向另一连接端发送请求。

参数介绍:

sockid

套接字ID,需事先创建。

timeout

接收超时设置,单位为秒。0为永久等待,永不超时。

timeopt

可选参数,默认值为2。 接受变量超时后的操作:

0,接收变量超时后停止运行

1,接收超时后暂停运行

2,接收超时后继续运行

defautvalue

可选参数。 发生超时等异常后作为接收指令的返回值。

返回值:

正常接收,函数返回接收的字符串。

如果超时未接收到数据,返回为空字符串;

如果网络问题,则会返回标量-1。

示例:

\_dlg3d1h0c2fpamhe = " "
\_jaka_socket_server_1 = socket_open("192.168.58.1", 1000, 0)
\_bkzsRALzcKwvhGauKlsa = socket_recv(_jaka_socket_server_1, 1) #接收字符串,timeout=1
\_dlg3d1h0c2fpamhe = \_bkzsRALzcKwvhGauKlsa
socket_close(_jaka_socket_server_1)

参数设置与查询

负载设置查询

set_payload

指令原型:

set_payload(m, centriod)

指令说明:

用于设置当前机器人负载。

参数介绍:

m

负载质量,单位kg。

centroid

负载质心,包含x,y,z三个分量的数组,单位:mm。

注:

该指令会同步运动,打断转接。

返回值:

无

get_payload

指令原型:

payload = get_payload()

指令说明:

用于获取当前机器人负载。

返回值:

返回机器人法兰末端总负载。

payload[0]为负载质量(单位kg),payload[1]~[3]为负载质心(单位mm)。

示例:

payload = [100, 100, 0]
set_payload(3, payload)
payload_res = get_payload()
#结果
#payload_res = [3.0, 100.0, 100.0, 0.0]

config_payload

指令原型:

config_payload(payload_id, switch_interval)

指令说明:

设置当前机器人使用的负载ID,并设置负载切换的平滑过渡时间。该指令主要解决由于切换负载瞬间机器人实际负载以及控制模型中使用的负载不一致而造成的可能误报碰撞的问题。

参数介绍:

payload_id

预期使用的负载ID。

switch_interval

预期的平滑过渡时间,单位秒,参数范围0-1,启用平滑过渡,系统将在过渡期间限制转矩变化斜率,以降低负载切换时的抖动

注:

该指令会同步运动,打断转接。

返回值:

无

碰撞等级设置查询

set_collision_level

指令原型:

set_collision_level(clsnLevel)

指令说明:

默认不支持该指令。

若执行的JKS程序包含该指令,主线程在解析到该指令时会报错提示,并跳过该指令、继续执行后续的指令;子线程解析到该指令时会直接跳过,继续执行后续指令(子线程中不处理运动及修改运动参数的指令)。

返回值:

无

get_collision_level

指令原型:

res = get_collision_level()

指令说明:

用于获取当前碰撞检测灵敏度。

返回值:

返回当前碰撞灵敏度。

工具坐标系设置查询

set_tool

指令原型:

set_tool(var_tool)

指令说明:

用于设置工具末端相对于末端法兰的位置偏置。

法兰坐标系垂直端面向外为z轴正方向, 工具IO连接端口为y轴负方向。

参数介绍:

var_tool

工具末端相对于法兰坐标系的偏置,为6元素数组。

返回值:

无

set_tool_id

指令原型:

set_tool_id(id)

指令说明:

用于设置工具坐标系id。

参数介绍:

id

取值[-1, 15]。

控制系统内最大支持[0,15] 共16个工具坐标系,通过设置ID指定当前使用的工具偏置值。当id为0时,即使用默认工具坐标系与法兰坐标系重合。

id为 -1 仅适用于AL12 机型,用于使用该机型末端内置相机的坐标系。

返回值:

无

get_tool_offsets

指令原型:

res = get_tool_offsets()

指令说明:

用于获取当前工具坐标系偏置值。

返回值:

返回6元素数组。

get_tool_offsets_of

指令原型:

res = get_tool_offsets_of(id)

指令说明:

用于获取指定工具坐标系偏置值。

参数介绍:

id

指定的工具坐标系,取值范围是[1, 15]。

返回值:

返回6元素数组。

用户坐标系设置查询

set_user_frame

指令原型:

set_user_frame(user_frame)

指令说明:

用于设置用户坐标系。

设置时工具ID将设置为-1,程序中设置后不会被保存。(仅本次程序运行期间生效)。

参数介绍:

user_frame

用户坐标系值,为6元素数组。

返回值:

无

示例: set_user_frame_id ^^^^^^^^^^^^^^^^^^^^^^^^^

指令原型:

set_user_frame_id(id)

指令说明:

用于设置用户坐标系id。

参数介绍:

id

取值[0, 15]。

控制系统内最大支持16个用户坐标系,通过设置ID指定当前使用的用户坐标系偏置值。当id为0时,即不使用用户自定义的坐标系,而是默认的世界坐标系。

返回值:

无

示例: get_user_frame ^^^^^^^^^^^^^^^^^^^^^^

指令原型:

res = get_user_frame()

指令说明:

用于获取当前用户坐标系偏置值。

返回值:

返回6元素数组。

示例: get_user_frame_of ^^^^^^^^^^^^^^^^^^^^^^^^^

指令原型:

res = get_user_frame_of(id)

指令说明:

用于获取指定用户坐标系偏置值。

参数介绍:

id

指定的用户坐标系,取值范围是[1, 15]。

返回值:

返回6元素数组。

辅助函数库

数学计算库

函数原型

函数描述

res = abs(arg)

计算表达式绝对值

res = atan2(arg_y, arg_x)

该指令用于计算点(arg_x, arg_y)相对于原点的角度(单位为°),输出角度范围为(-180°,180°]

res = atan(arg)

该指令用于计算输入值arg的反正切值(角度,单位为°),输出角度范围为(-180°,180°]

res = acos(arg)

反余弦函数,返回值单位为°

res = asin(arg)

反正弦函数,返回值单位为°

res = cos(arg)

余弦函数,参数单位为°

res = sin(arg)

正弦函数,参数单位为°

res = tan(arg)

正切函数,参数单位为°

res = floor(arg)

向下取整

res = ceil(arg)

向上取整

res = round(arg)

四舍五入取整

res = sqrt(arg)

取平方根

res = ln(x)

计算指定值的自然对数,即求"e的多少次方等于x",e为自然常数。x: 输入值,必须为正实数(x > 0)

res=exp(x)

用于计算自然指数函数,即求"e的x次方",e为自然常数

res = rad2deg(arg)

弧度转角度

res = deg2rad(arg)

角度转弧度

位姿运算库

pose_add

指令原型:

res = pose_add(pos1, pos2)

指令说明:

用于计算两个位姿之和并返回计算结果。

位置进行简单累加计算;

姿态计算公式为:R_res = R_pos2 * R_pos1

注:

R表示旋转矩阵。

返回值:

返回计算结果。

示例:

#(S5 机型)
pos1 = [200.0 ,0.0 ,600.0  ,90.0 ,  -0.0, 0.0]
pos2 = [-300, -400, -300, 90, 0, 90]
add_res = pose_add(pos1, pos2)
#结果
# add_res = [-100.0  -400.0  300.0  180.0   0.0   90.0]

pose_sub

指令原型:

res = pose_sub(pos1, pos2)

指令说明:

用于计算两个位姿之差并返回计算结果。

位置进行简单相减计算;

姿态计算公式为:R_res = inv(R_pos2) * R_pos1

注:

R表示旋转矩阵。

返回值:

返回计算结果。

示例:

#(S5 机型)
pos1 = [-100,-400,300,180,0,90]
pos2 = [-300,-400,-300,90,0,90]
res = pose_sub(pos1, pos2)
#结果
# res = [ 200.0 0.0 600.0 90.0 -0.0 0.0]

pose_dist

指令原型:

res = pose_dist(pos1, pos2)

指令说明:

用于计算两个位姿之间的距离,计算仅考虑位置坐标。

返回值:

返回计算结果。

示例:

#(S5 机型)
pos1 = [-100,-400,300,180,0,90]
pos2 = [-300,-400,-300,90,0,90]
Dist_res = pose_dist(pos1, pos2)
#结果 sqrt( sqr(-100-(-300)) + sqr(300 - (-300)) )
# Dist_res = 632.45550537109

pose_inv

指令原型:

res = pose_inv(pos)

指令说明:

用于计算某个位置的逆变换。

返回值:

返回pose形式的计算结果。

示例:

#(S5 机型)
basePose = [-100,-400,300,180,0,90]
transPose = [100,100,0,90,45,0]
Pi_res= pose_inv(transPose)
PT_res = pose_trans(basePose, transPose) # 变换
res = pose_trans(PT_res, Pi_res) # 对变换后的结果逆变换
#结果
# Pi_res =[ -70.711 -70.711 100.0 -90.0 -0.0 45.0]
# PT_res =[ 0.0 -300.0 300.0 -90.0 -45.0 90.0]
# res = [-100.0 -400.0 300.0 180.0 0.0 90.0 ]

pose_trans

指令原型:

res = pose_trans(p_from, p_from_to)

指令说明:

用于计算位置变换,p_from为变换的起始位姿,p_from_to为变换的位姿增量。

计算公式为:p_res = p_from * p_from_to

返回值:

返回位置结果。

示例:

#(S5 机型)
basePose = [-100,-400,300,180,0,90]
transPose = [100,100,0,90,45,0]
PT_res = pose_trans(basePose, transPose)
#结果
# PT_res = 0 -300.0 300.0 -90.0 45.0 90.0

pose_intpl

指令原型:

res = pose_intpl(pos1, pos2, alpha)

指令说明:

用于按照给定的系数计算两点之间的插补点。

计算公式为:p_res = pos1 + (pos2 - pos1) * alpha

其中,alpha >= 0 且 alpha <= 1,包含姿态且其插值方法同为线性插值。

返回值:

返回插补点的位置变量。

示例:

#(S5 机型)
pos1 = [-100,-400,300,180,0,90]
pos2 = [-300,-400,-300,90,0,90]
alpha = 0.5
res = pose_intpl(pos1, pos2, alpha)
#结果
# res =[ -200.0 -400.0 0.0 135.0 0.0 90.0]

xy_plane_trans

指令原型:

res = xy_plane_trans(posebase, dx, dy, drz)

指令说明:

该指令将刚体在XY平面内做变换,在posebase处先绕posebase的Z轴旋转drz度,然后沿用户坐标系的X轴平移dx,沿沿用户坐标系的Y轴平移dy。

返回值:

返回变换后的位姿。

示例:

#(S5 机型)
posebase =  [-100,-400,300,180,0,90]
dx = 100
dy = 100
drz = 90
xyT_res= xy_plane_trans(posebase, dx, dy, drz)
#结果:
#xyT_res = [ -0 -300.0 300.0 180.0 -0.0 180.0]

注:绕轴旋转变换后的姿态不可做简单地加减对比,若需验证,可通过以下公式进行计算:

首先根据posebase的RPY姿态描述变换为旋转矩阵latexmath-image4描述,得到posebase的Z轴在用户坐标系下的向量表示,我们用旋转轴为latexmath-image6来表示,绕该轴旋转角度为θ时的变换矩阵为:

latexmath-image8,

则有:

姿态变换计算公式为:

latexmath-image10

位置变换计算公式为

latexmath-image12

yz_plane_trans

指令原型:

res = yz_plane_trans(posebase, dy, dz, drx)

指令说明:

该指令将刚体在YZ平面内做变换,在posebase处先绕posebase的X轴旋转drx度,然后沿用户坐标系的Y轴平移dy,沿用户坐标系的Z轴平移dz。

返回值:

返回变换后的位姿。

示例:

#(S5 机型)
posebase =  [-100,-400,300,180,0,90]
dy = 100
dz = 100
drx = 90
res = yz_plane_trans(posebase, dy, dz, drx)
#结果:
#res = [ -100.0  -300.0  400.0   -90.0   -90.0    0.0]

注:绕轴旋转变换后的姿态不可做简单地加减对比,若需验证,可通过以下公式进行计算:

首先根据posebase的RPY姿态描述变换为旋转矩阵latexmath-image14描述,得到posebase的X轴在用户坐标系下的向量表示,我们用旋转轴为latexmath-image6来表示,绕该轴旋转角度为θ时的变换矩阵为:

latexmath-image16,

则有:

姿态变换计算公式为:

latexmath-image18

位置变换计算公式为

latexmath-image20

zx_plane_trans

指令原型:

res = zx_plane_trans(posebase, dz, dx, dry)

指令说明:

该指令将刚体在ZX平面内做变换,在posebase处先绕posebase的Y轴旋转dry度,然后沿用户坐标系的Z轴平移dz,沿用户坐标系的X轴平移dx。

返回值:

返回变换后的位姿。

示例:

#(S5 机型)
posebase =  [-100,-400,300,180,0,90]
dz = 100
dx = 100
dry = 90
zxT_res= zx_plane_trans(posebase, dz, dx, dry)
#结果:
**#zxT_res =  [0.0     -400.0  400.0   -90.0   -0.0    90.0**]

注:绕轴旋转变换后的姿态不可做简单地加减对比,若需验证,可通过以下公式进行计算:

首先根据posebase的RPY姿态描述变换为旋转矩阵latexmath-image4描述,得到posebase的Y轴在用户坐标系下的向量表示,我们用旋转轴为latexmath-image6来表示,绕该轴旋转角度为θ时的变换矩阵为:

latexmath-image8,

则有:

姿态变换计算公式为:

latexmath-image10

位置变换计算公式为

latexmath-image12

kine_inverse

指令原型:

res = kine_inverse(posJ, posP)

指令说明:

该指令用于计算运动学逆解。

功能为计算输入的笛卡尔空间位置posP所对应的关节空间位置。

posJ为这个逆解关节值附近的一组关节值,用来确定逆解函数多解的选取。

返回值:

返回逆运动学计算结果。

当逆解失败时,程序报错终止。

示例:

#(S5 机型)
posP = [-100,-400,300,180,0,90]
PosJ = [91.34,108.433,90.751,70.816,-90,91.34]
kI_res = kine_inverse(posJ, posP)
#结果
#kI_res = [92.015 82.184 120.003 67.813 -90.0 92.015]

kine_forward

指令原型:

res = kine_forward(posJ)

指令说明:

用于计算运动学正解。

功能为计算输入的关节角度对应所在笛卡尔空间位姿。

返回值:

返回正运动学计算结果。

示例:

#(S5 机型)
posJ = [91.34,108.433,90.751,70.816,-90, 91.34]
res = kine_forward(posJ)
#结果
# res = [-100,-600.00310646982,300,180.0,-0.0,90.0]

is_pose_reachable

指令原型:

res = is_pose_reachable(posP)

有参考关节角度时,使用以下指令:

res = is_pose_reachable_refjpos (posP)

指令说明:

用于判断在当前位姿下,是否能够以通过笛卡尔空间运动指令运动至posP。

返回值:

若可以,则返回1(条件为真);

若否,则返回0(条件为假)。

示例:

# S5机器人本体,当前机器人各关节位置 [91.34,108.433,90.751,70.816,-90,91.34]
posP = [-100,-400,300,180,0,90]
res = is_pose_reachable(posP) #参考关节角默认为当前关节位置
#结果
#res = 1

is_pose_reachable_refjpos

指令原型:

res = is_pose_reachable_refjpos (posP, ref_jointPos)

指令说明:

该指令用于查询指定的笛卡尔空间位置在指定的参考角度下是否可达,ref_jointPos: 用于posP逆解时提供参照。

返回值:

若可以,则返回1(条件为真);

若否,则返回0(条件为假)。

示例:

# S5机器人本体
posP = [-100,-400,300,180,0,90]
ref_posJ = [91.34,108.433,90.751,70.816,-90,91.34]
res = is_pose_reachable_refjpos(posP,ref_posJ)
#结果
#res = 1

set_target_pose

指令原型:

set_target_pose(poseID, fieldType, <...>)

指令说明:

设置指定目标点位的值或特定字段值。

参数介绍:

poseID

指定目标点位的ID,整型值,取值范围为[0,65535]。

fieldType

标识目标点位期望设定的字段,整形值,取值区间为:-1, [1, 10]。各值对应的访问字段定义如下:

  • -1: 所有字段;

  • 1: Target pose name,目标点位名称,类型为字符串

  • 2: Cartesian pose, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 3: Tool frame ID, 该字段对应工具坐标系ID

  • 4: User frame ID, 该字段对应用户坐标系ID

  • 5: SEW configuration, 该字段对应值为长度为3的数组,[s,e,w]

  • 6: External axes, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 7: Joint position, 该字段对应值为长度为9的数组,实际关节数不足9个则补0

  • 8: Tool frame offset, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 9: User frame offset, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 10: Varaible, 0为只读, 1为可读可写

...

当fieldType为-1时,需提供字段1~10所有参数值;

当fieldType为[1,10]间值时,仅需提供对应字段的参数值。

返回值:

无。

当设置出错时,如poseID无效,名称冲突或值无效时,会报错并终止程序运行。

get_target_pose

指令原型:

<...> = get_target_pose(poseID, fieldType)

指令说明:

查询指定目标点位的值或特定字段值。

参数介绍:

poseID

指定目标点位的ID,整型值,取值范围为[0,65535]。

fieldType

标识目标点位期望设定的字段,整形值,取值区间为:-1, [1, 10]。各值对应的访问字段定义如下:

  • -1: 所有字段;

  • 1: Target pose name,目标点位名称,类型为字符串

  • 2: Cartesian pose, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 3: Tool frame ID, 该字段对应工具坐标系ID

  • 4: User frame ID, 该字段对应用户坐标系ID

  • 5: SEW configuration, 该字段对应值为长度为3的数组,[s,e,w]

  • 6: External axes, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 7: Joint position, 该字段对应值为长度为9的数组,实际关节数不足9个则补0

  • 8: Tool frame offset, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 9: User frame offset, 该字段对应值为长度为6的数组,[x,y,z,a,b,c]

  • 10: Varaible, 0为只读, 1为可读可写

返回值:

所查询目标点位所有字段或特定字段的值。当查询出错如poseID无效时,会报错并终止程序运行。注:当fieldType为-1查询目标点位所有字段值时,会存在多个返回值。

get_target_pose_to_array

指令原型:

dataArray = get_target_pose_to_array(poseID)

指令说明:

获取指定poseID的所有数据字段并形成数组返回。

参数介绍:

poseID

指定目标点位的ID,整型值,取值范围为[0,65535]。

返回值:

返回的单一数组,包含该目标点位的所有数据,数据格式为:

[PointID,Label,X,Y,Z,Rx,Ry,Rz,Tool,Frame,Shoulder,Elbow,Wrist,ExJ1,ExJ2,ExJ3,ExJ4,ExJ5,ExJ6,J1,J2,J3,J4,J5,J6,J7,J8,J9,toolOffX,toolOffY,toolOffZ,toolOffRx,toolOffRy,toolOffRz,userOffX,userOffY,userOffZ,userOffRx,userOffRy,userOffRz,Variable]

当指定poseID的目标点位不存在时,程序报错并终止运行。

delete_target_pose

指令原型:

delete_target_pose(poseID)

指令说明:

删除指定poseID对应的目标点位。

参数介绍:

poseID

指定目标点位的ID,整型值,取值范围为[0,65535]。

返回值:

无。

当指定poseID的目标点位不存在时,程序将正常运行;当poseID无效时,程序报错并终止运行。

target_pose_exists

指令原型:

target_pose_exists(poseID)

指令说明:

查询指定poseID对应的目标点位是否存在。

参数介绍:

poseID

指定目标点位的ID,整型值,取值范围为[0,65535]。

返回值:

查询结果,0为不存在,1为存在。

当poseID无效时,程序报错并终止运行。

字符串操作库

sprintf

指令原型:

resLen,bufferOut = sprintf(stringFormat, …)

指令说明:

用于对字符串的格式化输出,即将指定数据按指定格式输出为字符串。

参数介绍:

stringFormat

定义格式字符串,目前仅支持变量形式。

支持对%f、%d、%s三种类型变量的格式化。

格式如:%f、%s、%d

…

待格式化变量,可变参数。支持整型、浮点型及字符串类型的变量,或者常数。

返回值:

strLen:如果格式化成功,返回字符串的长度,否则返回-1。

strOut:返回的字符串。

示例:

num1 = 66
num2 = 55.3
num3 = 0.3
formatStr = "%f,%f,%f"
resLen,strOut = sprintf(formatStr, num1,num2,num3)
#结果:
#strOut = "66,55.3,0.3"

sscanf

指令原型:

resNum,... = sscanf(bufferIn, stringFormat)

指令说明:

用于对字符串的格式化输入,即将匹配一定格式的字符串将数据输入到变量中。

参数介绍:

bufferIn

待匹配的字符串,目前仅支持变量格式。

stringFormat

定义格式字符串,目前仅支持变量形式。

支持对%f、%d、%s三种类型变量的格式化。

格式如:%f、%d、%s

%f 匹配一个浮点数;

%d 匹配十进制整数,数字前面的+或-可选;

%s 匹配字符串,读取连续字符直到遇到一个空格字符(空白、换行和制表符等)或格式化字符串中下一个匹配字符(非%s、%f、%d)。

返回值:

resNum:如果格式化成功,返回匹配的变量的数目,否则返回-1。

... : 用于接收格式化输出的变量,可变参数,stringFormat中预设的变量数量和类型一致。支持整型、浮点型及字符串类型的变量。

示例:

strIn = "1#2#3#4#5#6#7#8"
a1,a2,a3,a4,a5,a6,a7,a8=0,0,0,0,0,0,0,0
resNum,a1,a2,a3,a4,a5,a6,a7,a8 = sscanf(strIn,"%d#%d#%d#%d#%d#%d#%d#%d")
#结果
#resNum = 8
# a1,a2,a3,a4,a5,a6,a7,a8 = 1 2 3 4 5 6 7 8

string_concat

指令原型:

strRes = string_concat(str1, str2)

指令说明:

用于将两个数字或字符串以字符串的形式进行拼接,并返回拼接后的字符串。

参数介绍:

str1

待拼接的子字符串,变量或者常量。

str2

待拼接的子字符串,变量或者常量。

返回值:

strRes: 字符串拼接结果。

示例:

str1 = "str1"
str2 = "str2"
concatStr = string_concat(str1, str2)
#结果
#concatStr = “str1str2”

get_string_from_array

指令原型:

resLen,stringOut = get_string_from_array(arrayIn, splittingToken)

指令说明:

用于将数组元素转换成字符串形式,并通过输入的分隔符拼接成一个完整字符串。

参数介绍:

arrayIn

用户给定的数组。

splittingToken

字符串格式的分隔符。

返回值:

resLen: 如果转换成功,返回字符串的长度(不包含截止符);

失败则返回-1。

stringOut:转换成功后的字符串。

示例:

arrIn=[1,2,3,4,5,6,7,8]
sep="#"
ret,strOut = get_string_from_array(arrIn,sep)
#执行结果:
#ret = 15
#strOut = “1#2#3#4#5#6#7#8”

get_array_from_string

指令原型:

resNum,arrayOut = get_array_from_string(stringIn, splittingToken)

指令说明:

用于将给定字符串转换为数组变量。

参数介绍:

stringIn

用户给定的字符串(包含个数组中的数据)。

splittingToken

字符串格式的分隔符。

返回值:

resNum: 如果转换成功,返回数组的元素数量;

失败则返回-1。

arrayOut: 转换成功后的数组。

示例:

strIn = "1,2,3,4,5,6"
sep=","
ret,arrOut = get_array_from_string(strIn,sep)
#结果:
# ret = 6
# arrOut = [1,2,3,4,5,6]

get_length

指令原型:

len = get_length(str_or_arr)

指令说明:

用于获取字符串或数组的长度。

返回值:

如果参数数据类型不是数组或字符串,返回-1,不报错,程序继续正常执行。

示例:

len = get_length(int_val)
#参数int_val是一个整型变量,则指令执行的结果为len = -1。

strcmp

指令原型:

res = strcmp(str1, str2)

指令说明:

用于两个字符串间的比较。

返回值:

若str1=str2,则返回零;

若str1<str2,则返回负数;

若str1>str2,则返回正数。

程序控制与调试

log_message

指令原型:

log_message(level, message)

指令说明:

用于用户自行添加日志信息。

参数介绍:

level

日志消息类型。

具体定义如下:

·INFO:1

·WARNING:2

·ERROR:3

message

日志消息文本。

返回值:

无

get_system_clock

指令原型:

clock = get_system_clock()

指令说明:

用于用户获取系统实时时钟。

返回值:

为double类型浮点数,单位为ms(毫秒),精确到10ns。

底层使用CLOCK_MONOTONIC,即本次系统启动后流逝的时钟数。

sleep

指令原型:

sleep(time)

指令说明:

用于延时程序的一段执行时间。

参数介绍:

time

延时时间长度,单位s。

time=0 表示无限等待。

注:

该指令会打断不同运动段之间的转接。

返回值:

无

pause

指令原型:

pause()

指令说明:

用于程序暂停操作,程序中调用该指令时,所有线程都将暂停。

返回值:

无

exit

指令原型:

exit()

指令说明:

用于控制作业程序终止。

返回值:

无

execute_script

指令原型:

execute_script ( jks_file_path )

指令说明:

该指令用于加载执行指定的jks脚本文件,执行完指定文件后继续执行execute_script() 后面的指令。

参数介绍:

file_path

输入的期望执行的jks脚本文件路径。

需要注意的是,execute_script指令执行的jks脚本默认使用主线程环境下的函数定义,在使用图形化编程时如果执行程序主线程时选择的是其他的作业工程文件对应的jks文件且其定义了独立的函数定义,执行时会报错函数未定义。

返回值:

无

call_function

指令原型:

succ, <...> = call_function(func_name, <arg1, ..., argN>)

指令说明:

根据指定的函数名以及给定的函数入参,进行函数调用。

参数介绍:

func_name

需要调用的函数名称

arg1, ..., argN

条件输入参数,为所调用函数所需的所有输入参数

返回值:

succ

函数调用是否成功,0为调用失败,1为调用成功

...

当succ为1时表示调用成功,第2个或之后的返回值为所调用函数返回值; 当succ为0时表示调用失败,第2个返回参数为调用错误信息。

slice

指令原型:

res = slice(array, startIndex, endIndex, step)

指令说明:

用于对数组的切片访问。

参数介绍:

array

输入的待切片访问的数组,注:该指令不支持字符串。

startIndex

数组切片访问的起始索引(包含),取值范围为[0, N),其中N为数组长度,

endIndex

数组切片访问的终止索引(不包含),取值范围为[startIndex+1, N),其中N为数组长度。

step

缺省时step默认为1。数组切片访问的元素索引间隔,取值范围为(-N,-1] ∪ [1, N) , step!=0

返回值:

返回数组切片访问结果数组。

注意:

  1. 当step > 0时,endIndex <= startIndex 且 endIndex >= 0;

  2. 当 step < 0 时, endIndex >= startIndex 且 endIndex < N。

#示例1:

array= [1,2,3,4,5,6,7,8]
startIndex = 0
endIndex = 7
step = 2
res = slice(array, startIndex, endIndex, step)
#结果: res=[1,3,5,7]

#示例2:

startIndex = 7
endIndex = 0
step = -2
res = slice(array, startIndex, endIndex, step)
#结果: res=[8,6,4,2]

多线程指令

thread_create

指令原型:

thread_create(thread_file_path, thread_name, detach)

指令说明:

用于创建子线程,并启动线程运行。

参数介绍:

thread_file_path

线程程序文件保存的绝对路径。必须统一保存在 /user/etc/jkzuc/scripts/program/ 下,其他前置路径都不可行。

thread_name

标识线程的唯一字符串。线程名称重复会提示创建失败。

detach

可选参数,布尔型,默认为 false。为 true 时创建分离线程:该线程内部发生运行错误时仅终止线程自身,不影响主程序继续执行。

返回值:

无

thread_join

指令原型:

thread_join(thread_name)

指令说明:

用于同步指定线程的操作,该函数仅在主线程中生效。

参数介绍:

thread_name

线程辨识唯一字符串。

线程名称重复会提示创建失败。

返回值:

无

thread_destroy

指令原型:

thread_destroy(thread_name)

指令说明:

用于销毁指定线程的操作,该函数仅在主线程中生效。

参数介绍:

thread_name

线程辨识唯一字符串。

线程名称重复会提示创建失败。

返回值:

无

thread_enter_critical

指令原型:

thread_enter_critical()

指令说明:

用于线程进入临界区操作。

返回值:

无

thread_exit_critical

指令原型:

thread_exit_critical()

指令说明:

用于线程退出临界区操作。

返回值:

无

image12上海节卡机器人股份有限公司

地址:上海市闵行区剑川路610号33-35幢

电话:400-006-2665

网址:www.jaka.com