程序页面#
点击导航栏“程序”进入程序页面。程序页面可以管理程序列表、编辑程序、运行程序。
程序列表页#
列表页用来管理当前激活工程内的所有程序。如图为程序列表页面,显示了程序根目录下的所有程序及文件夹。

选中文件夹,点击右边的 按钮,点击“进入程序”,可切换到该文件目录,查看该文件夹下的所有程序及文件夹。
选中程序,右侧“程序预览”区可以显示该程序的内容,点击“进入程序”可打开程序。
左上方可显示当前所在的目录,如图。点击“返回上层”按钮可返回上层目录,点击路径可切换目录,点击 可切换到根目录。

新建程序#
点击“新建程序”按钮,可弹出键盘,输入程序名,点击“OK”即在当前文件夹下创建了一个程序。

新建文件夹#
点击“新建文件夹”按钮,可弹出键盘,输入文件夹名,点击“OK”即在当前文件夹下创建了一个文件夹。
程序文件操作#
点击列表项右边的 按钮,可弹出菜单框如下图所示:

对于程序文件来说,可执行如下操作:
进入程序
点击可打开程序。
复制
点击“复制”按钮,将复制该程序文件,程序列表页面如下,此时可选择粘帖的位置,点击“粘帖”按钮,即可将该程序复制到当前文件夹,点击“取消”按钮取消复制。粘帖时,若当前文件夹有同名文件,将自动在后面加“_copyXX”后缀


重命名
点击“重命名”按钮,会弹出键盘,输入新的名称后,确定即可修改。 注意:已经打开的程序或正在运行的程序不能重命名。

删除
点击“删除”按钮,弹出确定对话框,确定后即可删除该程序
注意:已经打开的程序或正在运行的程序不能删除。
导出
可以将程序文件导出到U盘上,详见程序的导入导出
保存至本地
可以将程序文件通过浏览器下载到本地
文件夹操作#
点击文件夹项右边的按 钮,弹出的菜单可执行如下操作:进入程序、重命名、导出文件夹、删除。
进入程序
点击可切换到该文件夹,查看该文件夹下的所有程序及子文件夹。
重命名
可进行文件夹的重命名。注意:若该文件夹下有已打开的程序或正在运行的程序,则不能重命名。
导出文件夹
可以将整个程序文件夹压缩成压缩包导出到U盘。
删除
可删除文件夹下的所有内容。如该文件夹下有已打开的程序或正在运行的程序,则不能删除。
程序的导入导出#
支持从外部设备导入程序、文件夹或者导出程序、文件夹到外部设备中,外部设备指接入控制柜USB端口的存储设备,如U盘、移动硬盘等。
程序/文件夹导入
点击“导入”按钮,弹出以下窗口,显示当前控制柜上挂载的USB存储设备,选择一个设备。

页面上将显示该设备中的文件夹及符合条件的文件(后缀名为jspf或script或program),选中一个文件,点击“选择”按钮,则会将该文件或文件压缩包(后缀名为program)解压后,导入到控制柜中。当导入文件时,若检查到与控制柜上的程序文件刚好重名,则会弹出重命名提示框,重命名后导入到控制柜中。


当导入文件夹(后缀名为program)时,有重名文件,会提示重名文件数量,用户可操作“取消”或“直接覆盖”。

程序/文件夹导出
在程序列表页选中一个程序,在其交互操作菜单中选择“导出”,则将执行导出操作。与导入类似,此时将弹出窗口显示当前控制柜上挂载的USB存储设备。选中设备后,可以查看该设备的文件及文件夹,选择导出的文件夹,确定后即可将程序导出到设备的该文件夹下。若导出的程序文件与设备中的文件刚好同名,则会弹出如下窗口。用户可选择取消导出,或者修改导出名称后重新导出,或者直接覆盖设备中的文件。若选择的是文件夹,则会以该文件夹名称为命名,打包文件夹并压缩成“文件夹名.program”,该压缩包包含本级文件夹。

点击程序列表页上方“导出”按钮,会将当前目录下的所有文件与文件夹打包到一个压缩包中,压缩包名称为“当前程序列表名.program”并导出到外部设备的指定路径下。该压缩包不包含本级文件夹。与导出程序类似,存在同名文件时,同样会弹同名操作提示框。
编程#
整体布局#
在程序列表页新建程序或者打开程序后,可进入编程页面,如下图。
编程页面左侧为编程区,可进行程序树的编辑。右侧可分为五个部分:“指令”标签页是功能块列表区,显示了可用的图形化编程功能块;“程序变量”标签页是程序变量区,可创建程序变量,程序运行时,监控程序变量,还可对程序变量名称按照字母进行排序,以及选择是否进行变量监控;“系统变量”标签页是显示系统变量的初始值,以及程序运行时监控系统变量的当前值,同样地可对系统变量名称按照字母进行排序;“参数”标签页是参数配置区,查看及编辑程序树中选中的功能块参数;“仿真”标签页是显示机器人的3D模型。
其中,点击“指令”标签页中“移动”、“基础”、“流程控制”、“通讯”、“高级”、“扩展”任意一类功能块列表区的功能块右边 图标可弹出操作对话框,点击该操作对话框中“添加到常用”的按钮,可将该指令块添加到“常用”类;点击“常用”类功能块列表区的功能块右边
图标同样会弹出操作对话框,点击弹出操作对话框中“移除”按钮,可将该指令块移除“常用”类。

左侧上方显示当前程序名称,程序名称后面的*表示该程序有改动。点击程序名所在显示框任意区域,显示框下方会出现下拉框显示已打开的程序列表。

如上图所示,已打开的程序列表显示了当前系统中有两个打开的程序,点击下拉框里名称右侧的 按钮可以关闭该程序;点击下拉框列表项栏可切换至对应程序。
关闭程序时,若程序有改动,会弹出对话框提示保存程序或者放弃修改。
编程操作#
编程采用拖拽和双击添加的方式。
拖动的方式: 可以按住功能块列表区的功能块,拖动到编程区,程序树对应的位置将会显示蓝色横线表示功能块将插入该处。松开即在该处添加了一个功能块。当拖动功能块到程序树对应位置显示红色横线时,表示该功能块不能插入该处,且松开后会弹框提示。
双击添加:点击程序树的任一功能块可选中该功能块,此时双击功能块列表区中的功能块,列表区中的功能块将添加到程序树选中功能块的下方。(注意:移动设备端不支持双击操作)
支持直接拖动程序树中的功能块到其他位置。
选中某个功能块,手动切换到参数配置区,配置该功能块的参数,各个功能块及其对应的参数配置页面参见后面内容。

程序树中的功能块有以下五种状态,红色代表该功能块未配置有效的参数;斜体加*代表该功能块的参数发生改动,但是未保存到程序树中;黑色正体代表该功能块是参数有效、无改动;功能块部分灰显代表已选中可进行拖拽的状态;功能块全部灰显代表该功能块设置为不启用。





点击程序树功能块右边 可弹出如下操作对话框。包含以下操作

剪切:剪切该功能块。
复制:复制该功能块。
粘帖:可以将复制的功能块粘帖到选中功能块的下方。
不启用/启用:点击可以选择是否启用该功能块,选择不启用时,该功能块灰显,程序不会执行该功能块。
批量操作:可以进行功能块的批量复制、批量剪切、创建组、批量启用、批量禁用、批量删除。选中任意一个功能块批量操作,该功能块行号处会出现 被选中图标,且与该功能块属于同一个层级的功能块行号处出现多选框图标,选中其中任意一个功能块,会自动选中该功能块和初始功能块之间的所有功能块。且,只能选中同一层级的功能块,不能选中跨越父级的功能块。

批量复制: 点击后,选择需要粘贴的位置,粘贴
批量剪切: 点击后,选择需要粘贴的位置,粘贴
批量启用: 对选中的功能块都启用
批量禁用: 对选中的功能块都禁用
批量删除: 删除选中的功能块
创建组: 将选中的功能块创建为一个组:若选中的都为Move子块,则将创建新的Move块, Move块参数和原Move块参数一致;否则将创建一个Group块


删除:可以删除该功能块。
选中此行为运行起始行: 点击可以选中该功能块为运行起始行,此时该功能块的前方将会有图标 此时运行程序,程序将从该功能块处往下执行。点击右侧上方的“取消选中行”可以取消起始行的设定。
在程序编辑过程中,可随时通过页面左侧上方的 和
图标来撤销修改或者恢复修改。注意:撤销修改最多支持撤销10次。
程序树一旦发生了改动,当前程序名称后面会显示*,表示该程序有改动,此时可以通过页面左侧上方 图标将程序保存到控制器。
功能块及参数配置#
功能块列表区显示了当前可用的图形化编程功能块,这些功能块根据机器人编程常用的场景封装而来。本系统提供的功能块及其配置参数如下。
Start功能块#
机器人初始关节位置设置。当开启该功能块,程序运行时,会进行初始关节位置判断。若禁用该功能块,则会从当前所在的位置直接运行程序。
建议主程序始终开启该功能块,子程序可根据情况关闭该功能块。

移动功能块#
在拖动MoveJ、MoveL等运动类功能块到程序树中,若没有Move节点,将自动创建一个Move功能块。这个功能块可以用来批量设置其子节点的运动参数和坐标系,含有如下参数:
末端速度:单位mm/s,取值范围为[0.01,5000];
末端加速度:单位mm/s2,取值范围为[0.01,Infinity];
关节角速度:单位°/s,取值范围为[0.01,225];
关节角加速度:单位°/s2,取值范围为[0.01,Infinity];
融合半径:单位mm,取值范围为[0,Infinity];
参考坐标系:工具坐标系、工件坐标系,可手动更改。
其中,末端速度、末端加速度、关节角速度和关节角加速度均可以使用自定义直接输入数值的方式或选择变量,末端加速度和关节角加速度还可以选择系统默认。当末端加速度或关节角加速度选择为系统默认时,运动规划将采用算法计算的最优规划。注意:“自定义”时才会显示对应参数的单位;选择变量时,只能选择特定类型变量,末端速度只能选择pose_speed类型变量,末端加速度只能选择pose_acc类型变量,关节角速度只能选择joint_speed类型变量,关节角加速度只能选择joint_acc类型变量。
在生成Move功能块时,默认将获取Move的所有父节点是否有设置参考坐标系,若无将使用系统当前设置的坐标系。例如传送带功能块有设置的参考坐标系,即标定的传送带坐标系,所以拖动Move类功能块到传送带子节点时,生成的Move功能块默认使用传送带的坐标系。
Move功能块设置的笛卡尔空间运动参数只针对MoveL、MoveC、MoveTCP、MoveWobj、MoveSpiral功能块,对其他子功能块无影响;设置的关节运动参数只针对MoveJ功能块,对其他子功能块无影响。
Move功能块设置的参考坐标系只针对MoveJ、MoveL、MoveC、MoveTCP、MoveWobj、MoveSpiral功能块,对其他功能块无影响。

具体的控制机器人运动的功能块,有如下类型:
MoveJ
机器人按照关节运动的方式移动,可以选择移动到目标关节或者目标姿态。可设参数:
目标关节:目标使用关节位置,可以通过示教的方式设置或者设置为变量,示教设置后可手动更改;
目标姿态:目标使用末端位置,可以通过示教的方式设置或者设置为变量,示教设置后可手动更改
示教:记录目标点位,点击将跳转到移动页面,在移动页面移动机器人后,点击“记录当前关节”按钮,将跳回程序页面,并设置点位
记录当前点:点击后,将当前点位设置为目标点
移动到此点: 点击“移动到此点”,程序页面右侧将跳转到“仿真”页面。在仿真页面右下方将出现“按住移动”按钮。功能与概览页面的“按住移动”相同,详情请参见概览页面。
Tip
注意: 当使用目标姿态时,从不同的机器人初始位姿使用“移动到此点”功能,会出现最终位姿一致,但机器人构型不一致,即关节位置不一致。可以通过观察灰透3D模型判断构型是否正确
使用父节点坐标系:选择目标位置姿态时可设,勾选时,该功能块使用父节点Move功能块设置的参考坐标系,默认勾选;
参考坐标系:选择目标位置姿态时可设,不勾选使用父节点坐标系时,可单独为该功能块设置其参考坐标系;
使用父节点参数:勾选时,该功能块使用父节点Move功能块设置的关节角速度、关节角加速度参数;不勾选时,需要单独为该功能块设置关节角速度、关节角加速度,默认勾选;
关节角速度:单位°/s,可以自定义或选择变量,自定义取值范围为[0.01,225];
关节角加速度:单位°/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
使用父节点融合半径:勾选时,该功能块使用父节点Move功能块设置的融合半径参数;不勾选时,需要单独为该功能块设置融合半径,默认勾选;
融合半径:单位mm,取值范围为[0,Infinity],0表示不融合;
Tip
注意: 不合适的融合半径,会导致轨迹抖动,需要根据实际情况调整
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。

若启用OP,则需要做如下配置:
可以在轨迹开始后触发和轨迹结束前/结束后触发
触发类型:可选择不触发、时间触发、距离触发
触发延时:设置时间,单位ms
触发操作:选择端口及端口状态,或操作自定义事件


MoveL
机器人按照直线移动到目标姿态,可设参数:
目标姿态:可以通过示教的方式设置或者设置为变量,示教设置后可手动更改;
示教:记录目标点位,点击将跳转到移动页面,在移动页面移动机器人后,点击“记录当前关节”按钮,将跳回程序页面,并设置点位
记录当前点:点击后,将当前点位设置为目标点
移动到此点: 点击“移动到此点”,程序页面右侧将跳转到“仿真”页面。在仿真页面右下方将出现“按住移动”按钮。功能与概览页面的“按住移动”相同,详情请参见概览页面。
Tip
注意: 从不同的机器人初始位姿使用“移动到此点”功能,会出现最终位姿一致,但机器人构型不一致,即关节位置不一致。可以通过观察灰透3D模型判断构型是否正确
使用父节点坐标系:勾选时,该功能块使用父节点Move功能块设置的参考坐标系,默认勾选;
参考坐标系:不勾选使用父节点坐标系时,可单独为该功能块设置其参考坐标系;
使用父节点参数:勾选时,该功能块使用父节点Move功能块设置的末端速度、末端加速度参数;不勾选时,需要单独为该功能块设置末端速度、末端加速度,默认勾选;
末端速度:单位mm/s,可以自定义或选择变量,自定义取值范围为[0.01,5000];
末端加速度:单位mm/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
使用父节点融合半径:勾选时,该功能块使用父节点Move功能块设置的融合半径参数;不勾选时,需要单独为该功能块设置融合半径,默认勾选;
融合半径:单位mm,取值范围为[0,Infinity],0表示不融合;
Tip
注意: 不合适的融合半径,会导致轨迹抖动,需要根据实际情况调整
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。

若启用OP,则需要做如下配置:
可以在轨迹开始后触发和轨迹结束前/结束后触发。
触发类型:可选择不触发、时间触发、距离触发
触发延时:设置时间,单位ms
触发距离:设置距离,单位mm
触发操作:选择端口及端口状态,或操作自定义事件

融合中的OP操作:
机器人在轨迹执行过程中设置通用数字输出口状态。当与融合一起使用时,以三条moveL融合为例,其效果如下:

MoveC
机器人按照圆弧或者整圆移动,可设参数:
模式:圆弧或者整圆;
中间点姿态/中间点1:可以通过示教的方式设置或者设置为变量,示教设置后可手动更改;
目标姿态/中间点2:可以通过示教的方式设置或者设置为变量,示教设置后可手动更改;
示教:记录目标点位,点击将跳转到移动页面,在移动页面移动机器人后,点击“记录当前关节”按钮,将跳回程序页面,并设置点位
记录当前点:点击后,将当前点位设置为目标点
移动到此点: 点击“移动到此点”,程序页面右侧将跳转到“仿真”页面。在仿真页面右下方将出现“按住移动”按钮。功能与概览页面的“按住移动”相同,详情请参见概览页面。
Tip
注意: 从不同的机器人初始位姿使用“移动到此点”功能,会出现最终位姿一致,但机器人构型不一致,即关节位置不一致。可以通过观察灰透3D模型判断构型是否正确
使用父节点坐标系:勾选时,该功能块使用父节点Move功能块设置的参考坐标系,默认勾选;
参考坐标系:不勾选使用父节点坐标系时,可单独为该功能块设置其参考坐标系;
使用父节点参数:勾选时,该功能块使用父节点Move功能块设置的末端速度、末端加速度参数;不勾选时,需要单独为该功能块设置末端速度、末端加速度,默认勾选;
末端速度:单位mm/s,可以自定义或选择变量,自定义取值范围为[0.01,5000];
末端加速度:单位mm/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
使用父节点融合半径:勾选时,该功能块使用父节点Move功能块设置的融合半径参数;不勾选时,需要单独为该功能块设置融合半径,默认勾选;
融合半径:单位mm,取值范围为[0,Infinity],0表示不融合;
Tip
注意: 不合适的融合半径,会导致轨迹抖动,需要根据实际情况调整
姿态控制模式:若选择“与终点一致”,机器人的姿态根据终点姿态对圆弧路径中的姿态进行规划;若选择“与起点一致”,机器人的姿态根据起点姿态对圆弧路径中的姿态进行规划,路径过程中姿态与起点一致;若选择“受圆心约束”,机器人的姿态相对于圆弧运动产生的姿态变化对姿态进行约束;
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。
OP参数配置同MoveL

MoveTCP
机器人沿工具坐标系移动。
可以自定义各个方向的偏移量,或者使用变量。可以示教两个点位,以这两个点位之间的偏移量作为移动的偏移值。其他可设参数:
使用父节点坐标系:勾选时,该功能块使用父节点Move功能块设置的参考坐标系,默认勾选;
参考坐标系:不勾选使用父节点坐标系时,可单独为该功能块设置其参考坐标系;若选择设置增量方式,只需选择工具坐标系;若选择设置两点方式,则需设置工具坐标系和工件坐标系;
使用父节点参数:勾选时,该功能块使用父节点Move功能块设置的末端速度、末端加速度参数;不勾选时,需要单独为该功能块设置末端速度、末端加速度,默认勾选;
末端速度:单位mm/s,可以自定义或选择变量,自定义取值范围为[0.01,5000];
末端加速度:单位mm/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
使用父节点融合半径:勾选时,该功能块使用父节点Move功能块设置的融合半径参数;不勾选时,需要单独为该功能块设置融合半径,默认勾选;
融合半径:单位mm,取值范围为[0,Infinity],0表示不融合;
Tip
注意: 不合适的融合半径,会导致轨迹抖动,需要根据实际情况调整
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。
OP参数配置同MoveL

MoveWobj
机器人沿工件坐标系移动。
可以自定义各个方向的偏移量,或者使用变量。可以示教两个点位,以这两个点位之间的偏移量作为移动的偏移值。 其他可设参数:
使用父节点坐标系:勾选时,该功能块使用父节点Move功能块设置的参考坐标系,默认勾选;
参考坐标系:不勾选使用父节点坐标系时,可单独为该功能块设置其参考坐标系; 若选择设置增量方式,只需选择工件坐标系;若选择设置两点方式,则需设置工具坐标系和工件坐标系;
使用父节点参数:勾选时,该功能块使用父节点Move功能块设置的末端速度、末端加速度参数; 不勾选时,需要单独为该功能块设置末端速度、末端加速度,默认勾选;
末端速度:单位mm/s,可以自定义或选择变量,自定义取值范围为[0.01,5000];
末端加速度:单位mm/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
使用父节点融合半径:勾选时,该功能块使用父节点Move功能块设置的融合半径参数; 不勾选时,需要单独为该功能块设置融合半径,默认勾选;
融合半径:单位mm,取值范围为[0,Infinity],0表示不融合;
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。
OP参数配置同MoveL

Spline
控制机器人末端按照样条曲线移动。可以选择自定义即直接示教点位,或者选择变量,且选择变量时,只能选择pose_list类型变量,其他可设参数:
样条路点:添加、编辑、删除路点,根据路点生成样条曲线;
参考坐标系:示教点位时,默认为当前的工具和工件坐标系,可手动更改;
末端速度:单位mm/s,可以自定义或选择变量,自定义取值范围为[0.01,5000];
末端加速度:单位mm/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
融合半径:单位mm,取值范围为[0,Infinity],0表示不融合;
Tip
注意: 不合适的融合半径,会导致轨迹抖动,需要根据实际情况调整
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。
OP参数配置同MoveL


MotionConfig
打开或关闭运动相关配置。可选配置:
速度优化:打开速度优化后,机械臂将在满足系统约束的前提下,以尽可能高的速度执行运动指令;
振动控制:打开振动控制后,将会针对机器人末端振动进行优化;
奇异规避:打开奇异规避后,将会在机器人经过奇异空间附近时,对轨迹自动优化;
姿态约束:打开姿态约束后,机器人运动姿态将会与路径间关系始终保持一致;
融合预读取:可选运动中间点或运动起点,配置了融合半径的运动脚本会根据此设定参数在对应的位置预读取后续脚本以进行融合半径。



MoveSpiral
机器人做螺旋轨迹运动,可设参数:
螺旋示教方式:参数设置或者结束点设置;
总圈数:机器人总旋转圈数,正数为顺时针旋转,负数为逆时针旋转;
螺旋线中心点:可以通过示教的方式设置或者设置为变量,示教设置后可手动更改;
轴向移动距离:示教方式为参数设置时,需配置的参数,正负号遵循右手定则,单位mm;
结束点半径:示教方式为参数设置时,需配置的参数,单位mm;
轨迹结束点:示教方式为结束点设置时,可以通过示教的方式设置,或者设置为变量,示教设置后可手动更改;
使用父节点坐标系:勾选时,该功能块使用父节点Move功能块设置的参考坐标系,默认勾选;
参考坐标系:不勾选使用父节点坐标系时,可单独为该功能块设置其参考坐标系;
使用父节点参数:勾选时,该功能块使用父节点Move功能块设置的末端速度、末端加速度参数;不勾选时,需要单独为该功能块设置末端速度、末端加速度,默认勾选;
末端速度:单位mm/s,可以自定义或选择变量,自定义取值范围为[0.01,5000];
末端加速度:单位mm/s2,可以自定义或选择变量,自定义取值范围为[0.01,Infinity];
启用OP:OP功能可以在轨迹执行过程中设置通用数字输出口状态或设置工具输出状态或操作自定义事件。
OP参数配置同MoveL。

CombineMotion
仅针对直线及圆弧运动控制机器人做复合轨迹运动,可设参数:
轨迹类型:默认为三角,可选三角、正弦、圆弧、梯形、8字;
参考平面:默认为工具XOY,可选工具XOY、工具XOZ、工具YOZ、工件XOY、工件XOZ、工件YOZ;
频率:默认值为1,单位Hz;
振幅:默认值为1,单位mm;
主路径同步停留:仅轨迹类型为正弦或梯形时,需要配置的参数,默认为不勾选;当勾选该参数时,能够在左右停留过程中,机器人运动主路径也同时停止;
左停留时间:仅轨迹类型选为正弦或梯形时,需配置的参数,单位ms;
右停留时间:仅轨迹类型选为正弦或梯形时,需配置的参数,单位ms;

基础功能块#
Set
设置功能块。可设定控制柜数字输出端口和机械臂末端数字输出端口为高电平或低电平或脉冲信号,且设为脉冲信号时,需要设置脉冲的频率和占空比;为程序变量或系统变量赋值。


Wait
等待功能块。可选等待一段时间、等待DI信号、等待某一线程结束或表达式,程序执行到此功能块时会一直等待直到满足设定的条件。

当选中除“延时”以外其他选项时,会显示是否启用超时检测的勾选框。若勾选“启用超时检测”,可输入超时时间和超时变量,如下图。

用户可手动输入超时时间,默认超时时间60000ms;用户也可以使用超时变量判断是否超时,且超时变量为可选项,可以不选择变量。
Script
脚本功能块。可以选择表达式、脚本或者脚本文件。表达式可使用表达式编辑器创建一行脚本,表达式的输入请参见第8节输入键盘(表达式输入键盘);脚本可用于编写整段的脚本代码;脚本文件可以从文件中选择脚本一个脚本文件。脚本代码的说明参见脚本手册。

选择脚本编写整段代码时,点击编辑区上方 提示图标会弹出编辑快捷键提示框,如下图。

点击编辑区上方 最大化图标,脚本编辑区会最大化显示如下,点击最大化界面右上方
还原图标即可还原到原始界面大小。
为撤销图标,
为恢复图标。编辑区左下方会显示光标所在的行数和列数,右下方会显示脚本总行数。

使用脚本编写方式可以使用系统自带的快捷输入框和外部键盘输入。点击脚本编写区上方的 图标弹出系统快捷输入框,悬浮在编辑器上方如下图,且该弹框可被按住拖动。

快捷输入框有三个标签,分别为快捷输入、通用键盘、脚本函数。输入框下方栏为一些常用的控制按键,功能分别为光标左移、光标右移、光标上移、光标下移、输入空格、删除、换行。

快捷输入会针对一些常用的功能进行快捷输入。主要功能有
点位:点击“关节”可输入当前机械臂的关节值,单位是rad;点击“位姿”,可输入当前机械臂工具在设定工件上的位置姿态,单位m、rad。
功能:可以输入While循环、条件分支、函数定义、单行注释等

IO/寄存器/Modbus/变量:可以选择是读取还是写入,系统会自动转换为相应的脚本函数。如选择“读”时,选择通用输入DI1,系统自动输入对应的脚本函数get_standard_digital_in(1)
运算符:输入一些常用的运算符

通用键盘与实体键盘类似,可以输入大小写字母、数字、符号。
脚本函数可以从列表中选择脚本函数,选中后,在下方会显示该脚本函数的说明及示例,双击或者点击左上方的“添加”按钮可以将该脚本输入到脚本区。支持脚本的搜索。

Log
日志功能块。可以打印消息或者变量的值到日志文件中。

Message
消息弹窗功能块。可对消息弹框进行配置,即可选暂停程序、仅弹窗或停止程序。

当选择暂停程序时,设定一条消息,程序运行到此功能块时可弹出一个对话框显示该消息并且程序暂停运行,用户可选择继续运行、停止程序或者关闭弹窗。

当选择仅弹窗时,设定一条消息,程序运行到此功能块时弹出一个对话框显示该消息,但程序会继续运行,用户可选择停止程序或者关闭弹窗。

当选择停止程序时,设定一条消息,程序运行到此功能块时弹出一个对话框显示该消息并且程序直接停止运行,用户可选择关闭弹窗。

Comment
注释功能块。向程序树中添加一个注释。程序运行时,此功能块不会执行任何操作。

Group
组功能块。用于对程序进行整理,可以将某些功能块放在一个Group下面,方便程序的组织和阅读。对程序的执行无影响。

CoordOffset
坐标系偏移功能块,基于工件坐标系设置一个偏移量,可以自定义或设定变量。后续的Move类功能块的参考工件坐标系上都将添加这个偏移量。在程序运行过程中生效,程序停止坐标系偏移取消。

SetLoad
设置抓取负载功能块。可以在程序运行过程中设置机器人当前的负载(质量、质心)

GetListElement
获取列表元素功能块。该功能块用于从list类型变量中获取其中的一个元素,并将该元素的值转存至指定的变量中。
选择列表类型:当前支持num_list,pose_list,joints_list,三种类型的变量。使用时,需要先建立期望的list类变量。
索引:即期望获取的元素在列表中的位置,从1开始计数。支持直接输入索引值,或从变量获取索引值。
元素:指定获取的元素需要转存到的对应变量。支持number, pose, joints 三种类型的变量。使用时,需要先建立期望的变量。


RemoveListElement
移除列表元素功能块。该功能块用于将list类型变量中的某一个元素,从该list种删除。
选择列表类型:当前支持num_list,pose_list,joints_list,三种类型的变量。使用时,需要先建立期望的list类变量。
索引:即期望移除的元素在列表中的位置,从1开始计数。支持直接输入索引值,或从变量获取索引值。


TimerStart
计时开始功能块。该功能块用于计时器的开始计时

TimerEnd
计时结束功能块。该功能块用于计时器的结束计时。
选择变量:仅支持全局timer类型的变量。使用时,需要先建立全局的timer类变量。

Stop
停止功能块。该功能块用于发出程序停止指令。

流程控制#
While
循环功能块。循环执行其内部的功能块。可以设定一直循环;指定循环次数;指定循环条件,只要循环条件为真,就循环运行。

If
条件功能块。可以设定数字输入端口条件或者条件表达式,满足该条件则执行If内的功能块,可以添加后续的elsif或者else功能块

Goto&Label
Goto功能,和Label配合使用,可以将程序的控制点转移到Label处。
首先创建Label功能块,标记跳转点,并对该跳转点命名。再使用goto功能块,选择要跳转到的位置。
如图的示例程序表示程序运行到第6行时将跳转到第3行的label1处再向下执行,即第四行Set与第五行wait功能块将会运行两次。

通讯#
SocketOpen
建立Socket,参数页面需要设置连接的名称,配置目标Server的IP地址及端口号,选择是否将返回值绑定到变量

SocketClose
关闭socket连接,需要选择关闭连接的名称

SocketSend
socket发送数据。向已建立的socket连接发送数据,发送类型可以选择发送字符串或者浮点数数组,发送数据可以选择变量或者直接输入,可以将返回值绑定到变量以获取发送状态。

SocketRecv
socket接收数据。从已建立的socket连接中接收数据,接收类型可选字符串、字符串数组、浮点数数组,接收信息配置接收变量。
字符串类型时,此时需要给定接收长度,程序会接收该长度的数据并按照字符串来处理,将其保存到“接收信息”配置的变量。
字符串数组类型时,此时程序会将收到的字符串解析成数值,所有数值在“()”内,数值之间使用“,”隔开。例如,从socket中收到了一串字符串“(12,1.23)”,该功能块会将其转换为num_list类型,值为{12,1.23},并将其保存到“接收信息”配置的变量。
浮点数数组类型时,此时需要给定接收长度,程序会将收到数据转换为一组单精度浮点数,(按照IEEE 754标准转换)并将其保存到“接收信息”配置的变量。
可以配置接收超时时间,在超时时间内未收到符合规则的数据则执行下一条语句。

CommSend
配方数据发送。当机器人的485端口或者CAN端口设置了配方时,使用该功能块可以为配方中的数据设置值,并发送。可以设置返回变量获取配方数据发送的状态。

CommRecv
配方数据接收。当机器人的485端口或者CAN端口设置了配方时,使用该功能块接收数据,并按照配方处理后,将得到的num_list数据赋值到接收变量上。

高级#
Subprogram
子程序。可以将其他程序嵌入到当前程序中。有以下两种方式:
直接从程序列表中选择嵌入的子程序,若不勾选“内嵌该子程序”选项,则每次在程序运行过程中从文件中加载子程序,即子程序文件的改动会影响主程序,且可点击子程序名称后的“打开”按钮,可以直接打开子程序文件进行查看。若勾选,则是将子程序直接复制到了主程序中,此后子程序文件的改动对其无影响,且子程序名称后不显示“打开”按钮。
设定为字符串变量,则程序在运行时,依据变量值作为子程序名来动态加载对应的子程序。



Replay
轨迹复现。可以创建一条记录方式为基于位置记录或基于时间记录的机器人运动轨迹,程序执行到此功能块时机器人按照基于关节空间或基于笛卡尔空间的复现方式来运动该轨迹。可以选择已有的轨迹文件或者创建新的轨迹。
创建新轨迹的方法,点击“新建轨迹”,输入轨迹名后会显示“轨迹记录”框,选择好工具坐标系、工件坐标系、记录方式后点击“开始记录”则开始记录轨迹数据,此时页面会显示一个半透明的悬浮框表明正在记录轨迹,用户可以使用牵引或者点动等方式移动机器人,点击“停止记录”或悬浮框上的停止按钮, 则完成该轨迹文件的创建。轨迹记录过程中,用户修改坐标系或者切换当前坐标系,终止当前轨迹记录,“轨迹记录中”悬浮框消失。

对于选取的轨迹,当复现方式为基于关节空间时,会显示该轨迹的轨迹名称、记录方式;当复现方式为基于笛卡尔空间时,会显示该轨迹的轨迹名称、记录方式以及记录时刻的工具坐标系和工件坐标系。

Pallet
码垛/卸垛。可以通过一些简单的参数设置,自动载入一组码垛/卸垛 标准程序模板,并在此基础上进行适配性改动。

按照如下步骤使用码垛/卸垛功能块:
1、确定使用码垛还是卸垛,码垛为将工件移动到托盘上,卸垛为从托盘上移走工件
2、可以指定名称,每次添加Pallet时会生成一个默认的名称
3、选择工件在托盘上的摆放模式,直线或者网格模式
4、标定托盘使用的参考坐标系,标定方式:基于托盘上摆放的第一个工件来标定,P1点为示教到工件上的一点,P2点示教到行方向(参考坐标系X轴方向),P3点示教到列方向。点击“标定”按钮完成坐标系的标定。上方将显示参考坐标系 的值。

点击“添加&激活”按钮,将弹出对话框,输入该坐标系的名称后,将添加到系统中,并设为当前坐标系。

5、设置工件摆放参数,需要设置工件的高度,工件在行及列方向上的摆放数量,工件在行及列方向上的间距
6、设置工件的计数变量,需在程序变量区新建一个类型为number的变量
7、设置摆放层数
8、定义在各个工件上执行动作的点位,可分为三个接近点位、动作点位、退出点位。在托盘摆放的第一个工件处示教这三个点位。接近点位为机器人运行到托盘上方计划摆放放/抓取工件的位置;动作点位为机器人摆放/抓取工件的位置;退出点位为机器人在摆放/抓取完成离开托盘时的位置。注意:这三个点位的示教务必在托盘的参考坐标系下进行。
9、示教完成后,点击“生成脚本”按钮,将自动在程序中添加一系列功能块。 其中Group功能块下可以添加相应的执行动作如夹爪开合等。

10、 程序设置为一直循环方式,码垛程序会在每次执行时,根据设置的参数计算偏移量,确定下一次码垛/卸垛的位置姿态。在变量区,根据所设置的工件计数变量可查看当前码垛/卸垛工件的个数
RecordPoseTrans
操作点转换示教功能块。用来做点位转换。
如下图,点O为参考点,A、B、C、D点相对于参考点O的位姿是不变的。操作点转换示教功能块记录这些点位相对于参考点O的相对位姿关系,当O的位姿发生变化时,输出A’、B’、C’、D’点的位姿。常用在视觉识别定位、激光寻位等场合。例如在视觉识别定位场景中,参考点O为一个工位的标记块,A、B、C、D为该工位的四个工件,工件相对于标记块的位姿固定。相机拍照识别得到该标记块在机器人基坐标系下的位姿,使用操作点示教功能块计算得到工件在机器人基坐标系下的位姿。


配置页如图,有三部分,“输入-参考位姿”中设置参考点位(O点),“操作点偏置”中设置操作点位(A,B,C,D点),“输出-转换位姿”中设置变量存放计算得到的操作点位,即储存A’,B’,C’,D’位姿。配置阶段,功能块将记录操作点(A,B,C,D点)相对于基准(O点)的偏差;程序运行时,根据当前输入变量的值(O’点)加上偏差计算得到操作点(A’,B’,C’,D’点)的位姿。
选择一个pose类型的全局变量作为参考位姿,点击“设置为基准”,将以该变量当前值作为参考基准(O点)。在操作点偏置中点击“示教添加”将跳转到移动页面,可以移动机械臂选取点位(A,B,C,D),选取后即新增了一个点位,配置页面会显示添加的点位在基座标系下的值。输出栏中,选择一个pose_list类型变量存放计算结果(A’,B’,C’,D’)。
力控相关脚本
当前力控相关脚本包括 Force,ForceGuard,ForceSetZero,ForceWait,ForceMove. 详细的应用介绍请参看《DUCO CORE末端力控功能操作手册》
CollisionDetect
碰撞检测等级。该脚本可以实现在程序运行过程中,对碰撞检测灵敏度的设置。


线程
线程,与机器人主程序并行执行,通过变量与主程序交互。在参数配置区可设置该线程是否一直循环;还可设置线程是否可重入,即该线程在未执行完成的情况下是否可创建新的实例执行。在一个程序中最多允许创建10个线程。


变量区#
该页面可以创建程序变量,监控程序变量值。程序变量与系统变量不同,系统变量是作用于整个工程,而程序变量只存在于本程序内。
添加变量#
点击“添加变量”按钮,可弹出对话框,如图,输入变量名、选择类型、给定初始值即可创建。

程序变量有以下类型:
boolean: 布尔型,只能为false或true
number: 数字类型
string: 字符串类型
num_list: 数组类型
pose: 表示机器人笛卡尔位置的数据类型
joints: 表示机器人关节位置的数据类型
joints_list:表示机器人关节位置列表类型
pose_list:表示机器人笛卡尔位置列表数据
pose_speed:表示机器人末端速度的数据类型
pose_acc:表示机器人末端加速度的数据类型
joint_speed:表示机器人关节角速度的数据类型
pose_acc:表示机器人关节角加速度的数据类型

变量监控#
当勾选“变量监控”时,程序运行过程中,该页面可以显示程序变量的当前值。点击“排序”按钮还可以对程序变量名称进行按字母排序。


当不勾选“变量监控”时,由于节省了程序变量同步并显示到界面这一过程,将大大提高程序脚本的执行效率。

运行#
点击“仿真”标签页可以进入3D模型页面,该页面显示机器人的3D模型。程序树左侧下方的图标控制程序的启停,点击 图标按钮运行程序,点击
图标按钮单步运行程序。在程序运行过程中,可以随时暂停或停止程序。点击
图标按钮设置程序运行过程中光标自动跟随指令块,点击
图标后退出自动跟随,且光标自动跟随功能是默认打开的。

运行程序#
运行程序时,会检查程序起始点位和当前机器人所处点位是否一致,若不一致,先要移动到起始点,如图,3D模型上会显示处于起始点位的机器人(灰色显示),点击“按住移动”按钮,机器人会移动到起始点位。

移动到起始点位后,再次点击 图标按钮,程序运行。如下图,程序树左侧下方可以显示程序的运行时间,3D模型上可以观察机器人的实时姿态,左侧的程序树可以显示当前正在执行的功能块。点击下方的控制按钮可以进行程序的暂停、恢复、停止操作。

单步运行程序#
点击 图标按钮单步运行程序。单步时,首先会检查程序的起始点,移动机器人到程序的起始点位置后。每点击一次
图标,程序会向下执行一个功能块。点击
图标按钮,程序将退出单步模式,连续运行。在单步过程中可以暂停、恢复程序。点击
图标按钮,将执行后退操作,此时机器人将后退移动到上一个点位,后退仅针对运动类功能块。
点击 停止按钮,程序停止运行,退出单步状态。

断点#
支持断点调试功能,程序在执行到断点位置处,会停止并进入单步模式。
可以在程序树和脚本编辑区打断点,点击程序树行号左侧区域、脚本行号左侧区域即可打上断点,再次点击断点则可以取消断点。点击下方的 图标按钮可以取消系统设置的所有断点。

运行程序,当程序运行到断点处,程序将停止并进入单步模式,如图所示。点击 图标按钮,程序将单步执行,(运行到Script功能块时,将单行执行);点击
图标按钮,程序将继续运行,直到碰到下一个断点或程序结束。
手动模式下,在程序运行过程中可以随时打断点或者取消断点。
