编程
编程
界面一览

如上图所示,编程界面一共可分为上述几个功能区,各功能区的具体介绍见下文:
仿真模型区
用户可在仿真模型区看到机器人的运行实况。
该窗口默认悬浮在编程页面左上角,用户可按需拖动窗口调整位置。

1
机器人按钮,双击可将窗口最大化。2
最小化按钮,点击后窗口将最小化、并悬浮在页面左上角。最小化后,再次点击该图标,窗口将恢复至正常尺寸。3
恢复默认状态按钮,点击后窗口将恢复默认大小和位置。4
最大化按钮,点击后窗口将最大化。- 除此之外,用户还可将鼠标停留在窗口内任意位置滑动滚轴来拉近或拉远视角。
指令操作区
除了其他功能按钮外的所有空白区域都可作为指令操作区,用户可在这个区域内拼接指令。
- 在
指令列表
中选中任意指令后,拖拽至空白画布中,即可进行指令拼接:

- 鼠标点击空白画布会出现弹窗,用户可进行相应操作:

- 鼠标点击单条指令会出现弹窗,用户可进行相应操作:

- 鼠标长按并拖动任意一条指令,在操作区下方会出现一个垃圾桶图标,可将指令拖动至该图标处以删除:

调节按钮

手动

点击右上角用红框圈出的按钮可以移动该界面。
I/O

点击右上角用红框圈出的按钮可以移动该界面;
点击右上角用黄框圈出的按钮可以跳转至设置
-Modbus设置
工具区

新建
点击可新建程序
批量

点击 批量
后会显示出下拉功能框,可对程序进行相应操作。
在左侧勾选框中可多选指令,然后在功能框中选择相应功能。
提示:
选好要进行操作的指令后,点击 复制到粘贴板
可将这些指令复制在 粘贴板
中。
打开其他程序或是新建程序后,在同样的位置打开 粘贴板
,可看到刚才复制的指令。

勾选好后点击 粘贴
,即可把刚才的指令粘贴在新程序中。
文件
点击文件
后,可在跳出的页面中进行相应操作:

1
导出2
删除3
分享
提示:
导入
可支持多文件同时导入,每次导入的文件数最多为五个:

保存
点击可保存当前页面的程序
另存
点击可将当前页面程序另存为另一文件名的程序
锁定
点击锁定
后,目前打开的程序会被锁定,无法进行任何操作;
点击解锁
可退出锁定状态。
快捷操作按钮

1
:撤销操作
2
:重做操作
3
:放大指令块
4
:缩小指令块
5
:复位
帮助按钮

功能及操作办法可参考:帮助按钮
指令列表
移动(运动指令)
注意:
机器人的运动位置会根据坐标系的变化而变化。
若用户在某一坐标系下设置好了某一程序中的点位,且在切换坐标系后运行同一程序,则所有已设置的点位会自动切换到新坐标系中的相应位置。
因此,为了保证机器人能精确完成运动指令,在编辑运动指令、使机器人运动前,要先确认好当前坐标系。
关节运动

- 使机器人关节运动。
- 点击图标,打开设置界面,编辑此条指令的
名称
速度
加速度
, 选择节拍优先或柔顺优先
,选择是否使用笛卡尔位置
在此点停止或圆弧过渡
,选择指令跳过条件
。在关节角度
-编辑
可打开手动操作页面,编辑示教点位;也可直接拖拽机器人至想要点位后,点击关节角度
-当前位置
,此时机器人各关节的具体角度即可显示在界面中。


节拍优先 & 柔顺优先:

- 节拍优先:机器人加减速时速度呈线性变化。选择节拍优先时,机器人运行速度更快,但加速度开始和结束阶段对机器人存在较大冲击。一般用于高节拍的场景。节拍优先为默认规划方式。
- 柔顺优先:机器人加减速时呈S型曲线变化,加速度变化率保持恒定。使用柔顺优先,机器人运动轨迹更顺滑,对机器人的冲击较小。一般用于节拍要求不高、轨迹精度要求高的场景。柔顺优先在编程控制机器人并运行程序时生效,在手动操作界面、拖拽模式和关节运动/直线运动至该点时不生效。
提示:
在使用关节运动时,若勾选了 使用笛卡尔位置
,则机器人会以当前运动中保存的机器人笛卡尔位置解算出对应关节角度值,再进行关节运动到设定为止。
关节运动使用笛卡尔坐标系

- 使用笛卡尔坐标系记录的点位使机器人关节运动。
- 若将此指令前置于关节运动指令前,则后续的关节运动都会以笛卡尔坐标系记录的点位来运动,机器人会自动逆解。
直线运动

- 使机器人直线运动。
- 点击图标,打开设置界面,编辑此条指令的
名称
速度
加速度
姿态速度
姿态加速度
, 选择节拍优先或柔顺优先
,选择在此点停止或圆弧过渡
,选择指令跳过条件
。在笛卡尔坐标
-编辑
可打开手动操作页面,编辑示教点位;也可直接拖拽机器人至想要点位后,点击笛卡尔坐标
-当前位置
,此时机器人各坐标的具体值即可显示在界面中。

相对直线运动

- 设置位置变化量,使机器人执行相对于当前姿态的末端直线运动,其中的位置变化量为当前用户坐标系下的增量值。
- 点击图标,打开设置界面,编辑此条指令的
名称
参考坐标系
速度
加速度
, 选择节拍优先或柔顺优先
,选择在此点停止或圆弧过渡
指令跳过条件
,编辑位置变化量。

- 示例:机器人末端沿当前用户坐标系Z轴负方向运动100mm。

圆弧运动

- 完成圆弧运动需要三个点,P0、P1、P2。
但如上图所示,指令中只能设置两个点,即P1与P2,所以P0需要额外设置。若在圆弧运动前有其他指令,则P0为上一条指令的最后一个点;若无其他指令,则需要在圆弧运动前前置一个运动指令,使该指令的最后一个点为圆弧运动的P0。
P1为圆弧运动指令的第一个点,即 圆弧点1
,P2为圆弧运动指令的第二个点,即 圆弧点2
。

- 点击图标,打开设置界面,编辑此条指令的
速度
加速度
,选择节拍优先或柔顺优先
,选择在此点停止或圆弧过渡
指令跳过条件
,手动示教或直接编辑中间点
结束点
,编辑运动圈数
,选择圆弧运动方案
。
运动圈数:
运动圈数可以为整数或小数。
当圈数为0时,圆弧运动轨迹为初始点到终点的圆弧;
当圈数为1时,系统会自动通过设置的初始点、经过点和终点计算出整圆,此时圆弧运动轨迹为系统计算的1圈整圆;
当圈数为2时,圆弧运动轨迹为系统计算的2圈整圆,以此类推。

MoveZ

- 机器人末端保持当前姿态做Z字型的轨迹运动。

- 点击图标,打开设置界面,编辑
名称
,手动示教或编辑开始位置
结束位置
任意位置
,编辑Z型宽度
移动速度
,可勾选Z型密度
,在圆弧过渡
峰值暂停时间
中二选一。
提示:
Z型宽度
:机器人在当前平面运动的宽度。
Z型密度
:同侧峰值之间的距离,决定了机器人的运动周期。若未设置Z型密度,则由当前机器人的运动速度决定Z型运动周期。
峰值暂停时间
:机器人每到达一个峰值会暂停一次,在 +X侧点
-X侧点
可设置不同暂停时间。
默认垂直于用户坐标系Z轴的平面为机器人运动的平面。用户也可自定义运动平面,通过新增一个点位(任意位置
),使由 开始位置
结束位置
任意位置
所形成的平面作为机器人Z型运动平面,此时 任意位置
的方向为+X方向。

MoveZS

机器人末端旋转RZ的同时向设定方向移动。
点击图标,打开设置界面,编辑
名称
,手动示教或编辑开始位置
结束位置
任意位置
,编辑Z型宽度
移动速度
,可勾选Z型密度
旋转角度
,在圆弧过渡
峰值暂停时间
中二选一。
提示:
Z型宽度
:机器人在当前平面运动的宽度。
Z型密度
:同侧峰值之间的距离,决定了机器人的运动周期。若未设置Z型密度,则由当前机器人的运动速度决定Z型运动周期。
旋转角度
:往X轴正方向或负方向旋转运动的角度。
峰值暂停时间
:机器人每到达一个峰值会暂停一次,在 +X侧点
-X侧点
可设置不同暂停时间。
默认垂直于用户坐标系Z轴的平面为机器人运动的平面。用户也可自定义运动平面,通过新增一个点位(任意位置
),使由 开始位置
结束位置
任意位置
所形成的平面作为机器人Z型运动平面,此时 任意位置
的方向为+X方向。

托盘路点

- 该指令是为了设置托盘程序中机器人到达每个托盘点之后的运动终点。
- 点击图标,打开设置界面,编辑此条指令的
名称
速度
加速度
,选择在此点停止或圆弧过渡
,选择指令跳过条件
,手动示教或直接编辑笛卡尔坐标
处的示教点位。

- 示例:机器人末端走一个3X3的正方形托盘,并在每个点向下运动100mm。

轨迹记录

- 该指令可对已在
设置
-程序设置
-轨迹记录
中记录的轨迹进行复现。

- 可打开设置界面,编辑
速度
-加速度
。
设置全局速度

- 该指令可使后续所有直线运动、关节运动的运动速度、加速度与所选的速度变量一致。
关闭全局速度

- 该指令可使后续所有直线运动、关节运动恢复原本的运动速度、加速度。
获取机器人相关参数

- 可发送给上位机或赋值给变量。
- 示例:上位机接收当前机器人一到六关节的角度值。

获取机器人用户坐标系或工具坐标系

- 可发送给上位机或赋值给变量。
- 示例:上位机接收当前机器人的坐标值。

笛卡尔空间位姿是否可达

- 是否可以通过笛卡尔空间运动到达此指令中的点位。

- 点击图标,打开设置界面,编辑此条指令中的点位名称,手动示教或直接编辑该点位。
位姿列队存/取值

该指令用于储存或读取相机拍照所获取的物料位置。
位姿列队清空

该指令用于清空储存的相机拍照所获得的物料位置信息。
设置全局规划器类型
设置全局的规划器类型:节拍优先或柔顺优先。

关闭全局规划器

注意:
开启全局规划后,这两个指令之间的运动指令都会按照此全局规划进行,且全局规划优先于单条指令中设置的规划器类型。
I/O
设置数字输出

该指令为即时指令,程序中使用该指令时,会立即输出该指令所设定的DO信号。
示例:运动到物体放置点后松开软爪放置物体。

运动中设置数字输出

- 该指令为非即时指令。程序中使用该指令时,不会立即输出DO信号,而是等待机器人开始运动时输出DO信号。
- 与该指令相邻的两条指令均必须为运动指令,且需开启圆弧过渡。
等待数字输入

- 该指令用于等待DI信号。
- 当指令中输入的时间为0时,程序运动到该指令时会一直等待,直到该指令成立才会执行紧接着此条指令的下一条指令;
当输入的等待时间非0时,如果该指令中的条件成立,则会立即执行此条指令的下一条指令,如果该指令中的条件不成立,则会等待输入的时间后执行下一条指令。
设置模拟输出

- 该指令为即时指令。程序中使用该指令时,会立即输出该指令所设定的AO信号。
- 可在指令的白色框中填入模拟输出信号的值,数值范围为:-65535~65535。
- 示例:当机器人运动到待命点后设置控制柜AO1的值为2048。

运动中设置模拟输出

- 该指令为非即时指令。程序中使用该指令时,不会立即输出AO信号,而是等待机器人开始运动时输出AO信号。
- 可在指令的白色框中填入模拟输出信号的值,数值范围为:-65535~65535。
- 与该指令相邻的两条指令均必须为运动指令,且需开启圆弧过渡。
数字输入

- 该指令用于获取数字量输入的状态,需搭配其他指令使用。可在程序中作为判断条件来使用。当DI状态与指令上设定的一致时,即为真。
- 示例:判断当前数字输入的状态。如果当前DI1为开,则机器人从A点运动到B点。

数字输出

- 该指令用于获取数字量输出的状态,需搭配其他指令使用。可在程序中作为判断条件来使用。当DO状态与指令上设定的一致时,即为真。
- 示例:判断当前数字输出的状态。如果当前DO1为开,则机器人从A点运动到B点。

获取模拟输入

- 该指令用于获取模拟量输入的状态,需搭配其他指令使用。可通过变量赋值的方式将模拟输入的值赋到变量中。
- 示例:将当前模拟量输入赋值到名为距离的系统变量中,如果系统变量距离值小于10,则机器人从A点运动到B点。

获取模拟输出

- 该指令用于获取模拟量输出的状态,需搭配其他指令使用。可通过变量赋值的方式将模拟输出的值赋到变量中。
- 示例:将当前模拟量输出赋值到名为距离的系统变量中,如果系统变量距离值小于10,则机器人从A点运动到B点。

批量设置数字输出

- 该指令用于批量设置数字输出,程序中使用该指令时,会立即批量输出该指令所设定的DO信号。
批量设置模拟输出

- 该指令用于批量设置模拟输出,程序中使用该指令时,会立即批量输出该指令所设定的AO信号。
批量获取数字输入

- 该指令用于批量获取数字量输入的状态,需搭配其他指令使用。可在程序中作为判断条件来使用。当DI状态与指令上设定的一致时,即为真。
批量获取模拟输入

- 该指令用于批量获取模拟量输入的状态,需搭配其他指令使用。可通过变量赋值的方式将模拟输入的值赋到变量中。
批量获取数字输出

- 该指令用于批量获取数字量输出的状态,需搭配其他指令使用。可在程序中作为判断条件来使用。当DO状态与指令上设定的一致时,即为真。
批量获取模拟输出

- 该指令用于批量获取模拟量输出的状态,需搭配其他指令使用。可通过变量赋值的方式将模拟输出的值赋到变量中。
控制
设置工具坐标系
在运行程序时,若坐标系发生变化,需要使用设置工具坐标系指令。使用该指令后,所有后续的直线运动都将在该指令所设置的坐标系下运动,对关节运动无影响。
有两种指令可设置工具坐标系:
- 手动输入TCP
点击图标,打开设置界面,编辑坐标系的名称和坐标值。
此处设置的坐标系只能在此程序中使用。
- 选择已在
设置
中建立好的TCP
设置用户坐标系
在运行程序时,若坐标系发生变化,需要使用设置用户坐标系指令。使用该指令后,所有后续的直线运动都将在该指令所设置的坐标系下运动,对关节运动无影响。
有两种指令可设置用户坐标系:
- 手动输入用户坐标系
点击图标,打开设置界面,编辑坐标系的名称和坐标值。
此处设置的坐标系只能在此程序中使用。
- 选择已在
设置
中建立好的用户坐标系
设置负载与质心
在运行时,若负载发生变化,需要使用设置负载与质心指令。运行中设置的负载与实际负载不匹配时,可能会抖动或误报碰撞。
该指令用于在程序运行中修改末端的负载及负载的质心。共有两种设置方式:
- 直接点击数字盘或直接输入实际负载和质心
- 在白色框中放置数字变量块,在变量的
初始值
处设置负载和质心数值。
设置负载与平滑过渡时间
- 该指令可以使机器人末端在切换负载时的抖动变小,动作更稳定流畅。平缓时间最长可设置1S。

等待指令
等待指令有两种:

- 等待特定时间
输入等待时间后,程序会在运行此指令时,等待与输入数值时长一致的时间后,再继续运行。如果设定的等待时间为0s,机器人会一直等待。
示例:机器人运动到A点后暂停5秒后继续运行。


- 等待特定条件
将判定条件填入框内后,运行到此指令时,机器人会持续等待,直到满足所设条件后,才会继续运行。
示例:等待直到D1为开时,机器人从A点运动到B点。

循环指令
循环指令有五种:

- 循环特定次数:程序运行到此指令后,循环执行指令所包括的内容,直到循环指令中的内容被重复执行特定次数后或运行到结束循环指令时结束。可通过两种方式设定——
- 直接点击数字盘或直接输入循环次数;
- 在白色框中放置数字变量块,在变量的
初始值
处设置循环次数。

- 一直循环:程序运行到此指令后,会一直循环执行此指令所包含的内容,直到运行
结束循环
时才会结束。

- 如果……执行循环:在此指令的菱形空格中插入其他指令作为判断条件,当满足菱形空格中的指令会一直循环此指令所包含的内容,直到条件不满足或者运行
结束循环
时才会结束。
示例:如果条件成立,机器人会重复在A、B两点之间运动。


- 结束循环:该指令需要与循环指令、判断指令搭配使用,满足特定条件时,终止最靠近此结束循环指令的循环。在此条指令前加入判断条件,条件成立则立即终止当前循环。
示例:如果结束循环条件不成立,执行关节运动ABCD;如果结束循环条件成立,执行关节运动AB,然后跳出当前循环,不执行关节运动CD,程序终止。


- 跳过本次循环:该指令需要与循环指令、判断指令搭配使用。在此条指令前加入判断条件,条件成立则跳过本次循环,回到循环初始位置继续执行循环。
示例:如果跳过本次循环条件不成立,执行动作ABCD;跳过本次循环条件成立时,执行动作AB,然后跳过CD动作,继续从循环开头执行,不会跳出当前循环。

判断指令
判断指令有两种:

- 如果……为真:该指令用于判断指令内的条件是否成立。如果条件成立,则执行框架内部的程序;反之则不执行。
示例:如果当前DI为开,则机器人从A点运动到B点;如果当前DI为关,则机器人只进行关节运动A。


- 如果……为真,否则:该指令用于判断指令内的条件是否成立。如果条件成立,则执行A区域的程序;如果条件不成立,则执行B区域的程序。
示例:如果当前DI为开,则机器人运动到A点,否则机器人会运动到B点。

托盘指令

托盘指令主要用于码垛,可将物品按照规则堆叠在托盘上。此指令需搭配循环指令一起使用。
托盘类型分为三种:一维(线段)、二维(四边形)、三维(立方体),轨迹示意图如下:
操作步骤如下:
- 选择
托盘类型
; - 设置
速度
加速度
在此点停止或圆弧过渡
指令折叠


该指令可将在其框内的指令折叠为一条指令。
点击该指令的任意地方即可实现折叠效果,可通过指令上的箭头方向判断此时该指令是处于已折叠状态(向上)还是未折叠状态(向下)。
示例:折叠如下指令。


输出日志类型及日志内容

该指令让用户可以自定义在程序执行到何处时输出日志。
可在下拉框中选择 日志类型
,可在 日志内容
处输入值或拖入字符串变量。输出的日志内容可在 日志信息
处查看。
示例:到达指定位置就输出日志内容pos1、pos2。

程序停止或暂停

可在程序任意位置添加此指令,使程序在该位置停止或暂停。
多线程指令
执行程序

使用该指令,可在主程序中调用其他程序并将其设定为主线程或子线程。
若设定为主线程,则主程序执行到该指令时会转去执行此主线程指令指定的程序文件,待执行完成后才会回到主程序,继续执行后续指令。此为顺序执行。
若设定为子线程,则主程序执行到该指令时会创建一个独立、并行的线程,并使子线程执行自己指令中指定的程序文件,与此同时主程序会继续执行后续指令。此为并行执行。最多可以创建5个子线程与主程序并行执行,主程序结束时子线程也会随之结束。

可在此处选择主线程或子线程要执行的内容。若选择 自定义
,白色框内需填写所调用程序文件所在的位置。
示例:第一条指令以主线程方式执行名称为speed的程序文件,第二条指令以子线程方式执行名称为testing的程序文件。

线程操作

如上图所述,线程操作有两种类型。
若为 等待
,则运行到此指令时,等待此指令内的程序运行完成后,才会继续运行之后的指令。
若为 销毁
,则运行到此指令时,终止此指令内的程序,继续运行后续程序。
示例-等待:机器人运动到A后,执行子线程testing并同时运动至B,等待子线程testing完成后,机器人运动到C。

示例-销毁:机器人运动到A后,执行子线程testing并同时运动至B,停止执行子线程testing,同时机器人运动到C。

线程互斥支持

当某一主程序内有多个子程序,且不同子程序有相同的指令时,使用线程互斥指令可防止不同指令发生冲突。将相同的指令放入线程互斥指令框内,可防止相同指令的同时执行、造成程序错误。
相同指令执行顺序为,哪一指令先执行,那么其他相同的指令停止,直到正在执行的重复指令执行完成。
注意:
该指令仅对变量有效。
示例:在主线程中插入子线程1,且子线程1中也含有设置系统变量ABC,为避免冲突,可将设置系统变量ABC放入线程互斥支持指令框内。

计算
计算符

提供六种计算方法:加(+)、减(-)、乘(*)、除(/)、求余(%)、求幂()。
数学函数计算

提供数学函数计算:正弦、余弦、正切、反正弦、反余弦、反正切、自然指数、自然对数、向上取整、向下取整、四舍五入、绝对值、平方根。
比较运算符

提供比较运算符:小于、等于、大于、不等于、小于等于、大于等于,满足条件时返回结果为真。
并且

菱形框内的两个条件都成立时,返回结果为真。
或者

菱形框内的两个条件都成立,或有一个成立时,返回结果为真。
异或

菱形框内的两个条件仅有一个成立时,返回结果为真。
非

菱形框内的条件不成立时,返回结果为真。
位置计算

将两个位置相加、相减。
逆变换:即矩阵求逆。计算位置为笛卡尔坐标。
位置变换:可在框内拖入位置变量或示教点,
位置计算
处拖入起始位姿,位置变换
处拖入机器人相对位姿的增量变换,指令返回值为变换结果。
位置距离

拖入位置变量或示教点,指令返回值为两个位置之间的笛卡尔距离。
插补点

该指令按照给定的系数计算两点之间的插补点,系数的取值范围为0-1。可拖入位置变量或示教点,指令返回值为插补点的位置。
例如,将系数设置为0.5或0.25,插补点位置为下图中红色点:

变换平面

该指令用于使某一点在XY/YZ/ZX平面内做变换:基点处先绕Z/X/Y轴旋转,然后沿X/Y/Z轴平移,沿Y/Z/X轴平移。
基点处可拖入位置变量、数组变量或示教点,指令返回值为变换后的位姿。
示例:先将P点沿着用户坐标系方向平移(0,10,10),再将P点绕着用户坐标系的X轴转动10°。

运动学逆解 / 正解
- 运动学逆解笛卡尔空间值

使用该指令,输入笛卡尔空间值,计算出关节角度值。
- 运动学正解关节角度值

使用该指令,输入关节角度值,计算出笛卡尔空间值。
字符串
提示:
在字符串指令中支持的转义字符有\、'、''、\n、\t、\r,分别对应反斜杠符号、单引号、双引号、换行、横向制表符、回车。
字符串拼接

该指令可对拖入的变量或输入的字符串进行拼接。该指令可返回拼接后的字符串,返回值为字符串变量。
点击该指令会跳出一个编辑界面,可编辑白色椭圆框数量(最多8个)与所需数组分隔符。

- 示例:拼接变量A=8888,B="Hello",C=[1,2,3,4,5,6],返回结果为A:8888,B:Hello,C:1,2,3,4,5,6。

字符串或数组长度

该指令对字符串或数组的长度进行计算,并返回长度值。
可拖入字符串变量、数组变量,或直接输入字符串。
示例:若上位机需要获取字符串变量"JAKA_AMAZING"的长度12,获取数组变量[1,2,3,4,5,6]的长度6。

字符串比较

该指令根据ACSII码比较两个字符串的大小。
可拖入字符串变量或输入字符串值str1、str2。
若str1=str2,则返回0;
若str1<str2,则返回负值;
若str1>str2,则返回正值。
- 示例:比较字符串变量str1和str2的大小,返回值为负值。

格式化输出字符串

该指令将指定数据按指定格式输出为字符串。该条指令可返回格式化后的字符串,返回值为字符串变量型。
点击该指令会跳出一个编辑界面,可编辑白色椭圆框数量(最多8个)与所需数组分隔符。

- 示例:获取机器人关节信息:当前关节位置[0,90,0,90,180,0],末端负载[0,0,0,0]

输入格式化字符串

该指令匹配一定格式的字符串,并将匹配数据输入到指定变量中。格式化结果变量支持整型、浮点型以及字符串类型的变量或者常数。
点击该指令会跳出一个编辑界面,可编辑白色椭圆框数量(最多8个)与所需数组分隔符。

- 示例:提取字符串变量“End load is:0,0,0”中的数组[0,0,0]。

数组转换为字符串

该指令将数组转化为一定格式的字符串变量。
在
数组
后拖入所需转换的数组类型的变量,在分隔符
后输入字符串分隔符。示例:将数组变量 [1,2,3,4,5,6] 转换为"1a2a3a4a5a6"。

字符串转换为数组

该指令将一定格式的字符串转化为数组变量。
在
字符串
后拖入或输入所需转换为数组类型的字符串变量,在分隔符中可输入字符串分隔符。示例:将字符串变量"1a2a3a4a5a6"转换为数组变量 [1,2,3,4,5,6]。

访问下标

使用该指令,可通过设置
访问下标
来访问数组中的某一变量。可拖入需要访问的数组变量,输入需要访问的数组下标值。下标索引从0开始,以此类推。指令返回值为所访问元素。
示例:访问数组变量 [1,2,3,4,5,6] 中下标为3的值,即返回值为4。


使用该指令,可按照所需下标和步进值访问数组变量中的元素。
可拖入需要访问的数组变量,输入需要访问的数组下标值和步进值。下标索引从0开始,以此类推。指令返回值为所访问子数组。
示例:访问数组变量 [1,2,3,4,5,6] 中下标为0、2、4的值,即返回值为 [1,3,5]。

设置数组元素

该指令可设置数组中某一元素的值。
可拖入需要设置的数组变量,输入需要设置的数组元素下标值。下标索引从0开始,以此类推。
示例:需要设置数组变量 [1,2,3,4,5,6] 中下标为0的值为888,即数组变量变为 [888,2,3,4,5,6]。

通讯
打开SOCKET

该指令可创建TCP client并与TCP server建立通讯。
在下拉列表中选择指定的SOCKET ID,输入TCP server的IP地址和端口号,执行此指令时会建立TCP client(机器人)和TCP server的连接。
打开SOCKET,返回结果

该指令可创建TCP client并与TCP server建立通讯,返回Socket句柄。
在下拉列表中选择指定的SOCKET ID,输入TCP server的IP地址和端口号,执行此指令时会建立TCP client(机器人)和TCP server的连接,并获得返回值。若连接成功,会返回一个大于0的整数值;若连接失败,则返回值为-1。
关闭SOCKET

该指令会断开指定Socket通讯连接。
在下拉列表中选择指定的SOCKET ID,执行此指令时会断开指定的Socket通讯连接。
SOCKET发送

该指令使控制器通过Socket通讯发送变量给TCP server。
在下拉列表中选择指定的SOCKET ID,拖入变量或输入数值,执行此指令,TCP server会接收到此变量的内容。
提示:
支持发送的变量类型包括数字型、字符串型和数组型,对发送数据格式无特殊要求,不支持Unicode字符。
SOCKET发送,返回结果

该指令使控制器通过Socket通讯发送变量给TCP server。
在下拉列表中选择指定的SOCKET ID,拖入变量或输入数值,执行此指令,TCP server会接收到此变量的内容,并获得返回值。若发送成功,会返回发送的数据长度;若发送失败,则返回-1。
示例:连接SOCKET服务端,接收变量A、B、C并返回结果。

SOCKET接收变量

该指令代表等待()s,直到接收到变量,控制器会发送数据请求字符串,然后进入接收等待状态。
在下拉列表中选择指定的SOCKET ID,拖入需要接收的变量类型,在
等待时间
输入期望时间。在()s内如果接收到变量,或未接收到变量但等待时间超出()s,则程序继续向下执行。若设定的等待时间为0s,则机器人会一直等待,直到条件满足。指令不支持包含Unicode字符的变量名。
提示:
接收变量类型包括数字型、字符串型和数组型,服务器数据发送格式为:
数字型:<变量名称><数据内容>
字符串型:<变量名称><"数据内容">
数组型:<变量名称><[ 数据内容 ]>
SOCKET接收数组

该指令代表机器人在()s内停止运行,直到接收到长度为()的数组变量,控制器会发送数据请求字符串,然后进入接收等待状态。
在下拉列表选择指定的SOCKET ID。
在设定时间内接收到小于等于设置长度的数组,则返回收到的数组,缺失的元素默认为FLOAT_MAX,FLOAT_MAX = 340282346638528859811704183484516925440;
若接收到的数组大于设置长度,Coboπ报错并停止程序;
若超时未接收到数组,则返回空数组,Coboπ不报错,程序继续运行;
若时间设置为0,表示一直等待,最长等待时间为65536秒,超过此时间按超时处理。
提示:
服务器数据发送格式为:[ n1, n2, n3…]
示例:连接SOCKET服务器,接收数组变量C并返回结果,数组长度为4。

SOCKET接收数据

该指令代表机器人在()s内停止运行,直到接收到数据。且在执行此指令时,控制器不会额外发送数据。
在下拉列表选择指定的SOCKET ID,在()s内如果接收到数据,或未接收到数据但等待时间超出()s,则程序继续往下执行(若设定等待时间为0s,则机器人会一直等待,直到条件满足);
若正常接收,函数返回接收的字符串;
若接收失败或超时,则返回空字符串。
提示:
接收变量类型为字符串类型,对服务端数据发送格式无特殊要求,不支持Unicode字符。
- 示例:连接SOCKET服务端,接收程序变量B并返回结果。

Modbus指令发送

该指令为针对TIO外部设备及时控制指令的发送。
在指令下拉列表中选择使用的TIO通道,在
字节数组
处输入16进制的数据指令,且用户无需添加校验码,系统会自动添加。示例:设定某设备位置为500,并获取设定后的位置消息。

子程序

用户可添加子程序,相当于把多条指令整合成一个整体后放在主程序中使用,有利于精简页面显示、提升处理速度。
子程序添加方法
先打开或保存主程序,然后在右侧指令栏点击 子程序
- +
,跳出 创建子程序
页面,按需要选择 图形化编辑
或 脚本编辑
,点击 确定
。

图形化编辑子程序
操作方法同主程序。但在指令编辑完成后,务必先点击
保存
,再点击关闭
以退出子程序编辑页面、回到主程序页面。若子程序保存成功,则会作为一个与主程序相同的程序出现在操作页面,当把该操作页面的程序保存后,会在
子程序
栏显示出刚刚编辑的子程序。此时的子程序相当于一条指令,操作方法与其他指令相同,可直接拖入主程序中重复使用。


脚本编辑子程序
- 操作方法同上。脚本编程具体要求可参考JAKA机器人脚本编程手册。
提示:
若想编辑子程序,在子程序指令栏或主程序中点击目标子程序框,即可进入子程序编辑界面。
需注意,在完成子程序编辑之后,要再保存一遍主程序,以确保子程序在主程序中已正确修改。
变量
变量添加方法
在右侧指令栏点击 变量
- +
,跳出 添加变量
页面,用户可按需要选择变量类型添加,点击 确定
。

添加好的变量会出现在右侧指令栏中。

系统变量

系统变量将保存在控制柜中,所以当机器人关机或删除程序时,此变量不会清零也不会消失,可以在任何程序中调用。
提示:
除了使用上述方法来创建系统变量之外,还可在 设置
-程序设置
-系统变量
处新增并使用。
程序变量

程序变量为在当前打开的程序中创建使用的变量,只可在当前打开的程序中使用。若删除当前程序,则该变量也会被删除。
程序变量一共有三种类型:数字、字符串、数组。
程序变量命名支持中文格式,但需注意,在与第三方通讯时,中文格式的变量名称可能会因为编码问题而变成乱码。
速度变量

速度变量为特殊变量,可使用 移动
中的全局速度相关指令来开启或关闭。
该指令能根据实际工况全局把控机器人在运行程序时的运动速度。
当通过全局速度指令调用速度变量时,在此指令之后的运动速度均按照当前调用指令中的速度运动,运动指令中速度设置不生效。
与程序变量相似,速度变量只可在当前打开的程序中使用。
提示:
速度变量也可以通过SOCKET指令发送,发送内容为关节速度、关节加速度、直线速度和直线加速度。
位置变量

位置变量适用于运动指令或位置计算指令,无法在其他指令中调用。与程序变量相似,位置变量只可在当前打开程序中使用。
位置变量可以设定机器人笛卡尔位置和关节位置,可直接在框内输入数值,也可点击 编辑
进入手动操作页面编辑示教点位。
在设置笛卡尔位置时,需注意坐标系的选择。若设定的坐标系与实际不符,机器人的点位可能会偏移,从而引起安全隐患。
将位置变量放置于运动指令中时,位置变量中的点位信息将会被调用,机器人会基于此运动。
使用变量指令


在左边指令栏中将该指令拖入操作页面,在下拉框中选择已新增好的变量类型,其他操作方法与其他指令相同。
白色椭圆框中可输入定值、变量、由SOCKET获取的值等。
如果要对数组变量整体赋值,需要在具体数值前后加上[],如下图:

如果要对字符串进行赋值,需要在具体内容前后加上""(英文双引号),如下图:

扩展
扩展中的柔顺控制指令需搭配节卡力控产品使用。
恒力柔顺控制
恒力柔顺参数设置

- 含义:设定机器人末端在各个方向上与外界环境之间的接触力的力值及刚度、回弹等控制参数。
- 用法:选择需要开启恒力柔顺功能的方向,设置此方向上的刚度、目标力和回弹,勾选
显示回弹数据
前的选框,显示回弹数据列表,默认不显示回弹数据。- 刚度:影响机器人末端对外界环境所表现出的刚度。此参数越大,机器人末端表现出的刚度越大,机器人对外力的响应越不灵敏,但机器人系统也更稳定。Fx,Fy,Fz对应X,Y,Z三个方向的位移,单位为×8N·s/m,Mx,My,Mz对应X,Y,Z三个方向的旋转,×16Nm·s/π。在程序执行时,机器人末端工装与外界环境之间的接触越硬,刚度需要设置越大;Fx,Fy,Fz在大部分场景中在30-150之间,Mx,My,Mz在1-30之间,根据具体应用场景也可能超出此范围,甚至达到数千。调试时,建议从较大的数值开始测试,如果没有出现弹跳、抖动等现象则逐渐减小刚度,否则增加刚度。
- 回弹:回弹可以使机器人模拟弹簧效果,即机器人实际位置与指令轨迹位置之间模拟一个弹簧,允许将机器人推离指令轨迹,但推离越远所需要的外力越大,在外力撤销后,机器人会逐渐返回指令轨迹。默认回弹值为0代表不开启回弹功能,最大回弹值为100,回弹设置越大,上述推离所需的外力越大,外力撤销后机器人返回指令轨迹越快。
- 目标力:机器人末端与外界环境之间的目标接触力。

开启恒力柔顺控制

- 初始化:对传感器的偏置和负载等进行补偿(确保进入此模式时传感器无外力接触)。
- 不初始化:采取之前的补偿值。
提示:
- 应在“开启恒力柔顺控制”指令前添加“设置力控坐标系”指令和“恒力柔顺参数设置”指令,否则可能造成报错。
- 在任何情况下刚度都设置值不能为0,一般Fx,Fy,Fz不应小于10,Mx,My,Mz不应小于0.5。
- 刚度与目标力之间没有直接的关联,是独立设置的。目标力一般取决于实际应用需求,刚度则取决于机器人末端工装与外界环境之间的接触的硬度。
关闭恒力柔顺控制

退出恒力模式。
运动终止条件

- 含义:提前结束运动的设定条件
- 用法:勾选需要监测的方向,设定上限值或下限值;当接触外力值小于下限值时或者大于上限值时,触发运动终止条件。此条指令监测紧邻的下一条运动指令,如果触发运动终止条件,机器人会立刻从当前位置运动到下一条运动指令的设定位置。

设置力控坐标系

- 含义:设定力控模式使用的坐标系(需保证坐标系方向和传感器方向一致)。
- 用法:选择工具坐标系,机器人末端位姿相对于工具坐标系;选择世界坐标系,机器人末端位姿相对于机器人基坐标系。
传感器校零

- 含义:校零传感器,可选择默认传感器、末端法兰或其他已设置好的传感器。此命令会阻塞约0.5秒,此过程中,请确保传感器不受到除了负载重力以外的外力以确保校零结果准确。此外,若长时间运行程序,建议周期性地进行传感器校零,以免长时间运行产生的温升等造成传感器零点变化导致测量数据准确度劣化。