编程
编程
界面介绍

如图所示,编程界面一共分为这几个功能区,具体的功能区介绍可见下文。
常用功能介绍
指令列表
各项指令的详细介绍可见下文:
仿真模型区

用户可在仿真模型区看到机器人的运行实况。
该窗口默认悬浮在编程页面左上角,用户可按需拖动窗口调整位置。

提示
1
机器人按钮,双击可将窗口最大化。
2
最小化按钮,点击后窗口将最小化、并悬浮在页面左上角。最小化后,再次点击该图标,窗口将恢复至正常尺寸。

3
恢复默认状态按钮,点击后窗口将恢复默认大小和位置。
4
最大化按钮,点击后窗口将最大化。

- 除此之外,用户还可将鼠标停留在窗口内任意位置滑动滚轴来拉近或拉远视角。
指令操作区

除了其他功能按钮之外的所有区域都可作为指令操作区,用户可在此区内拼接指令。
- 鼠标点击单条指令会出现弹窗,用户可进行相应操作。

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

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


版本172在原基础上新增“指令注释”功能,其余功能与版本171完全相同。故此处只对“指令注释”功能做详细解释。
- 点击空白画布,可做注释:


可用鼠标拖动该注释框至画布的任意地方。
- 点击具体指令,可做注释:


可用鼠标拖动该注释框至画布的任意地方。
- 编辑过的具体指令,会在指令前显示一个铅笔符号:

调节按钮

点击该按钮,会出现弹窗,用户可进行相应操作。

手动

具体操作方式同顶部导航栏中的 手动
,可参考:
点击右上角红圈中的按钮可自由移动该窗口至页面任何位置。
I/O

具体操作方式同顶部导航栏中的 I/O面板
,可参考:
点击右上角红圈中的按钮可跳转至 设置
- Modbus设置
页面。
变量

点击 变量
会出现如上图所示的默认空白页面,此时点击右上角红圈中的按钮可打开 设置观测页面
,添加需要在此窗口内观测的变量。


在 1
处勾选要观测的变量,可多选;
点击 2
,勾选好的变量会出现在右边的方框中;
点击 3
以确定并使生效。

工具区

新建
点击可新建程序。
批量

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

勾选好后点击 粘贴
,即可把刚才的指令粘贴在新程序中。
文件
点击 文件
,可直接选择列表中的编程文件,并进行相应操作。

在版本172中,导入
可支持多文件同时导入,每次导入的文件数最多为五个:

保存
另存
点击 另存
可进行相应操作。

调试
点击 调试
,可使机器人进入调试状态,即每运行完一行指令后都会暂停,需要手动点击 下一步
才会继续运行下一行指令。

锁定
点击 锁定
后,目前打开的程序会被锁定,无法进行任何操作。点击 解锁
可退出该状态。
快捷操作按钮

1
:撤销操作
2
:重做操作
3
:放大指令块
4
:缩小指令块
5
:复位
指令列表
移动(运动指令)
提示: 机器人的运动位置会根据坐标系的变化而变化。
若用户在某一坐标系下设置好了某一程序中的点位,且在切换坐标系后运行同一程序,则所有已设置的点位会自动切换到新坐标系中的相应位置。
因此,为了保证机器人能精确完成运动指令,在编辑运动指令、使机器人运动前,要先确认好当前坐标系。
版本172在机器人运动相关的指令编辑页面新增图标:


该图标所显示的运动方式同 编辑
页面中所选择的运动方式一致。

关节运动

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


注:
在使用关节运动时,若勾选了 使用笛卡尔位置
,则机器人会以当前运动中保存的机器人笛卡尔位置解算出对应关节角度值,再进行关节运动到设定为止。
关节运动使用笛卡尔坐标系

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

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

相对直线运动

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

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

圆弧运动

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

- 点击图标,打开设置界面,编辑此条指令的
速度
加速度
, 选择在此点停止或圆弧过渡
指令跳过条件
,手动示教或直接编辑经过点1笛卡尔坐标
经过点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。

轨迹记录

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

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

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

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

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

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

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

笛卡尔空间位姿是否可达

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

- 点击图标,打开设置界面,编辑此条指令中的点位名称,手动示教或直接编辑该点位。
笛卡尔空间位姿(参考角度值)是否可达

该指令可拖入位置变量,该位置变量代表一个关节角度,指令可根据该关节角度计算出可达的点位。
位姿列队存/取值

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

该指令用于清空储存的相机拍照所获得的物料位置信息。
运动规划器设置

在机器人运行程序时,可设置运动时的规划器类型:节拍优先或柔顺优先。
- 节拍优先:机器人加减速时速度呈线性变化。选择节拍优先时,机器人运行速度更快,但加速度开始和结束阶段对机器人存在较大冲击。一般用于高节拍的场景。节拍优先为默认规划方式。
- 柔顺优先:机器人加减速时呈S型曲线变化,加速度变化率保持恒定。使用柔顺优先,机器人运动轨迹更顺滑,对机器人的冲击较小。一般用于节拍要求不高、轨迹精度要求高的场景。柔顺优先在编程控制机器人和关节运动至该点时生效,在手动操作界面、拖拽模式和直线运动至该点时不生效。
除去在运动指令的编辑界面中可设置单条运动指令的规划器类型,此外还新增以下两条两条指令用于全局设置:
设置全局规划器类型

关闭全局规划器

需注意: 开启全局规划后,这两个指令之间的运动指令都会按照此全局规划进行,且全局规划优先于单条指令中设置的规划器类型。
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点。

控制
设置工具坐标系
在运行程序时,若坐标系发生变化,需要使用设置工具坐标系指令。使用该指令后,所有后续的直线运动都将在该指令所设置的坐标系下运动,对关节运动无影响。
有两种指令可设置工具坐标系:
- 手动输入TCP
点击图标,打开设置界面,编辑坐标系的名称和坐标值。
此处设置的坐标系只能在此程序中使用。
- 选择已在
设置
中建立好的TCP
设置用户坐标系
在运行程序时,若坐标系发生变化,需要使用设置用户坐标系指令。使用该指令后,所有后续的直线运动都将在该指令所设置的坐标系下运动,对关节运动无影响。
有两种指令可设置用户坐标系:
- 手动输入用户坐标系
点击图标,打开设置界面,编辑坐标系的名称和坐标值。
此处设置的坐标系只能在此程序中使用。
- 选择已在
设置
中建立好的用户坐标系
设置负载与质心
在运行时,若负载发生变化,需要使用设置负载与质心指令。运行中设置的负载与实际负载不匹配时,可能会抖动或误报碰撞。
该指令用于在程序运行中修改末端的负载及负载的质心。共有两种设置方式:
- 直接点击数字盘或直接输入实际负载和质心
- 在白色框中放置数字变量块,在变量的
初始值
处设置负载和质心数值。
等待指令
等待指令有两种:

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


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

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

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

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

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


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


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

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

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


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

托盘指令

托盘指令主要用于码垛,可将物品按照规则堆叠在托盘上。此指令需搭配循环指令一起使用。
托盘类型分为三种:一维(线段)、二维(四边形)、三维(立方体),轨迹示意图如下:
操作步骤如下:
- 选择
托盘类型
; - 设置
速度
加速度
在此点停止或圆弧过渡
传送带跟踪指令
该指令使机器人末端跟随传送带移动并实时地做出动作。在使用软件进行传送带跟踪操作之前,需先进行环境搭建,即将编码器与控制柜相连、使用Modbus poll 和机器人进行Modbus TCP连接。有四种类型的传送带跟踪:
直线传送带跟踪


- 在传送带跟踪指令框内拖入运动指令(不能是关节运动),此指令的起始位置为机器人运动的起始位置。
- 计算
脉冲当量
:通过读取编码器脉冲数值变化量并测量当前传送带移动了多少距离,然后计算出脉冲当量。(距离可用卡尺测量,脉冲量可通过Modbus读取),脉冲当量计算式如下:
脉冲当量 = 距离(mm)/脉冲量(cnt)
设置
传送带方向
- 手动输入:传动带方向XYZ表示用户坐标系下位置 [0,0,0] 指向 [X,Y,Z] 的方向,比如设置 [1,0,0] 表示沿着用户坐标系X轴正方向。
- 起点终点设置:点击起点(终点)可以进行机器人点位确认,当前指令会根据两个点自动计算出传送带的运动方向,传送带方向由起点指向终点。
起点和终点位置坐标相对于世界坐标系。
设置
跟踪精度补偿
:用于补偿实际位置与示教位置之间的误差,范围为±100 mm。使用方法为测量实际跟踪位置和示教位置的偏差值,将偏差值填入“跟踪精度补偿”后的输入框内。设置
跟踪最大距离
:为机器人运动起始点到运动终点之间的距离。用于限制机器人末端运动范围,避免机器人超出传送带范围或达到奇异点,范围为1~3000 mm。使用方法为根据传送带实际长度、机器人起始运动位置和运动终点、机器人臂展确定参数值,勾选“跟踪最大距离”前的选框,并在跟踪最大距离后的输入框内填入范围值。若机器人超出此限制范围,机器人运动停止。设置
起始跟踪距离
:为机器人运动起始点到开始跟踪传送带之间的距离。用于自定义机器人开始跟踪传送带的位置,范围为0~3000 mm。勾选“起始跟踪距离”前的选框,并在“起始跟踪距离”后的输入框内填入距离值。
动态直线传送带跟踪

动态直线传送带跟踪在直线传送带跟踪的基础上,将传送带起点和终点设置方式改为变量赋值方式。即将位置变量或数组变量拖入椭圆形框内,作为传送带的起点和终点。其他设置步骤与直线传送带跟踪一致。
圆形传送带跟踪


- 在传送带跟踪指令框内拖入运动指令(不能是关节运动),此指令的起始位置为机器人运动的起始位置。
- 计算
脉冲当量
:通过读取编码器脉冲数值变化量并测量当前传送带移动了多少距离,然后计算出脉冲当量。(距离可用卡尺测量,脉冲量可通过Modbus读取),脉冲当量计算式如下:
脉冲当量 = 距离(mm)/脉冲量(cnt)
- 确认
末端工具姿态随便
:- 当选则“末端工具姿态随变”选项时,跟踪圆形传送带运动过程中,末端工具也同步进行绕着传送带转动轴转动的运动,即末端工具在当前用户坐标系下的姿态是变化的。
- 当不选“末端工具姿态随变”选项时,跟踪圆形传送带运动过程中,末端工具在当前用户坐标系下姿态保持不变。
传送带圆心坐标系标定
:传送带圆心坐标系通过传送带上共圆的三点:P1,P2,P3的位置坐标确定。P1,P2,P3的位置的标定可以通过示教三点位置完成,也可以通过直接输入该三点位置坐标完成。(P1,P2,P3必须按照传动带转动方向依次选择,且其位置坐标必须是相对于世界坐标系。)示教三点位置
:- 在传送带上确定一点P,转动传送带使点P运动至机器人工作范围内;
- 点击指令进入圆形传送带跟踪设置界面,点击位置点1,进入运动控制界面,在该界面下控制机器人运动使机器人工具末端与P重合后(注意此时的用户坐标系必须为“世界”),点击“确定”即可完成位置点1的标定;
- 抬起机器人工具,在传送带运动方向上将传送带转动一定角度;
- 在圆形传送带跟踪设置界面,点击位置点2,进入运动控制界面,在该界面下再次控制机器人运动使机器人工具末端与P重合后(注意此时的用户坐标系必须为“世界”),点击“确定”即可完成位置点2的标定;
- 再次抬起机器人工具,在传送带运动方向上将传送带转动一定角度;
- 在圆形传送带跟踪设置界面,点击位置点3,进入运动控制界面,在该界面下再次控制机器人运动使机器人工具末端与P重合后(注意此时的用户坐标系必须为“世界”),点击“确定”即可完成位置点3的标定;
- 在圆形传送带跟踪设置界面点击“确定”即可完成传送带圆心坐标系的标定。
输入三点位置
:直接输入即可。
- 设置
跟踪精度补偿
:用于补偿实际位置与示教位置之间的误差,范围为±100 mm。使用方法为测量实际跟踪位置和示教位置的偏差值,将偏差值填入“跟踪精度补偿”后的输入框内。 - 设置
跟踪最大距离
:为机器人运动起始点到运动终点之间的距离。用于限制机器人末端运动范围,避免机器人超出传送带范围或达到奇异点,范围为1~3000 mm。使用方法为根据传送带实际长度、机器人起始运动位置和运动终点、机器人臂展确定参数值,勾选“跟踪最大距离”前的选框,并在跟踪最大距离后的输入框内填入范围值。若机器人超出此限制范围,机器人运动停止。
动态圆形传送带跟踪

动态圆形传送带跟踪在圆形传送带跟踪的基础上,将传送带位置点1、位置点2、位置点3的设置方式改为变量赋值方式。即将位置变量或数组变量拖入椭圆形框内,作为传送带的位置点1、位置点2、位置点3。其他设置步骤与圆形传送带跟踪一致。
传送带队列开启数字输入

此指令用于获取并存储传送带上的物料位置,防止因传送带运动速度较快,机器人来不及处理每一个物料而漏料。此指令需要与“传送带队列取值”搭配使用。使用此指令后,传送带上的物料位置信息被记录在控制器内,当程序运行“传送带队列取值”指令后,存储的物料位置信息按存储的先后顺序被获取。
数字输入来源为识别物料信息的传感器或视觉设备所连接的I/O接口。
传送带队列取值

此指令用于读取存储的传送带物料位置信息。
传送带队列清空

此指令用于清空存储的传送带物料位置信息。
指令折叠


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


输出日志类型及日志内容

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

程序停止或暂停

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

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

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

线程操作

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

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

线程互斥支持

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

平滑过渡时间

该指令的最大时长为1S,平滑过渡时间内力限制放大,可减轻切换负载时机器人的抖动程度。
启用振动抑制

该指令默认全局不生效,需要在维护模式系统参数下开启振动抑制功能后才可生效。
频率范围:0-20HZ
计算
计算符

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

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

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

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

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

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

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

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

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

该指令按照给定的系数计算两点之间的插补点,系数的取值范围为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并返回结果。

刷新信号量

该指令能刷新
设置
硬件与通讯
末端I/O
中定义的信号量。在指令下拉列表中选择需要刷新的信号量,输入刷新频率(单位Hz)。
刷新频率受限于总线宽带,所有信号的刷新频率之和不超过125Hz,系统内部会自动调度。
获取信号量状态

该指令会获取信号量的值。
在指令下拉列表中选择所需信号量,指令返回值为该信号量当前值。
Modbus指令发送

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

子程序

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

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


脚本编辑子程序
- 操作方法同上。脚本编程具体要求可参考JAKA机器人脚本编程手册。
注:
若想编辑子程序,在子程序指令栏或主程序中点击目标子程序框,即可进入子程序编辑界面。
需注意,在完成子程序编辑之后,要再保存一遍主程序,以确保子程序在主程序中已正确修改。
在版本172中,新增 返回主程序
按钮:

点击该按钮,即可一键返回当前子程序所属于的主程序页面。
变量
变量添加方法
在右侧指令栏点击 变量
- +
,跳出 添加变量
页面,用户可按需要选择变量类型添加,点击 确定
。

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

系统变量

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

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

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

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


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

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

自定义
自定义指令需搭配节卡力控产品使用。
恒力柔顺控制
恒力柔顺参数设置

- 含义:设定恒力模式下的柔顺参数。
- 用法:可以选择需要开启力控感知功能的方向,可以设置各方向的阻尼力、回弹力和恒力,选择是否开启方向跟踪。
- 阻尼力:在程序执行时,外界的环境刚度越大,阻尼力需要设置越大;在拖拽模式下,建议Fx、Fy、Fz大于10N,Mx、My、Mz大于0.2 Nm,设置值不能为0。
- 回弹力:让机器人回到预设的轨迹,设置值越大,机器人偏离预设轨迹越困难。
- 恒力:机器人末端与外界环境之间的接触力在设定恒力值的范围之内。

开启恒力柔顺控制

- 初始化:对传感器的偏置和负载等进行补偿(确保进入此模式时传感器无外力接触)。
- 不初始化:采取之前的补偿值。
关闭恒力柔顺控制

退出恒力模式。
速度柔顺控制
速度柔顺参数设置

- 含义:设定速度模式下的柔顺参数。
- 用法:配置减速等级阶梯,最多可配置三挡降速,当机器人末端受力大于控制力设定值时,机器人会进行减速,直至传感器检测值小于控制力设定值。用户可自行设置每次减速减至原始速度的百分比。

开启速度柔顺控制

开启速度柔顺控制模式并选择是否初始化。
- 初始化:对传感器的偏置和负载等进行补偿(确保进入此模式时传感器无外力接触)。
- 不初始化:采取之前的补偿值。
关闭速度柔顺控制

退出速度柔顺控制模式。
柔顺控制力

用于设定速度柔顺控制模式下的控制力。

运动终止条件

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

设置力控坐标系

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